UNPKG

tea-test-dao

Version:
1,380 lines (1,099 loc) 1.6 MB
*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) F