UNPKG

tea-test-dao

Version:
1,291 lines (1,024 loc) 1.61 MB
*version9.txt* For Vim version 9.1. Last change: 2024 Jan 01 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