From 5a6d7a59ddb30a88dbd94f76d5d9f4e5de75b296 Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Tue, 26 Aug 2014 08:39:29 +0200 Subject: [PATCH] Remove version{4,5,6,7}.txt --- runtime/doc/Makefile | 8 - runtime/doc/help.txt | 4 - runtime/doc/version4.txt | 355 - runtime/doc/version5.txt | 7813 ---------------- runtime/doc/version6.txt | 14530 ----------------------------- runtime/doc/version7.txt | 18311 ------------------------------------- 6 files changed, 41021 deletions(-) delete mode 100644 runtime/doc/version4.txt delete mode 100644 runtime/doc/version5.txt delete mode 100644 runtime/doc/version6.txt delete mode 100644 runtime/doc/version7.txt diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile index d36490a75f..8bd5aaf049 100644 --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -136,10 +136,6 @@ DOCS = \ usr_90.txt \ usr_toc.txt \ various.txt \ - version4.txt \ - version5.txt \ - version6.txt \ - version7.txt \ vi_diff.txt \ visual.txt \ windows.txt \ @@ -268,10 +264,6 @@ HTMLS = \ usr_90.html \ usr_toc.html \ various.html \ - version4.html \ - version5.html \ - version6.html \ - version7.html \ vi_diff.html \ vimindex.html \ visual.html \ diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index f13a5294ec..a9af50dd09 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -173,10 +173,6 @@ Interfaces ~ Versions ~ |vi_diff.txt| Main differences between Vim and Vi -|version4.txt| Differences between Vim version 3.0 and 4.x -|version5.txt| Differences between Vim version 4.6 and 5.x -|version6.txt| Differences between Vim version 5.7 and 6.x -|version7.txt| Differences between Vim version 6.4 and 7.x *sys-file-list* Remarks about specific systems ~ |os_390.txt| OS/390 Unix diff --git a/runtime/doc/version4.txt b/runtime/doc/version4.txt deleted file mode 100644 index 6b791be88b..0000000000 --- a/runtime/doc/version4.txt +++ /dev/null @@ -1,355 +0,0 @@ -*version4.txt* For Vim version 7.4. Last change: 2006 Apr 24 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -This document lists the incompatible differences between Vim 3.0 and Vim 4.0. -Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc.. - -This file is important for everybody upgrading from Vim 3.0. Read it -carefully to avoid unexpected problems. - -'backup' option default changed |backup-changed| -Extension for backup file changed |backup-extension| -Structure of swap file changed |swapfile-changed| -"-w scriptout" argument changed |scriptout-changed| -Backspace and Delete keys |backspace-delete| -Escape for | changed |escape-bar| -Key codes changed |key-codes-changed| -Terminal options changed |termcap-changed| -'errorformat' option changed |errorformat-changed| -'graphic' option gone |graphic-option-gone| -'yankendofline' option gone |ye-option-gone| -'icon' and 'title' default value changed |icon-changed| -'highlight' option changed |highlight-changed| -'tildeop' and 'weirdinvert' short names changed |short-name-changed| -Use of "v", "V" and "CTRL-V" in Visual mode |use-visual-cmds| -CTRL-B in Insert mode removed |toggle-revins| - - -'backup' option default changed *backup-changed* -------------------------------- - -The default value for 'backup' used to be on. This resulted in a backup file -being made when the original file was overwritten. - -Now the default for 'backup' is off. As soon as the writing of the file has -successfully finished, the backup file is deleted. If you want to keep the -backup file, set 'backup' on in your vimrc. The reason for this change is -that many people complained that leaving a backup file behind is not -Vi-compatible. |'backup'| - - -Extension for backup file changed *backup-extension* ---------------------------------- - -The extension for the backup file used to be ".bak". Since other programs -also use this extension and some users make copies with this extension, it was -changed to the less obvious "~". Another advantage is that this takes less -space, which is useful when working on a system with short file names. For -example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would -both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~". - -If you prefer to use ".bak", you can set the 'backupext' option: > - :set bex=.bak - - -Structure of swap file changed *swapfile-changed* ------------------------------- - -The contents of the swap file were extended with several parameters. Vim -stores the user name and other information about the edited file to make -recovery more easy and to be able to know where the swap file comes from. The -first part of the swap file can now be understood on a machine with a -different byte order or sizeof(int). When you try to recover a file on such a -machine, you will get an error message that this is not possible. - -Because of this change, swap files cannot be exchanged between 3.0 and 4.0. -If you have a swap file from a crashed session with 3.0, use Vim 3.0 to -recover the file---don't use 4.0. |swap-file| - - -"-w scriptout" argument changed *scriptout-changed* -------------------------------- - -"vim -w scriptout" used to append to the scriptout file. Since this was -illogical, it now creates a new file. An existing file is not overwritten -(to avoid destroying an existing file for those who rely on the appending). -[This was removed again later] |-w| - - -Backspace and Delete keys *backspace-delete* -------------------------- - -In 3.0 both the delete key and the backspace key worked as a backspace in -insert mode; they deleted the character to the left of the cursor. In 4.0 the -delete key has a new function: it deletes the character under the cursor, just -like it does on the command-line. If the cursor is after the end of the line -and 'bs' is set, two lines are joined. || |i_| - -In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?. -In 4.0 the code for the backspace and delete key is obtained from termcap or -termlib, and adjusted for the "stty erase" value on Unix. This helps people -who define the erase character according to the keyboard they are working on. - || |i_| - -If you prefer backspace and delete in Insert mode to have the old behavior, -put this line in your vimrc: - - inoremap ^? ^H - -And you may also want to add these, to fix the values for and : - - set t_kb=^H - set t_kD=^? - -(Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or .) - -If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel" -command. It will set t_kD according to the value of t_kb. This is useful if -you are using several different terminals. |:fixdel| - -When ^H is not recognized as or , it is used like a backspace. - - -Escape for | changed *escape-bar* --------------------- - -When the 'b' flag is present in 'cpoptions', the backslash cannot be used to -escape '|' in mapping and abbreviate commands, only CTRL-V can. This is -Vi-compatible. If you work in Vi-compatible mode and had used "\|" to include -a bar in a mapping, this needs to be replaced by "^V|". See |:bar|. - - -Key codes changed *key-codes-changed* ------------------ - -The internal representation of key codes has changed dramatically. In 3.0 a -one-byte code was used to represent a key. This caused problems with -different characters sets that also used these codes. In 4.0 a three-byte -code is used that cannot be confused with a character. |key-notation| - -If you have used the single-byte key codes in your vimrc for mappings, you -will have to replace them with the 4.0 codes. Instead of using the three-byte -code directly, you should use the symbolic representation for this in <>. See -the table below. The table also lists the old name, as it was used in the 3.0 -documentation. - -The key names in <> can be used in mappings directly. This makes it possible -to copy/paste examples or type them literally. The <> notation has been -introduced for this |<>|. The 'B' and '<' flags must not be present in -'cpoptions' to enable this to work |'cpoptions'|. - -old name new name old code old MS-DOS code ~ - hex dec hex dec ~ - - - - - - - - - - - - - - - 0x80 128 0xb0 176 - 0x81 129 0xb1 177 - 0x82 130 0xb2 178 - 0x83 131 0xb3 179 - 0x84 132 0xb4 180 - 0x85 133 0xb5 181 - 0x86 134 0xb6 182 - 0x87 135 0xb7 183 - - 0x88 136 0xb8 184 - 0x89 137 0xb9 185 - 0x8a 138 0xba 186 - 0x8b 139 0xbb 187 - 0x8c 140 0xbc 188 - 0x8d 141 0xbd 189 - 0x8e 142 0xbe 190 - 0x8f 143 0xbf 191 - 0x90 144 0xc0 192 - 0x91 145 0xc1 193 - - 0x92 146 0xc2 194 - 0x93 147 0xc3 195 - 0x94 148 0xc4 196 - 0x95 149 0xc5 197 - 0x96 150 0xc6 198 - 0x97 151 0xc7 199 - 0x98 152 0xc8 200 - 0x99 153 0xc9 201 - 0x9a 154 0xca 202 - 0x9b 155 0xcb 203 - - 0x9c 156 0xcc 204 - 0x9d 157 0xcd 205 - - (not used) 0x9e 158 0xce 206 - (not used) 0x9f 159 0xcf 207 - - -Terminal options changed *termcap-changed* ------------------------- - -The names of the terminal options have been changed to match the termcap names -of these options. All terminal options now have the name t_xx, where xx is -the termcap name. Normally these options are not used, unless you have a -termcap entry that is wrong or incomplete, or you have set the highlight -options to a different value. |terminal-options| - -Note that for some keys there is no termcap name. Use the <> type of name -instead, which is a good idea anyway. - -Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has -become "t_ti" (init terminal mode). Be careful when you use "t_ti"! - -old name new name meaning ~ -t_cdl t_DL delete number of lines *t_cdl* -t_ci t_vi cursor invisible *t_ci* -t_cil t_AL insert number of lines *t_cil* -t_cm t_cm move cursor -t_cri t_RI cursor number of chars right *t_cri* -t_cv t_ve cursor visible *t_cv* -t_cvv t_vs cursor very visible *t_cvv* -t_dl t_dl delete line -t_cs t_cs scroll region -t_ed t_cl clear display *t_ed* -t_el t_ce clear line *t_el* -t_il t_al insert line *t_il* - t_da display may be retained above the screen - t_db display may be retained below the screen -t_ke t_ke put terminal out of keypad transmit mode -t_ks t_ks put terminal in keypad transmit mode -t_ms t_ms save to move cursor in highlight mode -t_se t_se normal mode (undo t_so) -t_so t_so shift out (standout) mode -t_ti t_mr reverse highlight -t_tb t_md bold mode *t_tb* -t_tp t_me highlight end *t_tp* -t_sr t_sr scroll reverse -t_te t_te out of termcap mode -t_ts t_ti into termcap mode *t_ts_old* -t_vb t_vb visual bell -t_csc t_CS cursor is relative to scroll region *t_csc* - -t_ku t_ku arrow up -t_kd t_kd arrow down -t_kr t_kr arrow right -t_kl t_kl arrow left -t_sku shifted arrow up *t_sku* -t_skd shifted arrow down *t_skd* -t_skr t_%i shifted arrow right *t_skr* -t_skl t_#4 shifted arrow left *t_skl* -t_f1 t_k1 function key 1 *t_f1* -t_f2 t_k2 function key 2 *t_f2* -t_f3 t_k3 function key 3 *t_f3* -t_f4 t_k4 function key 4 *t_f4* -t_f5 t_k5 function key 5 *t_f5* -t_f6 t_k6 function key 6 *t_f6* -t_f7 t_k7 function key 7 *t_f7* -t_f8 t_k8 function key 8 *t_f8* -t_f9 t_k9 function key 9 *t_f9* -t_f10 t_k; function key 10 *t_f10* -t_sf1 shifted function key 1 *t_sf1* -t_sf2 shifted function key 2 *t_sf2* -t_sf3 shifted function key 3 *t_sf3* -t_sf4 shifted function key 4 *t_sf4* -t_sf5 shifted function key 5 *t_sf5* -t_sf6 shifted function key 6 *t_sf6* -t_sf7 shifted function key 7 *t_sf7* -t_sf8 shifted function key 8 *t_sf8* -t_sf9 shifted function key 9 *t_sf9* -t_sf10 shifted function key 10 *t_sf10* -t_help t_%1 help key *t_help* -t_undo t_&8 undo key *t_undo* - - -'errorformat' option changed *errorformat-changed* ----------------------------- - -'errorformat' can now contain several formats, separated by commas. The first -format that matches is used. The default values have been adjusted to catch -the most common formats. |errorformat| - -If you have a format that contains a comma, it needs to be preceded with a -backslash. Type two backslashes, because the ":set" command will eat one. - - -'graphic' option gone *graphic-option-gone* ---------------------- - -The 'graphic' option was used to make the characters between <~> and 0xa0 -display directly on the screen. Now the 'isprint' option takes care of this -with many more possibilities. The default setting is the same; you only need -to look into this if you previously set the 'graphic' option in your vimrc. - |'isprint'| - - -'yankendofline' option gone *ye-option-gone* ---------------------------- - -The 'yankendofline' option has been removed. Instead you can just use - :map Y y$ - - -'icon' and 'title' default value changed *icon-changed* ----------------------------------------- - -The 'title' option is now only set by default if the original title can be -restored. Avoids "Thanks for flying Vim" titles. If you want them anyway, -put ":set title" in your vimrc. |'title'| - -The default for 'icon' now depends on the possibility of restoring the -original value, just like 'title'. If you don't like your icon titles to be -changed, add this line to your vimrc: |'icon'| - :set noicon - - -'highlight' option changed *highlight-changed* --------------------------- - -The 'i' flag now means italic highlighting, instead of invert. The 'r' flag -is used for reverse highlighting, which is what 'i' used to be. Normally you -won't see the difference, because italic mode is not supported on most -terminals and reverse mode is used as a fallback. |'highlight'| - -When an occasion is not present in 'highlight', use the mode from the default -value for 'highlight', instead of reverse mode. - - -'tildeop' and 'weirdinvert' short names changed *short-name-changed* ------------------------------------------------ - -Renamed 'to' (abbreviation for 'tildeop') to 'top'. |'tildeop'| -Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'| - -This was done because Vi uses 'wi' as the short name for 'window' and 'to' as -the short name for 'timeout'. This means that if you try setting these -options, you won't get an error message, but the effect will be different. - - -Use of "v", "V" and "CTRL-V" in Visual mode *use-visual-cmds* -------------------------------------------- - -In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode. Now this -happens only if the Visual mode was in the corresponding type. Otherwise the -type of Visual mode is changed. Now only ESC can be used in all circumstances -to end Visual mode without doing anything. |v_V| - - -CTRL-B in Insert mode removed *toggle-revins* ------------------------------ - -CTRL-B in Insert mode used to toggle the 'revins' option. If you don't know -this and accidentally hit CTRL-B, it is very difficult to find out how to undo -it. Since hardly anybody uses this feature, it is disabled by default. If -you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'| - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/doc/version5.txt b/runtime/doc/version5.txt deleted file mode 100644 index 1cc6a25597..0000000000 --- a/runtime/doc/version5.txt +++ /dev/null @@ -1,7813 +0,0 @@ -*version5.txt* For Vim version 7.4. Last change: 2012 Aug 08 - - - VIM REFERENCE MANUAL by Bram Moolenaar - -Welcome to Vim Version 5.0! - -This document lists the differences between Vim 4.x and Vim 5.0. -Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc. -See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0. -See |version4.txt| for differences between Vim 3.0 and Vim 4.0. - -INCOMPATIBLE: |incompatible-5| - -Default value for 'compatible' changed |cp-default| -Text formatting command "Q" changed |Q-command-changed| -Command-line arguments changed |cmdline-changed| -Autocommands are kept |autocmds-kept| -Use of 'hidden' changed |hidden-changed| -Text object commands changed |text-objects-changed| -X-Windows Resources removed |x-resources| -Use of $VIM |$VIM-use| -Use of $HOME for MS-DOS and Win32 |$HOME-use| -Tags file format changed |tags-file-changed| -Options changed |options-changed| -CTRL-B in Insert mode gone |i_CTRL-B-gone| - -NEW FEATURES: |new-5| - -Syntax highlighting |new-highlighting| -Built-in script language |new-script| -Perl and Python support |new-perl-python| -Win32 GUI version |added-win32-GUI| -VMS version |added-VMS| -BeOS version |added-BeOS| -Macintosh GUI version |added-Mac| -More Vi compatible |more-compatible| -Read input from stdin |read-stdin| -Regular expression patterns |added-regexp| -Overloaded tags |tag-overloaded| -New commands |new-commands| -New options |added-options| -New command-line arguments |added-cmdline-args| -Various additions |added-various| - -IMPROVEMENTS |improvements-5| - -COMPILE TIME CHANGES |compile-changes-5| - -BUG FIXES |bug-fixes-5| - -VERSION 5.1 |version-5.1| -Changed |changed-5.1| -Added |added-5.1| -Fixed |fixed-5.1| - -VERSION 5.2 |version-5.2| -Long lines editable |long-lines| -File browser added |file-browser-5.2| -Dialogs added |dialogs-added| -Popup menu added |popup-menu-added| -Select mode added |new-Select-mode| -Session files added |new-session-files| -User defined functions and commands |new-user-defined| -New interfaces |interfaces-5.2| -New ports |ports-5.2| -Multi-byte support |new-multi-byte| -New functions |new-functions-5.2| -New options |new-options-5.2| -New Ex commands |new-ex-commands-5.2| -Changed |changed-5.2| -Added |added-5.2| -Fixed |fixed-5.2| - -VERSION 5.3 |version-5.3| -Changed |changed-5.3| -Added |added-5.3| -Fixed |fixed-5.3| - -VERSION 5.4 |version-5.4| -Runtime directory introduced |new-runtime-dir| -Filetype introduced |new-filetype-5.4| -Vim script line continuation |new-line-continuation| -Improved session files |improved-sessions| -Autocommands improved |improved-autocmds-5.4| -Encryption |new-encryption| -GTK GUI port |new-GTK-GUI| -Menu changes |menu-changes-5.4| -Viminfo improved |improved-viminfo| -Various new commands |new-commands-5.4| -Various new options |new-options-5.4| -Vim scripts |new-script-5.4| -Avoid hit-enter prompt |avoid-hit-enter| -Improved quickfix |improved-quickfix| -Regular expressions |regexp-changes-5.4| -Changed |changed-5.4| -Added |added-5.4| -Fixed |fixed-5.4| - -VERSION 5.5 |version-5.5| -Changed |changed-5.5| -Added |added-5.5| -Fixed |fixed-5.5| - -VERSION 5.6 |version-5.6| -Changed |changed-5.6| -Added |added-5.6| -Fixed |fixed-5.6| - -VERSION 5.7 |version-5.7| -Changed |changed-5.7| -Added |added-5.7| -Fixed |fixed-5.7| - -VERSION 5.8 |version-5.8| -Changed |changed-5.8| -Added |added-5.8| -Fixed |fixed-5.8| - -============================================================================== - INCOMPATIBLE *incompatible-5* - -Default value for 'compatible' changed *cp-default* --------------------------------------- - -Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim -as a drop-in replacement for Vi, but causes some things to be incompatible -with version 4.x. - -In version 4.x the default value for the 'compatible' option was off. Now the -default is on. The first thing you will notice is that the "u" command undoes -itself. Other side effects will be that mappings may work differently or not -work at all. - -Since a lot of people switching from Vim 4.x to 5.0 will find this annoying, -the 'compatible' option is switched off if Vim finds a vimrc file. This is a -bit of magic to make sure that 90% of the Vim users will not be bitten by -this change. - -What does this mean? -- If you prefer to run in 'compatible' mode and don't have a vimrc file, you - don't have to do anything. -- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you - don't have to do anything. -- If you prefer to run in 'compatible' mode and do have a vimrc file, you - should put this line first in your vimrc file: > - :set compatible -- If you prefer to run in 'nocompatible' mode and don't have a vimrc file, - you can do one of the following: - - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix). - - Put this command in your .exrc file or $EXINIT: > - :set nocompatible -< - Start Vim with the "-N" argument. - -If you are new to Vi and Vim, using 'nocompatible' is strongly recommended, -because Vi has a lot of unexpected side effects, which are avoided by this -setting. See 'compatible'. - -If you like some things from 'compatible' and some not, you can tune the -compatibility with 'cpoptions'. - -When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode. - - -Text formatting command "Q" changed *Q-command-changed* ------------------------------------ - -The "Q" command formerly formatted lines to the width the 'textwidth' option -specifies. The command for this is now "gq" (see |gq| for more info). The -reason for this change is that "Q" is the standard Vi command to enter "Ex" -mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info). - -If you still want to use "Q" for formatting, use this mapping: > - :noremap Q gq -And if you also want to use the functionality of "Q": > - :noremap gQ Q - - -Command-line arguments changed *cmdline-changed* ------------------------------- - -Command-line file-arguments and option-arguments can now be mixed. You can -give options after the file names. Example: > - vim main.c -g - -This is not possible when editing a file that starts with a '-'. Use the "--" -argument then |---|: > - vim -g -- -main.c - -"-v" now means to start Ex in Vi mode, use "-R" for read-only mode. -old: "vim -v file" |-v| -new: "vim -R file" |-R| - -"-e" now means to start Vi in Ex mode, use "-q" for quickfix. -old: "vim -e errorfile" |-e| -new: "vim -q errorfile" |-q| - -"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex| - -"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga). -old: "vim -x file" |-x| -new: "vim -f file" |-f| - -Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed -only the last one. - -"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in -a gvimrc file. - - -Autocommands are kept *autocmds-kept* ---------------------- - -Before version 5.0, autocommands with the same event, file name pattern, and -command could appear only once. This was fine for simple autocommands (like -setting option values), but for more complicated autocommands, where the same -command might appear twice, this restriction caused problems. Therefore -Vim stores all autocommands and keeps them in the order that they are defined. - -The most obvious side effect of this change is that when you source a vimrc -file twice, the autocommands in it will be defined twice. To avoid this, do -one of these: - -- Remove any autocommands that might potentially defined twice before - defining them. Example: > - :au! * *.ext - :au BufEnter *.ext ... - -- Put the autocommands inside an ":if" command. Example: > - if !exists("did_ext_autocmds") - let did_ext_autocmds = 1 - autocmd BufEnter *.ext ... - endif - -- Put your autocommands in a different autocommand group so you can remove - them before defining them |:augroup|: > - augroup uncompress - au! - au BufReadPost *.gz ... - augroup END - - -Use of 'hidden' changed *hidden-changed* ------------------------ - -In version 4.x, only some commands used the 'hidden' option. Now all commands -uses it whenever a buffer disappears from a window. - -Previously you could do ":buf xxx" in a changed buffer and that buffer would -then become hidden. Now you must set the 'hidden' option for this to work. - -The new behavior is simpler: whether Vim hides buffers no longer depends on -the specific command that you use. -- with 'hidden' not set, you never get hidden buffers. Exceptions are the - ":hide" and ":close!" commands and, in rare cases, where you would otherwise - lose changes to the buffer. -- With 'hidden' set, you almost never unload a buffer. Exceptions are the - ":bunload" or ":bdel" commands. - -":buffer" now supports a "!": abandon changes in current buffer. So do -":bnext", ":brewind", etc. - - -Text object commands changed *text-objects-changed* ----------------------------- - -Text object commands have new names. This allows more text objects and makes -characters available for other Visual mode commands. Since no more single -characters were available, text objects names now require two characters. -The first one is always 'i' or 'a'. - OLD NEW ~ - a aw a word |v_aw| - A aW a WORD |v_aW| - s as a sentence |v_as| - p ap a paragraph |v_ap| - S ab a () block |v_ab| - P aB a {} block |v_aB| - -There is another set of text objects that starts with "i", for "inner". These -select the same objects, but exclude white space. - - -X-Windows Resources removed *x-resources* --------------------------- - -Vim no longer supports the following X resources: -- boldColor -- italicColor -- underlineColor -- cursorColor - -Vim now uses highlight groups to set colors. This avoids the confusion of -using a bold Font, which would imply a certain color. See |:highlight| and -|gui-resources|. - - -Use of $VIM *$VIM-use* ------------ - -Vim now uses the VIM environment variable to find all Vim system files. This -includes the global vimrc, gvimrc, and menu.vim files and all on-line help -and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can -also be used. -For Unix, Vim sets a default value for $VIM when doing "make install". -When $VIM is not set, its default value is the directory from 'helpfile', -excluding "/doc/help.txt". - - -Use of $HOME for MS-DOS and Win32 *$HOME-use* ---------------------------------- - -The MS-DOS and Win32 versions of Vim now first check $HOME when searching for -a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim -used $VIM for these systems, but this causes trouble on a system with several -users. Now Vim uses $VIM only when $HOME is not set or the file is not found -in $HOME. See |_vimrc|. - - -Tags file format changed *tags-file-changed* ------------------------- - -Only tabs are allowed to separate fields in a tags file. This allows for -spaces in a file name and is still Vi compatible. In previous versions of -Vim, any white space was allowed to separate the fields. If you have a file -which doesn't use a single tab between fields, edit the tags file and execute -this command: > - :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/ - - -Options changed *options-changed* ---------------- - -The default value of 'errorfile' has changed from "errors.vim" to "errors.err". -The reason is that only Vim scripts should have the ".vim" extensions. - -The ":make" command no longer uses the 'errorfile' option. This prevents the -output of the ":make" command from overwriting a manually saved error file. -":make" uses the 'makeef' option instead. This also allows for generating a -unique name, to prevent concurrently running ":make" commands from overwriting -each other's files. - -With 'insertmode' set, a few more things change: -- in Normal mode goes to Insert mode. -- in Insert mode doesn't leave Insert mode. -- When doing ":set im", go to Insert mode immediately. - -Vim considers a buffer to be changed when the 'fileformat' (formerly the -'textmode' option) is different from the buffer's initial format. - - -CTRL-B in Insert mode gone *i_CTRL-B-gone* --------------------------- - -When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to -toggle the 'revins' option. Unfortunately, some people hit the 'B' key -accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to -undo this. Since toggling the 'revins' option can easily be done with the -mapping below, this use of the CTRL-B key is disabled. You can still use the -CTRL-_ key for this |i_CTRL-_|. > - :imap :set revins! - -============================================================================== - NEW FEATURES *new-5* - -Syntax highlighting *new-highlighting* -------------------- - -Vim now has a very flexible way to highlighting just about any type of file. -See |syntax|. Summary: > - :syntax on - -Colors and attributes can be set for the syntax highlighting, and also for -other highlighted items with the ':' flag in the 'highlight' option. All -highlighted items are assigned a highlight group which specifies their -highlighting. See |:highlight|. The default colors have been improved. - -You can use the "Normal" group to set the default fore/background colors for a -color terminal. For the GUI, you can use this group to specify the font, too. - -The "2html.vim" script can be used to convert any file that has syntax -highlighting to HTML. The colors will be exactly the same as how you see them -in Vim. With a HTML viewer you can also print the file with colors. - - -Built-in script language *new-script* ------------------------- - -A few extra commands and an expression evaluator enable you to write simple -but powerful scripts. Commands include ":if" and ":while". Expressions can -manipulate numbers and strings. You can use the '=' register to insert -directly the result of an expression. See |expression|. - - -Perl and Python support *new-perl-python* ------------------------ - -Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|. -Patches made by Sven Verdoolaege and Matt Gerassimoff. - -Vim can call Python commands with ":python" and ":pyfile". See |python|. - -Both of these are only available when enabled at compile time. - - -Win32 GUI version *added-win32-GUI* ------------------ - -The GUI has been ported to MS Windows 95 and NT. All the features of the X11 -GUI are available to Windows users now. |gui-w32| -This also fixes problems with running the Win32 console version under Windows -95, where console support has always been bad. -There is also a version that supports OLE automation interface. |if_ole.txt| -Vim can be integrated with Microsoft Developer Studio using the VisVim DLL. -It is possible to produce a DLL version of gvim with Borland C++ (Aaron). - - -VMS version *added-VMS* ------------ - -Vim can now also be used on VMS systems. Port done by Henk Elbers. -This has not been tested much, but it should work. -Sorry, no documentation! - - -BeOS version *added-BeOS* ------------- - -Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert) -See |os_beos.txt|. - - -Macintosh GUI version *added-Mac* ---------------------- - -Vim can now be used on the Macintosh. (Dany St-Amant) -It has not been tested much yet, be careful! -See |os_mac.txt|. - - -More Vi compatible *more-compatible* ------------------- - -There is now a real Ex mode. Started with the "Q" command, or by calling the -executable "ex" or "gex". |Ex-mode| - -Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag -in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo -(like "." in Nvi). - - -Read input from stdin *read-stdin* ---------------------- - -When using the "-" command-line argument, Vim reads its text input from stdin. -This can be used for putting Vim at the end of a pipe: > - grep "^a.*" *.c | vim - -See |--|. - - -Regular expression patterns *added-regexp* ---------------------------- - -Added specifying a range for the number of matches of an atom: "\{a,b}". |/\{| -Added the "shortest match" regexp "\{-}" (Webb). -Added "\s", matches a white character. Can replace "[ \t]". |/\s| -Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S| - - -Overloaded tags *tag-overloaded* ---------------- - -When using a language like C++, there can be several tags for the same -tagname. Commands have been added to be able to jump to any of these -overloaded tags: -|:tselect| List matching tags, and jump to one of them. -|:stselect| Idem, and split window. -|g_CTRL-]| Do ":tselect" with the word under the cursor. - - After ":ta {tagname}" with multiple matches: -|:tnext| Go to next matching tag. -|:tprevious| Go to previous matching tag. -|:trewind| Go to first matching tag. -|:tlast| Go to last matching tag. - -The ":tag" command now also accepts wildcards. When doing command-line -completion on tags, case-insensitive matching is also available (at the end). - - -New commands *new-commands* ------------- - -|:amenu| Define menus for all modes, inserting a CTRL-O for Insert - mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is - used for the default menus and the Syntax menu. - -|:augroup| Set group to be used for following autocommands. Allows the - grouping of autocommands to enable deletion of a specific - group. - -|:crewind| Go to first error. -|:clast| Go to last error. - -|:doautoall| Execute autocommands for all loaded buffers. - -|:echo| Echo its argument, which is an expression. Can be used to - display messages which include variables. - -|:execute| Execute its argument, which is an expression. Can be used to - built up an Ex command with anything. - -|:hide| Works like ":close". - -|:if| Conditional execution, for built-in script language. - -|:intro| Show introductory message. This is always executed when Vim - is started without file arguments. - -|:let| Assign a value to an internal variable. - -|:omap| Map only in operator-pending mode. Makes it possible to map - text-object commands. - -|:redir| Redirect output of messages to a file. - -|:update| Write when buffer has changed. - -|:while| While-loop for built-in script language. - -Visual mode: -|v_O| "O" in Visual block mode, moves the cursor to the other corner - horizontally. -|v_D| "D" in Visual block mode deletes till end of line. - -Insert mode: -|i_CTRL-]| Triggers abbreviation, without inserting any character. - - -New options *added-options* ------------ - -'background' Used for selecting highlight color defaults. Also used in - "syntax.vim" for selecting the syntax colors. Often set - automatically, depending on the terminal used. - -'complete' Specifies how Insert mode completion works. - -'eventignore' Makes it possible to ignore autocommands temporarily. - -'fileformat' Current file format. Replaces 'textmode'. -'fileformats' Possible file formats. Replaces 'textauto'. - New is that this also supports Macintosh format: A single - separates lines. - The default for 'fileformats' for MS-DOS, Win32 and OS/2 is - "dos,unix", also when 'compatible' set. Unix type files - didn't work anyway when 'fileformats' was empty. - -'guicursor' Set the cursor shape and blinking in various modes. - Default is to adjust the cursor for Insert and Replace mode, - and when an operator is pending. Blinking is default on. - -'fkmap' Farsi key mapping. - -'hlsearch' Highlight all matches with the last used search pattern. - -'hkmapp' Phonetic Hebrew mapping. (Ilya Dogolazky) - -'iconstring' Define the name of the icon, when not empty. (Version 5.2: the - string is used literally, a newline can be used to make two - lines.) - -'lazyredraw' Don't redraw the screen while executing macros, registers or - other not typed commands. - -'makeef' Errorfile to be used for ":make". "##" is replaced with a - unique number. Avoids that two Vim sessions overwrite each - others errorfile. The Unix default is "/tmp/vim##.err"; for - Amiga "t:vim##.Err, for others "vim##.err". - -'matchtime' 1/10s of a second to show a matching paren, when 'showmatch' - is set. Like Nvi. - -'mousehide' Hide mouse pointer in GUI when typing text. - -'nrformats' Defines what bases Vim will consider for numbers when using - the CTRL-A and CTRL-X commands. Default: "hex,octal". - -'shellxquote' Add extra quotes around the whole shell command, including - redirection. - -'softtabstop' Make typing behave like tabstop is set at this value, without - changing the value of 'tabstop'. Makes it more easy to keep - 'ts' at 8, while still getting four spaces for a . - -'titlestring' String for the window title, when not empty. (Version 5.2: - this string is used literally, a newline can be used to make - two lines.) - -'verbose' Level of verbosity. Makes it possible to show which .vimrc, - .exrc, .viminfo files etc. are used for initializing. Also - to show autocommands that are being executed. Can also be set - by using the "-V" command-line argument. - - -New command-line arguments *added-cmdline-args* --------------------------- - -|-U| Set the gvimrc file to be used. Like "-u" for the vimrc. - -|-V| Set the 'verbose' option. E.g. "vim -V10". - -|-N| Start in non-compatible mode. - -|-C| Start in compatible mode. - -|-Z| Start in restricted mode, disallow shell commands. Can also - be done by calling the executable "rvim". - -|-h| Show usage information and exit. - - -Various additions *added-various* ------------------ - -Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can -be used as an editor for SNiFF. No documentation available... - -For producing a bug report, the bugreport.vim script has been included. -Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file -"bugreport.txt" in the current directory. |bugs| - -Added range to ":normal" command. Now you can repeat the same command for -each line in the range. |:normal-range| - -Included support for the Farsi language (Shiran). Only when enabled at -compile time. See |farsi|. - -============================================================================== - IMPROVEMENTS *improvements-5* - -Performance: -- When 'showcmd' was set, mappings would execute much more slowly because the - output would be flushed very often. Helps a lot when executing the "life" - macros with 'showcmd' set. -- Included patches for binary searching in tags file (David O'Neill). - Can be disabled by resetting the 'tagbsearch' option. -- Don't update the ruler when repeating insert (slowed it down a lot). -- For Unix, file name expansion is now done internally instead of starting a - shell for it. -- Expand environment variables with expand_env(), instead of calling the - shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster. -- Reduced output for cursor positioning: Use CR-LF for moving to first few - columns in next few lines; Don't output CR twice when using termios. -- Optimized cursor positioning. Use CR, BS and NL when it's shorter than - absolute cursor positioning. -- Disable redrawing while repeating insert "1000ii". -- Made "d$" or "D" for long lines a lot faster (delete all characters at once, - instead of one by one). -- Access option table by first letter, instead of searching from start. -- Made setting special highlighting attributes a lot faster by using - highlight_attr[], instead of searching in the 'highlight' string. -- Don't show the mode when redrawing is disabled. -- When setting an option, only redraw the screen when required. -- Improved performance of Ex commands by using a lookup table for the first - character. - -Options: -'cinoptions' Added 'g' flag, for C++ scope declarations. -'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text - area. Default is to allow empty yanks. When 'E' is included, - "y$" in an empty line now is handled as an error (Vi - compatible). - Added 'j' flag: Only add two spaces for a join after a '.', - not after a '?' or '!'. - Added 'A' flag: don't give ATTENTION message. - Added 'L' flag: When not included, and 'list' is set, - 'textwidth' formatting works like 'list' is not set. - Added 'W' flag: Let ":w!" behave like Vi: don't overwrite - readonly files, or a file owned by someone else. -'highlight' Added '@' flag, for '@' characters after the last line on the - screen, and '$' at the end of the line when 'list' is set. - Added 'i' flag: Set highlighting for 'incsearch'. Default - uses "IncSearch" highlight group, which is linked to "Visual". - Disallow 'h' flag in 'highlight' (wasn't used anymore since - 3.0). -'guifont' Win32 GUI only: When set to "*" brings up a font requester. -'guipty' Default on, because so many people need it. -'path' Can contain wildcards, and "**" for searching a whole tree. -'shortmess' Added 'I' flag to avoid the intro message. -'viminfo' Added '%' flag: Store buffer list in viminfo file. - -- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most - machines have much more RAM now that prices have dropped. -- Implemented ":set all&", set all options to their default value. |:set| - -Swap file: -- Don't create a swap file for a readonly file. Then create one on the first - change. Also create a swapfile when the amount of memory used is getting - too high. |swap-file| -- Make swap file "hidden", if possible. On Unix this is done by prepending a - dot to the swap file name. When long file names are used, the DJGPP and - Win32 versions also prepend a dot, in case a file on a mounted Unix file - system is edited. |:swapname| On MSDOS the hidden file attribute is NOT - set, because this causes problems with share.exe. -- 'updatecount' always defaults to non-zero, also for Vi compatible mode. - This means there is a swap file, which can be used for recovery. - -Tags: -- Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed - from - {tag}:{fname} {fname} {command} - to - {tag} {fname} {command};" file: - Which is both faster to parse, shorter and Vi compatible. The old format is - also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS). - |tags-file-format| -- Completion of tags now also includes static tags for other files, at the - end. -- Included "shtags" from Stephen Riehm. -- When finding a matching tag, but the file doesn't exist, continue searching - for another match. Helps when using the same tags file (with links) for - different versions of source code. -- Give a tag with a global match in the current file a higher priority than a - global match in another file. - -Included xxd version V1.8 (Juergen Weigert). - -Autocommands: -- VimLeave autocommands are executed after writing the viminfo file, instead - of before. |VimLeave| -- Allow changing autocommands while executing them. This allows for - self-modifying autocommands. (idea from Goldberg) -- When using autocommands with two or more patterns, could not split - ":if/:endif" over two lines. Now all matching autocommands are executed in - one do_cmdline(). -- Autocommands no longer change the command repeated with ".". -- Search patterns are restored after executing autocommands. This avoids - that the 'hlsearch' highlighting is messed up by autocommands. -- When trying to execute an autocommand, also try matching the pattern with - the short file name. Helps when short file name is different from full - file name (expanded symbolic links). |autocmd-patterns| -- Made the output of ":autocmd" shorter and look better. -- Expand in an ":autocmd" when it is defined. || -- Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested| -- Added [group] argument to ":autocmd". Overrides the currently set group. - |autocmd-groups| -- new events: - |BufUnload| before a buffer is unloaded - |BufDelete| before a buffer is deleted from the buffer list - |FileChangedShell| when a file's modification time has changed after - executing a shell command - |User| user-defined autocommand -- When 'modified' was set by a BufRead* autocommand, it was reset again - afterwards. Now the ":set modified" is remembered. - -GUI: -- Improved GUI scrollbar handling when redrawing is slower than the scrollbar - events are generated. -- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u| - Use "-U" to use another gvimrc file. |-U| -- Handle CTRL-C for external command, also for systems where "setsid()" is - supported. -- When starting the GUI, restrict the window size to the screen size. -- The default menus are read from $VIMRUNTIME/menu.vim. This allows for a - customized default menu. |menu.vim| -- Improved the default menus. Added File/Print, a Window menu, Syntax menu, - etc. -- Added priority to the ":menu" command. Now each menu can be put in a place - where you want it, independent of the order in which the menus are defined. - |menu-priority| - -Give a warning in the intro screen when running the Win32 console version on -Windows 95 because there are problems using this version under Windows 95. -|win32-problems| - -Added 'e' flag for ":substitute" command: Don't complain when not finding a -match (Campbell). |:s| - -When using search commands in a mapping, only the last one is kept in the -history. Avoids that the history is trashed by long mappings. - -Ignore characters after "ex", "view" and "gvim" when checking startup mode. -Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly -mode. |gview| - -When resizing windows, the cursor is kept in the same relative position, if -possible. (Webb) - -":all" and ":ball" no longer close and then open a window for the same buffer. -Avoids losing options, jumplist, and other info. - -"-f" command-line argument is now ignored if Vim was compiled without GUI. -|-f| - -In Visual block mode, the right mouse button picks up the nearest corner. - -Changed default mappings for DOS et al. Removed the DOS-specific mappings, -only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and -Shift-Del. - -Changed the numbers in the output of ":jumps", so you can see where {count} -CTRL-O takes you. |:jumps| - -Using "~" for $HOME now works for all systems. |$HOME| - -Unix: Besides using CTRL-C, also use the INTR character from the tty settings. -Somebody has INTR set to DEL. - -Allow a in a ":help" command argument to end the help command, so another -command can follow. - -Doing "%" on a line that starts with " #if" didn't jump to matching "#else". -Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag. -|%| - -Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved -|ins-completion|: -- 'complete' option added. -- When 'nowrapscan' is set, and no match found, report the searched direction - in the error message. -- Repeating CTRL-X commands adds following words/lines after the match. -- When adding-expansions, accept single character matches. -- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole - insertion. Also fixes not being able to backspace over a word that has been - inserted with CTRL-N. - -When copying characters in Insert mode from previous/next line, with CTRL-E or -CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E| - -Commands that move in the arglist, like ":n" and ":rew", keep the old cursor -position of the file (this is mostly Vi compatible). - -Vim now remembers the '< and '> marks for each buffer. This fixes a problem -that a line-delete in one buffer invalidated the '< and '> marks in another -buffer. |'<| - -For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable. -When using the executable path for $VIM, remove "src/" when present. Should -make Vim find the docs and syntax files when it is run directly after -compiling. |$VIM| - -When quitting Visual mode with , the cursor is put at start of the Visual -area (like after executing an operator). - -Win32 and Unix version: Removed 1100 character limit on external commands. - -Added possibility to include a space in a ":edit +command" argument, by -putting a backslash before it. |+cmd| - -After recovery, BufReadPost autocommands are applied. |:recover| - -Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi| - -Allow "%:p:h" when % is empty. |:_%| - -Included "": file name from the ":source" command. || - -Added "" special character. Helps for avoiding multiple backslashes -in mappings and menus. - -In a help window, a double-click jumps to the tag under the cursor (like -CTRL-]). - - and now work like and , move a word -forward/backward (Windows compatible). || - -Removed the requirement for a ":version" command in a .vimrc file. It wasn't -used for anything. You can use ":if" to handle differences between versions. -|:version| - -For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't -make a difference between '/' and '\' for path separator. - -New termcap options: -"mb": blink. Can only be used by assigning it to one of the other highlight - options. |t_mb| -"bc": backspace character. |t_bc| -"nd": Used for moving the cursor right in the GUI, to avoid removing one line - of pixels from the last bold character. |t_nd| -"xs": highlighting not erased by overwriting, for hpterm. Combined with - 'weirdinvert'. Visual mode works on hpterm now. |t_xs| - -Unix: Set time of patch and backup file same as original file. (Hiebert). - -Amiga: In QuickFix mode no longer opens another window. Shell commands can be -used now. - -Added decmouse patches from David Binette. Can now use Dec and Netterm mouse. -But only when enabled at compile time. - -Added '#' register: Alternate file name |quote#|. Display '#' register with -":dis" command. |:display| - -Removed ':' from 'isfname' default for Unix. Check for "://" in a file name -anyway. Also check for ":\\", for MS-DOS. - -Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in -the man command. "2K" results in "!man 2 ". |K| - -When using "gf" on a relative path name, remove "../" from the file name, like -it's done for file names in the tags file. |gf| - -When finishing recording, don't make the recorded register the default put -register. - -When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some -other enhancements to replace the line number with "." or "$" when possible. - -MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent: -.vimrc/_vimrc and .viminfo/_viminfo - -For systems where case doesn't matter in file names (MSDOS, Amiga), ignore -case while sorting file names. For buffer names too. - -When reading from stdin doesn't work, read from stderr (helps for "foo | xargs -vim"). - -32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4. - -Changed and to skip a WORD instead of a word. - -Warning for changed modified time when overwriting a file now also works on -other systems than Unix. - -Unix: Changed the defaults for configure to be the same as the defaults for -Makefile: include GUI, Perl, and Python. - -Some versions of Motif require "-lXpm". Added check for this in configure. - -Don't add "-L/usr/lib" to the link line, causes problems on a few systems. - -============================================================================== - COMPILE TIME CHANGES *compile-changes-5* - -When compiling, allow a choice for minimal, normal or maximal features in an -easy way, by changing a single line in src/feature.h. -The DOS16 version has been compiled with minimal features to avoid running -out of memory too quickly. |dos16| -The Win32, DJGPP, and OS/2 versions use maximal features, because they have -enough memory. -The Amiga version is available with normal and maximal features. - -Added "make test" to Unix version Makefile. Allows for a quick check if most -"normal" commands work properly. Also tests a few specific commands. - -Added setlocale() with codepage support for DJGPP version. - -autoconf: -- Added autoconf check for -lXdmcp. -- Included check for -lXmu, no longer needed to edit the Makefile for this. -- Switched to autoconf 2.12. -- Added configure check for . Seems to be needed when including - Perl on Linux? -- termlib is now checked before termcap. -- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added - vim_stricmp() for when there's no library function for stricmp(). -- Use "datadir" in configure, instead of our own check for HELPDIR. - -Removed "make proto" from Makefile.manx. Could not make it work without a lot -of #ifdefs. - -Removed "proto/" from paths in proto.h. Needed for the Mac port. - -Drastically changed Makefile.mint. Now it includes the Unix Makefile. - -Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor) - -All source files are now edited with a tabstop of 8 instead of 4, which is -better when debugging and using other tools. 'softtabstop' is set to 4, to -make editing easier. - -Unix: Added "link.sh" script, which removes a few unnecessary libraries from -the link command. - -Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined. -|digraphs-default| - -============================================================================== - BUG FIXES *bug-fixes-5* - -Note: Some of these fixes may only apply to test versions which were - created after version 4.6, but before 5.0. - - -When doing ":bdel", try going to the next loaded buffer. Don't rewind to the -start of the buffer list. - -mch_isdir() for Unix returned TRUE for "" on some systems. - -Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use -backslashes in the temp file names. - -On linux, with a FAT file system, could get spurious "file xxx changed since -editing started" messages, because the time is rounded off to two seconds -unexpectedly. - -Crash in GUI, when selecting a word (double click) and then extend until an -empty line. - -For systems where isdigit() can't handle characters > 255, get_number() caused -a crash when moving the mouse during the prompt for recovery. - -In Insert mode, "CTRL-O P" left the cursor on the last inserted character. -Now the cursor is left after the last putted character. - -When quickfix found an error type other than 'e' or 'w', it was never printed. - -A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument. - -Some systems create a file when generating a temp file name. Filtering would -then create a backup file for this, which was never deleted. Now no backup -file is made when filtering. - -simplify_filename() could remove a ".." after a link, resulting in the wrong -file name. Made simplify_filename also work for MSDOS. Don't use it for -Amiga, since it doesn't have "../". - -otherfile() was unreliable when using links. Could think that reading/writing -was for a different file, when it was the same. - -Pasting with mouse in Replace mode didn't replace anything. - -Window height computed wrong when resizing a window with an autocommand (could -cause a crash). - -":s!foo!bar!" wasn't possible (Vi compatible). - -do_bang() freed memory twice when called recursively, because of autocommands -(test11). Thanks to Electric Fence! - -"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the -command-line, and inverted the cursor. - -":mkexrc" didn't check for failure to open the file, causing a crash. -(Felderhoff). - -Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to -be recognized. Both console and GUI version. - -Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the -reversing of the menu item is still wrong. - -Always reset 'list' option for the help window. - -When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be -in the wrong line and the window to be scrolled (Acevedo). - -After ":set all&", 'lines' and 'ttytype' were still non-default, because the -defaults never got set. Now the defaults for 'lines' and 'columns' are set -after detecting the window size. 'term' and 'ttytype' defaults are set when -detecting the terminal type. - -For (most) non-Unix systems, don't add file names with illegal characters when -expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when -there is no match. - -In X11 GUI, drawing part of the cursor obscured the text. Now the text is -drawn over the cursor, like when it fills the block. (Seibert) - -when started with "-c cmd -q errfile", the cursor would be left in line 1. -Now a ":cc" is done after executing "cmd". - -":ilist" never ignored case, even when 'ignorecase' set. - -"vim -r file" for a readonly file, then making a change, got ATTENTION message -in insert mode, display mixed up until typed. Also don't give ATTENTION -message after recovering a file. - -The abbreviation ":ab #i #include" could not be removed. - -CTRL-L completion (longest common match) on command-line didn't work properly -for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard -Kilgore). - -For terminals that can hide the cursor ("vi" termcap entry), resizing the -window caused the cursor to disappear. - -Using an invalid mark in an Ex address didn't abort the command. - -When 'smarttab' set, would use 'shiftround' when inserting a TAB after a -space. Now it always rounds to a tabstop. - -Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute" -and ":change". (Acevedo). - -"d$" in an empty line still caused an error, even when 'E' is not in -'cpoptions'. - -Help files were stored in the viminfo buffer list without a path. - -GUI: Displaying cursor was not synchronized with other displaying. Caused -several display errors. For example, when the last two lines in the file -start with spaces, "dd" on the last line copied text to the (then) last line. - -Win32: Needed to type CTRL-SHIFT-- to get CTRL-_. - -GUI: Moving the cursor forwards over bold text would remove one column of bold -pixels. - -X11 GUI: When a bold character in the last column was scrolled up or down, one -column of pixels would not be copied. - -Using to move the cursor left can sometimes erase a character. Now use -"le" termcap entry for this. - -Keyword completion with regexp didn't work. e.g., for "b.*crat". - -Fixed: With CTRL-O that jumps to another file, cursor could end up just after -the line. - -Amiga: '$' was missing from character recognized as wildcards, causing $VIM -sometimes not to be expanded. - -":change" didn't adjust marks for deleted lines. - -":help [range]" didn't work. Also for [pattern], [count] and [quotex]. - -For 'cindent'ing, typing "class::method" doesn't align like a label when the -second ':' is typed. -When inserting a CR with 'cindent' set (and a bunch of other conditions) the -cursor went to a wrong location. -'cindent' was wrong for a line that ends in '}'. -'cindent' was wrong after "else {". - -While editing the cmdline in the GUI, could not use the mouse to select text -from the command-line itself. - -When deleting lines, marks in tag stack were only adjusted for the current -window, not for other windows on the same buffer. - -Tag guessing could find a function "some_func" instead of the "func" we were -looking for. - -Tags file name relative to the current file didn't work. - -":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause -a scroll up. Now you no longer have to hit . - -X11 GUI: Selecting text could cause a crash. - -32 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set -to "sh.exe", external commands didn't work. Removed using of command.com, no -longer need to set 'shellquote'. - -Fixed crash when using ":g/pat/i". - -Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a -pointer on the stack to a callback function, now it's static. - -Using "#" and "*" with an operator didn't work. E.g. "c#". - -Command-line expansion didn't work properly after ":*". (Acevedo) - -Setting 'weirdinvert' caused highlighting to be wrong in the GUI. - -":e +4 #" didn't work, because the "4" was in unallocated memory (could cause -a crash). - -Cursor position was wrong for ":e #", after ":e #" failed, because of changes -to the buffer. - -When doing ":buf N", going to a buffer that was edited with ":view", the -readonly flag was reset. Now make a difference between ":e file" and ":buf -file": Only set/reset 'ro' for the first one. - -Avoid |hit-enter| prompt when not able to write viminfo on exit. - -When giving error messages in the terminal where the GUI was started, GUI -escape codes would be written to the terminal. In an xterm this could be seen -as a '$' after the message. - -Mouse would not work directly after ":gui", because full_screen isn't set, -which causes starttermcap() not to do its work. - -'incsearch' did not scroll the window in the same way as the actual search. -When 'nowrap' set, incsearch didn't show a match when it was off the side of -the screen. Now it also shows the whole match, instead of just the cursor -position (if possible). - -":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as -the start of a comment. Now it's Vi compatible. - -Using in the command-line, when there is no previous -cmdline in the history, inserted a NUL on the command-line. - -"i" when on a in column 0 left the cursor in the wrong place. - -GUI Motif: When adding a lot of menu items, the menu bar goes into two rows. -Deleting menu items, reducing the number of rows, now also works. - -With ":g/pat/s//foo/c", a match in the first line was scrolled off of the -screen, so you could not see it. -When using ":s//c", with 'nowrap' set, a match could be off the side of the -screen, so you could not see it. - -When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would -crash. mch_Fullname can now handle file names in read-only memory. (Lottem) - -When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects -when using CTRL-D next. Also, when repeating inserted text that included "0 -CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo) -Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0' -or '^', removed the '0' or '^' and more indent. - -The command "2".p" caused the last inserted text to be executed as commands. -(Acevedo) - -Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted. - -Repeating Insert completion could fail if there are special characters in the -text. (Acevedo) - -":normal /string" caused the window to scroll. Now all ":normal" commands -are executed without scrolling messages. - -Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as -commands. - -Line wrapping for 'tw' was done one character off for insert expansion -inserts. - -buffer_exists() function didn't work properly for buffer names with a symbolic -link in them (e.g. when using buffer_exists(#)). - -Removed the "MOTIF_COMMENT" construction from Makefile. It now works with -FreeBSD make, and probably with NeXT make too. - -Matching the 'define' and 'include' arguments now honor the settings for -'ignorecase'. (Acevedo) - -When one file shown in two windows, Visual selection mixed up cursor position -in current window and other window. - -When doing ":e file" from a help file, the 'isk' option wasn't reset properly, -because of a modeline in the help file. - -When doing ":e!", a cursor in another window on the same buffer could become -invalid, leading to "ml_get: invalid lnum" errors. - -Matching buffer name for when expanded name has a different path from not -expanded name (Brugnara). - -Normal mappings didn't work after an operator. For example, with ":map Q gq", -"QQ" didn't work. - -When ":make" resulted in zero errors, a "No Errors" error message was given -(which breaks mappings). - -When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V -before was not handled Vi compatible. (Acevedo) - -Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann) - -CTRL-X CTRL-I only found one match per line. (Acevedo) -When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message -was stuck. - -Finally managed to ignore the "Quit" menu entry of the Window manager! Now -Vim only exists when there are no changed buffers. - -Trying to start the GUI when $DISPLAY is not set resulted in a crash. -When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks -for flying Vim". -When $DISPLAY not set, starting "gvim" (dropping back to vim) and then -selecting text with the mouse caused a crash. - -"J", with 'joinspaces' set, on a line ending in ". ", caused one space too -many to be added. (Acevedo) - -In insert mode, a CTRL-R {regname} which didn't insert anything left the '"' -on the screen. - -":z10" didn't work. (Clapp) - -"Help "*" didn't work. - -Renamed a lot of functions, to avoid clashes with POSIX name space. - -When adding characters to a line, making it wrap, the following lines were -sometimes not shifted down (e.g. after a tag jump). - -CTRL-E, with 'so' set and cursor on last line, now does not move cursor as -long as the last line is on the screen. - -When there are two windows, doing "^W+^W-" in the bottom window could cause -the status line to be doubled (not redrawn correctly). - -This command would hang: ":n `cat`". Now connect stdin of the external -command to /dev/null, when expanding. - -Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo) - -The "+command" argument to ":split" didn't work when there was no file name. - -When selecting text in the GUI, which is the output of a command-line command -or an external command, the inversion would sometimes remain. - -GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is -not changed anymore. - -GUI: When using the scrollbar or mouse while executing an external command, -this caused garbage characters. - -Showmatch sometimes jumped to the wrong position. Was caused by a call to -findmatch() when redrawing the display (when syntax highlighting is on). - -Search pattern "\(a *\)\{3} did not work correctly, also matched "a a". -Problem with brace_count not being decremented. - -Wildcard expansion added too many non-matching file names. - -When 'iskeyword' contains characters like '~', "*" and "#" didn't work -properly. (Acevedo) - -On Linux, on a FAT file system, modification time can change by one second. -Avoid a "file has changed" warning for a one second difference. - -When using the page-switching in an xterm, Vim would position the cursor on -the last line of the window on exit. Also removed the cursor positioning for -":!" commands. - -":g/pat/p" command (partly) overwrote the command. Now the output is on a -separate line. - -With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were -highlighted too. - -"^" on a line with only white space, put cursor beyond the end of the line. - -When deleting characters before where insertion started ('bs' == 2), could not -use abbreviations. - -CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is -non-zero. CTRL-E didn't work when 'so' is big and the line below the window -wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping -up-down. - -":retab" didn't work well when 'list' is set. - -Amiga: When inserting characters at the last line on the screen, causing it -to wrap, messed up the display. It appears that a '\n' on the last line -doesn't always cause a scroll up. - -In Insert mode "0" deleted an extra character, because Vim thought -that the "0" was still there. (Acevedo) - -"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo) - -"S" when 'autoindent' is off didn't delete leading white space. - -"/" landed on the wrong character when 'incsearch' is set. - -Asking a yes/no question could cause a |hit-enter| prompt. - -When the file consists of one long line (>4100 characters), making changes -caused various errors and a crash. - -DJGPP version could not save long lines (>64000) for undo. - -"yw" on the last char in the file didn't work. Also fixed "6x" at the end of -the line. "6X" at the start of a line fails, but does not break a mapping. In -general, a movement for an operator doesn't beep or flush a mapping, but when -there is nothing to operate on it beeps (this is Vi compatible). - -"m'" and "m`" now set the '' mark at the cursor position. - -Unix: Resetting of signals for external program didn't work, because SIG_DFL -and NULL are the same! For "!!yes|dd count=1|, the yes command kept on -running. - -Partly fixed: Unix GUI: Typeahead while executing an external command was lost. -Now it's not lost while the command is producing output. - -Typing in Insert mode, when it isn't mapped, inserted "". Now -it works like a normal , just like and . - -Redrawing ruler didn't check for old value correctly (caused UMR warnings in -Purify). - -Negative array index in finish_viminfo_history(). - -":g/^/d|mo $" deleted all the lines. The ":move" command now removes the -:global mark from the moved lines. - -Using "vG" while the last line in the window is a "@" line, didn't update -correctly. Just the "v" showed "~" lines. - -"daw" on the last char of the file, when it's a space, moved the cursor beyond -the end of the line. - -When 'hlsearch' was set or reset, only the current buffer was redrawn, while -this affects all windows. - -CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the -file, put the cursor at the bottom of the window, instead of halfway. - -When scrolling up for ":append" command, not all windows were updated -correctly. - -When 'hlsearch' is set, and an auto-indent is highlighted, pressing -didn't remove the highlighting, although the indent was deleted. - -When 'ru' set and 'nosc', using "$j" showed a wrong ruler. - -Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used). - -Mapping didn't work. Changed the key translations to use the shortest -key code possible. This makes the termcode translations and mappings more -consistent. Now all modifiers work in all combinations, not only with , -but also with , , etc. - -For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C -in Ex mode doesn't make Vim exit. - -""a5Y" yanked 25 lines instead of 5. - -"vrxxx" in an empty line could not be undone. - -A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying -when you want to handle what ":make" produced so far). - -":0;/pat" didn't find "pat" in line 1. - -Search for "/test/s+1" at first char of file gave bottom-top message, or -didn't work at all with 'nowrapscan'. - -Bug in viminfo history. Could cause a crash on exit. - -":print" didn't put cursor on first non-blank in line. - -":0r !cat marks were not at the correct position after linewise Visual -selection. - -When translating a help argument to "CTRL-x", prepend or append a '_', when -applicable. - -Blockwise visual mode wasn't correct when moving vertically over a special -character (displayed as two screen characters). - -Renamed "struct option" to "struct vimoption" to avoid name clash with GNU -getopt(). - -":abclear" didn't work (but ":iabclear" and ":cabclear" did work). - -When 'nowrap' used, screen wasn't always updated correctly. - -"vim -c split file" displayed extra lines. - -After starting the GUI, searched the termcap for a "gui" term. - -When 'hls' used, search for "^$" caused a hang. -When 'hls' was set, an error in the last regexp caused trouble. - -Unix: Only output an extra on exit when outputted something in the -alternate screen, or when there is a message that needs to be cleared. - -"/a\{" did strange things, depending on previous search. - -"c}" only redrew one line (with -u NONE). - -For mappings, CTRL-META-A was shown as instead of , while :map -only accepts . Now is shown. - -Unix: When using full path name in a tags file, which contains a link, and -'hidden' set and jumping to a tag in the current file, would get bogus -ATTENTION message. Solved by always expanding file names, even when starting -with '/'. - -'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight -the whole thing. - -"r" didn't work correctly on the last char of a line. - -Sometimes a window resize or other signal caused an endless loop, involving -set_winsize(). - -"vim -r" didn't work, it would just hang (using tgetent() while 'term' is -empty). - -"gk" while 'nowrap' set moved two lines up. - -When windows are split, a message that causes a scroll-up messed up one of the -windows, which required a CTRL-L to be typed. - -Possible endless loop when using shell command in the GUI. - -Menus defined in the .vimrc were removed when GUI started. - -Crash when pasting with the mouse in insert mode. - -Crash with ":unmenu *" in .gvimrc for Athena. - -"5>>" shifted 5 lines 5 times, instead of 1 time. - -CTRL-C when getting a prompt in ":global" didn't interrupt. - -When 'so' is non-zero, and moving the scrollbar completely to the bottom, -there was a lot of flashing. - -GUI: Scrollbar ident must be long for DEC Alpha. - -Some functions called vim_regcomp() without setting reg_magic, which could -lead to unpredictable magicness. - -Crash when clicking around the status line, could get a selection with a -backwards range. - -When deleting more than one line characterwise, the last character wasn't -deleted. - -GUI: Status line could be overwritten when moving the scrollbar quickly (or -when 'wd' is non-zero). - -An ESC at the end of a ":normal" command caused a wait for a terminal code to -finish. Now, a terminal code is not recognized when its start comes from a -mapping or ":normal" command. - -Included patches from Robert Webb for GUI. Layout of the windows is now done -inside Vim, instead of letting the layout manager do this. Makes Vim work -with Lesstif! - -UMR warning in set_expand_context(). - -Memory leak: b_winlnum list was never freed. - -Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the -terminal settings, and looked like it wasn't doing anything good. (suggested -by Juergen Weigert). - -Ruler overwrote "is a directory" message. When starting up, and 'cmdheight' -set to > 1, first message could still be in the last line. - -Removed prototype for putenv() from proto.h, it's already in osdef2.h.in. - -In replace mode, when moving the cursor and then backspacing, wrong characters -were inserted. - -Win32 GUI was checking for a CTRL-C too often, making it slow. - -Removed mappings for MS-DOS that were already covered by commands. - -When visually selecting all lines in a file, cursor at last line, then "J". -Gave ml_get errors. Was a problem with scrolling down during redrawing. - -When doing a linewise operator, and then an operator with a mouse click, it -was also linewise, instead of characterwise. - -When 'list' is set, the column of the ruler was wrong. - -Spurious error message for "/\(b\+\)*". - -When visually selected many lines, message from ":w file" disappeared when -redrawing the screen. - -":set =^[b", then insert "^[b", waited for another character. And then -inserted "" instead of the real character. Was trying to insert -K_SPECIAL x NUL. - -CTRL-W ] didn't use count to set window height. - -GUI: "-font" command-line argument didn't override 'guifont' setting from -.gvimrc. (Acevedo) - -GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences -fixed for the clipboard (Webb). - -Jumping from one help file to another help file, with 'compatible' set, -removed the 'help' flag from the buffer. - -File-writable bit could be reset when using ":w!" for a readonly file. - -There was a wait for CTRL-O n in Insert mode, because the search pattern was -shown. -Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed -nothing was happening. - -":recover" found same swap file twice. - -GUI: "*yy only worked the second time (when pasting to an xterm)." - -DJGPP version (dos32): The system flags were cleared. - -Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin). - -Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with -an empty string. - - in the command-line worked like CTRL-P when no completion started yet. -Now it does completion, last match first. - -Unix: Could get annoying "can't write viminfo" message after doing "su". Now -the viminfo file is overwritten, and the user set back to the original one. - -":set term=builtin_gui" started the GUI in a wrong way. Now it's not -allowed anymore. But "vim -T gui" does start the GUI correctly now. - -GUI: Triple click after a line only put last char in selection, when it is a -single character word. - -When the window is bigger than the screen, the scrolling up of messages was -wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was -obscured by another window. - -When using a wrong option only an error message is printed, to avoid that the -usage information makes it scroll off the screen. - -When exiting because of not being able to read from stdin, didn't preserve the -swap files properly. - -Visual selecting all chars in more than one line, then hit "x" didn't leave an -empty line. For one line it did leave an empty line. - -Message for which autocommand is executing messed up file write message (for -FileWritePost event). - -"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is -not available. - -Crash for ":he " (command-line longer than screen). - -":s/this/that/gc", type "y" two times, then undo, did reset the modified -option, even though the file is still modified. - -Empty lines in a tags file caused a ":tag" to be aborted. - -When hitting 'q' at the more prompt for ":menu", still scrolled a few lines. - -In an xterm that uses the bold trick a single row of characters could remain -after an erased bold character. Now erase one extra char after the bold char, -like for the GUI. - -":pop!" didn't work. - -When the reading a buffer was interrupted, ":w" should not be able to -overwrite the file, ":w!" is required. - -":cf%" caused a crash. - -":gui longfilename", when forking is enabled, could leave part of the -longfilename at the shell prompt. - -============================================================================== -VERSION 5.1 *version-5.1* - -Improvements made between version 5.0 and 5.1. - -This was mostly a bug-fix release, not many new features. - - -Changed *changed-5.1* -------- - -The expand() function now separates file names with instead of a space. -This avoids problems for file names with embedded spaces. To get the old -result, use substitute(expand(foo), "\n", " ", "g"). - -For Insert-expanding dictionaries allow a backslash to be used for -wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash. - -New icon for the Win32 GUI. - -":tag", ":tselect" etc. only use the argument as a regexp when it starts -with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub. -regexp". Also, when the :tag argument contained wildcard characters, it was -not Vi compatible. -When using '/', the argument is taken literally too, with a higher priority, -so it's found before wildcard matches. -Only when the '/' is used are matches with different case found, even though -'ignorecase' isn't set. -Changed "g^]" to only do ":tselect" when there is more than on matching tag. - -Changed some of the default colors, because they were not very readable on a -dark background. - -A character offset to a search pattern can move the cursor to the next or -previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the -end of a line. - -Double-clicks in the status line do no longer start Visual mode. Dragging a -status line no longer stops Visual mode. - -Perl interface: Buffers() and Windows() now use more logical arguments, like -they are used in the rest of Vim (Moore). - -Init '" mark to the first character of the first line. Makes it possible to -use '" in an autocommand without getting an error message. - - -Added *added-5.1* ------ - -"shell_error" internal variable: result of last shell command. - -":echohl" command: Set highlighting for ":echo". - -'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for -status line of not-current window. Default is to use bold for current -window. - -Added buffer_name() and buffer_number() functions (Aaron). -Added flags argument "g" to substitute() function (Aaron). -Added winheight() function. - -Win32: When an external command starts with "start ", no console is opened -for it (Aaron). - -Win32 console: Use termcap codes for bold/reverse based on the current -console attributes. - -Configure check for "strip". (Napier) - -CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally, -instead of as typed. - -Made a few "No match" error messages more informative by adding the pattern -that didn't match. - -"make install" now also copies the macro files. - -tools/tcltags, a shell script to generate a tags file from a TCL file. - -"--with-tlib" setting for configure. Easy way to use termlib: "./configure ---with-tlib=termlib". - -'u' flag in 'cino' for setting the indent for contained () parts. - -When Win32 OLE version can't load the registered type library, ask the user -if he wants to register Vim now. (Erhardt) -Win32 with OLE: When registered automatically, exit Vim. -Included VisVim 1.1b, with a few enhancements and the new icon (Heiko -Erhardt). - -Added patch from Vince Negri for Win32s support. Needs to be compiled with -VC 4.1! - -Perl interface: Added $curbuf. Rationalized Buffers() and Windows(). -(Moore) Added "group" argument to Msg(). - -Included Perl files in DOS source archive. Changed Makefile.bor and -Makefile.w32 to support building a Win32 version with Perl included. - -Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32 -versions, including OLE, Perl and Python. - -Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^]. - -Added "g]" to always do ":tselect" for the ident under the cursor. -Added ":tjump" and ":stjump" commands. -Improved listing of ":tselect" when tag names are a bit long. - -Included patches for the Macintosh version. Also for Python interface. -(St-Amant) - -":buf foo" now also restores cursor column, when the buffer was used before. - -Adjusted the Makefile for different final destinations for the syntax files -and scripts (for Debian Linux). - -Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is -used. This fixes that "VIM:" had to be assigned for the help files, and -$VIM set for the syntax files. Now either of these work. - -Some xterms send vt100 compatible function keys F1-F4. Since it's not -possible to detect this, recognize both type of keys and translate them to - - . - -Added "VimEnter" autocommand. Executed after loading all the startup stuff. - -BeOS version now also runs on Intel CPUs (Seibert). - - -Fixed *fixed-5.1* ------ - -":ts" changed position in the tag stack when cancelled with . -":ts" changed the cursor position for CTRL-T when cancelled with . -":tn" would always jump to the second match. Was using the wrong entry in -the tag stack. -Doing "tag foo", then ":tselect", overwrote the original cursor position in -the tag stack. - -"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc" -to appear for the documentation files. - -When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC -mouse handling interfering. - -Was leaking memory when using selection in X11. - -CTRL-D halfway a command-line left some characters behind the first line(s) -of the listing. - -When expanding directories for ":set path=", put two extra backslashes -before a space in a directory name. - -When 'lisp' set, first line of a function would be indented. Now its indent -is set to zero. And use the indent of the first previous line that is at -the same () level. Added test33. - -"sou" in an empty file didn't work. - -DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe, -because the swap file was made hidden. It's no longer hidden. - -":global" command would sometimes not execute on a matching line. Happened -when a data block is full in ml_replace(). - -For AIX use a tgetent buffer of 2048 bytes, instead of 1024. - -Win32 gvim now only sets the console size for external commands to 25x80 -on Windows 95, not on NT. - -Win32 console: Dead key could cause a crash, because of a missing "WINAPI" -(Deshpande). - -The right mouse button started Visual mode, even when 'mouse' is empty, and -in the command-line, a left click moved the cursor when 'mouse' is empty. -In Visual mode, 'n' in 'mouse' would be used instead of 'v'. - -A blinking cursor or focus change cleared a non-Visual selection. - -CTRL-Home and CTRL-End didn't work for MS-DOS versions. - -Could include NUL in 'iskeyword', causing a crash when doing insert mode -completion. - -Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version. - -In mappings, CTRL-H was replaced by the backspace key code. This caused -problems when it was used as text, e.g. ":map _U :%s/.^H//g". - -":set t_Co=0" was not handled like a normal term. Now it's translated into -":set t_Co=", which works. - -For ":syntax keyword" the "transparent" option did work, although not -mentioned in the help. But synID() returned wrong name. - -"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and -not interruptible. - -"gq" operator inserted screen lines in the wrong situation. Now screen -lines are inserted or deleted when this speeds up displaying. - -cindent was wrong when an "if" contained "((". - -'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer -list from removable media. - -Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project. -Hand-edited to fix this... - -With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at -the end of the line. - -Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP -bug. That bug appears to have been fixed, therefore this translation has -been removed. - -"/^*" didn't work (find '*' in first column). - -"" was not always set for autocommands. E.g., for ":au BufEnter * -let &tags = expand(":p:h") . "/tags". - -In an xterm, the window may be a child of the outer xterm window. Use the -parent window when getting the title and icon names. (Smith) - -When starting with "gvim -bg black -fg white", the value of 'background' is -only set after reading the .gvimrc file. This causes a ":syntax on" to use -the wrong colors. Now allow using ":gui" to open the GUI window and set the -colors. Previously ":gui" in a gvimrc crashed Vim. - -tempname() returned the same name all the time, unless the file was actually -created. Now there are at least 26 different names. - -File name used for was sometimes full path, sometimes file name -relative to current directory. - -When 'background' was set after the GUI window was opened, it could change -colors that were set by the user in the .gvimrc file. Now it only changes -colors that have not been set by the user. - -Ignore special characters after a CSI in the GUI version. These could be -interpreted as special characters in a wrong way. (St-Amant) - -Memory leak in farsi code, when using search or ":s" command. -Farsi string reversing for a mapping was only done for new mappings. Now it -also works for replacing a mapping. - -Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron) - -When BufDelete autocommands were executed, some things for the buffer were -already deleted (esp. Perl stuff). - -Perl interface: Buffer specific items were deleted too soon; fixes "screen -no longer exists" messages. (Moore) - -The Perl functions didn't set the 'modified' flag. - -link.sh did not return an error on exit, which may cause Vim to start -installing, even though there is no executable to install. (Riehm) - -Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to -'cpoptions'. Only for 'compatible' mode. - -":echohl" defined a new group, when the argument was not an existing group. - -"syn on" and ":syn off" could move the cursor, if there is a hidden buffer -that is shorter that the current cursor position. - -The " mark was not set when doing ":b file". - -When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at -the end of the line made the nextgroup also be found in the next line. - -":he g", then ":" and backspace to the start didn't redraw. - -X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the -result is really reverse video (background darker than foreground). - -"cat link.sh | vim -" didn't set syntax highlighting. - -Win32: Expanding "file.sw?" matched ".file.swp". This is an error of -FindnextFile() that we need to work around. (Kilgore) - -"gqgq" gave an "Invalid lnum" error on the last line. -Formatting with "gq" didn't format the first line after a change of comment -leader. - -There was no check for out-of-memory in win_alloc(). - -"vim -h" didn't mention "-register" and "-unregister" for the OLE version. - -Could not increase 'cmdheight' when the last window is only one line. Now -other windows are also made smaller, when necessary. - -Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x. -Changed return type of main() from void to int. (Nam) - -Using '~' twice in a substitute pattern caused a crash. - -"syn on" and ":syn off" could scroll the window, if there is a hidden buffer -that is shorter that the current cursor position. - -":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif". - -With two windows on modified files, with 'autowrite' set, cursor in second -window, ":qa" gave a warning for the file in the first window, but then -auto-wrote the file in the second window. (Webb) - -Win32 GUI scrollbar could only handle 32767 lines. Also makes the -intellimouse wheel use the configurable number of scrolls. (Robinson) - -When using 'patchmode', and the backup file is on another partition, the file -copying messed up the write-file message. - -GUI X11: Alt-Backspace and Alt-Delete didn't work. - -"`0" could put the cursor after the last character in the line, causing -trouble for other commands, like "i". - -When completing tags in insert mode with ^X^], some matches were skipped, -because the compare with other tags was wrong. E.g., when "mnuFileSave" was -already there, "mnuFile" would be skipped. (Negri) - -When scrolling up/down, a syntax item with "keepend" didn't work properly. -Now the flags are also stored for the syntax state at the start of each line. - -When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the -effect. - -Win32 GUI: Don't display "No write since last chance" in a message box, but in -the Vim window. - -============================================================================== -VERSION 5.2 *version-5.2* - -Improvements made between version 5.1 and 5.2. - - -Long lines editable *long-lines* -------------------- - -A single long line that doesn't fit in the window doesn't show a line of @@@ -anymore. Redrawing starts at a character further on in the line, such that -the text around the cursor can be seen. This makes it possible to edit these -long lines when wrapping is on. - - -File browser added *file-browser-5.2* ------------------- - -The Win32, Athena and Motif GUI bring up a file requester if the user asks to -":browse" for the ":e", ":w", ":r", ":so", ":redirect" and -":mkexrc/vimrc/vsess" commands. ":browse e /foo/bar" opens the requester in -the /foo/bar directory, so you can have nice mapping rhs's like ":browse so -$vim/macros". If no initial dir specified for ":browse e", can be compiled to -either begin in the current directory, or that of the current buffer. (Negri -and Kahn) -Added the 'browsedir' option, with value "current", "last" or "buffer". Tells -whether a browse dialog starts in last used dir, dir of current buffer, or -current dir. ":browse w" is unaffected. -The default menus have been changed to use the ":browse" command. - - -Dialogs added *dialogs-added* -------------- - -Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32, -Athena and Motif GUI uses a window-dialog. All other platforms can use -prompt in command-line. ":confirm qa" offers a choice to save all modified -files. - -confirm() function: allows user access to the confirm engine. - -Added 'v' flag to 'guioptions'. When included, a vertical button layout is -always used for the Win32 GUI dialog. Otherwise, a horizontal layout is -preferred. - -Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace. -To be used from a menu entry. (Negri) - - -Popup menu added *popup-menu-added* ----------------- - -When the 'mousemodel' option is set to "popup", the right mouse button -displays the top level menu headed with "PopUp" as pop-up context menu. The -"PopUp" menu is not displayed in the normal menu bar. This currently only -works for Win32 and Athena GUI. - - -Select mode added *new-Select-mode* ------------------ - -A new mode has been added: "Select mode". It is like Visual mode, but typing -a printable character replaces the selection. -- CTRL-G can be used to toggle between Visual mode and Select mode. -- CTRL-O can be used to switch from Select mode to Visual mode for one command. -- Added 'selectmode' option: tells when to start Select mode instead of Visual - mode. -- Added 'mousemodel' option: Change use of mouse buttons. -- Added 'keymodel' option: tells to use shifted special keys to start a - Visual or Select mode selection. -- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' - and 'keymodel' for MS-Windows and xterm behavior. -- The xterm-like selection is now called modeless selection. -- Visual mode mappings and menus are used in Select mode. They automatically - switch to Visual mode first. Afterwards, reselect the area, unless it was - deleted. The "gV" command can be used in a mapping to skip the reselection. -- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode. -- Backspace in Select mode deletes the selected area. - -"mswin.vim" script. Sets behavior mostly like MS-Windows. - - -Session files added *new-session-files* -------------------- - -":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the -currently loaded buffers and current directory, so that :so'ing the file -re-loads those files and cd's to that directory. Also stores and restores -windows. File names are made relative to session file. -The 'sessionoptions' option sets behavior of ":mksession". (Negri) - - -User defined functions and commands *new-user-defined* ------------------------------------ - -Added user defined functions. Defined with ":function" until ":endfunction". -Called with "Func()". Allows the use of a variable number of arguments. -Included support for local variables "l:name". Return a value with ":return". -See |:function|. -Call a function with ":call". When using a range, the function is called for -each line in the range. |:call| -"macros/justify.vim" is an example of using user defined functions. -User functions do not change the last used search pattern or the command to be -redone with ".". -'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble -(crash because of out-of-memory) when a function uses endless recursion. - -User definable Ex commands: ":command", ":delcommand" and ":comclear". -(Moore) See |user-commands|. - - -New interfaces *interfaces-5.2* --------------- - -Tcl interface. (Wilken) See |tcl|. -Uses the ":tcl", ":tcldo" and "tclfile" commands. - -Cscope support. (Kahn) (Sekera) See |cscope|. -Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg', -'cscopetag', 'cscopetagorder' and 'cscopeverbose'. - - -New ports *ports-5.2* ---------- - -Amiga GUI port. (Nielsen) Not tested much yet! - -RISC OS version. (Thomas Leonard) See |riscos|. -This version can run either with a GUI or in text mode, depending upon where -it is invoked. -Deleted the "os_archie" files, they were not working anyway. - - -Multi-byte support *new-multi-byte* ------------------- - -MultiByte support for Win32 GUI. (Baek) -The 'fileencoding' option decides how the text in the file is encoded. -":ascii" works for multi-byte characters. Multi-byte characters work on -Windows 95, even when using the US version. (Aaron) -Needs to be enabled in feature.h. -This has not been tested much yet! - - -New functions *new-functions-5.2* -------------- - -|browse()| puts up a file requester when available. (Negri) -|escape()| escapes characters in a string with a backslash. -|fnamemodify()| modifies a file name. -|input()| asks the user to enter a line. (Aaron) There is a separate - history for lines typed for the input() function. -|argc()| -|argv()| can be used to access the argument list. -|winbufnr()| buffer number of a window. (Aaron) -|winnr()| window number. (Aaron) -|matchstr()| Return matched string. -|setline()| Set a line to a string value. - - -New options *new-options-5.2* ------------ - -'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode. -'browsedir' Tells in which directory a browse dialog starts. -'confirm' when set, :q :w and :e commands always act as if ":confirm" - is used. (Negri) -'cscopeprg' -'cscopetag' -'cscopetagorder' -'cscopeverbose' Set the |cscope| behavior. -'filetype' RISC-OS specific type of file. -'grepformat' -'grepprg' For the |:grep| command. -'keymodel' Tells to use shifted special keys to start a Visual or Select - mode selection. -'listchars' Set character to show in 'list' mode for end-of-line, tabs and - trailing spaces. (partly by Smith) Also sets character to - display if a line doesn't fit when 'nowrap' is set. -'matchpairs' Allows matching '<' with '>', and other single character - pairs. -'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the - focus with a keyboard command moves the pointer to that - window. Also move the pointer when changing the window layout - (split window, change window height, etc.). -'mousemodel' Change use of mouse buttons. -'selection' When set to "inclusive" or "exclusive", the cursor can go one - character past the end of the line in Visual or Select mode. - When set to "old" the old behavior is used. When - "inclusive", the character under the cursor is included in the - operation. When using "exclusive", the new "ve" entry of - 'guicursor' is used. The default is a vertical bar. -'selectmode' Tells when to start Select mode instead of Visual mode. -'sessionoptions' Sets behavior of ":mksession". (Negri) -'showfulltag' When completing a tag in Insert mode, show the tag search - pattern (tidied up) as a choice as well (if there is one). -'swapfile' Whether to use a swap file for a buffer. -'syntax' When it is set, the syntax by that name is loaded. Allows for - setting a specific syntax from a modeline. -'ttymouse' Allows using xterm mouse codes for terminals which name - doesn't start with "xterm". -'wildignore' List of patterns for files that should not be completed at - all. -'wildmode' Can be used to set the type of expansion for 'wildchar'. - Replaces the CTRL-T command for command line completion. - Don't beep when listing all matches. -'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled - entirely by the window system. When "no", ALT keys are never - used by the window system. When "menu" it depends on whether - a key is a menu shortcut. -'winminheight' Minimal height for each window. Default is 1. Set to 0 if - you want zero-line windows. Scrollbar is removed for - zero-height windows. (Negri) - - - -New Ex commands *new-ex-commands-5.2* ---------------- - -|:badd| Add file name to buffer list without side effects. (Negri) -|:behave| Quickly set MS-Windows or xterm behavior. -|:browse| Use file selection dialog. -|:call| Call a function, optionally with a range. -|:cnewer| -|:colder| To access a stack of quickfix error lists. -|:comclear| Clear all user-defined commands. -|:command| Define a user command. -|:continue| Go back to ":while". -|:confirm| Ask confirmation if something unexpected happens. -|:cscope| Execute cscope command. -|:cstag| Use cscope to jump to a tag. -|:delcommand| Delete a user-defined command. -|:delfunction| Delete a user-defined function. -|:endfunction| End of user-defined function. -|:function| Define a user function. -|:grep| Works similar to ":make". (Negri) -|:mksession| Create a session file. -|:nohlsearch| Stop 'hlsearch' highlighting for a moment. -|:Print| This is Vi compatible. Does the same as ":print". -|:promptfind| Search dialog (Win32 GUI). -|:promptrepl| Search/replace dialog (Win32 GUI). -|:return| Return from a user-defined function. -|:simalt| Win32 GUI: Simulate alt-key pressed. (Negri) -|:smagic| Like ":substitute", but always use 'magic'. -|:snomagic| Like ":substitute", but always use 'nomagic'. -|:tcl| Execute TCL command. -|:tcldo| Execute TCL command for a range of lines. -|:tclfile| Execute a TCL script file. -|:tearoff| Tear-off a menu (Win32 GUI). -|:tmenu| -|:tunmenu| Win32 GUI: menu tooltips. (Negri) -|:star| :* Execute a register. - - -Changed *changed-5.2* -------- - -Renamed functions: - buffer_exists() -> bufexists() - buffer_name() -> bufname() - buffer_number() -> bufnr() - file_readable() -> filereadable() - highlight_exists() -> hlexists() - highlightID() -> hlID() - last_buffer_nr() -> bufnr("$") -The old ones are still there, for backwards compatibility. - -The CTRL-_ command in Insert and Command-line mode is only available when the -new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_ -accidentally enter reverse Insert mode, and don't know how to get out. - -When a file name path in ":tselect" listing is too long, remove a part in the -middle and put "..." there. - -Win32 GUI: Made font selector appear inside Vim window, not just any odd -place. (Negri) - -":bn" skips help buffers, unless currently in a help buffer. (Negri) - -When there is a status line and only one window, don't show '^' in the status -line of the current window. - -":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an -alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible. - -When 'insertmode' is set, using CTRL-O to execute a mapping will work like -'insertmode' was not set. This allows "normal" mappings to be used even when -'insertmode' is set. - -When 'mouse' was set already (e.g., in the .vimrc file), don't automatically -set 'mouse' when the GUI starts. - -Removed the 'N', 'I' and 'A' flags from the 'mouse' option. - -Renamed "toggle option" to "boolean option". Some people thought that ":set -xyz" would toggle 'xyz' on/off each time. - -The internal variable "shell_error" contains the error code from the shell, -instead of just 0 or 1. - -When inserting or replacing, typing CTRL-V CTRL- used to insert "". -That is not very useful. Now the CTRL key is ignored and a is inserted. -Same for all other "normal" keys with modifiers. Mapping these modified key -combinations is still possible. -In Insert mode, and can be inserted by using CTRL-K and then -the special character. - -Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They -are now installed like other documentation files. - -winheight() function returns -1 for a non-existing window. It used to be -zero, but that is a valid height now. - -The default for 'selection' is "inclusive", which makes a difference when -using "$" or the mouse to move the cursor in Visual mode. - -":q!" does not exit when there are changed buffers which are hidden. Use -":qa!" to exit anyway. - -Disabled the Perl/Python/Tcl interfaces by default. Not many people use them -and they make the executable a lot bigger. The internal scripting language is -now powerful enough for most tasks. - -The strings from the 'titlestring' and 'iconstring' options are used -untranslated for the Window title and icon. This allows for including a . -Previously a would be shown as "^M" (two characters). - -When a mapping is started in Visual or Select mode which was started from -Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode -until the mapping has ended. Makes it possible to use a mapping in Visual -mode that also works when the Visual mode was started from Select mode. - -Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps -when defining menus in the .vimrc file, or when sourcing mswin.vim. - -Unix: Use /var/tmp for .swp files, if it exists. Files there survive a -reboot (at least on Linux). - - -Added *added-5.2* ------ - ---with-motif-lib configure argument. Allows for using a static Motif library. - -Support for mapping numeric keypad +,-,*,/ keys. (Negri) -When not mapped, they produce the normal character. - -Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer. -(Negri) - -Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be -used for mappings. - -In the output of ":map", highlight the "*" to make clear it's not part of the -rhs. (Roemer) - -When showing the Visual area, the cursor is not switched off, so that it can -be located. The Visual area is now highlighted with a grey background in the -GUI. This makes the cursor visible when it's also reversed. - -Win32: When started with single full pathname (e.g. via double-clicked file), -cd to that file's directory. (Negri) - -Win32 GUI: Tear-off menus, with ":tearoff " command. (Negri) -'t' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif. -It's included by default. -Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri) - -Added ^Kaa and ^KAA digraphs. -Added "euro" symbol to digraph.c. (Corry) - -Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis). -Other GUIs ignore '&' in a menu name. - -DJGPP: Faster screen updating (John Lange). - -Clustering of syntax groups ":syntax cluster" (Bigham). -Including syntax files: ":syntax include" (Bigham). - -Keep column when switching buffers, when 'nosol' is set (Radics). - -Number function for Perl interface. - -Support for Intellimouse in Athena GUI. (Jensen) - -":sleep" also accepts an argument in milliseconds, when "m" is used. - -Added 'p' flag in 'guioptions': Install callbacks for enter/leave window -events. Makes cursor blinking work for Terhaar, breaks it for me. - -"--help" and "--version" command-line arguments. - -Non-text in ":list" output is highlighted with NonText. - -Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as -synonym for "iB". New: "i<" and "i>", to select . All this also for -"a" objects. - -'O' flag in 'shortmess': message for reading a file overwrites any previous -message. (Negri) - -Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off. -Included a list with self-made toolbar bitmaps. (Negri) - -Added menu priority for sub-menus. Implemented for Win32 and Motif GUI. -Display menu priority with ":menu" command. -Default and Syntax menus now include priority for items. Allows inserting -menu items in between the default ones. - -When the 'number' option is on, highlight line numbers with the LineNr group. - -"Ignore" highlight group: Text highlighted with this is made blank. It is -used to hide special characters in the help text. - -Included Exuberant Ctags version 2.3, with C++ support, Java support and -recurse into directories. (Hiebert) - -When a tags file is not sorted, and this is detected (in a simplistic way), an -error message is given. - -":unlet" accepts a "!", to ignore non-existing variables, and accepts more -than one argument. (Roemer) -Completion of variable names for ":unlet". (Roemer) - -When there is an error in a function which is called by another function, show -the call stack in the error message. - -New file name modifiers: -":.": reduce file name to be relative to current dir. -":~": reduce file name to be relative to home dir. -":s?pat?sub?": substitute "pat" with "sub" once. -":gs?pat?sub?": substitute "pat" with "sub" globally. - -New configure arguments: --enable-min-features and --enable-max-features. -Easy way to switch to minimum or maximum features. - -New compile-time feature: modify_fname. For file name modifiers, e.g, -"%:p:h". Can be disabled to save some code (16 bit DOS). - -When using whole-line completion in Insert mode, and 'cindent' is set, indent -the line properly. - -MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri) - -Included new set of Farsi fonts. (Shiran) - -Accelerator text now also works in Motif. All menus can be defined with & for -mnemonic and TAB for accelerator text. They are ignored on systems that don't -support them. -When removing or replacing a menu, compare the menu name only up to the -before the mnemonic. - -'i' and 'I' flags after ":substitute": ignore case or not. - -"make install" complains if the runtime files are missing. - -Unix: When finding an existing swap file that can't be opened, mention the -owner of the file in the ATTENTION message. - -The 'i', 't' and 'k' options in 'complete' now also print the place where they -are looking for matches. (Acevedo) - -"gJ" command: Join lines without inserting a space. - -Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed -when no count given, the count is added otherwise. Configure checks if "man --s 2 read" works, and sets the default for 'keywordprg' accordingly. - -If you do a ":bd" and there is only one window open, Vim tries to move to a -buffer of the same type (i.e. non-help to non-help, help to help), for -consistent behavior to :bnext/:bprev. (Negri) - -Allow "" to be used as the rhs of a mapping. ":map xx ", maps "xx" -to nothing at all. - -In a ":menu" command, "" can be used instead of a real tab, in the menu -path. This makes it more easy to type, no backslash needed. - -POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:], -[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], -[:space:], [:upper:] and [:xdigit:]. (Briscoe) - -regexp character classes (for fast syntax highlight matching): - digits: \d [0-9] \D not digit (Roemer) - hex: \x [0-9a-fA-F] \X not hex - octal: \o [0-7] \O not octal - word: \w [a-zA-Z0-9_] \W not word - head: \h [a-zA-Z_] \H not head - alphabetic: \a [a-zA-Z] \A not alphabetic - lowercase: \l [a-z] \L not lowercase - uppercase: \u [A-Z] \U not uppercase - -":set" now accepts "+=", |^=" and "-=": add or remove parts of a string -option, add or subtract a number from a number option. A comma is -automagically inserted or deleted for options that are a comma separated list. - -Filetype feature, for autocommands. Uses a file type instead of a pattern to -match a file. Currently only used for RISC OS. (Leonard) - -In a pattern for an autocommand, environment variables can be used. They are -expanded when the autocommand is defined. - -"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying -the ":file" command to change the name of a buffer. -"VimLeavePre" autocommand event: before writing the .viminfo file. - -For autocommands argument: is buffer number, like . - -Made syntax highlighting a bit faster when scrolling backwards, by keeping -more syncing context. - -Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or -inserting screen lines. - -GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved -less than a pixel. - -Included ":highlight" in bugreport.vim. - -Created install.exe program, for simplistic installation on DOS and -MS-Windows. - -New register: '_', the black hole. When writing to it, nothing happens. When -reading from it, it's always empty. Can be used to avoid a delete or change -command to modify the registers, or reduce memory use for big changes. - -CTRL-V xff enters character by hex number. CTRL-V o123 enters character by -octal number. (Aaron) - -Improved performance of syntax highlighting by skipping check for "keepend" -when there isn't any. - -Moved the mode message ("-- INSERT --") to the last line of the screen. When -'cmdheight' is more than one, messages will remain readable. - -When listing matching files, they are also sorted on 'suffixes', such that -they are listed in the same order as CTRL-N retrieves them. - -synIDattr() takes a third argument (optionally), which tells for which -terminal type to get the attributes for. This makes it possible to run -2html.vim outside of gvim (using color names instead of #RRGGBB). - -Memory profiling, only for debugging. Prints at exit, and with "g^A" command. -(Kahn) - -DOS: When using a file in the current drive, remove the drive name: -"A:\dir\file" -> "\dir\file". This helps when moving a session file on a -floppy from "A:\dir" to "B:\dir". - -Increased number of remembered jumps from 30 to 50 per window. - -Command to temporarily disable 'hls' highlighting until the next search: -":nohlsearch". - -"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the -inserted text. Used for the CTRL-V command in MS-Windows mode. - - -Fixed *fixed-5.2* ------ - -Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed -this, Windows will handle the bold text anyway. (Negri) - -patch 5.1.1: Win32s GUI: pasting caused a crash (Negri) - -patch 5.1.2: When entering another window, where characters before the cursor -have been deleted, could have a cursor beyond the end of the line. - -patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri) - -patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version -(Scott). - -patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that -doesn't fit in the window, and splitting that line in two. - -patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line -(so that the window scrolls horizontally), ":set wrap". Following Visual -selection was wrong. - -patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do -binary searching. - -patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler. - -patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear. - -patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer -without a name exists. - -patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted -"make shadow" for the links in the ctags directory. - -patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a -buffer name. - -patch 5.1.13: When completing file names on the command-line, reallocating the -command-line may go wrong. - -patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch -specified. - -Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to -Fullname_save(). (Negri) - -Win32: ":!start" to invoke a program without opening a console, swapping -screens, or waiting for completion in either console or gui version, e.g. you -can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning -a shell" bug. (enhancement of Aaron patch) (Negri) - -Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri) - -Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c" -displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri) - -Win32 GUI: No copy to Windows clipboard when it's not desired. - -Win32s: Fix pasting from clipboard - made an assumption not valid under -Win32s. (Negri) - -Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing -functions. (Negri) - -Win32 GUI: Middle mouse button emulation now works in GUI! (Negri) - -Could skip messages when combining commands in one line, e.g.: -":echo "hello" | write". - -Perl interpreter was disabled before executing VimLeave autocommands. Could -not use ":perl" in them. (Aaron) - -Included patch for the Intellimouse (Aaron/Robinson). - -Could not set 'ls' to one, when last window has only one line. (Mitterand) - -Fixed a memory leak when removing menus. - -After ":only" the ruler could overwrite a message. - -Dos32: removed changing of __system_flags. It appears to work better when -it's left at the default value. - -p_aleph was an int instead of along, caused trouble on systems where -sizeof(int) != sizeof(long). (Schmidt) - -Fixed enum problems for Ultrix. (Seibert) - -Small redraw problem: "dd" on last line in file cleared wrong line. - -Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 | -.d | endif". - -Command "+|" on the last line of the file caused ml_get errors. - -Memory underrun in eval_vars(). (Aaron) - -Don't rename files in a difficult way, except on Windows 95 (was also done on -Windows NT). - -Win32 GUI: An external command that produces an error code put the error -message in a dialog box. had to close the window and close the dialog. Now -the error code is displayed in the console. (Negri) - -"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle) - -In Insert mode, when entering a window in Insert mode, allow the cursor to be -one char beyond the text. - -Renamed machine dependent rename() to mch_rename(). Define mch_rename() to -rename() when it works properly. - -Rename vim_chdir() to mch_chdir(), because it's machine dependent. - -When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more -files to edit" error. - -In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed. -Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins) - -Give an error message for an unknown argument after "--". E.g. for "vim ---xyz". - -The FileChangedShell autocommand didn't set to the name of the changed -file. - -When doing ":e file", causing the attention message, there sometimes was no -hit-enter prompt. Caused by empty line or "endif" at end of sourced file. - -A large number of patches for the VMS version. (Hunsaker) - -When CTRL-L completion (find longest match) results in a shorter string, no -completion is done (happens with ":help"). - -Crash in Win32 GUI version, when using an Ex "@" command, because -LinePointers[] was used while not initialized. - -Win32 GUI: allow mapping of Alt-Space. - -Output from "vim -h" was sent to stderr. Sending it to stdout is better, so -one can use "vim -h | more". - -In command-line mode, ":vi[!]" should reload the file, just like ":e[!]". -In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi -compatible. - -When using a ":set ls=1" in the .gvimrc file, would get a status line for a -single window. (Robinson) - -Didn't give an error message for ":set ai,xx". (Roemer) -Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx". - -Non-Unix systems: That a file exists but is unreadable is recognized as "new -file". Now check for existence when file can't be opened (like Unix). - -Unix: osdef.sh didn't handle declarations where the function name is at the -first column of the line. - -DJGPP: Shortening of file names didn't work properly, because get_cwd() -returned a path with backslashes. (Negri) - -When using a 'comments' part where a space is required after the middle part, -always insert a space when starting a new line. Helps for C comments, below a -line with "/****". - -Replacing path of home directory with "~/" could be wrong for file names -with embedded spaces or commas. - -A few fixes for the Sniff interface. (Leherbauer) - -When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused -trouble. Same for ":s/x/y/c" prompt. - -With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks, -instead of the characters specified with 'listchars'. Also for other -characters that take more than one screen character. - -When setting 'guifont' to an unknown font name, the previous font was lost and -a default font would be used. (Steed) - -DOS: Filenames in the root directory didn't get shortened properly. (Negri) - -DJGPP: making a full path name out of a file name didn't work properly when -there is no _fullpath() function. (Negri) - -Win32 console: ":sh" caused a crash. (Negri) - -Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably -(could hang Windows 95). (Negri) - -Win32: The change-drive function was not correct, went to the wrong drive. -(Tsindlekht) - -GUI: When editing a command line in Ex mode, Tabs were sometimes not -backspaced properly, and unprintable characters were displayed directly. -non-GUI can still be wrong, because a system function is called for this. - -":set" didn't stop after an error. For example ":set no ai" gave an error for -"no", but still set "ai". Now ":set" stops after the first error. - -When running configure for ctags, $LDFLAGS wasn't passed to it, causing -trouble for IRIX. - -"@%" and "@#" when file name not set gave an error message. Now they just -return an empty string. (Steed) - -CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers. -(Steed) - -":echo" always started with a blank. - -Updating GUI cursor shape didn't always work (e.g., when blinking is off). - -In silent Ex mode ("ex -s" or "ex in mappings, ":mkexrc" produced an exrc file that can't be -used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add -a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a -special key name. - -Gave confusing error message for ":set guifont=-*-lucida-*": first "font is -not fixed width", then "Unknown font". - -Some options were still completely left out, instead of included as hidden -options. - -While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after -executing an external command (in rare cases). - -In os_unixx.h, signal() was defined to sigset(), while it already was. - -Memory leak when executing autocommands (was reported as a memory leak in -syntax highlighting). - -Didn't print source of error sometimes, because pointers were the same, -although names were different. - -Avoid a number of UMR errors from Purify (third argument to open()). - -A swap file could still be created just after setting 'updatecount' to zero, -when there is an empty buffer and doing ":e file". (Kutschera) - -Test 35 failed on 64 bit machines. (Schild) - -With "p" and "P" commands, redrawing was slow. - -Awk script for html documentation didn't work correctly with AIX awk. -Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe) -The makehtml.awk script had a small problem, causing extra lines to be -inserted. (Briscoe) - -"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a -wrong way. Also made "gqq" work to be consistent with "guu". - -C indent was wrong after "case ':':". - -":au BufReadPre *.c put": Line from put text was deleted, because the buffer -was still assumed to be empty. - -Text pasted with the Edit/Paste menu was subject to 'textwidth' and -'autoindent'. That was inconsistent with using the mouse to paste. Now "*p -is used. - -When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag, -window was split. - -":ts" got stuck on a tags line that has two extra fields. - -In Insert mode, with 'showmode' on, message was directly -overwritten by mode message, if preceded with search command warning message. - -When putting the result of an expression with "=p, newlines were -inserted like ^@ (NUL in the file). Now the string is split up in lines at -the newline. - -putenv() was declared with "const char *" in pty.c, but with "char *" in -osdef2.h.in. Made the last one also "const char *". - -":help {word}", where +{word} is a feature, jumped to the feature list instead -of where the command was explained. E.g., ":help browse", ":help autocmd". - -Using the "\" form in an expression only got one byte, even when using a -special character that uses several bytes (e.g., "\"). -Changed "\" to produce CTRL-H instead of the special key code for the -backspace key. "\" produces 0x7f. - -":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'. - -The shell syntax didn't contain a "syn sync maxlines" setting. In a long file -without recognizable items, syncing took so long it looked like Vim hangs. -Added a maxlines setting, and made syncing interruptible. - -The "gs" command didn't flush output before waiting. - -Memory leaks for: - ":if 0 | let a = b . c | endif" - "let a = b[c]" - ":so {file}" where {file} contains a ":while" - -GUI: allocated fonts were never released. (Leonard) - -Makefile.bor: -- Changed $(DEFINES) into a list of "-D" options, so that it can also be used - for the resource compiler. (not tested!) -- "bcc.cfg" was used for all configurations. When building for another - configuration, the settings for the previous one would be used. Moved - "bcc.cfg" to the object directory. (Geddes) -- Included targets for vimrun, install, ctags and xxd. Changed the default to - use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron) - -"2*" search for the word under the cursor with "2" prepended. (Leonard) - -When deleting into a specific register, would still overwrite the non-Win32 -GUI selection. Now ""x"*P works. - -When deleting into the "" register, would write to the last used register. -Now ""x always writes to the unnamed register. - -GUI Athena: A submenu with a '.' in it didn't work. E.g., -":amenu Syntax.XY\.Z.foo lll". - -When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of -matching tags could change, because the current file is different. Now the -existing matches are kept in the same order, newly found matches are added -after them, not matter what the current file is. - -":ta" didn't find the second entry in a tags file, if the second entry was -longer than the first one. - -When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the -wrong position. can_si was still TRUE when the cursor is not in the indent of -the line. - -Running an external command in Win32 version had the problem that Vim exits -when the X on the console is hit (and confirmed). Now use the "vimrun" -command to start the external command indirectly. (Negri) - -Win32 GUI: When running an external filter, do it in a minimized DOS box. -(Negri) - -":let" listed variables without translation into printable characters. - -Win32 console: When resizing the window, switching back to the old size -(when exiting or executing an external command) sometimes failed. (Negri) -This appears to also fix a "non fixable" problem: -Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar, -the scrollbar disappeared and was not restored when Vim exits. This does work -under NT 3.51, it appears not to be a Vim problem. - -When executing BufDelete and BufUnload autocommands for a buffer without a -name, the name of the current buffer was used for . - -When jumping to a tag it reported "tag 1 of >2", while in fact there could be -only two matches. Changed to "tag 1 of 2 or more". - -":tjump tag" did a linear search in the tags file, which can be slow. - -Configure didn't find "LibXm.so.2.0", a Xm library with a version number. - -Win32 GUI: When using a shifted key with ALT, the shift modifier would remain -set, even when it was already used by changing the used key. E.g., "" -resulted in "", but it should be "". (Negri) - -A call to ga_init() was often followed by setting growsize and itemsize. -Created ga_init2() for this, which looks better. (Aaron) - -Function filereadable() could call fopen() with an empty string, which might -be illegal. - -X Windows GUI: When executing an external command that outputs text, could -write one character beyond the end of a buffer, which caused a crash. (Kohan) - -When using "*" or "#" on a string that includes '/' or '?' (when these are -included in 'isk'), they were not escaped. (Parmelan) - -When adding a ToolBar menu in the Motif GUI, the submenu_id field was not -cleared, causing random problems. - -When adding a menu, the check if this menu (or submenu) name already exists -didn't compare with the simplified version (no mnemonic or accelerator) of the -new menu. Could get two menus with the same name, e.g., "File" and "&File". - -Breaking a line because of 'textwidth' at the last line in the window caused a -redraw of the whole window instead of a scroll. Speeds up normal typing with -'textwidth' a lot for slow terminals. - -An invalid line number produced an "invalid range" error, even when it wasn't -to be executed (inside "if 0"). - -When the unnamed, first buffer is re-used, the "BufDelete" autocommand was -not called. It would stick in a buffer list menu. - -When doing "%" on the NUL after the line, a "{" or "}" in the last character -of the line was not found. - -The Insert mode menu was not used for the "s" command, the Operator-pending -menu was used instead. - -With 'compatible' set, some syntax highlighting was not correct, because of -using "[\t]" for a search pattern. Now use the regexps for syntax -highlighting like the 'cpoptions' option is empty (as was documented already). - -When using "map ms" or "map sss" the output of ":map" didn't -show any lhs for the mapping (if 'isprint' includes 160). Now always use - and , even when they are printable. - -Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for -Athena, where menus don't wrap). - -When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and -digits, repeating the insert didn't work. - -The file "tools/ccfilter.README.txt" could not be unpacked when using short -file names, because of the two dots. Renamed it to -"tools/ccfilter_README.txt". - -For a dark 'background', using Blue for Directory and SpecialKey highlight -groups is not very readable. Use Cyan instead. - -In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into -a block with a local variable. That's illegal for some compilers. - -Win32 GUI: There was a row of pixels at the bottom of the window which was not -drawn. (Aaron) - -Under DOS, editing "filename/" created a swap file of "filename/.swp". Should -be "filename/_swp". - -Win32 GUI: pointer was hidden when executing an external command. - -When 'so' is 999, "J" near the end of the file didn't redisplay correctly. - -":0a" inserted after the first line, instead of before the first line. - -Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now -":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*'). -":file {o}{n}{e}" now results in file name "one". - -Memory leak when setting a string option back to its default value. - -============================================================================== -VERSION 5.3 *version-5.3* - -Version 5.3 was a bug-fix version of 5.2. There are not many changes. -Improvements made between version 5.2 and 5.3: - -Changed *changed-5.3* -------- - -Renamed "IDE" menu to "Tools" menu. - - -Added *added-5.3* ------ - -Win32 GUI: Give a warning when Vim is activated, and one of the files changed -since editing started. (Negri) - - -Fixed *fixed-5.3* ------ - -5.2.1: Win32 GUI: space for external command was not properly allocated, could -cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after -5.2. - -5.2.2: Some commands didn't complain when used without an argument, although -they need one: ":badd", ":browse", ":call", ":confirm", ":behave", -":delfunction", ":delcommand" and ":tearoff". -":endfunction" outside of a function gave wrong error message: "Command not -implemented". Should be ":endfunction not inside a function". - -5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path -with a space in it, executing external commands with vimrun didn't work. - -5.2.4: Pasting with the mouse in Insert mode left the cursor on the last -pasted character, instead of behind it. - -5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left -didn't include the last character in the selection. - -5.2.6: When deleting text from Insert mode (with "D" or the mouse), which -includes the last character in the line, the cursor could be left on the last -character in the line, instead of just after it. - -5.2.7: Win32 GUI: scrollbar was one pixel too big. - -5.2.8: Completion of "PopUp" menu showed the derivatives "PopUpc", "PopUPi", -etc. ":menu" also showed these. - -5.2.9: When using two input() functions on a row, the prompt would not be -drawn in column 0. - -5.2.10: A loop with input() could not be broken with CTRL-C. - -5.2.11: ":call asdf" and ":call asdf(" didn't give an error message. - -5.2.12: Recursively using ":normal" crashes Vim after a while. E.g.: -":map gq :normal gq" - -5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using -":help", then "/\k*" in another window with 'hlsearch' set. - -5.2.14: When using ":source" from a function, global variables would not be -available unless "g:" was used. - -5.2.15: XPM files can have the extension ".pm", which is the same as for Perl -modules. Added "syntax/pmfile.vim" to handle this. - -5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an -empty buffer. mch_Fullname() didn't append a slash at the end of a directory -name. - -Should include the character under the cursor in the Visual area when using -'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f". - -""p would always put register 0, instead of the unnamed (last used) register. -Reverse the change that ""x doesn't write in the unnamed (last used) register. -It would always write in register 0, which isn't very useful. Use "-x for the -paste mappings in Visual mode. - -When there is one long line on the screen, and 'showcmd' is off, "0$" didn't -redraw the screen. - -Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor -shape is changed. (Negri) - -When cancelling Visual mode, and the cursor moves to the start, the wanted -column wasn't set, "k" or "j" moved to the wrong column. - -When using ":browse" or ":confirm", was checking for a comment and separating -bar, which can break some commands. - -Included fixes for Macintosh. (Kielhorn) - -============================================================================== -VERSION 5.4 *version-5.4* - -Version 5.4 adds new features, useful changes and a lot of bug fixes. - - -Runtime directory introduced *new-runtime-dir* ----------------------------- - -The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM. -You normally don't set $VIMRUNTIME but let Vim find it, by using -$VIM/vim{version}, or use $VIM when that doesn't exist. This allows for -separating the user files from the distributed files and makes it more easy to -upgrade to another version. It also makes it possible to keep two versions of -Vim around, each with their own runtime files. - -In the Unix distribution the runtime files have been moved to the "runtime" -directory. This makes it possible to copy all the runtime files at once, -without the need to know what needs to be copied. - -The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level -"vim" directory. This is to make clear that user-modified files should be put -here. The directory that contains the executables doesn't have '-' or '.' -characters. This avoids strange extensions. - -The $VIM and $VIMRUNTIME variables are set when they are first used. This -allows them to be used by Perl, for example. - -The runtime files are also found in a directory called "$VIM/runtime". This -helps when running Vim after just unpacking the runtime archive. When using -an executable in the "src" directory, Vim checks if "vim54" or "runtime" can -be added after removing it. This make the runtime files be found just after -compiling. - -A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful -if $VIM doesn't point to above the runtime directory but to e.g., "/etc/". - - -Filetype introduced *new-filetype-5.4* -------------------- - -Syntax files are now loaded with the new FileType autocommand. Old -"mysyntaxfile" files will no longer work. |filetypes| - -The scripts for loading syntax highlighting have been changed to use the -new Syntax autocommand event. - -This combination of Filetype and Syntax events allows tuning the syntax -highlighting a bit more, also when selected from the Syntax menu. The -FileType autocommand can also be used to set options and mappings specifically -for that type of file. - -The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The -":filetype on" command has been added for this. ":syntax on" also loads it. - -The 'filetype' option has been added. It is used to trigger the FileType -autocommand event, like the 'syntax' option does for the Syntax event. - -":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch -syntax highlighting on/off for the current file. - -The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax -menu is included both when ":filetype on" and when ":syntax manual" is used. - -Renamed the old 'filetype' option to 'osfiletype'. It was only used for -RISCOS. 'filetype' is now used for the common file type. - -Added the ":syntax manual" command. Allows manual selection of the syntax to -be used, e.g., from a modeline. - - -Vim script line continuation *new-line-continuation* ----------------------------- - -When an Ex line starts with a backslash, it is concatenated to the previous -line. This avoids the need for long lines. |line-continuation| (Roemer) -Example: > - if has("dialog_con") || - \ has("dialog_gui") - :let result = confirm("Enter your choice", - \ "&Yes\n&No\n&Maybe", - \ 2) - endif - - -Improved session files *improved-sessions* ----------------------- - -New words for 'sessionoptions': -- "help" Restore the help window. -- "blank" Restore empty windows. -- "winpos" Restore the Vim window position. Uses the new ":winpos" - command -- "buffers" Restore hidden and unloaded buffers. Without it only the - buffers in windows are restored. -- "slash" Replace backward by forward slashes in file names. -- "globals" Store global variables. -- "unix" Use unix file format ( instead of ) - -The ":mksession" and 'sessionoptions' are now in the +mksession feature. - -The top line of the window is also restored when using a session file. - -":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected -when loading a file. - -(Most of this was done by Vince Negri and Robert Webb) - - -Autocommands improved *improved-autocmds-5.4* ---------------------- - -New events: -|FileType| When the file type has been detected. -|FocusGained| When Vim got input focus. (Negri) -|FocusLost| When Vim lost input focus. (Negri) -|BufCreate| Called just after a new buffer has been created or has been - renamed. (Madsen) -|CursorHold| Triggered when no key has been typed for 'updatetime'. Can be - used to do something with the word under the cursor. (Negri) - Implemented CursorHold autocommand event for Unix. (Zellner) - Also for Amiga and MS-DOS. -|GUIEnter| Can be used to do something with the GUI window after it has - been created (e.g., a ":winpos 100 50"). -|BufHidden| When a buffer becomes hidden. Used to delete the - option-window when it becomes hidden. - -Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen) - -The "" pattern can be used like "" for autocommands, except -that it is the matching value for the FileType and Syntax events. - -When ":let @/ = " is used in an autocommand, this last search pattern -will be used after the autocommand finishes. - -Made loading autocommands a bit faster. Avoid doing strlen() on each exiting -pattern for each new pattern by remembering the length. - - -Encryption *new-encryption* ----------- - -Files can be encrypted when writing and decrypted when reading. Added the -'key' option, "-x" command line argument and ":X" command. |encryption| (based -on patch from Mohsin Ahmed) - -When reading a file, there is an automatic detection whether it has been -crypted. Vim will then prompt for the key. - -Note that the encryption method is not compatible with Vi. The encryption is -not unbreakable. This allows it to be exported from the US. - - -GTK GUI port *new-GTK-GUI* ------------- - -New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk| -Added the |:helpfind| command. (Kahn and Dalecki) - - -Menu changes *menu-changes-5.4* ------------- - -Menus can now also be used in the console. It is enabled by the new -'wildmenu' option. This shows matches for command-line completion like a -menu. This works as a minimal file browser. - -The new |:emenu| command can be used to execute a menu item. - -Uses the last status line to list items, or inserts a line just above the -command line. (Negri) - -The 'wildcharx' option can be used to trigger 'wildmenu' completion from a -mapping. - -When compiled without menus, this can be detected with has("menu"). Also show -this in the ":version" output. Allow compiling GUI versions without menu -support. Only include toolbar support when there is menu support. - -Moved the "Window" menu all the way to the right (priority 70). Looks more -familiar for people working with MS-Windows, shouldn't matter for others. - -Included "Buffers" menu. Works with existing autocommands and functions. It -can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen) - -Win32 supports separators in a menu: "-.*-". (Geddes) -Menu separators for Motif now work too. - -Made Popup menu for Motif GUI work. (Madsen) - -'M' flag in 'guioptions': Don't source the system menu. - -All the menu code has been moved from gui.c to menu.c. - - -Viminfo improved *improved-viminfo* ----------------- - -New flags for 'viminfo': -'!' Store global variables in the viminfo file if they are in uppercase - letters. (Negri) -'h' Do ":nohlsearch" when loading a viminfo file. - -Store search patterns in the viminfo file with their offset, magic, etc. Also -store the flag whether 'hlsearch' highlighting is on or off (which is not used -if the 'h' flag is in 'viminfo'). - -Give an error message when setting 'viminfo' without commas. - - -Various new commands *new-commands-5.4* --------------------- - -Operator |g?|: rot13 encoding. (Negri) - -|zH| and |zL| commands: Horizontal scrolling by half a page. -|gm| move cursor to middle of screen line. (Ideas by Campbell) - -Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|, -|v_b_<| and |v_b_>|. (Kelly) - -New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to -Normal mode when in Insert or Command-line mode. Can be used by VisVim or -other OLE programs to make sure Vim is in Normal mode, without causing a beep. -|CTRL-\_CTRL-N| - -":cscope kill" command to use the connection filename. |:cscope| (Kahn) - -|:startinsert| command: Start Insert mode next. - -|:history| command, to show all four types of histories. (Roemer) - -|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end -of method in a (Java) class. - -":@*" executes the * register. |:@| (Acevedo) - -|go| and |:goto| commands: Jump to byte offset in the file. - -|gR| and |gr| command: Virtual Replace mode. Replace characters without -changing the layout. (Webb) - -":cd -" changes to the directory from before the previous ":cd" command. -|:cd-| (Webb) - -Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated -window. Can be used to see the context of the tag (e.g., function arguments). -(Negri) -|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore) -'previewheight' option, height for the preview window. -Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|. - -|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit -it. - -The |:options| command opens an option window that shows the current option -values. Or use ":browse set" to open it. Options are grouped by function. -Offers short help on each option. Hit to jump to more help. Edit the -option value and hit on a "set" line to set a new value. - - -Various new options *new-options-5.4* -------------------- - -Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind| -command. Makes windows scroll the same amount (horizontally and/or -vertically). (Ralston) - -'conskey' option for MS-DOS. Use direct console I/O. This should work with -telnet (untested!). - -'statusline' option: Configurable contents of the status line. Also allows -showing the byte offset in the file. Highlighting with %1* to %9*, using the -new highlight groups User1 to User9. (Madsen) - -'rulerformat' option: Configurable contents of the ruler, like 'statusline'. -(Madsen) - -'write' option: When off, writing files is not allowed. Avoids overwriting a -file even with ":w!". The |-m| command line option resets 'write'. - -'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed -register like "*. (Cortopassi) Value "autoselect": Like what 'a' in -'guioptions' does but works in the terminal. - -'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI -versions. Allows using normal fonts when vim is compiled with this feature. -(Nam) - -'guiheadroom' option: How much room to allow above/below the GUI window. -Used for Motif, Athena and GTK. - -Implemented 'tagstack' option: When off, pushing tags onto the stack is -disabled (Vi compatible). Useful for mappings. - -'shellslash' option. Only for systems that use a backslash as a file -separator. This option will use a forward slash in file names when expanding -it. Useful when 'shell' is sh or csh. - -'pastetoggle' option: Key sequence that toggles 'paste'. Works around the -problem that mappings don't work in Insert mode when 'paste' is set. - -'display' option: When set to "lastline", the last line fills the window, -instead of being replaced with "@" lines. Only the last three characters are -replaced with "@@@", to indicate that the line has not finished yet. - -'switchbuf' option: Allows re-using existing windows on a buffer that is being -jumped to, or split the window to open a new buffer. (Roemer) - -'titleold' option. Replaces the fixed string "Thanks for flying Vim", which -is used to set the title when exiting. (Schild) - - -Vim scripts *new-script-5.4* ------------ - -The |exists()| function can also check for existence of a function. (Roemer) -An internal function is now found with a binary search, should be a bit -faster. (Roemer) - -New functions: -- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb) -- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history - available. (Roemer) -- |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas. -- |mapcheck()|: Check if a map name matches with an existing one. -- |visualmode()|: Return type of last Visual mode. (Webb) -- |libcall()|: Call a function in a library. Currently only for Win32. (Negri) -- |bufwinnr()|: find window that contains the specified buffer. (Roemer) -- |bufloaded()|: Whether a buffer exists and is loaded. -- |localtime()| and |getftime()|: wall clock time and last modification time - of a file (Webb) -- |glob()|: expand file name wildcards only. -- |system()|: get the raw output of an external command. (based on a patch - from Aaron). -- |strtrans()|: Translate String into printable characters. Used for - 2html.vim script. -- |append()|: easy way to append a line of text in a buffer. - -Changed functions: -- Optional argument to |strftime()| to give the time in seconds. (Webb) -- |expand()| now also returns names for files that don't exist. - -Allow numbers in the name of a user command. (Webb) - -Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The -ones from version 5.3 can be used without "v:" too, for backwards -compatibility. - -New variables: -"v:warningmsg" and "v:statusmsg" internal variables. Contain the last given -warning and status message. |v:warningmsg| |v:statusmsg| (Madsen) -"v:count1" variable: like "v:count", but defaults to one when no count is -used. |v:count1| - -When compiling without expression evaluation, "if 1" can be used around the -not supported commands to avoid it being executed. Works like in Vim 4.x. -Some of the runtime scripts gave errors when used with a Vim that was compiled -with minimal features. Now "if 1" is used around code that is not always -supported. - -When evaluating an expression with && and ||, skip the parts that will not -influence the outcome. This makes it faster and avoids error messages. (Webb) -Also optimized the skipping of expressions inside an "if 0". - - -Avoid hit-enter prompt *avoid-hit-enter* ------------------------ - -Added 'T' flag to 'shortmess': Truncate all messages that would cause the -hit-enter prompt (unless that would happen anyway). -The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from -the ":cn" command. - -The default for 'shortmess' is now "filnxtToO", to make most messages fit on -the command line, and not cause the hit-enter prompt. - -Previous messages can be viewed with the new |:messages| command. - -Some messages are shown fully, even when 'shortmess' tells to shorten -messages, because the user is expected to want to see them in full: CTRL-G and -some quickfix commands. - - -Improved quickfix *improved-quickfix* ------------------ - -Parse change-directory lines for gmake: "make[1]: Entering directory 'name'". -Uses "%D" and "%X" in 'errorformat'. -Also parse "Making {target} in {dir}" messages from make. Helps when not -using GNU make. (Schandl) - -Use 'isfname' for "%f" in 'errorformat'. - -Parsing of multi-line messages. |errorformat-multi-line| - -Allow a range for the |:clist| command. (Roemer) - -Support for "global" file names, for error formats that output the file name -once for several errors. (Roemer) - -|:cnfile| jumps to first error in next file. - -"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer) - - -Regular expressions *regexp-changes-5.4* -------------------- - -In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$| -In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson) - -In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered -end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same -for '^' after "\(" and "\|". |/\$| |/\^| - -Some search patterns can be extremely slow, even though they are not really -illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp -search with CTRL-C. - -Register "/: last search string (read-only). (Kohan) Changed to use last used -search pattern (like what 'hlsearch' uses). Can set the search pattern with -":let @/ = {expr}". - -Added character classes to search patterns, to avoid the need for removing the -'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and -|[:escape:]|. - -By adding a '?' after a comparative operator in an expression, the comparison -is done by ignoring case. |expr-==?| - - -Other improvements made between version 5.3 and 5.4 ---------------------------------------------------- - -Changed *changed-5.4* -------- - -Unix: Use $TMPDIR for temporary files, if it is set and exists. - -Removed "Empty buffer" message. It isn't useful and can cause a hit-enter -prompt. (Negri) - -"ex -" now reads commands from stdin and works in silent mode. This is to be -compatible with the original "ex" command that is used for scripts. - -Default range for ":tcldo" is the whole file. - -Cancelling Visual mode with ESC moved the cursor. There appears to be no -reason for this. Now leave the cursor where it is. - -The ":grep" and ":make" commands see " as part of the arguments, instead of -the start of a comment. - -In expressions the "=~" and "!~" operators no longer are affected by -'ignorecase'. - -Renamed vimrc_example to vimrc_example.vim and gvimrc_example to -gvimrc_example.vim. Makes them being recognized as vim scripts. - -"gd" no longer starts searching at the end of the previous function, but at -the first blank line above the start of the current function. Avoids that -using "gd" in the first function finds global a variable. - -Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches -will be found, at the cost of time (the search can be interrupted). - -It is no longer possible to set 'shell*' options from a modeline. Previously -only a warning message was given. This reduces security risks. - -The ordering of the index of documentation files was changed to make it more -easy to find a subject. - -On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused -trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files -would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find -the runtime file. - -When 'tags' is "./{fname}" and there is no file name for the current buffer, -just use it. Previously it was skipped, causing "vim -t {tag}" not to find -many tags. - -When trying to select text in the 'scrolloff' area by mouse dragging, the -resulting scrolling made this difficult. Now 'scrolloff' is temporarily set -to 0 or 1 to avoid this. But still allow scrolling in the top line to extend -to above the displayed text. - -Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc -comments work. Also helps for C comments that start with "/*******". - -CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used -after a non-ID character, which can take a very long time. Now limit this to -200 matches. Also used for command-line tag completion. - -The OS/2 distribution has been split in two files. It was too big to fit on a -floppy. The same runtime archive as for the PC is now used. - -In the documentation, items like have been replaced with {a-z} for -non-optional arguments. This avoids confusion with key names: is a -CTRL-Z, not a character between C and Z, that is {C-Z}. - - -Added *added-5.4* ------ - -Color support for the iris-ansi builtin termcap entry. (Tubman) - -Included VisVim version 1.3a. (Erhardt) - -Win32 port for SNiFF+ interface. (Leherbauer) -Documentation file for sniff interface: if_sniff.txt. (Leherbauer) - -Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory. -To be used with the OLE version of gvim under MS-Windows. (Schaller) - -Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert) - -When a file that is being edited is deleted, give a warning (like when the -time stamp changed). - -Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo) - -Linux console mouse support through "gpm". (Tsindlekht) - -Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When -'secure' is set, give a warning for changing options that contain a program -name. - -Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege) - -When giving an error message for an ambiguous mapping, include the offending -mapping. (Roemer) - -Command line editing: -- Command line completion of mappings. (Roemer) -- Command line completion for ":function", ":delfunction", ":let", ":call", - ":if", etc. (Roemer) -- When using CTRL-D completion for user commands that have - "-complete=tag_listfiles" also list the file names. (Madsen) -- Complete the arguments of the ":command" command. (Webb) -- CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W - and CTRL-A after CTRL-R are used to insert an object from under the cursor. - (Madsen) - -Made the text in uganda.txt about copying Vim a bit more clear. - -Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor -and starts Vim on it. "make install" now also copies the tutor. - -In the output of ":clist" the current entry is highlighted, with the 'i' -highlighting (same as used for 'incsearch'). - -For the ":clist" command, you can scroll backwards with "b" (one screenful), -"u" (half a screenful) and "k" (one line). - -Multi-byte support: -- X-input method for multi-byte characters. And various fixes for multi-byte - support. (Nam) -- Hangul input method feature: |hangul|. (Nam) -- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul - input. Each is now configurable separately. -- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam) -- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam) -- XIM support for GTK+. (Nam) -- First attempt to include support for SJIS encoding. (Nagano) -- When a double-byte character doesn't fit at the end of the line, put a "~" - there and print it on the next line. -- Optimize output of multi-byte text. (Park) -- Win32 IME: preedit style is like over-the-spot. (Nagano) -- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano) -- GUI Athena: file selection dialog can display multi-byte characters. - (Nagano) -- Selection reply for XA_TEXT as XA_STRING. (Nagano) - -"runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell) - -Added ".obj" to the 'suffixes' option. - -Reduced size of syntax/synload.vim by using the ":SynAu" user command. -Automated numbering of Syntax menu entries in menu.vim. -In the Syntax menu, insert separators between syntax names that start with -a different letter. (Geddes) - -Xterm: -- Clipboard support when using the mouse in an xterm. (Madsen) -- When using the xterm mouse, track dragging of the mouse. Use xterm escape - sequences when possible. It is more precise than other methods, but - requires a fairly recent xterm version. It is enabled with "xterm2" in - 'ttymouse'. (Madsen) -- Check xterm patch level, to set the value of 'ttymouse'. Has only been - added to xterm recently (patch level > 95). Uses the new 't_RV' termcap - option. Set 'ttymouse' to "xterm2" when a correct response is recognized. - Will make xterm mouse dragging work better. -- Support for shifted function keys on xterm. Changed codes for shifted - cursor keys to what the xterm actually produces. Added codes for shifted - and . -- Added 't_WP' to set the window position in pixels and 't_WS' to set the - window size in characters. Xterm can now move (used for ":winpos") and - resize (use for ":set lines=" and ":set columns="). - -X11: -- When in Visual mode but not owning the selection, display the Visual area - with the VisualNOS group to show this. (Madsen) -- Support for requesting the type of clipboard support. Used for AIX and - dtterm. (Wittig) -- Support compound_text selection (even when compiled without multi-byte). - -Swap file: -- New variation for naming swap files: Replace path separators into %, place - all swap files in one directory. Used when a name in 'dir' ends in two path - separators. (Madsen) -- When a swap file is found, show whether it contains modifications or not in - the informative message. (Madsen) -- When dialogs are supported, use a dialog to ask the user what to do when a - swapfile already exists. - -"popup_setpos" in 'mousemodel' option. Allows for moving the cursor when -using the right mouse button. - -When a buffer is deleted, the selection for which buffer to display instead -now uses the most recent entry from the jump list. (Madsen) - -When using CTRL-O/CTRL-I, skip deleted buffers. - -A percentage is shown in the ruler, when there is room. - -Used autoconf 1.13 to generate configure. - -Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting -when 'p' flag in 'cpoptions' is not included. - -Made the 2html.vim script quite a bit faster. (based on ideas from Geddes) - -Unix: -- Included the name of the user that compiled Vim and the system name it was - compiled on in the version message. -- "make install" now also installs the "tools" directory. Makes them - available for everybody. -- "make check" now does the same as "make test". "make test" checks for - Visual block mode shift, insert, replace and change. -- Speed up comparing a file name with existing buffers by storing the - device/inode number with the buffer. -- Added configure arguments "--disable-gtk", "--disable-motif" and - "--disable-athena", to be able to disable a specific GUI (when it doesn't - work). -- Renamed the configure arguments for disabling the check for specific GUIs. - Should be clearer now. (Kahn) -- On a Digital Unix system ("OSF1") check for the curses library before - termlib and termcap. (Schild) -- "make uninstall_runtime" will only delete the version-specific files. Can - be used to delete the runtime files of a previous version. - -Macintosh: (St-Amant) -- Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code - from gui_w32.c to gui.c -- Added dialogs and file browsing. -- Resource fork preserved, warning when it will be lost. -- Copy original file attributes to newly written file. -- Set title/notitle bug solved. -- Filename completion improved. -- Grow box limit resize to a char by char size. -- Use of rgb.txt for more colors (but give back bad color). -- Apple menu works (beside the about...). -- Internal border now vim compliant. -- Removing a menu doesn't crash anymore. -- Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the - library is available. -- If an error is encountered when sourcing the users .vimrc, the alert box now - shows right away with the OK button defaulted. There's no more "Delete"-key - sign at the start of each line -- Better management of environment variables. Now $VIM is calculated only - once, not regenerated every time it is used. -- No more CPU hog when in background. -- In a sourced Vim script the Mac file format can be recognized, just like DOS - file format is. - -When both "unix" and "mac" are present in 'fileformats', prefer "mac" format -when there are more CR than NL characters. -When using "mac" fileformat, use CR instead of a NL, because NL is used for -NUL. Will preserve all characters in a file. (Madsen) - -The DOS install.exe now contains checks for an existing installation. It -avoids setting $VIM and $PATH again. -The install program for Dos/Windows can now install Vim in the popup menu, by -adding two registry keys. - -Port to EGCS/mingw32. New Makefile.ming. (Aaron) - -DOS 16 bit: Don't include cursor shape stuff. Save some bytes. - -TCL support to Makefile.w32. (Duperval) - -OS/2: Use argv[0] to find runtime files. - -When using "gf" to go to a buffer that has already been used, jump to the -line where the cursor last was. - -Colored the output of ":tselect" a bit more. Different highlighting between -tag name and file name. Highlight field name ("struct:") separately from -argument. - -Backtick expansion for non-Unix systems. Based on a patch from Aaron. -Allows the use of things like ":n `grep -l test *.c`" and -"echo expand('`ls m*`')". - -Check for the 'complete' option when it is set. (Acevedo) -'d' flag in 'complete' searches for defined names or macros. -While searching for Insert mode completions in include files and tags files, -check for typeahead, so that you can use matches early. (Webb) -The '.' flag in 'complete' now scans the current buffer completely, ignoring -'nowrapscan'. (Webb) - -Added '~' flag to 'whichwrap'. (Acevedo) - -When ending the Visual mode (e.g., with ESC) don't grab ownership of the -selection. - -In a color terminal, "fg" and "bg" can be used as color names. They stand for -the "Normal" colors. - -A few cscope cleanups. (Kahn) - -Included changed vimspell.sh from Schemenauer. - -Concatenation of strings in an expression with "." is a bit faster. (Roemer) - -The ":redir" command can now redirect to a register: ":redir @r". (Roemer) - -Made the output of ":marks" and ":jumps" look similar. When the mark is in -the current file, show the text at the mark. Also for ":tags". - -When configure finds ftello() and fseeko(), they are used in tag.c (for when -you have extremely big tags files). - -Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow) - -GUI: -- When using ":gui" in a non-GUI Vim, give a clear error message. -- "gvim -v" doesn't start the GUI (if console support is present). -- When in Ex mode, use non-Visual selection for the whole screen. -- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim - forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b" - to run gvim in the background anyway. - -Motif GUI: -- Check for "-lXp" library in configure (but it doesn't work yet...). -- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the - order to let a local Motif version override a system standard version. - -Win32 GUI: -- When using "-register" or "-unregister" in the non-OLE version, give an - error message. -- Use GTK toolbar icons. Make window border look better. Use sizing handles - on the lower left&right corners of the window. (Negri) -- When starting an external command with ":!start" and the command can not be - executed, give an error message. (Webb) -- Use sizing handles for the grey rectangles below the scrollbars. Can draw - toolbar in flat mode now, looks better. (Negri) -- Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN - and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri) - -Avoid allocating the same string four times in buflist_findpat(). (Williams) - -Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and -'t_IE'. Allows doing this on any terminal that supports setting the title -and/or icon text. (Schild) - -New 'x' flag in 'comments': Automatically insert the end part when its last -character is typed. Helps to close a /* */ comment in C. (Webb) - -When expand() has a second argument which is non-zero, don't use 'suffixes' -and 'wildignore', return all matches. - -'O' flag in 'cpoptions' When not included, Vim will not overwrite a file, if -it didn't exist when editing started but it does exist when the buffer is -written to the file. The file must have been created outside of Vim, possibly -without the user knowing it. When this is detected after a shell command, -give a warning message. - -When editing a new file, CTRL-G will show [New file]. When there were errors -while reading the file, CTRL-G will show [Read errors]. - -":wall" can now use a dialog and file-browsing when needed. - -Grouped functionality into new features, mainly to reduce the size of the -minimal version: -+linebreak: 'showbreak', 'breakat' and 'linebreak' -+visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines - in a block, ">" and "<": Shifting a block, "r": Replacing a - Visual area with one character. -+comments: 'comments' -+cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd. -"+title" Don't add code to set title or icon for MSDOS, this was not - possible anyway. -+cmdline_compl Disable commandline completion at compile time, except for - files, directories and help items. - -Moved features from a list of function calls into an array. Should save a bit -of space. - -While entering the body of a function, adjust indent according to "if" and -"while" commands. - -VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy. - -The flags in the 'comments' option can now include an offset. This makes it -possible to align "/*****", "/* xxx" and "/*" comments with the same -'comments' setting. The default value for 'comments' uses this. -Added 'O' flag: Don't use this part for the "O" command. Useful for "set -com=sO:*\ -,mO:*\ \ ,exO:*/" - -FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove -them to find the relevant extension. - -The tutorial for writing a Vim script file has been extended. - -Some more highlighting in help files, for items that are not typed literally. - -Can use "CTRL-W CTRL-G" like "CTRL-W g". - -"make test" for OS/2. - -Adjusted configure to automatically use the GUI for BeOS. - - -Fixed *fixed-5.4* ------ - -5.3.1: When using an autocommand for BufWritePre that changes the name of the -buffer, freed memory would be used. (Geddes) - -Mac: Compiler didn't understand start of skip_class_name(). - -Win32 GUI: -- When cancelling the font requester, don't give an error message. -- When a tearoff-menu is open and its menu is deleted, Vim could crash. - (Negri) -- There was a problem on Windows 95 with (un)maximizing the window. - (Williams) -- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped - with the keyboard. (Ralston) -- The tempname() function already created the file. Caused problems when - using ":w". Now the file is deleted. -- Cursor disappeared when ending up in the top-left character on the screen - after scrolling. (Webb) -- When adding a submenu for a torn-off menu, it was not updated. -- Menu tooltip was using the toolbar tooltip. (Negri) -- Setting 'notitle' didn't remove the title. (Steed) -- Using ":!start cmd" scrolled the screen one line up, and didn't wait for - return when the command wasn't found. - -Cscope interface: Sorting of matches was wrong. Starting the interface could -fail. (Kahn) - -Motif GUI: Could not compile with Motif 1.1, because some tear-off -functionality was not in #ifdefs. - -Configure could sometimes not compile or link the test program for sizeof(int) -properly. This caused alignment problems for the undo structure allocations. -Added a safety check that SIZEOF_INT is not zero. - -Added configure check to test if strings.h can be included after string.h. -Some systems can't handle it. -Some systems need both string.h and strings.h included. Adjusted vim.h for -that. Removed including string.h from os_unixx.h, since it's already in -vim.h. (Savage) -AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and -strings.h, but after the configure check said it was OK. Also define -_NO_PROTO for AIX in the configure check. (Winn) - -When closing a window with CTRL-W c, the value of 'hidden' was not taken into -account, the buffer was always unloaded. (Negri) - -Unix Makefile: "make install" always tried to rename an older executable and -remove it. This caused an error message when it didn't exit. Added a check -for the existence of an old executable. -The command line for "make install" could get too long, because of the many -syntax files. Now first do a "cd" to reduce the length. - -On RISCOS and MSDOS, reading a file could fail, because the short filename was -used, which can be wrong after a ":!cd". - -In the DOS versions, the wrong install.exe was included (required Windows). -Now the install.exe version is included that is the same as the Vim version. -This also supports long file names where possible. - -When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O -would also be recorded. - -32bit DOS version: "vim \file", while in a subdirectory, resulted in "new -file" for "file" in the local directory, while "\file" did exist. When -"file" in the current directory existed, this didn't happen. - -MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young) - -"make test" failed in the RedHat RPM, because compatible is off by default. - -In Insert mode changes to other window, but the status bars -were not updated until another character was typed. - -MSDOS: environment options in lowercase didn't work, although they did in the -Win32 versions. (Negri) - -After ":nohlsearch", a tag command switched highlighting back on. - -When using "append" command as the last line in an autocommand, Vim would -crash. - -RISCOS: The scroll bumpers (?) were not working properly. (Leonard) - -"zl" and "zh" could move the cursor, but this didn't set the column in which -e.g., "k" would move the cursor. - -When doing ":set all&" the value of 'scroll' was not set correctly. This -caused an error message when later setting any other number option. - -When 'hlsearch' highlighting has been disabled with ":nohlsearch", -incremental searching would switch it back on too early. - -When listing tags for ":tselect", and using a non-search command, and the last -character was equal to the first (e.g., "99"), the last char would not be -shown. - -When searching for tags with ":tag" Vim would assume that all matches had been -found when there were still more (e.g. from another tags file). - -Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when -upper/lowercase was different. - -Some xterms (Debian) send OH for HOME and OF for END. Added these -to the builtin-xterm. - -In ex mode, any CR was seen as the end of the line. Only a NL should be -handled that way. broke ":s/foo/some^Mtext/". - -In menu.vim, a vmenu was used to override an amenu. That didn't work, because -the system menu file doesn't overwrite existing menus. Added explicit vunmenu -to solve this. - -Configure check for terminal library could find a library that doesn't work at -runtime (Solaris: shared library not found). Added a check that a program -with tgoto() can run correctly. - -Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors -compiling pathdef.c. Replaced it with "tr". - -Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files. - -Various XIM and multi-byte fixes: -- Fix user cannot see his language while he is typing his language with - off-the-spot method. (Nagano) -- Fix preedit position using text/edit area (using gui.wid). (Nagano) -- remove 'fix dead key' codes. It was needed since XNFocusWindow was - "x11_window", XNFocusWindow is now gui.wid. (Nagano) -- Remove some compile warnings and fix typos. (Namsh) -- For status area, check the gtk+ version while Vim runs. I believe it is - better than compile time check. (Namsh) -- Remove one FIXME for gtk+-xim. (Namsh) -- XIM: Dead keys didn't work for Czech. (Vyskovsky) -- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM - could convert it to special character. (Nam) -- Athena/Motif with XIM: fix preedit area. (Nam) -- XIM: Composed strings were sometimes ignored. Vim crashed when compose - string was longer than 256 bytes. IM's geometry control is fixed. (Nam, - Nagano) -- Win32 multi-byte: hollowed cursor width on a double byte char was wrong. - (Nagano) -- When there is no GUI, selecting XIM caused compilation problems. - Automatically disable XIM when there is no GUI in configure. -- Motif and Athena: When compiled with XIM, but the input method was not - enabled, there would still be a status line. Now the status line is gone if - the input method doesn't work. (Nam) - -Win32: tooltip was not removed when selecting a parent menu (it was when -selecting a menu entry). (Negri) - -Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call. -Removed it, it should not be necessary when exiting. - -Win32: Crash on keypress when compiled with Borland C++. (Aaron) - -When checking for Motif library files, prefer the same location as the include -files (with "include" replaced with "lib") above another entry. - -Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's -used in gui_x11.c. - -Win32: When testing for a timestamp of a file on floppy, would get a dialog -box when the floppy has been removed. Now return with an error. (Negri) - -Win32 OLE: When forced to come to the foreground, a minimized window was still -minimized, now it's restored. (Zivkov) - -There was no check for a positive 'shiftwidth'. A negative value could cause -a hangup, a zero value a crash. - -Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right -or left of the thumb. - -When making a Visual-block selection in one window, and trying to scroll -another, could cause errors for accessing non-existent line numbers. - -When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work -properly. - -Changed '\"' to '"' to make it compatible with old C compilers. - -The command line expansion for mappings caused a script with a TAB between lhs -and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs -when there are no mappings to expand. - -When editing a file with very long lines with 'scrolloff' set, "j" would -sometimes end up in a line which wasn't displayed. - -When editing a read-only file, it was completely read into memory, even when -it would not fit. Now create a swap file for a read-only file when running -out of memory while reading the file. - -When using ":set cino={s,e-s", a line after "} else {" was not indented -properly. Also added a check for this in test3.in. - -The Hebrew mapping for the command line was remembered for the next command -line. That isn't very useful, a command is not Hebrew. (Kol) - -When completing file names with embedded spaces, like "Program\ files", this -didn't work. Also for user commands. Moved backslash_halve() down to -mch_expandpath(). - -When using "set mouse=a" in Ex mode, mouse events were handled like typed -text. Then typing "quit" screwed up the mouse behavior of the xterm. - -When repeating an insert with "." that contains a CTRL-Y, a number 5 was -inserted as "053". - -Yanking a Visual area, with the cursor past the line, didn't move the cursor -back onto the line. Same for "~", "u", "U" and "g?" - -Win32: Default for 'grepprg' could be "findstr /n" even though there is no -findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if -it doesn't. - -Because gui_mouse_moved() inserted a leftmouse click in the input buffer, -remapping a leftmouse click caused strange effects. Now Insert another code -in the input buffer. Also insert a leftmouse release, to avoid the problem -with ":map l" that the next release is seen as the release for the -focus click. - -With 'wrap' on, when using a line that doesn't fit on the screen, if the start -of the Visual area is before the start of the screen, there was no -highlighting. Also, 'showbreak' doesn't work properly. - -DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands. - -When creating a swap file for a buffer which isn't the current buffer, could -get a mixup of short file name, resulting in a long file name when a short -file name was required. makeswapname() was calling modname() instead of -buf_modname(). - -When a function caused an error, and the error message was very long because -of recursiveness, this would cause a crash. - -'suffixes' were always compared with matching case. For MS-DOS, Win32 and -OS/2 case is now ignored. - -The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it. - -When generating a script file, 'cpo' was made empty. This caused backslashes -to disappear from mappings. Set it to "B" to avoid that. - -Lots of typos in the documentation. (Campbell) - -When editing an existing (hidden) buffer, jump to the last used cursor -position. (Madsen) - -On a Sun the xterm screen was not restored properly when suspending. (Madsen) - -When $VIMINIT is processed, 'nocompatible' was only set after processing it. - -Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard -all together. Cleaned up the code for using select() too. - -When executing external commands from the GUI, some typeahead was lost. Added -some code to regain as much typeahead as possible. - -When the window height is 5 lines or fewer, didn't use a one-line -overlap, while does. Made sure that uses the same overlap -as , so that using them both always displays the same lines. - -Removed a few unused functions and variables (found with lint). - -Dictionary completion didn't use 'infercase'. (Raul) - -Configure tests failed when the Perl library was not in LD_LIBRARY_PATH. -Don't use the Perl library for configure tests, add it to the linker line only -when linking Vim. - -When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that -has "%d" instead of "%p1%d". The light background colors didn't work then. - -GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs() -when the GUI is active. - -Could use the ":let" command to set the "count", "shell_error" and "version" -variables, but that didn't work. Give an error message when trying to set -them. - -On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it. - -When Vim is linked with -lncurses, but python uses -ltermcap, this causes -trouble: "OOPS". Configure now removes the -ltermcap. - -:@" and :*" didn't work properly, because the " was recognized as the start of -a comment. - -Win32s GUI: Minimizing the console where a filter command runs in caused -trouble for detecting that the filter command has finished. (Negri) - -After executing a filter command from an xterm, the mouse would be disabled. -It would work again after changing the mode. - -Mac GUI: Crashed in newenv(). (St-Amant) - -The menus and mappings in mswin.vim didn't handle text ending in a NL -correctly. (Acevedo) - -The ":k" command didn't check if it had a valid argument or extra characters. -Now give a meaningful error message. (Webb) - -On SGI, the signal function doesn't always have three arguments. Check for -struct sigcontext to find out. Might still be wrong... - -Could crash when using 'hlsearch' and search pattern is "^". - -When search patterns were saved and restored, status of no_hlsearch was not -also saved and restored (from ":nohlsearch" command). - -When using setline() to make a line shorter, the cursor position was not -adjusted. - -MS-DOS and Win95: When trying to edit a file and accidentally adding a slash -or backslash at the end, the file was deleted. Probably when trying to create -the swap file. Explicitly check for a trailing slash or backslash before -trying to read a file. - -X11 GUI: When starting the GUI failed and received a deadly signal while -setting the title, would lock up when trying to exit, because the title is -reset again. Avoid using mch_settitle() recursively. - -X11 GUI: When starting the GUI fails, and then trying it again, would crash, -because argv[] has been freed and x11_display was reset to NULL. - -Win32: When $HOME was set, would put "~user" in the swap file, which would -never compare with a file name, and never cause the attention message. Put -the full path in the swap file instead. - -Win32 console: There were funny characters at the end of the "vim -r" swap -files message (direct output of CR CR LF). - -DOS 32 bit: "vim -r" put the text at the top of the window. - -GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q". - -Motif and Win32 GUI: When changing 'guifont' to a font of the same size the -screen wasn't redrawn. - -Unix: When using ":make", jumping to a file b.c, which is already open as a -symbolic link a.c, opened a new buffer instead of using the existing one. - -Inserting text in the current buffer while sourcing the .vimrc file would -cause a crash or hang. The memfile for the current buffer was never -allocated. Now it's allocated as soon as something is written in the buffer. - -DOS 32 bit: "lightblue" background worked for text, but not drawn parts were -black. - -DOS: Colors of console were not restored upon exiting. - -When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode -caused the "recording" message to be doubled. - -Spurious "file changed" messages could happen on Windows. Now tolerate a one -second difference, like for Linux. - -GUI: When returning from Ex mode, scrollbars were not updated. - -Win32: Copying text to the clipboard containing a , pasting it would -replace it with a and drop the next character. - -Entering a double byte character didn't work if the second byte is in [xXoO]. -(Eric Lee) - -vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused -conflicts on Solaris. - -A pattern in an autocommand was treated differently on DOS et al. than on -Unix. Now it's the same, also when using backslashes. - -When using twice for command line completion, without a match, the -would be inserted. (Negri) - -Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri) - -Testing the result of mktemp() for failure was wrong. Could cause a crash. -(Peters) - -GUI: When checking for a ".gvimrc" file in the current directory, didn't check -for a "_gvimrc" file too. - -Motif GUI: When using the popup menu and then adding an item to the menu bar, -the menu bar would get very high. - -Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and -dialogs. Now they are ignored. - -When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in -'mouse' also for the more-prompt. - -When selecting a Visual area of more than 1023 lines, with 'guioptions' set to -"a", could mess up the display because of a message in free_yank(). Removed -that message, except for the Amiga. - -Moved auto-selection from ui_write() to the screen update functions. Avoids -unexpected behavior from a low-level function. Also makes the different -feedback of owning the selection possible. - -Vi incompatibility: Using "i" in an indent, with 'ai' set, used the -original indent instead of truncating it at the cursor. (Webb) - -":echo x" didn't stop at "q" for the more prompt. - -Various fixes for Macintosh. (St-Amant) - -When using 'selectmode' set to "exclusive", selecting a word and then using -CTRL-] included the character under the cursor. - -Using ":let a:name" in a function caused a crash. (Webb) - -When using ":append", an empty line didn't scroll up. - -DOS etc.: A file name starting with '!' didn't work. Added '!' to default for -'isfname'. - -BeOS: Compilation problem with prototype of skip_class_name(). (Price) - -When deleting more than one line, e.g., with "de", could still use "U" -command, which didn't work properly then. - -Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some -functions to ex_cmds.c. - -The expand() function would add a trailing slash for directories. - -Didn't give an error message when trying to assign a value to an argument of a -function. (Webb) - -Moved including sys/ptem.h to after termios.h. Needed for Sinix. - -OLE interface: Don't delete the object in CVimCF::Release() when the reference -count becomes zero. (Cordell) -VisVim could still crash on exit. (Erhardt) - -"case a: case b:" (two case statements in one line) aligned with the second -case. Now it uses one 'sw' for indent. (Webb) - -Font initialisation wasn't right for Athena/Motif GUI. Moved the call to -highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam) - -In Replace mode, backspacing over a TAB before where the replace mode started -while 'sts' is different from 'ts', would delete the TAB. - -Win32 console: When executing external commands and switching between the two -console screens, Vim would copy the text between the buffers. That caused the -screen to be messed up for backtick expansion. - -":winpos -1" then ":winpos" gave wrong error message. - -Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the -backslash before the $. Environment variables were not expanded anyway, -because of the backslash before the dollar. - -Using "-=" with ":set" could remove half a part when it contains a "\,". -E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b". - -When Visually selecting lines, with 'selection' set to "inclusive", including -the last char of the line, "<<" moved an extra line. Also for other operators -that always work on lines. - -link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed. -Now it only remove whole words. - -When jumped to a mark or using "fz", and there is an error, the current column -was lost. E.g. when using "$fzj". - -The "g CTRL-G" command could not be interrupted, even though it can take a -long time. - -Some terminals do have and . was always interpreted as . -Now map to , so that the user can override this. - -When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be -used. (Aaron) - -This autocommand looped forever: ":au FileChangedShell * nested e " -Now FileChangeShell never nests. (Roemer) - -When evaluating an ":elseif" that was not going to matter anyway, ignore -errors. (Roemer) - -GUI Lesstif: Tearoff bar was the last item, instead of the first. - -GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to -'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would -still get a tearoff item in a new menu. - -An inode number can be "long long". Use ino_t instead of long. Added -configure check for ino_t. - -Binary search for tags was using a file offset "long" instead of "off_t". - -Insert mode completion of tags was not using 'ignorecase' properly. - -In Insert mode, the keys were not properly mapped to for the -default mappings. Also caused errors for ":mkvimrc" and ":mksession". - -When jumping to another window while in Insert mode, would get the "warning: -changing readonly file" even when not making a change. - -A '(' or '{' inside a trailing "//" comment would disturb C-indenting. -When using two labels below each other, the second one was not indented -properly. Comments could mess up C-indenting in many places. (Roemer) - -Could delete or redefine a function while it was being used. Could cause a -crash. -In a function it's logical to prepend "g:" to a system variable, but this -didn't work. (Roemer) - -Hangul input: Buffer would overflow when user inputs invalid key sequence. -(Nam) - -When BufLoad or BufEnter autocommands change the topline of the buffer in the -window, it was overruled and the cursor put halfway the window. Now only put -the cursor halfway if the autocommands didn't change the topline. - -Calling exists("&option") always returned 1. (Roemer) - -Win32: Didn't take actually available memory into account. (Williams) - -White space after an automatically inserted comment leader was not removed -when 'ai' is not set and hit just after inserting it. (Webb) - -A few menus had duplicated accelerators. (Roemer) - -Spelling errors in documentation, quite a few "the the". (Roemer) - -Missing prototypes for Macintosh. (Kielhorn) - -Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't -executed in a disconnected process. - -When resizing the window, causing a line before the cursor to wrap or unwrap, -the cursor was displayed in the wrong position. - -There was quite a bit of dead code when compiling with minimal features. - -When doing a ":%s///" command that makes lines shorter, such that lines above -the final cursor position no longer wrap, the cursor position was not updated. - -get_id_list() could allocate an array one too small, when a "contains=" item -has a wildcard that matches a group name that is added just after it. E.g.: -"contains=a.*b,axb". Give an error message for it. - -When yanking a Visual area and using the middle mouse button -> crash. When -clipboard doesn't work, now make "* always use "". - -Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file". - -Using ":ts ident", then hit , with 'cmdheight' set to 2: command line was -not cleared, the tselect prompt was on the last but one line. - -mksession didn't restore the cursor column properly when it was after a tab. -Could not get all windows back when using a smaller terminal screen. Didn't -restore all windows when "winsize" was not in 'sessionoptions'. (Webb) - -Command line completion for ":buffer" depended on 'ignorecase' for Unix, but -not for DOS et al. Now don't use 'ignorecase', but let it depend on whether -file names are case sensitive or not (like when expanding file names). - -Win32 GUI: (Negri) -- Redrawing the background caused flicker when resizing the window. Removed - _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the - sndclass.style. -- Some parts of the window were drawn in grey, instead of using the color from - the user color scheme. -- Dropping a file on gvim didn't activate the window. -- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for - it. - -GUI: When resizing the window, would make the window height a bit smaller. -Now round off to the nearest char cell size. (Negri) - -In Vi the ")" and "(" commands don't stop at a single space after a dot. -Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer) - -When saving a session without any buffers loaded, there would be a ":normal" -command without arguments in it. (Webb) - -Memory leaks fixed: (Madsen) -- eval.c: forgot to release func structure when func deleted -- ex_docmd.c: forgot to release string after "" -- misc1.c: leak when completion pattern had no matches. -- os_unix.c: forgot to release regexp after file completions - -Could crash when using a buffer without a name. (Madsen) -Could crash when doing file name completion, because of backslash_halve(). -(Madsen) - -":@a" would do mappings on register a, which is not Vi compatible. (Roemer) - -":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar" -and displayed "/foo.*()". (Roemer) - -OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file. - -Command line completion of options didn't work after "+=" and "-=". - -Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these -functions, which could fail if they are defined already. Use mch_memmove() to -redefine. - -Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but -":let a = expand("`xterm&`")" generated an error message, because the -redirection was put after the '&'. - -Win32 GUI: Dialog buttons could not be selected properly with cursor keys, -when the default is not the first button. (Webb) - -The "File has changed since editing started" (when regaining focus) could not -always be seen. (Webb) - -When starting with "ex filename", the file message was overwritten with -the "entering Ex mode" message. - -Output of ":tselect" listed name of file directly from the tags file. Now it -is corrected for the position of the tags file. - -When 'backspace' is 0, could backspace over autoindent. Now it is no longer -allowed (Vi compatible). - -In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting -Tabs, backspacing didn't work correctly for Tabs inserted at the start of the -line (unless 'sts' was set too). Also, when replacing the first non-blank -after which is a space, rounding the indent was done on the first non-blank -instead of on the character under the cursor. - -When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after -four spaces (they are replaced with a tab) couldn't backspace over the tab. - -In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent, -even when it was removed with CTRL-D. - -When repeating an insert command where a , or other key causes an -error, would flush buffers and remain in Insert mode. No longer flush -buffers, only beep and continue with the insert command. - -Dos and Win32 console: Setting t_me didn't work to get another color. Made -this works backwards compatible. - -For Turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase -translation in vim_strup() to avoid language problems. (Komur) - -Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully -this avoids a hangup in select(0, ..) for Solaris 2.6. - -Vim would crash when using a script file with 'let &sp = "| tee"', starting -vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set -for a string option, could cause problems with any string option. - -When using "cmd | vim -", stdin is not a terminal. This gave problems with -GPM (Linux console mouse) and when executing external commands. Now close -stdin and re-open it as a copy of stderr. - -Syntax highlighting: A "nextgroup" item was not properly stored in the state -list. This caused missing of next groups when not redrawing from start to -end, but starting halfway. - -Didn't check for valid values of 'ttymouse'. - -When executing an external command from the GUI, waiting for the child to -terminate might not work, causing a hang. (Parmelan) - -"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim -files and the vimtutor. - -Win32: "expand("%:p:h")" with no buffer name removed the directory name. -"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. - -Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': -highlighting was not correct. Now overlapping matches are handled correctly. - -Athena, Motif and GTK GUI: When started without focus, cursor was shown as if -with focus. - -Don't include 'shellpipe' when compiled without quickfix, it's not used. -Don't include 'dictionary' option when compiled without the +insert_expand -feature. -Only include the 'shelltype' option for the Amiga. - -When making a change to a line, with 'hlsearch' on, causing it to wrap, while -executing a register, the screen would not be updated correctly. This was a -generic problem in update_screenline() being called while must_redraw is -VALID. - -Using ":bdelete" in a BufUnload autocommand could cause a crash. The window -height was added to another window twice in close_window(). - -Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) - -Some performance bottlenecks removed. Allocating memory was not efficient. -For Win32 checking for available memory was slow, don't check it every time -now. On NT obtaining the user name takes a long time, cache the result (for -all systems). - -fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. - -When editing a new file and exiting, the marks for the buffer were not saved -in the viminfo file. - -":confirm only" didn't put up a dialog. - -These text objects didn't work when 'selection' was "exclusive": va( vi( va{ -vi{ va< vi< vi[ va[. - -The dialog for writing a readonly file didn't have a valid default. (Negri) - -The line number used for error messages when sourcing a file was reset when -modelines were inspected. It was wrong when executing a function. - -The file name and line number for an error message wasn't displayed when it -was the same as for the last error, even when this was long ago. Now reset -the name/lnum after a hit-enter prompt. - -In a session file, a "%" in a file name caused trouble, because fprintf() was -used to write it to the file. - -When skipping statements, a mark in an address wasn't skipped correctly: -"ka|if 0|'ad|else|echo|endif". (Roemer) - -":wall" could overwrite a not-edited file without asking. - -GUI: When $DISPLAY was not set or starting the GUI failed in another way, the -console mode then started with wrong colors and skipped initializations. Now -do an early check if the GUI can be started. Don't source the menu.vim or -gvimrc when it will not. Also do normal terminal initializations if the GUI -might not start. - -When using a BufEnter autocommand to position the cursor and scroll the -window, the cursor was always put at the last used line and halfway the window -anyhow. - -When 'wildmode' was set to "longest,list:full", ":e *.c" didn't list -the matches. Also avoid that listing after a "longest" lists the wrong -matches when the first expansion changed the string in front of the cursor. - -When using ":insert", ":append" or ":change" inside a while loop, was not able -to break out of it with a CTRL-C. - -Win32: ":e ." took an awful long time before an error message when used in -"C:\". Was caused by adding another backslash and then trying to get the full -name for "C:\\". - -":winpos -10 100" was working like ":winpos -10 -10", because a pointer was -not advanced past the '-' sign. - -When obtaining the value of a hidden option, would give an error message. Now -just use a zero value. - -OS/2: Was using argv[0], even though it was not a useful name. It could be -just "vim", found in the search path. - -Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until -after a delay of 'updatetime'. Didn't check for the size-changed signal. - -'scrollbind' didn't work in Insert mode. -Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g., -when 'showcmd' was off). - -When compiled with minimal features but with GUI, switching on the mouse in an -xterm caused garbage, because the mouse codes were not recognized. Don't -enable the mouse when it can't be recognized. In the GUI it also didn't work, -the arguments to the mouse code were not interpreted. - -When 'showbreak' used, in Insert mode, when the cursor is just after the last -character in the line, which is also the in the rightmost column, the cursor -position would be like the 'showbreak' string is shown, but it wasn't. - -Autocommands could move the cursor in a new file, so that CTRL-W i didn't show -the right line. Same for when using a filemark to jump to another file. - -When redefining the argument list, the title used for other windows could be -showing the wrong info about the position in the argument list. Also update -this for a ":split" command without arguments. - -When editing file 97 of 13, ":Next" didn't work. Now it goes to the last -file in the argument list. - -Insert mode completion (for dictionaries or included files) could not be -interrupted by typing an . Could get hit-enter prompt after line -completion, or whenever the informative message would get too long. - -When using the ":edit" command to re-edit the same file, an autocommand to -jump to the last cursor position caused the cursor to move. Now set the last -used cursor position to avoid this. - -When 'comments' has a part that starts with white space, formatting the -comment didn't work. - -At the ":tselect" prompt Normal mode mappings were used. That has been -disabled. - -When 'selection' is not "old", some commands still didn't allow the cursor -past the end-of-line in Visual mode. - -Athena: When a menu was deleted, it would appear again (but not functional) -when adding another menu. Now they don't reappear anymore (although they are -not really deleted either). - -Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri) - -"ze" didn't work when 'number' was on. (Davis) - -Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson) - -A few files were including proto.h a second time, after vim.h had already done -that, which could cause problems with the vim_realloc() macro. - -Win32 console: or ALT-x was not recognized. Also keypad '+', '-' and -'*'. (Negri) -MS-DOS: didn't work, produced a two-byte code. Now the alphabetic and -number keys work. (Negri) - -When finding a lot of matches for a tag completion, the check for avoiding -double matches could take a lot of time. Add a line_breakcheck() to be able -to interrupt this. (Deshpande) - -When the command line was getting longer than the screen, the more-prompt -would be given regularly, and the cursor position would be wrong. Now only -show the part of the command line that fits on the screen and force the cursor -to be positioned on the visible part. There can be text after the cursor -which isn't editable. - -At the more prompt and with the console dialog, a cursor key was interpreted -as and OA. Now recognize special keys in get_keystroke(). Ignore mouse -and scrollbar events. - -When typing a BS after inserting a middle comment leader, typing the last char -of the end comment leader still changed it into the end comment leader. (Webb) - -When a file system is full, writing to a swap file failed. Now first try to -write one block to the file. Try next entry in 'dir' if it fails. - -When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the -display. - -Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was -translated to "}" before the shell got it. Now don't remove backslashes when -wildcards are going to be expanded. - -Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a -file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" -still doesn't work though. - -"make test" didn't always work on DOS/Windows for test30, because it depended -on the external "echo" command. - -The link.sh script used "make" instead of $MAKE from the Makefile. Caused -problems for generating pathdef.c when "make" doesn't work properly. - -On versions that can do console and GUI: In the console a typed CSI code could -cause trouble. - -The patterns in expression evaluation didn't ignore the 'l' flag in -'cpoptions'. This broke the working of in the options window. - -When 'hls' off and 'ai' on, "O" did remove the indent, but it was still -highlighted red for trailing space. - -Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim -would loop while outputting "*" characters. vgetc() was called recursively, -thus it returns NUL. Added safe_vgetc(), which reads input directly from the -user in this situation. - -While reading text from stdin, only an empty screen was shown. Now show that -Vim is reading from stdin. - -The cursor shape wasn't set properly when returning to Insert mode, after -using a CTRL-O /asdf command which fails. It would be OK after a few seconds. -Now it's OK right away. - -The 'isfname' default for DOS/Windows didn't include the '@' character. File -names that contained "dir\@file" could not be edited. - -Win32 console: could cause a crash when compiled with Borland or -egcs. (Aaron) - -Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use -"#ifdef HAVE_DIRENT_H" instead. (Jones) - -When a matching tag is in the current file but has a search pattern that -doesn't match, the cursor would jump to the first line. - -Unix: Dependencies for pty.c were not included in Makefile. Dependency of -ctags/config.h was not included (only matters for parallel make). - -Removed a few Uninitialized Memory Reads (potential crashes). In do_call() -calling clear_var() when not evaluating. In win32_expandpath() and -dos_expandpath() calling backslash_halve() past the end of a file name. - -Removed memory leaks: Set_vim_var_string() never freed the value. The -next_list for a syntax keyword was never freed. - -On non-Unix systems, using a file name with wildcards without a match would -silently fail. E.g., ":e *.sh". Now give a "No match" error message. - -The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized -as Vim scripts. Renamed them to *.vim. - -[Note: some numbered patches are not relevant when upgrading from version 5.3, -they have been removed] - -Patch 5.4m.1 -Problem: When editing a file with a long name, would get the hit-enter - prompt, even though all settings are such that the name should be - truncated to avoid that. filemess() was printing the file name - without truncating it. -Solution: Truncate the message in filemess(). Use the same code as for - msg_trunc_attr(), which is moved to the new function - msg_may_trunc(). -Files: src/message.c, src/proto/message.pro, src/fileio.c - -Patch 5.4m.3 -Problem: The Motif libraries were not found by configure for Digital Unix. -Solution: Add "/usr/shlib" to the search path. (Andy Kahn) -Files: src/configure.in, src/configure - -Patch 5.4m.5 -Problem: Win32 GUI: When using the Save-As menu entry and selecting an - existing file in the file browser, would get a dialog to confirm - overwriting twice. (Ed Krall) -Solution: Removed the dialog from the file browser. It would be nicer to - set the "forceit" flag and skip Vim's ":confirm" dialog, but it - requires quite a few changes to do that. -Files: src/gui_w32.c - -Patch 5.4m.6 -Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -", - a message box would pop up with "-stdin-" (when exiting). (Michael - Schaap) -Solution: Don't switch off termcap mode for versions that are GUI-only. - They use another terminal to read from stdin. -Files: src/main.c, src/fileio.c - -Patch 5.4m.7 -Problem: Unix: running configure with --enable-gtk-check, - --enable-motif-check, --enable-athena-check or --enable-gtktest - had the reverse effect. (Thomas Koehler) -Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE(). -Files: src/configure.in, src/configure - -Patch 5.4m.9 -Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 - characters to the left. Syntax highlighting was wrong when a - double-byte character was split for a wrapping line. When - 'showbreak' was on the splitting also didn't work. -Solution: Adjust getvcol() and win_line(). (Chong-Dae Park) -Files: src/charset.c, src/screen.c - -Patch 5.4m.11 -Problem: The ":call" command didn't check for illegal trailing characters. - (Stefan Roemer) -Solution: Add the check in do_call(). -Files: src/eval.c - -Patch 5.4m.13 -Problem: With the ":s" command: - 1. When performing a substitute command, the mouse would be - disabled and enabled for every substitution. - 2. The cursor position could be beyond the end of the line. - Calling line_breakcheck() could try to position the cursor, - which causes a crash in the Win32 GUI. - 3. When using ":s" in a ":g" command, the cursor was not put on - the first non-white in the line. - 4. There was a hit-enter prompt when confirming the substitution - and the replacement was a bit longer. -Solution: 1. Only disable/enable the mouse when asking for confirmation. - 2. Always put the cursor on the first character, it is going to be - moved to the first non-blank anyway. - Don't use the cursor position in gui_mch_draw_hollow_cursor(), - get the character from the screen buffer. - 3. Added global_need_beginline flag to call beginline() after ":g" - has finished all substitutions. - 4. Clear the need_wait_return flag after prompting the user. -Files: src/ex_cmds.c, src/gui_w32.c - -Patch 5.4m.14 -Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end - up with two swapfiles for "xxx". That is caused by the ":bdel" - command which is executed when unloading the option-window. - Also, there was no check if closing a buffer made the new one - invalid, this could cause a crash. -Solution: When closing a buffer causes the current buffer to be deleted, - use the new buffer to replace it. Also detect that the new buffer - has become invalid as a side effect of closing the current one. - Make autocommand that calls ":bdel" in optwin.vim nested, so that - the buffer loading it triggers also executes autocommands. - Also added a test for this in test13. -Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h - src/testdir/test13.in, src/testdir/test13.ok - -Patch 5.4m.15 -Problem: When using a BufEnter autocommand to reload the syntax file, - conversion to HTML caused a crash. (Sung-Hyun Nam) -Solution: When using ":syntax clear" the current stack of syntax items was - not cleared. This will cause memory to be used that has already - been freed. Added call to invalidate_current_state() in - syntax_clear(). -Files: src/syntax.c - -Patch 5.4m.17 -Problem: When omitting a ')' in an expression it would not be seen as a - failure. - When detecting an error inside (), there would be an error message - for a missing ')' too. - When using ":echo 1+|echo 2" there was no error message. (Roemer) - When using ":exe 1+" there was no error message. - When using ":return 1+" there was no error message. -Solution: Fix do_echo(), do_execute() and do_return() to give an error - message when eval1() returns FAIL. - Fix eval6() to handle trailing ')' correctly and return FAIL when - it's missing. -Files: src/eval.c - -Patch 5.4m.18 -Problem: When using input() from inside an expression entered with - "CTRL-R =" on the command line, there could be a crash. And the - resulting command line was wrong. -Solution: Added getcmdline_prompt(), which handles recursive use of - getcmdline() correctly. It also sets the command line prompt. - Removed cmdline_prompt(). Also use getcmdline_prompt() for - getting the crypt key in get_crypt_key(). -Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c - -Patch 5.4m.21 -Problem: When starting up, the screen structures were first allocated at - the minimal size, then initializations were done with Rows - possibly different from screen_Rows. Caused a crash in rare - situations (GTK with XIM and fontset). -Solution: Call screenalloc() in main() only after calling ui_get_winsize(). - Also avoids a potential delay because of calling screenclear() - while "starting" is non-zero. -Files: src/main.c - -Patch 5.4m.22 -Problem: In the GUI it was possible that the screen was resized and the - screen structures re-allocated while redrawing the screen. This - could cause a crash (hard to reproduce). The call sequence goes - through update_screen() .. syntax_start() .. ui_breakcheck() .. - gui_resize_window() .. screenalloc(). -Solution: Set updating_screen while redrawing. If the window is resized - remember the new size and handle it only after redrawing is - finished. - This also fixes that resizing the screen while still redrawing - (slow syntax highlighting) would not work properly. - Also disable display_hint, it was never used. -Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro - -Patch 5.4m.23 -Problem: When using expand("") when there was no word under the - cursor, would get an error message. Same for and . -Solution: Don't give an error message, return an empty string. -Files: src/eval.c - -Patch 5.4m.24 -Problem: ":help \|" didn't find anything. It was translated to "/\\|". -Solution: Translate "\|" into "\\bar". First check the table for specific - translations before checking for "\x". -Files: src/ex_cmds.c - -Patch 5.4m.25 -Problem: Unix: When using command line completion on files that contain - ''', '"' or '|' the file name could not be used. - Adding this file name to the Buffers menu caused an error message. -Solution: Insert a backslash before these three characters. - Adjust Mungename() function to insert a backslash before '|'. -Files: src/ex_getln.c, runtime/menu.vim - -Patch 5.4m.26 -Problem: When using a mapping of two function keys, e.g., , and - only the first char of the second key has been read, the mapping - would not be recognized. Noticed on some Unix systems with xterm. -Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even - when halfway a mapping. -Files: src/option.h, src/term.c - -Patch 5.4m.27 -Problem: When making test33 without the lisp feature it hangs. Interrupting - the execution of the script then might cause a crash. -Solution: In inchar(), after closing a script, don't use buf[] anymore. - closescript() has freed typebuf[] and buf[] might be pointing - inside typebuf[]. - Avoid that test33 hangs when the lisp feature is missing. -Files: src/getchar.c src/testdir/test33.in - -"os2" was missing from the feature list. Useful for has("os2"). - -BeOS: -- Included patches from Richard Offer for BeOS R4.5. -- menu code didn't work right. Crashed in the Buffers menu. The window title - wasn't set. (Offer) - -Patch 5.4n.3 -Problem: C-indenting was wrong after " } else". The white space was not - skipped. Visible when 'cino' has "+10". -Solution: Skip white space before calling cin_iselse(). (Norbert Zeh) -Files: src/misc1.c - -Patch 5.4n.4 -Problem: When the 't' flag in 'cpoptions' is included, after a - ":nohlsearch" the search highlighting would not be enabled again - after a tag search. (Norbert Zeh) -Solution: When setting the new search pattern in jumpto_tag(), don't restore - no_hlsearch. -Files: src/tag.c - -Patch 5.4n.5 -Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The - autocommand is executed down from vgetc(). Calling vgetc() - recursively to execute the command doesn't work then. -Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error - message when this happens. -Files: src/ex_docmd.c, runtime/doc/autocmd.txt - -Patch 5.4n.6 -Problem: "gv" could reselect a Visual that starts and/or ends past the end - of a line. (Robert Webb) -Solution: Check that the start and end of the Visual area are on a valid - character by calling adjust_cursor(). -Files: src/normal.c - -Patch 5.4n.8 -Problem: When a mark was on a non existing line (e.g., when the .viminfo - was edited), jumping to it caused ml_get errors. (Alexey - Marinichev). -Solution: Added check_cursor_lnum() in nv_gomark(). -Files: src/normal.c - -Patch 5.4n.9 -Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) -Solution: Give an error message for a negative line number. -Files: src/ex_docmd.c - -Patch 5.4n.10 -Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the - text. This erased the prompt and made Vim look like it is in - Normal mode, while it is actually still waiting for a . -Solution: Disallow scrolling at the hit-enter prompt for systems that use - on the fly scrolling. -Files: src/message.c - -Patch 5.4n.14 -Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than - what fits on the screen, the window size was made smaller than - asked for (that's OK) and Vim crashed (that's not OK)> -Solution: Call check_winsize() from gui_set_winsize() to resize the windows. -Files: src/gui.c - -Patch 5.4n.16 -Problem: Win32 GUI: The key both selected the menu and was handled as - a key hit. -Solution: Apply 'winaltkeys' to , like it is used for Alt keys. -Files: src/gui_w32.c - -Patch 5.4n.17 -Problem: Local buffer variables were freed when the buffer is unloaded. - That's not logical, since options are not freed. (Ron Aaron) -Solution: Free local buffer variables only when deleting the buffer. -Files: src/buffer.c - -Patch 5.4n.19 -Problem: Doing ":e" (without argument) in an option-window causes trouble. - The mappings for and are not removed. When there is - another buffer loaded, the swap file for it gets mixed up. - (Steve Mueller) -Solution: Also remove the mappings at the BufUnload event, if they are still - present. - When re-editing the same file causes the current buffer to be - deleted, don't try editing it. - Also added a test for this situation. -Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, - src/testdir/test13.ok - -Patch 5.4n.24 -Problem: BeOS: configure never enabled the GUI, because $with_x was "no". - Unix prototypes caused problems, because Display and Widget are - undefined. - Freeing fonts on exit caused a crash. -Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes". - Add dummy defines for Display and Widget in proto.h. - Don't free the fonts in gui_exit() for BeOS. -Files: src/configure.in, src/configure, src/proto.h, src/gui.c. - - -The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild) - -Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined. -(Aaron) - -VMS: -- mch_setenv() had two arguments instead of three. -- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc". - Removed the dot. -- call to RealWaitForChar() had one argument too many. (Campbell) -- WaitForChar() is static, removed the prototype from proto/os_vms.pro. -- Many file accesses failed, because Unix style file names were used. - Translate file names to VMS style by using vim_fopen(). -- Filtering didn't work, because the temporary file name was generated wrong. -- There was an extra newline every 9192 characters when writing a file. Work - around it by writing line by line. (Campbell) -- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". - Only mattered for generating prototypes. -- Added file name translation to many places. Made easy by defining macros - mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat(). -- Set default for 'tagbsearch' to off, because binary tag searching apparently - doesn't work for VMS. -- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell) - - -Patch 5.4o.2 -Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham) -Solution: Fix wrong use of pointers in get_file_name_in_path(). -Files: src/window.c - -Patch 5.4o.3 -Problem: The horizontal scrollbar was not sized correctly when 'number' is - set and 'wrap' not set. - Athena: Horizontal scrollbar wasn't updated when the cursor was - positioned with a mouse click just after dragging. -Solution: Subtract 8 from the size when 'number' set and 'wrap' not set. - Reset gui.dragged_sb when a mouse click is received. -Files: src/gui.c - -Patch 5.4o.4 -Problem: When running in an xterm and $WINDOWID is set to an illegal value, - Vim would exit with "Vim: Got X error". -Solution: When using the display which was opened for the xterm clipboard, - check if x11_window is valid by trying to obtain the window title. - Also add a check in setup_xterm_clip(), for when using X calls to - get the pointer position in an xterm. -Files: src/os_unix.c - -Patch 5.4o.5 -Problem: Motif version with Lesstif: When removing the menubar and then - using a menu shortcut key, Vim would crash. (raf) -Solution: Disable the menu mnemonics when the menu bar is removed. -Files: src/gui_motif.c - -Patch 5.4o.9 -Problem: The DOS install.exe program used the "move" program. That doesn't - work on Windows NT, where "move" is internal to cmd.exe. -Solution: Don't use an external program for moving the executables. Use C - functions to copy the file and delete the original. -Files: src/dosinst.c - -Motif and Athena obtained the status area height differently from GTK. Moved -status_area_enabled from global.h to gui_x11.c and call -xim_get_status_area_height() to get the status area height. - -Patch 5.4p.1 -Problem: When using auto-select, and the "gv" command is used, would not - always obtain ownership of the selection. Caused by the Visual - area still being the same, but ownership taken away by another - program. -Solution: Reset the clipboard Visual mode to force updating the selection. -Files: src/normal.c - -Patch 5.4p.2 -Problem: Motif and Athena with XIM: Typing 3-byte - doesn't work correctly with Ami XIM. -Solution: Avoid using key_sym XK_VoidSymbol. (Nam) -Files: src/multbyte.c, src/gui_x11.c - -Patch 5.4p.4 -Problem: Win32 GUI: The scrollbar values were reduced for a file with more - than 32767 lines. But this info was kept global for all - scrollbars, causing a mixup between the windows. - Using the down arrow of a scrollbar in a large file didn't work. - Because of round-off errors there is no scroll at all. -Solution: Give each scrollbar its own scroll_shift field. When the down - arrow is used, scroll several lines. -Files: src/gui.h, src/gui_w32.c - -Patch 5.4p.5 -Problem: When changing buffers in a BufDelete autocommand, there could be - ml_line errors and/or a crash. (Schandl) Was caused by deleting - the current buffer. -Solution: When the buffer to be deleted unexpectedly becomes the current - buffer, don't delete it. - Also added a check for this in test13. -Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok - -Patch 5.4p.7 -Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and - clicking the right mouse button outside of the selected area, the - selected area wasn't removed until the popup menu has gone. - (Aaron) -Solution: Set the cursor and update the display before showing the popup - menu. -Files: src/normal.c - -Patch 5.4p.8 -Problem: The generated bugreport didn't contain information about - $VIMRUNTIME and whether runtime files actually exist. -Solution: Added a few checks to the bugreport script. -Files: runtime/bugreport.vim - -Patch 5.4p.9 -Problem: The windows install.exe created a wrong entry in the popup menu. - The "%1" was "". The full directory was included, even when the - executable had been moved elsewhere. (Ott) -Solution: Double the '%' to get one from printf. Only include the path to - gvim.exe when it wasn't moved and it's not in $PATH. -Files: src/dosinst.c - -Patch 5.4p.10 -Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used - a short file name for a directory. -Solution: Change the "%1" to "%L" in the registry entry. -Files: src/dosinst.c - -Patch 5.4p.11 -Problem: Motif, Athena and GTK: When closing the GUI window when there is a - changed buffer, there was only an error message and Vim would not - exit. -Solution: Put up a dialog, like for ":confirm qa". Uses the code that was - already used for MS-Windows. -Files: src/gui.c, src/gui_w32.c - -Patch 5.4p.12 -Problem: Win32: Trying to expand a string that is longer than 256 - characters could cause a crash. (Steed) -Solution: For the buffer in win32_expandpath() don't use a fixed size array, - allocate it. -Files: src/os_win32.c - -MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for -fname_case() and mch_update_cursor() were missing. "fd" was unused in -mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in -mch_call_shell() for DJGPP version. - -============================================================================== -VERSION 5.5 *version-5.5* - -Version 5.5 is a bug-fix version of 5.4. - - -Changed *changed-5.5* -------- - -The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the -size of the executables. - -Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals -to it. - -'backspace' is now a string option. See patch 5.4.15. - - -Added *added-5.5* ------ - -Included Exuberant Ctags version 3.3. (Darren Hiebert) - -In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used -everywhere to do what CTRL-V used to do. - -Support for decompression of bzip2 files in vimrc_example.vim. - -When a patch is included, the patch number is entered in a table in version.c. -This allows skipping a patch without breaking a next one. - -Support for mouse scroll wheel in X11. See patch 5.5a.14. - -line2byte() can be used to get the size of the buffer. See patch 5.4.35. - -The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to -insert a register literally. See patch 5.4.48. - -Uninstall program for MS-Windows. To be able to remove the registry entries -for "Edit with Vim". It is registered to be run from the "Add/Remove -programs" application. See patch 5.4.x7. - - -Fixed *fixed-5.5* ------ - -When using vimrc_example.vim: An error message when the cursor is on a line -higher than the number of lines in the compressed file. Move the autocommand -for jumping to the last known cursor position to after the decompressing -autocommands. - -":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may -mark a file as modified, which causes problems. This is a buffer-specific -setting, it should not affect all files. - -"vim --version" wrote two empty lines. - -Unix: The alarm signal could kill Vim. It is generated by the Perl alarm() -function. Ignore SIGALRM. - -Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script. - -BeOS: "tmo" must be bigtime_t, instead of double. (Seibert) - -Patch 5.4.1 -Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson) -Solution: Set $GZIP to an empty string. -Files: src/testdir/test11.in - -Patch 5.4.2 -Problem: Typing at the crypt key prompt caused a crash. (Kallingal) -Solution: Check for a NULL pointer returned from get_crypt_key(). -Files: src/fileio.c - -Patch 5.4.3 -Problem: Python: Trying to use the name of an unnamed buffer caused a - crash. (Daniel Burrows) -Solution: Check for b_fname being a NULL pointer. -Files: src/if_python.c - -Patch 5.4.4 -Problem: Win32: When compiled without toolbar, but the 'T' flag is in - 'guioptions', there would be an empty space for the toolbar. -Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri) -Files: src/gui.c - -Patch 5.4.5 -Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash. - Looks like any ":unmenu" command may cause trouble. -Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers - menu, because the Refresh item would not work. -Files: src/menu.c, runtime/menu.vim - -Patch 5.4.6 -Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only - happens when the GUI forks. -Solution: Don't fork in a recursive call of gui_start(). -Files: src/gui.c - -Patch 5.4.7 -Problem: Typing 'q' at the more prompt for the ATTENTION message causes the - file loading to be interrupted. (Will Day) -Solution: Reset got_int after showing the ATTENTION message. -Files: src/memline.c - -Patch 5.4.8 -Problem: Edit some file, ":he", ":opt": options from help window are shown, - but pressing space updates from the other window. (Phillipps) - Also: When there are changes in the option-window, ":q!" gives an - error message. -Solution: Before creating the option-window, go to a non-help window. - Use ":bdel!" to delete the buffer. -Files: runtime/optwin.vim - -Patch 5.4.9 - Just updates version.h. The real patch has been moved to 5.4.x1. - This patch is just to keep the version number correct. - -Patch 5.4.10 -Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It - should run in the terminal. -Solution: Use gtk_init_check() instead of gtk_init(). -Files: src/gui_gtk_x11.c - -Patch 5.4.11 -Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to - the next buffer for some commands, e.g., ":buffer". -Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still - copy the options used by do_help() when neither the "from" or "to" - buffer is a help buffer. -Files: src/option.c - -Patch 5.4.12 -Problem: When using 'smartindent', there would be no extra indent if the - current line did not have any indent already. (Hanus Adler) -Solution: There was a wrongly placed "else", that previously matched with - the "if" that set trunc_line. Removed the "else" and added a - check for trunc_line to be false. -Files: src/misc1.c - -Patch 5.4.13 -Problem: New SGI C compilers need another option for optimisation. -Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young) -Files: src/configure.in, src/configure - -Patch 5.4.14 -Problem: Motif GUI: When the popup menu is present, a tiny window appears - on the desktop for some users. -Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler) -Files: src/gui_motif.c - -Patch 5.4.15 -Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no - longer possible to only allow deleting autoindent. -Solution: Make 'backspace' a list of parts, to allow each kind of - backspacing separately. -Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, - runtime/doc/option.txt, runtime/doc/insert.txt - -Patch 5.4.16 -Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure. -Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang) -Files: src/configure.in, src/configure - -Patch 5.4.17 -Problem: GUI: When started from inside gvim with ":!gvim", Vim would not - start. ":!gvim -f" works fine. -Solution: After forking, wait a moment in the parent process, to give the - child a chance to set its process group. -Files: src/gui.c - -Patch 5.4.18 -Problem: Python: The clear_history() function also exists in a library. -Solution: Rename clear_history() to clear_hist(). -Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro - -Patch 5.4.19 -Problem: In a terminal with 25 lines, there is a more prompt after the - ATTENTION message. When hitting 'q' here the dialog prompt - doesn't appear and file loading is interrupted. (Will Day) -Solution: Don't allow quitting the printing of a message for the dialog - prompt. Added the msg_noquit_more flag for this. -Files: src/message.c - -Patch 5.4.20 -Problem: GTK: When starting gvim, would send escape sequences to the - terminal to switch the cursor off and on. -Solution: Don't call msg_start() if the GUI is expected to start. -Files: src/main.c - -Patch 5.4.21 -Problem: Motif: Toplevel menu ordering was wrong when using tear-off items. -Solution: Don't add one to the index for a toplevel menu. -Files: src/gui_motif.c - -Patch 5.4.22 -Problem: In Insert mode, , , and didn't - update the column used for vertical movement. -Solution: Set curwin->w_set_curswant for those commands. -Files: src/edit.c - -Patch 5.4.23 -Problem: When a Visual selection is lost to another program, and then the - same text is Visually selected again, the clipboard ownership - wasn't regained. -Solution: Set clipboard.vmode to NUL to force regaining the clipboard. -Files: src/normal.c - -Patch 5.4.24 -Problem: Encryption: When using ":r file" while 'key' has already entered, - the 'key' option would be messed up. When writing the file it - would be encrypted with an unknown key and lost! (Brad Despres) -Solution: Don't free cryptkey when it is equal to the 'key' option. -Files: src/fileio.c - -Patch 5.4.25 -Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not - properly indented when starting a new line. (Mitterand) -Solution: When there is a comment leader for the new line, but 'autoindent' - isn't set, do C-indenting. -Files: src/misc1.c - -Patch 5.4.26 -Problem: Multi-byte: a multi-byte character is never recognized in a file - name, causing a backslash before it to be removed on Windows. -Solution: Assume that a leading-byte character is a file name character in - vim_isfilec(). -Files: src/charset.c - -Patch 5.4.27 -Problem: Entries in the PopUp[nvic] menus were added for several modes, but - only deleted for the mode they were used for. This resulted in - the entry remaining in the PopUp menu. - When removing a PopUp[nvic] menu, the name had been truncated, - could result in greying-out the whole PopUp menu. -Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove - the PopUp[nvic] menu entries first, before the name is changed. -Files: src/menu.c - -Patch 5.4.28 -Problem: When using a BufWritePre autocommand to change 'fileformat', the - new value would not be used for writing the file. -Solution: Check 'fileformat' after executing the autocommands instead of - before. -Files: src/fileio.c - -Patch 5.4.29 -Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a - menu can result in a crash. -Solution: Always grey-out menus for Athena, don't hide them. -Files: src/menu.c - -Patch 5.4.30 -Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The - first character typed after ":sh" goes to Vim, instead of the - started shell. -Solution: Don't suspend Vim, start a new shell. Kill the async read thread - when starting a new shell. It will be restarted later. (Will Day) -Files: src/os_unix.c, src/ui.c - -Patch 5.4.31 -Problem: GUI: When 'mousefocus' is set, moving the mouse over where a - window boundary was, causes a hit-enter prompt to be finished. - (Jeff Walker) -Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it - for the more prompt and a few other situations. When an operator - is pending, abort it first. -Files: src/gui.c - -Patch 5.4.32 -Problem: Unix: $LDFLAGS was not passed to configure. -Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner) -Files: src/Makefile - -Patch 5.4.33 -Problem: Unix: After expanding an environment variable with the shell, the - next expansion would also use the shell, even though it is not - needed. -Solution: Reset "recursive" before returning from gen_expand_wildcards(). -Files: src/misc1.c - -Patch 5.4.34 (also see 5.4.x5) -Problem: When editing a file, and the file name is relative to a directory - above the current directory, the file name was made absolute. - (Gregory Margo) -Solution: Add an argument to shorten_fnames() which indicates if all file - names should be shortened, or only absolute names. In main() only - use shorten_fnames() to shorten absolute names. -Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro - -Patch 5.4.35 -Problem: There is no function to get the current file size. -Solution: Allow using line2byte() with the number of lines in the file plus - one. This returns the offset of the line past the end of the - file, which is the file size plus one. -Files: src/eval.c, runtime/doc/eval.txt - -Patch 5.4.36 -Problem: Comparing strings while ignoring case didn't work correctly for - some machines. (Mide Steed) -Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed - them to return -1 when the first argument is smaller. -Files: src/misc2.c - -Patch 5.4.37 (also see 5.4.40 and 5.4.43) -Problem: Long strings from the viminfo file are truncated. -Solution: When writing a long string to the viminfo file, first write a line - with the length, then the string itself in a second line. -Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, - src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim - -Patch 5.4.38 -Problem: In the option-window, ":set go&" resulted in 'go' being handled - like a boolean option. - Mappings for and were overruled by the option-window. -Solution: When the value of an option isn't 0 or 1, don't handle it like a - boolean option. - Save and restore mappings for and when entering and - leaving the option-window. -Files: runtime/optwin.vim - -Patch 5.4.39 -Problem: When setting a hidden option, spaces before the equal sign were - not skipped and cause an error message. E.g., ":set csprg =cmd". -Solution: When skipping over a hidden option, check for a following "=val" - and skip it too. -Files: src/option.c - -Patch 5.4.40 (depends on 5.4.37) -Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn) -Solution: Add a typecast: "atol((char *)p + 1)". -Files: src/ex_cmds.c - -Patch 5.4.41 -Problem: Some commands that were not included would give an error message, - even when after "if 0". -Solution: Don't give an error message for an unsupported command when not - executing the command. -Files: src/ex_docmd.c - -Patch 5.4.42 -Problem: ":w" would also cause a truncated message to appear in the message - history. -Solution: Don't put a kept message in the message history when it starts - with "<". -Files: src/message.c - -Patch 5.4.43 (depends on 5.4.37) -Problem: Mixing long lines with multiple lines in a register causes errors - when writing the viminfo file. (Robinson) -Solution: When reading the viminfo file to skip register contents, skip - lines that start with "<". -Files: src/ops.c - -Patch 5.4.44 -Problem: When 'whichwrap' includes '~', a "~" command that goes on to the - next line cannot be properly undone. (Zellner) -Solution: Save each line for undo in n_swapchar(). -Files: src/normal.c - -Patch 5.4.45 (also see 5.4.x8) -Problem: When expand("$ASDF") fails, there is an error message. -Solution: Remove the global expand_interactively. Pass a flag down to skip - the error message. - Also: expand("$ASDF") returns an empty string if $ASDF isn't set. - Previously it returned "$ASDF" when 'shell' is "sh". - Also: system() doesn't print an error when the command returns an - error code. -Files: many - -Patch 5.4.46 -Problem: Backspacing did not always use 'softtabstop' after hitting , - inserting a register, moving the cursor, etc. -Solution: Reset inserted_space much more often in edit(). -Files: src/edit.c - -Patch 5.4.47 -Problem: When executing BufWritePre or BufWritePost autocommands for a - hidden buffer, the cursor could be moved to a non-existing - position. (Vince Negri) -Solution: Save and restore the cursor and topline for the current window - when it is going to be used to execute autocommands for a hidden - buffer. Use an existing window for the buffer when it's not - hidden. -Files: src/fileio.c - -Patch 5.4.48 -Problem: A paste with the mouse in Insert mode was not repeated exactly the - same with ".". For example, when 'autoindent' is set and pasting - text with leading indent. (Perry) -Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert - mode, which insert the contents of a register literally. -Files: src/edit.c, src/normal.c, runtime/doc/insert.txt - -Patch 5.4.49 -Problem: When pasting text with [ , the cursor could end up - after the last character of the line. -Solution: Correct the cursor position for the change in indent. -Files: src/ops.c - -Patch 5.4.x1 (note: Replaces patch 5.4.9) -Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not - defined until vim.h is included. -Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where - it is used. -Files: src/gui_w32.c - -Patch 5.4.x2 -Problem: BeOS: When pasting text, one character was moved to the end. -Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out - with acquire_sem_etc(). (Will Day) -Files: src/os_beos.c, src/ui.c - -Patch 5.4.x3 -Problem: Win32 GUI: When dropping a directory on a running gvim it crashes. -Solution: Avoid using a NULL file name. Also display a message to indicate - that the current directory was changed. -Files: src/gui_w32.c - -Patch 5.4.x4 -Problem: Win32 GUI: Removing an item from the popup menu doesn't work. -Solution: Don't remove the item from the menubar, but from the parent popup - menu. -Files: src/gui_w32.c - -Patch 5.4.x5 (addition to 5.4.34) -Files: src/gui_w32.c - -Patch 5.4.x6 -Problem: Win32: Expanding (dir)name starting with a dot doesn't work. - (McCormack) Only when there is a path before it. -Solution: Fix the check, done before expansion, if the file name pattern - starts with a dot. -Files: src/os_win32.c - -Patch 5.4.x7 -Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult. -Solution: Add uninstall program to remove the registry keys. It is installed - in the "Add/Remove programs" list for ease of use. - Also: don't set $VIM when the executable is with the runtime files. - Also: Add a text file with a step-by-step description of how to - uninstall Vim for DOS and Windows. -Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt - -Patch 5.4.x8 (addition to 5.4.45) -Files: many - -Patch 5.4.x9 -Problem: Win32 GUI: After executing an external command, focus is not - always regained (when using focus-follows-mouse). -Solution: Add SetFocus() in mch_system(). (Mike Steed) -Files: src/os_win32.c - - -Patch 5.5a.1 -Problem: ":let @* = @:" did not work. The text was not put on the - I clipboard. (Fisher) -Solution: Own the clipboard and put the text on it. -Files: src/ops.c - -Patch 5.5a.2 -Problem: append() did not mark the buffer modified. Marks below the - new line were not adjusted. -Solution: Fix the f_append() function. -Files: src/eval.c - -Patch 5.5a.3 -Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, - because there is no "mv" command. -Solution: Add the rename() function and use it instead of ":!mv". - Also: Disable the automatic jump to the last position, because it - changes the jumplist. -Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim - -Patch 5.5a.4 -Problem: When using whole-line completion in insert mode while the cursor - is in the indent, get "out of memory" error. (Stekrt) -Solution: Don't allocate a negative amount of memory in ins_complete(). -Files: src/edit.c - -Patch 5.5a.5 -Problem: Win32: The 'path' option can hold only up to 256 characters, - because _MAX_PATH is 256. (Robert Webb) -Solution: Use a fixed path length of 1024. -Files: src/os_win32.h - -Patch 5.5a.6 -Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work. -Solution: Add $(SUFFIX) to all places where an executable is used. Also - pass it to ctags. (Reynolds) -Files: src/Makefile - -Patch 5.5a.7 -Problem: When using "cat | vim -" in an xterm, the xterm version reply - would end up in the file. -Solution: Read the file from stdin before switching the terminal to RAW - mode. Should also avoid problems with programs that use a - specific terminal setting. - Also: when using the GUI, print "Reading from stdin..." in the GUI - window, to give a hint why it doesn't do anything. -Files: src/main.c, src/fileio.c - -Patch 5.5a.8 -Problem: On multi-threaded Solaris, suspending doesn't work. -Solution: Call pause() when the SIGCONT signal was not received after - sending the SIGTSTP signal. (Nagano) -Files: src/os_unix.c - -Patch 5.5a.9 -Problem: 'winaltkeys' could be set to an empty argument, which is illegal. -Solution: Give an error message when doing ":set winaltkeys=". -Files: src/option.c - -Patch 5.5a.10 -Problem: Win32 console: Using ALTGR on a German keyboard to produce "}" - doesn't work, because the 8th bit is set when ALT is pressed. -Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert) -Files: src/os_win32.c - -Patch 5.5a.11 -Problem: Tcl: Configure always uses tclsh8.0. - Also: Loading a library doesn't work. -Solution: Add "--with-tclsh" configure argument to allow specifying another - name for the tcl shell. - Call Tcl_Init() in tclinit() to make loading libraries work. - (Johannes Zellner) -Files: src/configure.in, src/configure, src/if_tcl.c - -Patch 5.5a.12 -Problem: The "user_commands" feature is called "user-commands". -Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom) - Keep "user-commands" for the has() function, to remain backwards - compatible with 5.4. -Files: src/eval.c, src/version.c - -Patch 5.5a.13 -Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo - file. That is very wrong when OS/2 is on another partition. -Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS. - Also: Makefile.os2 didn't depend on os_unix.h. -Files: src/os_unix.h, src/Makefile.os2 - -Patch 5.5a.14 -Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work. -Solution: Interpret a click of the wheel as a key press of the - or keys. Default behavior is to scroll three lines, or - a full page when Shift is used. -Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, - src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, - src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, - runtime/doc/scroll.txt - -Patch 5.5a.15 -Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert - started with the key. (Andreas Rohrschneider) -Solution: Replace with "i" before setting up the redo buffer. -Files: src/normal.c - -Patch 5.5a.16 -Problem: VMS: GUI does not compile and run. -Solution: Various fixes. (Zoltan Arpadffy) - Moved functions from os_unix.c to ui.c, so that VMS can use them - too: open_app_context(), x11_setup_atoms() and clip_x11* functions. - Made xterm_dpy global, it's now used by ui.c and os_unix.c. - Use gethostname() always, sys_hostname doesn't exist. -Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, - src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro - -Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar() -to avoid symbol length limit of 31 characters. (Steve P. Wall) - -Patch 5.5b.1 -Problem: SASC complains about dead assignments and implicit type casts. -Solution: Removed the dead assignments. Added explicit type casts. -Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, - src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, - src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, - src/screen.c - -Patch 5.5b.2 -Problem: When using "CTRL-O O" in Insert mode, hit and then "o" in - another line truncates that line. (Devin Weaver) -Solution: When using a command that starts Insert mode from CTRL-O, reset - "restart_edit" first. This avoids that edit() is called with a - mix of starting a new edit command and restarting a previous one. -Files: src/normal.c - -============================================================================== -VERSION 5.6 *version-5.6* - -Version 5.6 is a bug-fix version of 5.5. - - -Changed *changed-5.6* -------- - -Small changes to OleVim files. (Christian Schaller) - -Inserted "/**/" between patch numbers in src/version.c. This allows for one -line of context, which some versions of patch need. - -Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts -for alphabetical items to avoid a clash with fixed items. - - -Added *added-5.6* ------ - -Included Exuberant Ctags version 3.4. (Darren Hiebert) - -OpenWithVim in Python. (Christian Schaller) - -Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids -the reported problems with the MS Office taskbar. Now it's a Shell Extension. -(Tianmiao Hu) - -New syntax files: -abel Abel (John Cook) -aml Arc Macro Language (Nikki Knuit) -apachestyle Apache-style config file (Christian Hammers) -cf Cold Fusion (Jeff Lanzarotta) -ctrlh files with CTRL-H sequences (Bram Moolenaar) -cupl CUPL (John Cook) -cuplsim CUPL simulation (John Cook) -erlang Erlang (Kresimir Marzic) -gedcom Gedcom (Paul Johnson) -icon Icon (Wendell Turner) -ist MakeIndex style (Peter Meszaros) -jsp Java Server Pages (Rafael Garcia-Suarez) -rcslog Rcslog (Joe Karthauser) -remind Remind (Davide Alberani) -sqr Structured Query Report Writer (Paul Moore) -tads TADS (Amir Karger) -texinfo Texinfo (Sandor Kopanyi) -xpm2 X Pixmap v2 (Steve Wall) - -The 'C' flag in 'cpoptions' can be used to switch off concatenation for -sourced lines. See patch 5.5.013 below. |line-continuation| - -"excludenl" argument for the ":syntax" command. See patch 5.5.032 below. -|:syn-excludenl| - -Implemented |z+| and |z^| commands. See patch 5.5.050 below. - -Vim logo in Corel Draw format. Can be scaled to any resolution. - - -Fixed *fixed-5.6* ------ - -Using this mapping in Select mode, terminated completion: -":vnoremap a" (Benji Fisher) -Ignore K_SELECT in ins_compl_prep(). - -VMS (Zoltan Arpadffy, David Elins): -- ioctl() in pty.c caused trouble, #ifndef VMS added. -- Cut & paste mismatch corrected. -- Popup menu line crash corrected. (Patch 5.5.047) -- Motif directories during open and save as corrected. -- Handle full file names with version numbers. (Patch 5.5.046) -- Directory handling (CD command etc.) -- Corrected file name conversion VMS to Unix and v.v. -- Recovery was not working. -- Terminal and signal handling was outdated compared to os_unix.c. -- Improved os_vms.txt. - -Configure used fprintf() instead of printf() to check for __DATE__ and -__TIME__. (John Card II) - -BeOS: Adjust computing the char_height and char_ascent. Round them up -separately, avoids redrawing artifacts. (Mike Steed) - -Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and -findmatchlimit(). (Taro Muraoka) - -GTK GUI: -- With GTK 1.2.5 and later the scrollbars were not redrawn correctly. -- Adjusted the gtk_form_draw() function. -- SNiFF connection didn't work. -- 'mousefocus' was not working. (Dalecki) -- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@. - - -Patch 5.5.001 -Problem: Configure in the top directory did not pass on an argument with a - space correctly. For example "./configure --previs="/My home". - (Stephane Chazelas) -Solution: Use '"$@"' instead of '$*' to pass on the arguments. -Files: configure - -Patch 5.5.002 -Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker) -Solution: Use "fds[].revents & POLLIN". -Files: src/os_unix.c - -Patch 5.5.003 -Problem: The autoconf check for sizeof(int) is wrong on machines where - sizeof(size_t) != sizeof(int). -Solution: Use our own configure check. Also fixes the warning for - cross-compiling. -Files: src/configure.in, src/configure - -Patch 5.5.004 -Problem: On Unix it's not possible to interrupt ":sleep 100". -Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to - wake us up. But switch off echo, added TMODE_SLEEP. -Files: src/term.h, src/os_unix.c - -Patch 5.5.005 -Problem: When using with a user command, an empty argument to the - command resulted in one empty string, while no string was - expected. -Solution: Catch an empty argument and pass no argument to the function. - (Paul Moore) -Files: src/ex_docmd.c - -Patch 5.5.006 -Problem: Python: When platform-dependent files are in another directory - than the platform-independent files it doesn't work. -Solution: Also check the executable directory, and add it to CFLAGS. (Tessa - Lau) -Files: src/configure.in, src/configure - -Patch 5.5.007 (extra) -Problem: Win32 OLE: Occasional crash when exiting while still being used - via OLE. -Solution: Move OleUninitialize() to before deleting the application object. - (Vince Negri) -Files: src/if_ole.cpp - -Patch 5.5.008 -Problem: 10000@@ takes a long time and cannot be interrupted. -Solution: Check for CTRL-C typed while in the loop to push the register. -Files: src/normal.c - -Patch 5.5.009 -Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader) -Solution: Remove configure check for Sequent. -Files: src/configure.in, src/configure - -Patch 5.5.010 -Problem: Ctags freed a memory block twice when exiting. When out of - memory, a misleading error message was given. -Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren - Hiebert) -Files: src/ctags/* - -Patch 5.5.011 -Problem: After "CTRL-V s", the cursor jumps back to the start, while all - other operators leave the cursor on the last changed character. - (Xiangjiang Ma) -Solution: Position cursor on last changed character, if possible. -Files: src/ops.c - -Patch 5.5.012 -Problem: Using CTRL-] in Visual mode doesn't work when the text includes a - space (just where it's useful). (Stefan Bittner) -Solution: Don't escape special characters in a tag name with a backslash. -Files: src/normal.c - -Patch 5.5.013 -Problem: The ":append" and ":insert" commands allow using a leading - backslash in a line. The ":source" command concatenates those - lines. (Heinlein) -Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation. -Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, - runtime/filetype.vim, runtime/scripts.vim - -Patch 5.5.014 -Problem: When executing a register with ":@", the ":append" command would - get text lines with a ':' prepended. (Heinlein) -Solution: Remove the ':' characters. -Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h - -Patch 5.5.015 -Problem: When using ":g/pat/p", it's hard to see where the output starts, - the ":g" command is overwritten. Vi keeps the ":g" command. -Solution: Keep the ":g" command, but allow overwriting it with the report - for the number of changes. -Files: src/ex_cmds.c - -Patch 5.5.016 (extra) -Problem: Win32: Using regedit to install Vim in the popup menu requires the - user to confirm this in a dialog. -Solution: Use "regedit /s" to avoid the dialog -Files: src/dosinst.c - -Patch 5.5.017 -Problem: If an error occurs when closing the current window, Vim could get - stuck in the error handling. -Solution: Don't set curwin to NULL when closing the current window. -Files: src/window.c - -Patch 5.5.018 -Problem: Absolute paths in shell scripts do not always work. -Solution: Use /usr/bin/env to find out the path. -Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, - runtime/tools/shtags.pl - -Patch 5.5.019 -Problem: A function call in 'statusline' stops using ":q" twice from - exiting, when the last argument hasn't been edited. -Solution: Don't decrement quitmore when executing a function. (Madsen) -Files: src/ex_docmd.c - -Patch 5.5.020 -Problem: When the output of CTRL-D completion in the commandline goes all - the way to the last column, there is an empty line. -Solution: Don't add a newline when the cursor wrapped already. (Madsen) -Files: src/ex_getln.c - -Patch 5.5.021 -Problem: When checking if a file name in the tags file is relative, - environment variables were not expanded. -Solution: Expand the file name before checking if it is relative. (Madsen) -Files: src/tag.c - -Patch 5.5.022 -Problem: When setting or resetting 'paste' the ruler wasn't updated. -Solution: Update the status lines when 'ruler' changes because of 'paste'. -Files: src/option.c - -Patch 5.5.023 -Problem: When editing a new file and autocommands change the cursor - position, the cursor was moved back to the first non-white, unless - 'startofline' was reset. -Solution: Keep the new column, just like the line number. -Files: src/ex_cmds.c - -Patch 5.5.024 (extra) -Problem: Win32 GUI: When using confirm() to put up a dialog without a - default button, the dialog would not have keyboard focus. - (Krishna) -Solution: Always set focus to the dialog window. Only set focus to a button - when a default one is specified. -Files: src/gui_w32.c - -Patch 5.5.025 -Problem: When using "keepend" in a syntax region, a contained match that - includes the end-of-line could still force that region to - continue, if there is another contained match in between. -Solution: Check the keepend_level in check_state_ends(). -Files: src/syntax.c - -Patch 5.5.026 -Problem: When starting Vim in a white-on-black xterm, with 'bg' set to - "dark", and then starting the GUI with ":gui", setting 'bg' to - "light" in the gvimrc, the highlighting isn't set. (Tsjokwing) -Solution: Set the highlighting when 'bg' is changed in the gvimrc, even - though full_screen isn't set. -Files: src/option.c - -Patch 5.5.027 -Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but - WANT_TITLE isn't. (Barnum) -Solution: Move a few functions that are used by the X11 title and clipboard - and put another "#if" around it. -Files: src/os_unix.c - -Patch 5.5.028 (extra) -Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":" - prompt, the file is edited but the command line is actually still - there, the cursor goes back to command line on the next command. - (Krishna) -Solution: When dropping a file or directory on gvim while at the ":" prompt, - insert the name of the file/directory. Allows using the - file/directory name for any Ex command. -Files: src/gui_w32.c - -Patch 5.5.029 -Problem: "das" at the end of the file didn't delete the last character of - the sentence. -Solution: When there is no character after the sentence, make the operation - inclusive in current_sent(). -Files: src/search.c - -Patch 5.5.030 -Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in - vim.h as a macro. (wuxin) -Solution: Renamed "term_str" to "buf" in do_xterm_trace(). -Files: src/os_unix.c - -Patch 5.5.031 (extra) -Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind - and will be killed ungracefully. (Krishna) -Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to - exit gracefully. Allow the user to cancel the shutdown if there - is a changed buffer. -Files: src/gui_w32.c - -Patch 5.5.032 -Problem: Patch 5.5.025 wasn't right. And C highlighting was still not - working correctly for a #define. -Solution: Added "excludenl" argument to ":syntax", to be able not to extend - a containing item when there is a match with the end-of-line. -Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim - -Patch 5.5.033 -Problem: When reading from stdin, a long line in viminfo would mess up the - file message. readfile() uses IObuff for keep_msg, which could be - overwritten by anyone. -Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. - Also change vim_fgets() to not use IObuff any longer. -Files: src/fileio.c - -Patch 5.5.034 -Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set. -Solution: Don't try to initialize the highlighting before it has been - initialized from main(). -Files: src/syntax.c - -Patch 5.5.035 -Problem: GTK with XIM: Resizing with status area was messy, and - ":set guioptions+=b" didn't work. -Solution: Make status area a separate widget, but not a separate window. - (Chi-Deok Hwang) -Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c - -Patch 5.5.036 -Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to - uncompress a file did not do detection for 'fileformat'. This is - because the filtering is done with 'binary' set. -Solution: Split the filtering into separate write, filter and read commands. -Files: runtime/vimrc_example.vim - -Patch 5.5.037 -Problem: The "U" command didn't mark the buffer as changed. (McCormack) -Solution: Set the 'modified' flag when using "U". -Files: src/undo.c - -Patch 5.5.038 -Problem: When typing a long ":" command, so that the screen scrolls up, - causes the hit-enter prompt, even though the user just typed - return to execute the command. -Solution: Reset need_wait_return if (part of) the command was typed in - getcmdline(). -Files: src/ex_getln.c - -Patch 5.5.039 -Problem: When using a custom status line, "%a" (file # of #) reports the - index of the current window for all windows. -Solution: Pass a window pointer to append_arg_number(), and pass the window - being updated from build_stl_str_hl(). (Stephen P. Wall) -Files: src/buffer.c, src/screen.c, src/proto/buffer.pro - -Patch 5.5.040 -Problem: Multi-byte: When there is some error in xim_real_init(), it can - close XIM and return. After this there can be a segv. -Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try - to find more matches for supported styles. (Sung-Hyun Nam) -Files: src/multbyte.c - -Patch 5.5.041 -Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines. -Solution: Translate CTRL-- to CTRL-_. (Robert Webb) -Files: src/gui_x11.c - -Patch 5.5.042 -Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even - when the menu has been disabled by removing 'm' from 'guioptions'. -Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf) -Files: src/gui_x11.c - -Patch 5.5.043 -Problem: GTK: Handling of fontset fonts was not right when 'guifontset' - contains exactly 14 times '-'. -Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam) -Files: src/gui_gtk_x11.c - -Patch 5.5.044 -Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That - might not work everywhere. -Solution: Use "/usr/bin/env perl" instead. -Files: runtime/tools/pltags.pl - -Patch 5.5.045 -Problem: Using "this_session" variable does not work, requires preceding it - with "v:". Default filename for ":mksession" isn't mentioned - in the docs. (Fisher) -Solution: Support using "this_session" to be backwards compatible. -Files: src/eval.c, runtime/doc/options.txt - -Patch 5.5.046 (extra) -Problem: VMS: problems with path and filename. -Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy) -Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, - src/proto/os_vms.pro - -Patch 5.5.047 -Problem: VMS: Crash when using the popup menu -Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy) -Files: src/structs.h, src/menu.c - -Patch 5.5.048 -Problem: HP-UX 11: Compiling doesn't work, because both string.h and - strings.h are included. (Squassabia) -Solution: The configure test for including both string.h and strings.h - must include first, because it causes problems. -Files: src/configure.in, src/configure, src/config.h.in - -Patch 5.5.049 -Problem: Unix: When installing Vim, the protection bits of files might be - influenced by the umask. -Solution: Add $(FILEMOD) to Makefile. (Shetye) -Files: src/Makefile - -Patch 5.5.050 -Problem: "z+" and "z^" commands are missing. -Solution: Implemented "z+" and "z^". -Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt - -Patch 5.5.051 -Problem: Several Unix systems have a problem with the optimization limits - check in configure. -Solution: Removed the configure check, let the user add it manually in - Makefile or the environment. -Files: src/configure.in, src/configure, src/Makefile - -Patch 5.5.052 -Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani) -Solution: Ignore special keys at the console dialog. Also ignore characters - > 255 for other uses of tolower() and toupper(). -Files: src/menu.c, src/message.c, src/misc2.c - -Patch 5.5.053 -Problem: Indenting is wrong after a function when 'cino' has "fs". Another - problem when 'cino' has "{s". -Solution: Put line after closing "}" of a function at the left margin. - Apply ind_open_extra in the right way after a '{'. -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - -Patch 5.5.054 -Problem: Unix: ":e #" doesn't work if the alternate file name contains a - space or backslash. (Hudacek) -Solution: When replacing "#", "%" or other items that stand for a file name, - prepend a backslash before special characters. -Files: src/ex_docmd.c - -Patch 5.5.055 -Problem: Using "$r-" in blockwise Visual mode replaces one character - beyond the end of the line. (Zivkov) -Solution: Only replace existing characters. -Files: src/ops.c - -Patch 5.5.056 -Problem: After "z20" messages were printed at the old command line - position once. (Veselinovic) -Solution: Set msg_row and msg_col when changing cmdline_row in - win_setheight(). -Files: src/window.c - -Patch 5.5.057 -Problem: After "S" it should be possible to restore the line with "U". - (Veselinovic) -Solution: Don't call u_clearline() in op_delete() when changing only one - line. -Files: src/ops.c - -Patch 5.5.058 -Problem: Using a long search pattern and then "n" causes the hit-enter - prompt. (Krishna) -Solution: Truncate the echoed pattern, like other messages. Moved code for - truncating from msg_attr() to msg_strtrunc(). -Files: src/message.c, src/proto/message.pro, src/search.c - -Patch 5.5.059 -Problem: GTK GUI: When $term is invalid, using "gvim" gives an error - message, even though $term isn't really used. (Robbins) -Solution: When the GUI is about to start, skip the error messages for a - wrong $term. -Files: src/term.c - -Patch 5.5.060 (extra) -Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w" - causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf) -Solution: The code to work around a LFN bug in Windows 95 doesn't handle a - non-existing target name correctly. When renaming fails, make - sure the file has its original name. Also do this for the Win32 - version, although it's unlikely that it runs into this problem. -Files: src/os_msdos.c, src/os_win32.c - -Patch 5.5.061 -Problem: When using "\:" in a modeline, the backslash is included in the - option value. (Mohsin) -Solution: Remove one backslash before the ':' in a modeline. -Files: src/buffer.c, runtime/doc/options.txt - -Patch 5.5.062 (extra) -Problem: Win32 console: Temp files are created in the root of the current - drive, which may be read-only. (Peterson) -Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the - current directory. Cleaned up vim_tempname() a bit. -Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt - -Patch 5.5.063 -Problem: When using whole-line completion in Insert mode, 'cindent' is - applied, even after changing the indent of the line. -Solution: Don't reindent the completed line after inserting/removing indent. - (Robert Webb) -Files: src/edit.c - -Patch 5.5.064 -Problem: has("sniff") doesn't work correctly. -Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer) -Files: src/eval.c - -Patch 5.5.065 -Problem: When dropping a file on Vim, the 'shellslash' option is not - effective. (Krishna) -Solution: Fix the slashes in the dropped file names according to - 'shellslash'. -Files: src/ex_docmd.c, runtime/doc/options.txt - -Patch 5.5.066 -Problem: For systems with backslash in file name: Setting a file name - option to a value starting with "\\machine" removed a backslash. -Solution: Keep the double backslash for "\\machine", but do change - "\\\\machine" to "\\machine" for backwards compatibility. -Files: src/option.c, runtime/doc/options.txt - -Patch 5.5.067 -Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first - match in a line. (Benji Fisher) -Solution: Fix highlighting an empty match. Also highlight the first - character in an empty line for "$". -Files: src/screen.c - -Patch 5.5.068 -Problem: Crash when a ":while" is used with an argument that has an error. - (Sylvain Viart) -Solution: Was using an uninitialized index in the cs_line[] array. The - crash only happened when the index was far off. Made sure the - uninitialized index isn't used. -Files: src/ex_docmd.c - -Patch 5.5.069 -Problem: Shifting lines in blockwise Visual mode didn't set the 'modified' - flag. -Solution: Do set the 'modified' flag. -Files: src/ops.c - -Patch 5.5.070 -Problem: When editing a new file, creating that file outside of Vim, then - editing it again, ":w" still warns for overwriting an existing - file. (Nam) -Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly. -Files: src/buffer.c, src/fileio.c - -Patch 5.5.071 -Problem: Using a matchgroup in a ":syn region", which is the same syntax - group as the region, didn't stop a contained item from matching in - the start pattern. -Solution: Also push an item on the stack when the syntax ID of the - matchgroup is the same as the syntax ID of the region. -Files: src/syntax.c - -Patch 5.5.072 (extra) -Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may - crash, and the DOS console too. -Solution: Check that the value of 'columns' isn't larger than the number of - columns that the BIOS reports. -Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c - -Patch 5.5.073 (extra) -Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the - "match case" checkbox. The Find/Replace dialog didn't handle the - "match whole word" checkbox. -Solution: Support the "match case" and "match whole word" checkboxes. -Files: src/gui_w32.c - -Patch 5.6a.001 -Problem: Using with a count doesn't work like it does with "G". - (Benji Fisher) -Solution: Accept a count for and . -Files: src/normal.c - -Patch 5.6a.002 -Problem: The script for conversion to HTML was an older version. -Solution: Add support for running 2html.vim on a color terminal. -Files: runtime/syntax/2html.vim - -Patch 5.6a.003 -Problem: Defining a function inside a function didn't give an error - message. A missing ":endfunction" doesn't give an error message. -Solution: Allow defining a function inside a function. -Files: src/eval.c, runtime/doc/eval.txt - -Patch 5.6a.004 -Problem: A missing ":endwhile" or ":endif" doesn't give an error message. - (Johannes Zellner) -Solution: Check for missing ":endwhile" and ":endif" in sourced files. - Add missing ":endif" in file selection macros. -Files: src/ex_docmd.c, runtime/macros/file_select.vim - -Patch 5.6a.005 -Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar' - was changed when 'compatible' is set. -Solution: Moved entry of 'hlsearch' in options[] table down. - Don't reset 'toolbar' option to the default value when - 'compatible' is set. -Files: src/option.c - -Patch 5.6a.006 -Problem: Using a backwards range inside ":if 0" gave an error message. -Solution: Don't complain about a range when it is not going to be used. - (Stefan Roemer) -Files: src/ex_docmd.c - -Patch 5.6a.007 -Problem: ":let" didn't show internal Vim variables. (Ron Aaron) -Solution: Do show ":v" variables for ":let" and ":let v:name". -Files: src/eval.c - -Patch 5.6a.008 -Problem: Selecting a syntax from the Syntax menu gives an error message. -Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild) -Files: runtime/menu.vim - -Patch 5.6a.009 -Problem: When compiling with +extra_search but without +syntax, there is a - compilation error in screen.c. (Axel Kielhorn) -Solution: Adjust the #ifdef for declaring and initializing "line" in - win_line(). Also solve compilation problem when +statusline is - used without +eval. Another one when +cmdline_compl is used - without +eval. -Files: src/screen.c, src/misc2.c - -Patch 5.6a.010 -Problem: In a function, ":startinsert!" does not append to the end of the - line if a ":normal" command was used to move the cursor. (Fisher) -Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again. -Files: src/ex_docmd.c - -Patch 5.6a.011 (depends on 5.6a.004) -Problem: A missing ":endif" or ":endwhile" in a function doesn't give an - error message. -Solution: Give that error message. -Files: src/ex_docmd.c - -Patch 5.6a.012 (depends on 5.6a.008) -Problem: Some Syntax menu entries caused a hit-enter prompt. -Solution: Call a function to make the command shorter. Also rename a few - functions to avoid name clashes. -Files: runtime/menu.vim - -Patch 5.6a.013 -Problem: Command line completion works different when another completion - was done earlier. (Johannes Zellner) -Solution: Reset wim_index when starting a new completion. -Files: src/ex_getln.c - -Patch 5.6a.014 -Problem: Various warning messages when compiling and running lint with - different combinations of features. -Solution: Fix the warning messages. -Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, - src/option.c, src/screen.c, src/search.c, src/syntax.c, - src/feature.h, src/globals.h - -Patch 5.6a.015 -Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME. -Solution: Let Vim expand $VIMRUNTIME, instead of the shell. -Files: src/vimtutor - -Patch 5.6a.016 (extra) -Problem: Mac: Window size is restricted when starting. Cannot drag the - window all over the desktop. -Solution: Get real screen size instead of assuming 640x400. Do not use a - fixed number for the drag limits. (Axel Kielhorn) -Files: src/gui_mac.c - -Patch 5.6a.017 -Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline - mode is in the wrong position. (Stol) -Solution: Add priority numbers for all Paste menu entries. -Files: runtime/menu.vim - -Patch 5.6a.018 -Problem: GTK GUI: submenu priority doesn't work. - Help dialog could be destroyed too soon. - When closing a dialog window (e.g. the "ATTENTION" one), Vim would - just hang. - When GTK theme is changed, Vim doesn't adjust to the new colors. - Argument for ":promptfind" isn't used. -Solution: Fixed the mentioned problems. - Made the dialogs look&feel nicer. - Moved functions to avoid the need for a forward declaration. - Fixed reentrancy of the file browser dialog. - Added drag&drop support for GNOME. - Init the text for the Find/replace dialog from the last used - search string. Set "match whole word" toggle button correctly. - Made repeat rate for drag outside of window depend on the - distance from the window. (Marcin Dalecki) - Made the drag in Visual mode actually work. - Removed recursiveness protection from gui_mch_get_rgb(), it might - cause more trouble than it solves. -Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, - src/proto/ui.pro, src/misc2.c - -Patch 5.6a.019 -Problem: When trying to recover through NFS, which uses a large block size, - Vim might think the swap file is empty, because mf_blocknr_max is - zero. (Scott McDermott) -Solution: When computing the number of blocks of the file in mf_open(), - round up instead of down. -Files: src/memfile.c - -Patch 5.6a.020 -Problem: GUI GTK: Could not set display for gvim. -Solution: Add "-display" and "--display" arguments. (Marcin Dalecki) -Files: src/gui_gtk_x11.c - -Patch 5.6a.021 -Problem: Recovering still may not work when the block size of the device - where the swap file is located is larger than 4096. -Solution: Read block 0 with the minimal block size. -Files: src/memline.c, src/memfile.c, src/vim.h - -Patch 5.6a.022 (extra) -Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up - (e.g., for an existing swap file), Vim crashes. (David Elins) -Solution: Before showing a dialog, open the main window. -Files: src/gui_w32.c - -Patch 5.6a.023 -Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron) -Solution: Check for running into the end of the string in do_string_sub(). -Files: src/eval.c - -Patch 5.6a.024 -Problem: Using an autocommand to delete a buffer when leaving it can cause - a crash when jumping to a tag. (Franz Gorkotte) -Solution: In do_tag(), store tagstacklen before jumping to another buffer. - Check tagstackidx after jumping to another buffer. - Add extra check in win_split() if tagname isn't NULL. -Files: src/tag.c, src/window.c - -Patch 5.6a.025 (extra) -Problem: Win32 GUI: The tables for toupper() and tolower() are initialized - too late. (Mike Steed) -Solution: Move the initialization to win32_init() and call it from main(). -Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro - -Patch 5.6a.026 -Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) -Solution: Skip a second wait() call if waitpid() already detected that the - child has exited. -Files: src/os_unix.c - -Patch 5.6a.027 (extra) -Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems - for the Office toolbar. -Solution: Use a shell extension dll. (Tianmiao Hu) - Added it to the install and uninstal programs, replaces the old - "Edit with Vim" menu registry entries. -Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt - -Patch 5.6a.028 (extra) -Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte - characters. -Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters - correctly. -Files: src/gui_w32.c - -============================================================================== -VERSION 5.7 *version-5.7* - -Version 5.7 is a bug-fix version of 5.6. - -Changed *changed-5.7* -------- - -Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a -wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt. - - -Added *added-5.7* ------ - -New syntax files: -stp Stored Procedures (Jeff Lanzarotta) -snnsnet, snnspat, snnsres SNNS (Davide Alberani) -mel MEL (Robert Minsk) -ruby Ruby (Mirko Nasato) -tli TealInfo (Kurt W. Andrews) -ora Oracle config file (Sandor Kopanyi) -abaqus Abaqus (Carl Osterwisch) -jproperties Java Properties (Simon Baldwin) -apache Apache config (Allan Kelly) -csp CSP (Jan Bredereke) -samba Samba config (Rafael Garcia-Suarez) -kscript KDE script (Thomas Capricelli) -hb Hyper Builder (Alejandro Forero Cuervo) -fortran Fortran (rewritten) (Ajit J. Thakkar) -sml SML (Fabrizio Zeno Cornelli) -cvs CVS commit (Matt Dunford) -aspperl ASP Perl (Aaron Hope) -bc BC calculator (Vladimir Scholtz) -latte Latte (Nick Moffitt) -wml WML (Gerfried Fuchs) - -Included Exuberant ctags 3.5.1. (Darren Hiebert) - -"display" and "fold" arguments for syntax items. For future extension, they -are ignored now. - -strftime() function for the Macintosh. - -macros/explorer.vim: A file browser script (M A Aziz Ahmed) - - -Fixed *fixed-5.7* ------ - -The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The -executable is smaller. - -When a "make test" failed, the output file was lost. Rename it to -test99.failed to be able to see what went wrong. - -After sourcing bugreport.vim, it's not clear that bugreport.txt has been -written in the current directory. Edit bugreport.txt to avoid that. - -Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka) - -Win32 console: Mouse drags were passed on even when the mouse didn't move. - -Perl interface: In Buffers(), type of argument to SvPV() was int, should be -STRLEN. (Tony Leneis) - -Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in -os_unix.h. (Jake Hamby) - -Mappings in mswin.vim could break when some commands are mapped. Add "nore" -to most mappings to avoid re-mapping. - -modify_fname() made a copy of a file name for ":p" when it already was a full -path name, which is a bit slow. - -Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags, -to avoid depending on $PATH. Fixed "make clean". - -Many fixes to Macintosh specific parts: (mostly by Dany StAmant) -- Only one Help menu. -- No more crash when removing a menu item. -- Support as External Editor for Codewarrior (still some little glitches). -- Popup menu support. -- Fixed crash when pasting after application switch. -- Color from rgb.txt properly displayed. -- 'isprint' default includes all chars above '~'. (Axel Kielhorn) -- mac_expandpath() was leaking memory. -- Add digraphs table. (Axel Kielhorn) -- Multi-byte support: (Kenichi Asai) - Switch keyscript when going in/out of Insert mode. - Draw multi-byte character correctly. - Don't use mblen() but highest bit of char to detect multi-byte char. - Display value of multi-byte in statusline (also for other systems). -- mouse button was not initialized properly to MOUSE_LEFT when - USE_CTRLCLICKMENU not defined. -- With Japanese SJIS characters: Make "w", "b", and "e" work - properly. (Kenichi Asai) -- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx. - -Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below) -- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the - tests. -- Various fixes. -- Set 'undolevels' to 1000 by default. -- Made mch_settitle() equivalent to the one in os_unix.c. - -RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes -automatically. - - -Previously released patches: - -Patch 5.6.001 -Problem: When using "set bs=0 si cin", Inserting "#" or "}" which - reduces the indent doesn't delete the "#" or "}". (Lorton) -Solution: Adjust ai_col in ins_try_si(). -Files: src/edit.c - -Patch 5.6.002 -Problem: When using the vim.vim syntax file, a comment with all uppercase - characters causes a hang. -Solution: Adjust pattern for vimCommentTitle (Charles Campbell) -Files: runtime/syntax/vim.vim - -Patch 5.6.003 -Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning - about the colormap. Probably because the window has not been - opened yet. -Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. - (Keith Radebaugh) -Files: src/gui_gtk.c - -Patch 5.6.004 (extra) -Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font - requester appears twice. -Solution: In gui_mch_init_font() don't call get_logfont() but copy - norm_logfont from fh. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 5.6.005 -Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a - crash. (David Kotchan) -Solution: Check for negative window height in win_setheight(). -Files: src/window.c - -Patch 5.6.006 -Problem: GTK GUI: Bold font cannot always be used. Memory is freed too - early in gui_mch_init_font(). -Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush) -Files: src/gui_gtk_x11.c - -Patch 5.6.007 (extra) -Problem: Win32 IME: Font is not changed when screen font is changed. And - IME composition window does not trace the cursor. -Solution: Initialize IME font. When cursor is moved, set IME composition - window with ImeSetCompositionWindow(). Add call to - ImmReleaseContext() in several places. (Taro Muraoka) -Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro - -Patch 5.6.008 (extra) -Problem: Win32: When two files exist with the same name but different case - (through NFS or Samba), fixing the file name case could cause the - wrong one to be edited. -Solution: Prefer a perfect match above a match while ignoring case in - fname_case(). (Flemming Madsen) -Files: src/os_win32.c - -Patch 5.6.009 (extra) -Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting - "Edit with Vim" popup menu entry. -Solution: Only return the help line when called with the GCS_HELPTEXT flag. - (Tianmiao Hu) -Files: GvimExt/gvimext.cpp - -Patch 5.6.010 -Problem: A file name which contains a TAB was not read correctly from the - viminfo file and the ":ls" listing was not aligned properly. -Solution: Parse the buffer list lines in the viminfo file from the end - backwards. Count a Tab for two characters to align the ":ls" list. -Files: src/buffer.c - -Patch 5.6.011 -Problem: When 'columns' is huge (using a tiny font) and 'statusline' is - used, Vim can crash. -Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin) -Files: src/screen.c - -Patch 5.6.012 -Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is - typed. (Kuratczyk) -Solution: Add "-c exit" when checking for the shell version. -Files: src/toolcheck - -Patch 5.6.013 -Problem: Multibyte char in tooltip is broken. -Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka) -Files: src/term.c - -Patch 5.6.014 -Problem: When cursor is at the end of line and the character under cursor - is a multibyte character, "yl" doesn't yank 1 multibyte-char. - (Takuhiro Nishioka) -Solution: Recognize a multibyte-char at end-of-line correctly in oneright(). - (Taro Muraoka) - Also: make "+quickfix" in ":version" output appear alphabetically. -Files: src/edit.c - -Patch 5.6.015 -Problem: New xterm delete key sends [3~ by default. -Solution: Added and to make the set of keypad keys complete. -Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, - src/misc2.c, src/normal.c, src/os_unix.c, src/term.c - -Patch 5.6.016 -Problem: When deleting a search string from history from inside a mapping, - another entry is deleted too. (Benji Fisher) -Solution: Reset last_maptick when deleting the last entry of the search - history. Also: Increment maptick when starting a mapping from - typed characters to avoid a just added search string being - overwritten or removed from history. -Files: src/ex_getln.c, src/getchar.c - -Patch 5.6.017 -Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the - line. (Calder) -Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall) -Files: src/ex_cmds.c - -Patch 5.6.018 -Problem: ":help [:digit:]" takes a long time to jump to the wrong place. -Solution: Insert a backslash to avoid the special meaning of '[]'. -Files: src/ex_cmds.c - -Patch 5.6.019 -Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype. -Solution: Make pattern for mail filetype more strict. -Files: runtime/filetype.vim - -Patch 5.6.020 (extra) -Problem: The DJGPP version eats processor time (Walter Briscoe). -Solution: Call __dpmi_yield() in the busy-wait loop. -Files: src/os_msdos.c - -Patch 5.6.021 -Problem: When 'selection' is "exclusive", a double mouse click in Insert - mode doesn't select last char in line. (Lutz) -Solution: Allow leaving the cursor on the NUL past the line in this case. -Files: src/edit.c - -Patch 5.6.022 -Problem: ":e \~" expands to ":e ~\$ceelen", which doesn't work. -Solution: Re-insert the backslash before the '~'. -Files: src/ex_getln.c - -Patch 5.6.023 (extra) -Problem: Various warnings for the Ming compiler. -Solution: Changes to avoid the warnings. (Bill McCarthy) -Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, - src/syntax.c, src/vim.rc - -Patch 5.6.024 (extra) -Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan) -Solution: Specifically catch keycode 0xBD, like the GUI. -Files: src/os_win32.c - -Patch 5.6.025 -Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH. - (Nils Lohner) -Solution: Repeat the read() call to get the gui_in_use value when - interrupted by a signal. -Files: src/gui.c - -Patch 5.6.026 (extra) -Problem: Win32 GUI: Toolbar bitmaps are searched for in - $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith - Radebaugh) -Solution: Use $VIM/bitmaps for both, because these are not part of the - distribution but defined by the user. -Files: src/gui_w32.c, runtime/doc/gui.txt - -Patch 5.6.027 -Problem: TCL: Crash when using a Tcl script (reported for Win32). -Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham) -Files: src/main.c - -Patch 5.6.028 -Problem: Xterm patch level 126 sends codes for mouse scroll wheel. - Fully works with xterm patch level 131. -Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61). -Files: src/term.c - -Patch 5.6.029 -Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes - Zellner) -Solution: Add support for shortcut keys. (Marcin Dalecki) -Files: src/gui_gtk.c - -Patch 5.6.030 -Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro - Matsumoto) -Solution: Set "curbuf" to a valid value in win_close(). -Files: src/window.c - -Patch 5.6.031 -Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits - for another character to be typed. -Solution: Recognize the CSI as the second byte of a character and don't wait - for another one. (Yasuhiro Matsumoto) -Files: src/getchar.c - -Patch 5.6.032 -Problem: Functions with an argument that is a line number don't all accept - ".", "$", etc. (Ralf Arens) -Solution: Add get_art_lnum() and use it for setline(), line2byte() and - synID(). -Files: src/eval.c - -Patch 5.6.033 -Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun - Nam) -Solution: Change logic in searchc() to skip trailing byte of a double-byte - character. - Also: Ask for second byte when searching for double-byte - character. (Park Chong-Dae) -Files: src/search.c - -Patch 5.6.034 (extra) -Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper(). -Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile - to make using bcc 5.5 easier. -Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor - -Patch 5.6.035 -Problem: Listing the"+comments" feature in the ":version" output depended - on the wrong ID. (Stephen P. Wall) -Solution: Change "CRYPTV" to "COMMENTS". -Files: src/version.c - -Patch 5.6.036 -Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm. -Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang) -Files: src/gui_gtk_x11.c - -Patch 5.6.037 -Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI. -Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam) -Files: src/gui_gtk_x11.c, src/multbyte.c - -Patch 5.6.038 -Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When - 'ttymouse' is "xterm" a mouse click is interpreted as a mouse - wheel click. -Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. - Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63. -Files: src/term.c, src/os_unix.c - -Patch 5.6.039 -Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the - system. (Hermann Rochholz) -Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND - property of the window to let the session manager know we finished - saving ourselves. -Files: src/gui_x11.c - -Patch 5.6.040 -Problem: When using ":s" command, matching the regexp is done twice. -Solution: After copying the matched line, adjust the pointers instead of - finding the match again. (Loic Grenie) Added vim_regnewptr(). -Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro - -Patch 5.6.041 -Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons. -Solution: Remove the limit on the number of buttons. - Also support the 'v' flag in 'guioptions'. - For GTK: Center the buttons. -Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c - -Patch 5.6.042 -Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in - the terminal can remain off. -Solution: Call cursor_on() in mch_windexit(). -Files: src/os_unix.c - -Patch 5.6.043 (extra) -Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont' - doesn't include the bold or italic attributes. -Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font(). -Files: src/gui_w32.c - -Patch 5.6.044 (extra) -Problem: MS-DOS and Windows: The line that dosinst.exe appends to - autoexec.bat to set PATH is wrong when Vim is in a directory with - an embedded space. -Solution: Use double quotes for the value when there is an embedded space. -Files: src/dosinst.c - -Patch 5.6.045 (extra) (fixed version) -Problem: VMS: Various small problems. -Solution: Many small changes. (Zoltan Arpadffy) - File name modifier ":h" keeps the path separator. - File name modifier ":e" also removes version. - Compile with MAX_FEAT by default. - When checking for autocommands ignore version in file name. - Be aware of file names being case insensitive. - Added vt320 builtin termcap. - Be prepared for an empty default_vim_dir. -Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, - runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, - src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, - src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, - src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c - -Patch 5.6.046 -Problem: Systems with backslash in file name: With 'shellslash' set, "vim - */*.c" only uses a slash for the first file name. (Har'El) -Solution: Fix slashes in file name arguments after reading the vimrc file. -Files: src/option.c - -Patch 5.6.047 -Problem: $CPPFLAGS is not passed on to ctags configure. -Solution: Add it. (Walter Briscoe) -Files: src/config.mk.in, src/Makefile - -Patch 5.6.048 -Problem: CTRL-R in Command-line mode is documented to insert text as typed, - but inserts text literally. -Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert - literally. This is consistent with Insert mode. But characters - that end Command-line mode are inserted literally. -Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, - src/ops.c, src/proto/ops.pro - -Patch 5.6.049 -Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji - Fisher) -Solution: Fix the documentation. Also improve the code to check for a match - after a /* */ comment. -Files: runtime/doc/tagsearch.txt, src/search.c - -Patch 5.6.050 -Problem: Replacing is wrong when replacing a single-byte char with - double-byte char or the other way around. -Solution: Shift the text after the character when it is replaced. - (Yasuhiro Matsumoto) -Files: src/normal.c, src/misc1.c - -Patch 5.6.051 -Problem: ":tprev" and ":tnext" don't give an error message when trying to - go before the first or beyond the last tag. (Robert Webb) -Solution: Added error messages. Also: Delay a second when a file-read - message is going to overwrite an error message, otherwise it won't - be seen. -Files: src/fileio.c, src/tag.c - -Patch 5.6.052 -Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte, - it terminates the command. -Solution: Skip second byte of multi-byte char when checking for '|' and '"'. - (Asai Kenichi) -Files: src/ex_docmd.c - -Patch 5.6.053 -Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius) -Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also - for command-line completion. -Files: src/ex_getln.c, src/normal.c - -Patch 5.6.054 -Problem: When using ":e" and ":e #" the cursor is put in the first column - when 'startofline' is set. (Cordell) -Solution: Use the last known column when 'startofline' is set. - Also, use ECMD_LAST more often to simplify the code. -Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro - -Patch 5.6.055 -Problem: When 'statusline' only contains a text without "%" and doesn't fit - in the window, Vim crashes. (Ron Aaron) -Solution: Don't use the pointer for the first item if there is no item. -Files: src/screen.c - -Patch 5.6.056 (extra) -Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set. -Solution: Use enhanced keyboard functions. (Vince Negri) - Detect presence of enhanced keyboard and set bioskey_read and - bioskey_ready. -Files: src/os_msdos.c - -Patch 5.6.057 (extra) -Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off - menus. -Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka) -Files: src/gui_w32.c - -Patch 5.6.058 -Problem: When the 'a' flag is not in 'guioptions', non-Windows systems - copy Visually selected text to the clipboard/selection on a yank - or delete command anyway. On Windows it isn't done even when the - 'a' flag is included. -Solution: Respect the 'a' flag in 'guioptions' on all systems. -Files: src/normal.c - -Patch 5.6.059 (extra) -Problem: When moving the cursor over italic text and the characters spill - over to the cell on the right, that spill-over is deleted. - Noticed in the Win32 GUI, can happen on other systems too. -Solution: Redraw italic text starting from a blank, like this is already - done for bold text. (Vince Negri) -Files: src/gui.c, src/gui.h, src/gui_w32.c - -Patch 5.6.060 -Problem: Some bold characters spill over to the cell on the left, that - spill-over can remain sometimes. -Solution: Redraw a character when the next character was bold and needs - redrawing. (Robert Webb) -Files: src/screen.c - -Patch 5.6.061 -Problem: When xterm sends 8-bit controls, recognizing the version response - doesn't work. - When using CSI instead of [ for the termcap color codes, - using 16 colors doesn't work. (Neil Bird) -Solution: Also accept CSI in place of [ for the version string. - Also check for CSI when handling colors 8-15 in term_color(). - Use CSI for builtin xterm termcap entries when 'term' contains - "8bit". -Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, - src/os_unix.c, src/proto/option.pro, src/proto/term.pro - -Patch 5.6.062 -Problem: The documentation says that setting 'smartindent' doesn't have an - effect when 'cindent' is set, but it does make a difference for - lines starting with "#". (Neil Bird) -Solution: Really ignore 'smartindent' when 'cindent' is set. -Files: src/misc1.c, src/ops.c - -Patch 5.6.063 -Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes - Zellner) -Solution: Pass the count on to do_insert() and edit(). (Allan Kelly) -Files: src/normal.c, src/ops.c, src/proto/ops.pro - -Patch 5.6.064 -Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after - including patch 5.6.28. (Vince Negri) -Solution: Don't check for mouse scroll wheel when the mouse code contains - the number of clicks. -Files: src/term.c - -Patch 5.6.065 -Problem: After moving the cursor around in Insert mode, typing a space can - still trigger an abbreviation. (Benji Fisher) -Solution: Don't check for an abbreviation after moving around in Insert mode. -Files: src/edit.c - -Patch 5.6.066 -Problem: Still a few bold character spill-over remains after patch 60. -Solution: Clear character just in front of blanking out rest of the line. - (Robert Webb) -Files: src/screen.c - -Patch 5.6.067 -Problem: When a file name contains a NL, the viminfo file is corrupted. -Solution: Use viminfo_writestring() to convert the NL to CTRL-V n. - Also fix the Buffers menu and listing a menu name with a newline. -Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c - -Patch 5.6.068 -Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. - (Bernhard Rosenkraenzer) -Solution: Also check xs_apiversion for the version number when prepending - defines for PL_*. -Files: src/Makefile - -Patch 5.6.069 -Problem: "go" doesn't always end up at the right character when - 'fileformat' is "dos". (Bruce DeVisser) -Solution: Correct computations in ml_find_line_or_offset(). -Files: src/memline. - -Patch 5.6.070 (depends on 5.6.068) -Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. - (Bernhard Rosenkraenzer) -Solution: Simpler check instead of the one from patch 68. -Files: src/Makefile - -Patch 5.6.071 -Problem: "A" in Visual block mode on a Tab positions the cursor one char to - the right. (Michael Haumann) -Solution: Correct the column computation in op_insert(). -Files: src/ops.c - -Patch 5.6.072 -Problem: When starting Vim with "vim +startinsert", it enters Insert mode - only after typing the first command. (Andrew Pimlott) -Solution: Insert a dummy command in the stuff buffer. -Files: src/main.c - -Patch 5.6.073 (extra) (depends on 5.6.034) -Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work. - In dosinst.c toupper() and tolower() give an "internal compiler - error" for Bcc 5.5. -Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan - Sharp) Also cleaned up compilation arguments. - Use our own implementation of toupper() in dosinst.c. Use - mytoupper() instead of tolower(). -Files: src/Makefile.bor, src/dosinst.c - -Patch 5.6.074 (extra) -Problem: Entering CSI directly doesn't always work, because it's recognized - as the start of a special key. Mostly a problem with multi-byte - in the GUI. -Solution: Use K_CSI for a typed CSI character. Use for a normal CSI, - for a CSI typed in the GUI. -Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, - src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, - src/keymap.h, src/misc2.c - -Patch 5.6.075 -Problem: When using "I" or "A" in Visual block mode while 'sts' is set may - change spaces to a Tab the inserted text is not correct. (Mike - Steed) And some other problems when using "A" to append after the - end of the line. -Solution: Check for change in spaces/tabs after inserting the text. Append - spaces to fill the gap between the end-of-line and the right edge - of the block. -Files: src/ops.c - -Patch 5.6.076 -Problem: GTK GUI: Mapping doesn't work. -Solution: Don't use the "Alt" modifier twice in key_press_event(). -Files: src/gui_gtk_x11.c - -Patch 5.6.077 -Problem: GUI: When interrupting an external program with CTRL-C, gvim might - crash. (Benjamin Korvemaker) -Solution: Avoid using a NULL pointer in ui_inchar_undo(). -Files: src/ui.c - -Patch 5.6.078 -Problem: Locale doesn't always work on FreeBSD. (David O'Brien) -Solution: Link with the "xpg4" library when available. -Files: src/configure.in, src/configure - -Patch 5.6.079 -Problem: Vim could crash when several Tcl interpreters are created and - destroyed. -Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo - Wilken) -Files: runtime/doc/if_tcl.txt, src/if_tcl.c - -Patch 5.6.080 -Problem: When jumping to a tag, generating the tags file and jumping to the - same tag again uses the old search pattern. (Sung-Hyun Nam) -Solution: Flush cached tag matches when executing an external command. -Files: src/misc2.c, src/proto/tag.pro, src/tag.c - -Patch 5.6.081 -Problem: ":syn include" uses a level for the included file, this confuses - contained items included at the same level. -Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl - to sp_syn_inc_tag. (Scott Bigham) -Files: src/syntax.c, src/structs.h - -Patch 5.6.082 -Problem: When using cscope, Vim can crash. -Solution: Initialize tag_fname in find_tags(). (Anton Blanchard) -Files: src/tag.c - -Patch 5.6.083 (extra) -Problem: Win32: The visual beep can't be seen. (Eric Roesinger) -Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) - Also: Allow specifying the delay in t_vb for the GUI. -Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, - src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, - src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, - src/proto/gui_mac.pro, src/proto/gui_riscos.pro, - src/proto/gui_w32.pro, src/proto/gui_x11.pro, - src/proto/gui_beos.pro - -Patch 5.6.084 (depends on 5.6.074) -Problem: GUI: Entering CSI doesn't always work for Athena and Motif. -Solution: Handle typed CSI as (forgot this bit in 5.6.074). -Files: src/gui_x11.c - -Patch 5.6.085 -Problem: Multi-byte: Using "r" to replace a double-byte char with a - single-byte char moved the cursor one character. (Matsumoto) - Also, using a count when replacing a single-byte char with a - double-byte char didn't work. -Solution: Don't use del_char() to delete the second byte. - Get "ptr" again after calling ins_char(). -Files: src/normal.c - -Patch 5.6.086 (extra) -Problem: Win32: When using libcall() and the returned value is not a valid - pointer, Vim crashes. -Solution: Use IsBadStringPtr() to check if the pointer is valid. -Files: src/os_win32.c - -Patch 5.6.087 -Problem: Multi-byte: Commands and messages with multi-byte characters are - displayed wrong. -Solution: Detect double-byte characters. (Yasuhiro Matsumoto) -Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c - -Patch 5.6.088 -Problem: Multi-byte with Motif or Athena: The message "XIM requires - fontset" is annoying when Vim was compiled with XIM support but it - is not being used. -Solution: Remove that message. -Files: src/multbyte.c - -Patch 5.6.089 -Problem: On non-Unix systems it's possible to overwrite a read-only file - without using "!". -Solution: Check if the file permissions allow overwriting before moving the - file to become the backup file. -Files: src/fileio.c - -Patch 5.6.090 -Problem: When editing a file in "/home/dir/home/dir" this was replaced with - "~~". (Andreas Jellinghaus) -Solution: Replace the home directory only once in home_replace(). -Files: src/misc1.c - -Patch 5.6.091 -Problem: When editing many "no file" files, can't create swap file, because - .sw[a-p] have all been used. (Neil Bird) -Solution: Also use ".sv[a-z]", ".su[a-z]", etc. -Files: src/memline.c - -Patch 5.6.092 -Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim - hangs in tputs(). -Solution: After tgetent() returns an error code, call it again with the - terminal name "dumb". This apparently creates an environment in - which tputs() doesn't fail. -Files: src/term.c - -Patch 5.6.093 (extra) -Problem: Win32 GUI: "ls | gvim -" will show a message box about reading - stdin when Vim exits. (Donohue) -Solution: Don't write a message about the file read from stdin until the GUI - has started. -Files: src/fileio.c - -Patch 5.6.094 -Problem: Problem with multi-byte string for ":echo var". -Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) - Also make do_echo() aware of multi-byte characters. -Files: src/eval.c, src/message.c - -Patch 5.6.095 -Problem: With an Emacs TAGS file that include another a relative path - doesn't always work. -Solution: Use expand_tag_fname() on the name of the included file. - (Utz-Uwe Haus) -Files: src/tag.c - -Patch 5.6.096 -Problem: Unix: When editing many files, startup can be slow. (Paul - Ackersviller) -Solution: Halve the number of stat() calls used to add a file to the buffer - list. -Files: src/buffer.c - -Patch 5.7a.001 -Problem: GTK doesn't respond on drag&drop from ROX-Filer. -Solution: Add "text/uri-list" target. (Thomas Leonard) - Also: fix problem with checking for trash arguments. -Files: src/gui_gtk_x11.c - -Patch 5.7a.002 -Problem: Multi-byte: 'showmatch' is performed when second byte of an - inserted double-byte char is a paren or brace. -Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka) -Files: src/misc1.c - -Patch 5.7a.003 -Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at - the end of the line on a multi-byte character the cursor moves to - the left. -Solution: Check for multi-byte character at end-of-line. (Taro Muraoka) - Also: fix cls() to detect a double-byte character. (Chong-Dae Park) -Files: src/edit.c, src/search.c - -Patch 5.7a.004 -Problem: When reporting the search pattern offset, the string could be - unterminated, which may cause a crash. -Solution: Terminate the string for the search offset. (Stephen P. Wall) -Files: src/search.c - -Patch 5.7a.005 -Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the - pattern. -Solution: Use get_search_pat() to obtain the actually used pattern. -Files: src/ex_cmds.c, src/proto/search.pro, src/search.c - -Patch 5.7a.006 (extra) -Problem: VMS: Various problems, also with the VAXC compiler. -Solution: In many places use the Unix code for VMS too. - Added time, date and compiler version to version message. - (Zoltan Arpadffy) -Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, - src/main.c, src/message.c, src/misc1.c, src/os_vms.c, - src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, - src/proto/os_vms.pro, src/proto/version.pro, src/term.c, - src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c - -Patch 5.7a.007 -Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C. -Solution: Only use "intr_char" when it has been set. -Files: src/gui_x11.c - -Patch 5.7a.008 -Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing - trouble for bold characters. Also happens when moving with the - scrollbar. Best seen when 'writedelay' is non-zero. - When starting the GUI with ":gui" the screen is redrawn once with - the wrong colors. -Solution: Only set the geometry hints when the window size really changed. - This avoids setting it each time the scrollbar is forcefully - redrawn. - Don't redraw in expose_event() when gui.starting is still set. -Files: src/gui_gtk_x11.c - - -============================================================================== -VERSION 5.8 *version-5.8* - -Version 5.8 is a bug-fix version of 5.7. - - -Changed *changed-5.8* -------- - -Ctags is no longer included with Vim. It has grown into a project of its own. -You can find it here: http://ctags.sf.net. It is highly recommended as a Vim -companion when you are writing programs. - - -Added *added-5.8* ------ - -New syntax files: -acedb AceDB (Stewart Morris) -aflex Aflex (Mathieu Clabaut) -antlr Antlr (Mathieu Clabaut) -asm68k 68000 Assembly (Steve Wall) -automake Automake (John Williams) -ayacc Ayacc (Mathieu Clabaut) -b B (Mathieu Clabaut) -bindzone BIND zone (glory hump) -blank Blank (Rafal Sulejman) -cfg Configure files (Igor Prischepoff) -changelog ChangeLog (Gediminas Paulauskas) -cl Clever (Phil Uren) -crontab Crontab (John Hoelzel) -csc Essbase script (Raul Segura Acevedo) -cynlib Cynlib(C++) (Phil Derrick) -cynpp Cyn++ (Phil Derrick) -debchangelog Debian Changelog (Wichert Akkerman) -debcontrol Debian Control (Wichert Akkerman) -dns DNS zone file (Jehsom) -dtml Zope's DTML (Jean Jordaan) -dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham) -ecd Embedix Component Description (John Beppu) -fgl Informix 4GL (Rafal Sulejman) -foxpro FoxPro (Powing Tse) -gsp GNU Server Pages (Nathaniel Harward) -gtkrc GTK rc (David Necas) -hercules Hercules (Avant! Corporation) (Dana Edwards) -htmlos HTML/OS by Aestiva (Jason Rust) -inittab SysV process control (David Necas) -iss Inno Setup (Dominique Stephan) -jam Jam (Ralf Lemke) -jess Jess (Paul Baleme) -lprolog LambdaProlog (Markus Mottl) -ia64 Intel Itanium (parth malwankar) -kix Kixtart (Nigel Gibbs) -mgp MaGic Point (Gerfried Fuchs) -mason Mason (HTML with Perl) (Andrew Smith) -mma Mathematica (Wolfgang Waltenberger) -nqc Not Quite C (Stefan Scherer) -omnimark Omnimark (Paul Terray) -openroad OpenROAD (Luis Moreno Serrano) -named BIND configuration (glory hump) -papp PApp (Marc Lehmann) -pfmain Postfix main config (Peter Kelemen) -pic PIC assembly (Aleksandar Veselinovic) -ppwiz PPWizard (Stefan Schwarzer) -progress Progress (Phil Uren) -psf Product Specification File (Rex Barzee) -r R (Tom Payne) -registry MS-Windows registry (Dominique Stephan) -robots Robots.txt (Dominique Stephan) -rtf Rich Text Format (Dominique Stephan) -setl SETL (Alex Poylisher) -sgmldecl SGML Declarations (Daniel A. Molina W.) -sinda Sinda input (Adrian Nagle) -sindacmp Sinda compare (Adrian Nagle) -sindaout Sinda output (Adrian Nagle) -smith SMITH (Rafal Sulejman) -snobol4 Snobol 4 (Rafal Sulejman) -strace Strace (David Necas) -tak TAK input (Adrian Nagle) -takcmp TAK compare (Adrian Nagle) -takout TAK output (Adrian Nagle) -tasm Turbo assembly (FooLman) -texmf TeX configuration (David Necas) -trasys Trasys input (Adrian Nagle) -tssgm TSS Geometry (Adrian Nagle) -tssop TSS Optics (Adrian Nagle) -tsscl TSS Command line (Adrian Nagle) -virata Virata Configuration Script (Manuel M.H. Stol) -vsejcl VSE JCL (David Ondrejko) -wdiff Wordwise diff (Gerfried Fuchs) -wsh Windows Scripting Host (Paul Moore) -xkb X Keyboard Extension (David Necas) - -Renamed php3 to php, it now also supports php4 (Lutz Eymers) - -Patch 5.7.015 -Problem: Syntax files for Vim 6.0 can't be used with 5.x. -Solution: Add the "default" argument to the ":highlight" command: Ignore the - command if highlighting was already specified. -Files: src/syntax.c - -Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done -when Vim is starting up. Reduces the startup time of the GUI. - - -Fixed *fixed-5.8* ------ - -Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink. - -Fixed compiling under NeXT. (Jeroen C.M. Goudswaard) - -optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C'). - -Tcl interpreter: "buffer" command didn't check for presence of an argument. -(Dave Bodenstab) - -dosinst.c: Added checks for too long file name. - -Amiga: a file name starting with a colon was considered absolute but it isn't. -Amiga: ":pwd" added a slash when in the root of a drive. - -Macintosh: Warnings for unused variables. (Bernhard Pruemmer) - -Unix: When catching a deadly signal, handle it in such a way that it's -unlikely that Vim will hang. Call _exit() instead of exit() in case of a -severe problem. - -Setting the window title from nothing to something didn't work after patch 29. - -Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as -well for extra security. - -Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set -'fileformat' to "dos" before writing the temp file. - -Unix: Could start waiting for a character when checking for a CTRL-C typed -when an X event is received. - -Could not use Perl and Python at the same time on FreeBSD, because Perl used -"-lc" and Python used the threaded C library. - -Win32: The Mingw compiler gave a few warning messages. - -When using "ZZ" and an autocommand for writing uses an abbreviation it didn't -work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe) - -VMS doesn't always have lstat(), added an #ifdef around it. - -Added a few corrections for the Macintosh. (Axel Kielhorn) - -Win32: Gvimext could not edit more than a few files at once, the length of the -argument was fixed. - - -Previously released patches for Vim 5.7: - -Patch 5.7.001 -Problem: When the current buffer is crypted, and another modified buffer - isn't, ":wall" will encrypt the other buffer. -Solution: In buf_write() use "buf" instead of "curbuf" to check for the - crypt key. -Files: src/fileio.c - -Patch 5.7.002 -Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds - before displaying the read text. (Wichert Akkerman) -Solution: Set "keep_msg" to the file message so that the screen is redrawn - before the three seconds wait for displaying the mode message. -Files: src/fileio.c - -Patch 5.7.003 -Problem: Searching for "[[:cntrl:]]" doesn't work. -Solution: Exclude NUL from the matching characters, it terminates the list. -Files: src/regexp.c - -Patch 5.7.004 -Problem: GTK: When selecting a new font, Vim can crash. -Solution: In gui_mch_init_font() unreference the old font, not the new one. -Files: src/gui_gtk_x11.c - -Patch 5.7.005 -Problem: Multibyte: Inserting a wrapped line corrupts kterm screen. - Pasting TEXT/COMPOUND_TEXT into Vim does not work. - On Motif no XIM status line is displayed even though it is - available. -Solution: Don't use xterm trick for wrapping lines for multibyte mode. - Correct a missing "break", added TEXT/COMPOUND_TEXT selection - request. - Add XIMStatusArea fallback code. - (Katsuhito Nagano) -Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c - -Patch 5.7.006 -Problem: GUI: redrawing the non-Visual selection is wrong when the window - is unobscured. (Jean-Pierre Etienne) -Solution: Redraw the selection properly and don't clear it. Added "len" - argument to clip_may_redraw_selection(). -Files: src/gui.c, src/ui.c, src/proto/ui.pro - -Patch 5.7.007 -Problem: Python: Crash when using the current buffer twice. -Solution: Increase the reference count for buffer and window objects. - (Johannes Zellner) -Files: src/if_python.c - -Patch 5.7.008 -Problem: In Ex mode, backspacing over the first TAB doesn't work properly. - (Wichert Akkerman) -Solution: Switch the cursor on before printing the newline. -Files: src/ex_getln.c - -Patch 5.7.009 (extra) -Problem: Mac: Crash when using a long file. -Solution: Don't redefine malloc() and free(), because it will break using - realloc(). -Files: src/os_mac.h - -Patch 5.7.010 -Problem: When using CTRL-A on a very long number Vim can crash. (Michael - Naumann) -Solution: Truncate the length of the new number to avoid a buffer overflow. -Files: src/ops.c - -Patch 5.7.011 (extra) -Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed. -Solution: Output each character separately, to avoid that Windows reverses - the text for some fonts. (Ron Aaron) -Files: src/gui_w32.c - -Patch 5.7.012 -Problem: When using "-complete=buffer" for ":command" the user command - fails. -Solution: In a user command don't replace the buffer name with a count for - the buffer number. -Files: src/ex_docmd.c - -Patch 5.7.013 -Problem: "gD" didn't always find a match in the first line, depending on - the column the search started at. -Solution: Reset the column to zero before starting to search. -Files: src/normal.c - -Patch 5.7.014 -Problem: Rot13 encoding was done on characters with accents, which is - wrong. (Sven Gottwald) -Solution: Only do rot13 encoding on ASCII characters. -Files: src/ops.c - -Patch 5.7.016 -Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was - not restored, some matches were skipped. (Daniel Blaustein) -Solution: Restore the reg_ic variable when 'n' was hit. -Files: src/ex_cmds.c - -Patch 5.7.017 -Problem: When using a Vim script for Vim 6.0 with before a function - name, it produces an error message even when inside an "if version - >= 600". (Charles Campbell) -Solution: Ignore errors in the function name when the function is not going - to be defined. -Files: src/eval.c - -Patch 5.7.018 -Problem: When running "rvim" or "vim -Z" it was still possible to execute a - shell command with system() and backtick-expansion. (Antonios A. - Kavarnos) -Solution: Disallow executing a shell command in get_cmd_output() and - mch_expand_wildcards(). -Files: src/misc1.c, src/os_unix.c - -Patch 5.7.019 -Problem: Multibyte: In a substitute string, a multi-byte character isn't - skipped properly, can be a problem when the second byte is a - backslash. -Solution: Skip an extra byte for a double-byte character. (Muraoka Taro) -Files: src/ex_cmds.c - -Patch 5.7.020 -Problem: Compilation doesn't work on MacOS-X. -Solution: Add a couple of #ifdefs. (Jamie Curmi) -Files: src/regexp.c, src/ctags/general.h - -Patch 5.7.021 -Problem: Vim sometimes produces a beep when started in an xterm. Only - happens when compiled without mouse support. -Solution: Requesting the xterm version results in a K_IGNORE. This wasn't - handled when mouse support is disabled. Accept K_IGNORE always. -Files: src/normal.c - -Patch 5.7.022 -Problem: %v in 'statusline' is not displayed when it's equal to %c. -Solution: Check if %V or %v is used and handle them differently. -Files: src/screen.c - -Patch 5.7.023 -Problem: Crash when a WinLeave autocommand deletes the buffer in the other - window. -Solution: Check that after executing the WinLeave autocommands there still - is a window to be closed. Also update the test that was supposed - to check for this problem. -Files: src/window.c, testdir/test13.in, testdir/test13.ok - -Patch 5.7.024 -Problem: Evaluating an expression for 'statusline' can have side effects. -Solution: Evaluate the expression in a sandbox. -Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, - src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, - src/screen.c, src/undo.c - -Patch 5.7.025 (fixed) -Problem: Creating a temp file has a race condition. -Solution: Create a private directory to write the temp files in. -Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, - src/proto/fileio.pro, src/memline.c, src/os_unix.h - -Patch 5.7.026 (extra) -Problem: Creating a temp file has a race condition. -Solution: Create a private directory to write the temp files in. - This is the extra part of patch 5.7.025. -Files: src/os_msdos.h - -Patch 5.7.027 -Problem: Starting to edit a file can cause a crash. For example when in - Insert mode, using CTRL-O :help abbr to scroll the screen and - then , which edits a help file. (Robert Bogomip) -Solution: Check if keep_msg is NULL before copying it. -Files: src/fileio.c - -Patch 5.7.028 -Problem: Creating a backup or swap file could fail in rare situations. -Solution: Use O_EXCL for open(). -Files: src/fileio.c, src/memfile.c - -Patch 5.7.029 -Problem: Editing a file with an extremely long name crashed Vim. -Solution: Check for length of the name when setting the window title. -Files: src/buffer.c - -Patch 5.7.030 -Problem: A ":make" or ":grep" command with a very long argument could cause - a crash. -Solution: Allocate the buffer for the shell command. -Files: src/ex_docmd.c - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/doc/version6.txt b/runtime/doc/version6.txt deleted file mode 100644 index f18fea8705..0000000000 --- a/runtime/doc/version6.txt +++ /dev/null @@ -1,14530 +0,0 @@ -*version6.txt* For Vim version 7.4. Last change: 2013 Jul 28 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Welcome to Vim Version 6.0! A large number of features has been added. This -file mentions all the new items that have been added, changes to existing -features and bug fixes compared to Vim 5.x. - -See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0. -See |version4.txt| for differences between Vim 3.0 and Vim 4.0. -See |version5.txt| for differences between Vim 4.0 and Vim 5.0. - -INCOMPATIBLE CHANGES |incompatible-6| - -Cursor position in Visual mode |curpos-visual| -substitute command Vi compatible |substitute-CR| -global option values introduced |new-global-values| -'fileencoding' changed |fileencoding-changed| -Digraphs changed |digraphs-changed| -Filetype detection changed |filetypedetect-changed| -Unlisted buffers introduced |new-unlisted-buffers| -CTRL-U in Command-line mode changed |CTRL-U-changed| -Ctags gone |ctags-gone| -Documentation reorganized |documentation-6| -Modeless selection and clipboard |modeless-and-clipboard| -Small incompatibilities |incomp-small-6| - -NEW FEATURES |new-6| - -Folding |new-folding| -Vertically split windows |new-vertsplit| -Diff mode |new-diff-mode| -Easy Vim: click-and-type |new-evim| -User manual |new-user-manual| -Flexible indenting |new-indent-flex| -Extended search patterns |new-searchpat| -UTF-8 support |new-utf-8| -Multi-language support |new-multi-lang| -Plugin support |new-plugins| -Filetype plugins |new-filetype-plugins| -File browser |new-file-browser| -Editing files over a network |new-network-files| -Window for command-line editing |new-cmdwin| -Debugging mode |new-debug-mode| -Cursor in virtual position |new-virtedit| -Debugger interface |new-debug-itf| -Communication between Vims |new-vim-server| -Buffer type options |new-buftype| -Printing |new-printing| -Ports |ports-6| -Quickfix extended |quickfix-6| -Operator modifiers |new-operator-mod| -Search Path |new-search-path| -Writing files improved |new-file-writing| -Argument list |new-argument-list| -Restore a View |new-View| -Color schemes |new-color-schemes| -Various new items |new-items-6| - -IMPROVEMENTS |improvements-6| - -COMPILE TIME CHANGES |compile-changes-6| - -BUG FIXES |bug-fixes-6| - -VERSION 6.1 |version-6.1| -Changed |changed-6.1| -Added |added-6.1| -Fixed |fixed-6.1| - -VERSION 6.2 |version-6.2| -Changed |changed-6.2| -Added |added-6.2| -Fixed |fixed-6.2| - -VERSION 6.3 |version-6.3| -Changed |changed-6.3| -Added |added-6.3| -Fixed |fixed-6.3| - -VERSION 6.4 |version-6.4| -Changed |changed-6.4| -Added |added-6.4| -Fixed |fixed-6.4| - -============================================================================== -INCOMPATIBLE CHANGES *incompatible-6* - -These changes are incompatible with previous releases. Check this list if you -run into a problem when upgrading from Vim 5.x to 6.0 - - -Cursor position in Visual mode *curpos-visual* ------------------------------- - -When going from one window to another window on the same buffer while in -Visual mode, the cursor position of the other window is adjusted to keep the -same Visual area. This can be used to set the start of the Visual area in one -window and the end in another. In vim 5.x the cursor position of the other -window would be used, which could be anywhere and was not very useful. - - -Substitute command Vi compatible *substitute-CR* --------------------------------- - -The substitute string (the "to" part of the substitute command) has been made -Vi compatible. Previously a CTRL-V had a special meaning and could be used to -prevent a to insert a line break. This made it impossible to insert a -CTRL-V before a line break. Now a backslash is used to prevent a to -cause a line break. Since the number of backslashes is halved, it is still -possible to insert a line break at the end of the line. This now works just -like Vi, but it's not compatible with Vim versions before 6.0. - -When a ":s" command doesn't make any substitutions, it no longer sets the '[ -and '] marks. This is not related to Vi, since it doesn't have these marks. - - -Global option values introduced *new-global-values* -------------------------------- - -There are now global values for options which are local to a buffer or window. -Previously the local options were copied from one buffer to another. When -editing another file this could cause option values from a modeline to be used -for the wrong file. Now the global values are used when entering a buffer -that has not been used before. Also, when editing another buffer in a window, -the local window options are reset to their global values. The ":set" command -sets both the local and global values, this is still compatible. But a -modeline only sets the local value, this is not backwards compatible. - -":let &opt = val" now sets the local and global values, like ":set". New -commands have been added to set the global or local value: - :let &opt = val like ":set" - :let &g:opt = val like ":setglobal" - :let &l:opt = val like ":setlocal" - - -'fileencoding' changed *fileencoding-changed* ----------------------- - -'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim. -This was a bit strange, because it was local to a buffer and worked for all -buffers. It could never be different between buffers, because it changed the -way text in all buffers was interpreted. -It is now used for the encoding of the file related to the buffer. If you -still set 'fileencoding' it is likely to be overwritten by the detected -encoding from 'fileencodings', thus it is "mostly harmless". -The old FileEncoding autocommand now does the same as the new EncodingChanged -event. - - -Digraphs changed *digraphs-changed* ----------------- - -The default digraphs now correspond to RFC1345. This is very different from -what was used in Vim 5.x. |digraphs| - - -Filetype detection changed *filetypedetect-changed* --------------------------- - -The filetype detection previously was using the "filetype" autocommand group. -This caused confusion with the FileType event name (case is ignored). The -group is now called "filetypedetect". It still works, but if the "filetype" -group is used the autocommands will not be removed by ":filetype off". - The support for 'runtimepath' has made the "myfiletypefile" and -"mysyntaxfile" mechanism obsolete. They are still used for backwards -compatibility. - -The connection between the FileType event and setting the 'syntax' option was -previously in the "syntax" autocommand group. That caused confusion with the -Syntax event name. The group is now called "syntaxset". - -The distributed syntax files no longer contain "syntax clear". That makes it -possible to include one in the other without tricks. The syntax is now -cleared when the 'syntax' option is set (by an autocommand added from -synload.vim). This makes the syntax cleared when the value of 'syntax' does -not correspond to a syntax file. Previously the existing highlighting was -kept. - - -Unlisted buffers introduced *new-unlisted-buffers* ---------------------------- - -There is now a difference between buffers which don't appear in the buffer -list and buffers which are really not in the buffer list. Commands like -":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the -buffer list. |unlisted-buffer| -The 'buflisted' option can be used to make a buffer appear in the buffer list -or not. - -Several commands that previously added a buffer to the buffer list now create -an unlisted buffer. This means that a ":bnext" and ":ball" will not find these -files until they have actually been edited. For example, buffers used for the -alternative file by ":write file" and ":read file". - Other commands previously completely deleted a buffer and now only remove -the buffer from the buffer list. Commands relying on a buffer not to be -present might fail. For example, a ":bdelete" command in an autocommand that -relied on something following to fail (was used in the automatic tests). -|:bwipeout| can be used for the old meaning of ":bdelete". - -The BufDelete autocommand event is now triggered when a buffer is removed from -the buffer list. The BufCreate event is only triggered when a buffer is -created that is added to the buffer list, or when an existing buffer is added -to the buffer list. BufAdd is a new name for BufCreate. -The new BufNew event is for creating any buffer and BufWipeout for really -deleting a buffer. - -When doing Insert mode completion, only buffers in the buffer list are -scanned. Added the 'U' flag to 'complete' to do completion from unlisted -buffers. - -Unlisted buffers are not stored in a viminfo file. - - -CTRL-U in Command-line mode changed *CTRL-U-changed* ------------------------------------ - -Using CTRL-U when editing the command line cleared the whole line. Most -shells only delete the characters before the cursor. Made it work like that. -(Steve Wall) - -You can get the old behavior with CTRL-E CTRL-U: > - :cnoremap - - -Ctags gone *ctags-gone* ----------- - -Ctags is no longer part of the Vim distribution. It's now a grown-up program -by itself, it deserves to be distributed separately. -Ctags can be found here: http://ctags.sf.net/. - - -Documentation reorganized *documentation-6* -------------------------- - -The documentation has been reorganized, an item may not be where you found it -in Vim 5.x. -- The user manual was added, some items have been moved to it from the - reference manual. -- The quick reference is now in a separate file (so that it can be printed). - -The examples in the documentation were previously marked with a ">" in the -first column. This made it difficult to copy/paste them. There is now a -single ">" before the example and it ends at a "<" or a non-blank in the first -column. This also looks better without highlighting. - -'helpfile' is no longer used to find the help tags file. This allows a user -to add its own help files (e.g., for plugins). - - -Modeless selection and clipboard *modeless-and-clipboard* --------------------------------- - -The modeless selection is used to select text when Visual mode can't be used, -for example when editing the command line or at the more prompt. -In Vim 5.x the modeless selection was always used. On MS-Windows this caused -the clipboard to be overwritten, with no way to avoid that. The modeless -selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and -"autoselectml" in 'clipboard'. By default there is no automatic copy on -MS-Windows. Use the |c_CTRL-Y| command to manually copy the selection. - -To get the old behavior back, do this: > - - :set clipboard^=autoselectml guioptions+=A - - -Small incompatibilities *incomp-small-6* ------------------------ - -'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg', -'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg', -'viminfo' and 'runtimepath' can no longer be set from a modeline, for better -security. - -Removed '_' from the 'breakat' default: It's commonly used in keywords. - -The default for 'mousehide' is on, because this works well for most people. - -The Amiga binary is now always compiled with "big" features. The "big" binary -archive no longer exists. - -The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in -'statusline' no longer have a leading space. - -Non-Unix systems: When expanding wildcards for the Vim arguments, don't use -'suffixes'. It now works as if the shell had expanded the arguments. - -The 'lisp', 'smartindent' and 'cindent' options are not switched off when -'paste' is set. The auto-indenting is disabled when 'paste' is set, but -manual indenting with "=" still works. - -When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there -is no change in indent, this is not counted as a change ('modified' isn't set -and there is nothing to undo). - -Report 'modified' as changed when 'fileencoding' or 'fileformat' was set. -Thus it reflects the possibility to abandon the buffer without losing changes. - -The "Save As" menu entry now edits the saved file. Most people expect it to -work like this. - -A buffer for a directory is no longer added to the Buffers menu. - -Renamed to , since that's what it's called on most keyboards. -Thus it's now the hit-enter prompt instead of the hit-return prompt. -Can map just like or . - -The default for the 'viminfo' option is now '20,"50,h when 'compatible' isn't -set. Most people will want to use it, including beginners, but it required -setting the option, which isn't that easy. - -After using ":colder" the newer error lists are overwritten. This makes it -possible to use ":grep" to browse in a tree-like way. Must use ":cnewer 99" -to get the old behavior. - -The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and -sometimes not (Unix). Now case is always ignored. Add "\C" to the pattern to -match case. - -The 16 bit MS-DOS version is now compiled without the +listcmds feature -(buffer list manipulation commands). They are not often needed and this -executable needs to be smaller. - -'sessionoptions' now includes "curdir" by default. This means that restoring -a session will result in the current directory being restored, instead of -going to the directory where the session file is located. - -A session deleted all buffers, deleting all marks. Now keep the buffer list, -it shouldn't hurt for some existing buffers to remain present. -When the argument list is empty ":argdel *" caused an error message. - -No longer put the search pattern from a tag jump in the history. - -Use "SpecialKey" highlighting for unprintable characters instead of "NonText". -The idea is that unprintable text or any text that's displayed differently -from the characters in the file is using "SpecialKey", and "NonText" is used -for text that doesn't really exist in the file. - -Motif now uses the system default colors for the menu and scrollbar. Used to -be grey. It's still possible to set the colors with ":highlight" commands and -resources. - -Formatting text with "gq" breaks a paragraph at a non-empty blank line. -Previously the line would be removed, which wasn't very useful. - -":normal" does no longer hang when the argument ends in half a command. -Previously Vim would wait for more characters to be typed, without updating -the screen. Now it pretends an was typed. - -Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in -the "bitmaps" directories in 'runtimepath'. - -Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal -mode menus. This generally works better and allows using the "Copy" menu to -produce CTRL-Y to copy the modeless selection. - -Moved the font selection from the Window to the Edit menu, together with the -other settings. - -The default values for 'isfname' include more characters to make "gf" work -better. - -Changed the license for the documentation to the Open Publication License. -This seemed fair, considering the inclusion of parts of the Vim book, which is -also published under the OPL. The downside is that we can't force someone who -would sell copies of the manual to contribute to Uganda. - -After "ayy don't let ""yy or :let @" = val overwrite the "a register. -Use the unnamed register instead. - -MSDOS: A pattern "*.*" previously also matched a file name without a dot. -This was inconsistent with other versions. - -In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode. Previously -it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N, -which is supposed to take us to Normal mode (especially in ":amenu"). - -Allow using ":" commands after an operator. Could be used to implement a new -movement command. Thus it no longer aborts a pending operator. - -For the Amiga the "-d {device}" argument was possible. When compiled with the -diff feature, this no longer works. Use "-dev {device}" instead. |-dev| - -Made the default mappings for in Insert mode insert the text -literally, avoids that special characters like BS cause side effects. - -Using ":confirm" applied to the rest of the line. Now it applies only to the -command right after it. Thus ":confirm if x | edit | endif" no longer works, -use ":if x | confirm edit | endif". This was the original intention, that it -worked differently was a bug. - -============================================================================== -NEW FEATURES *new-6* - -Folding *new-folding* -------- - -Vim can now display a buffer with text folded. This allows overviewing the -structure of a file quickly. It is also possible to yank, delete and put -folded text, for example to move a function to another position. - -There is a whole bunch of new commands and options related to folding. -See |folding|. - - -Vertically split windows *new-vertsplit* ------------------------- - -Windows can also be split vertically. This makes it possible to have windows -side by side. One nice use for this is to compare two similar files (see -|new-diff-mode|). The 'scrollbind' option can be used to synchronize -scrolling. - -A vertical split can be created with the commands: - :vsplit or CTRL-W v or CTRL-W CTRL-V |:vsplit| - :vnew |:vnew| - :vertical {cmd} |:vertical| -The last one is a modifier, which has a meaning for any command that splits a -window. For example: > - :vertical stag main -Will vertically split the window and jump to the tag "main" in the new window. - -Moving from window to window horizontally can be done with the |CTRL-W_h| and -|CTRL-W_l| commands. The |CTRL-W_k| and |CTRL-W_j| commands have been changed -to jump to the window above or below the cursor position. - -The vertical and horizontal splits can be mixed as you like. Resizing windows -is easy when using the mouse, just position the pointer on a status line or -vertical separator and drag it. In the GUI a special mouse pointer shape -indicates where you can drag a status or separator line. - -To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands. -To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|. - -To force a new window to use the full width or height of the Vim window, -these two modifiers are available: - :topleft {cmd} New window appears at the top with full - width or at the left with full height. - :botright {cmd} New window appears at the bottom with full - width or at the right with full height. -This can be combined with ":vertical" to force a vertical split: > - :vert bot dsplit DEBUG -This will open a window at the far right, occupying the full height of the Vim -window, with the cursor on the first definition of "DEBUG". -The help window is opened at the top, like ":topleft" was used, if the current -window is fewer than 80 characters wide. - -A few options can be used to set the preferences for vertically split windows. -They work similar to their existing horizontal equivalents: - horizontal vertical ~ - 'splitbelow' 'splitright' - 'winheight' 'winwidth' - 'winminheight' 'winminwidth' -It's possible to set 'winminwidth' to zero, so that temporarily unused windows -hardly take up space without closing them. - -The new 'eadirection' option tells where 'equalalways' applies: - :set eadirection=both both directions - :set eadirection=ver equalize window heights - :set eadirection=hor equalize windows widths -This can be used to avoid changing window sizes when you want to keep them. - -Since windows can become quite narrow with vertical splits, text lines will -often not fit. The 'sidescrolloff' has been added to keep some context left -and right of the cursor. The 'listchars' option has been extended with the -"precedes" item, to show a "<" for example, when there is text left off the -screen. (Utz-Uwe Haus) - -"-O" command line argument: Like "-o" but split windows vertically. (Scott -Urban) - -Added commands to move the current window to the very top (CTRL-W K), bottom -(CTRL-W J), left (CTRL-W H) and right (CTRL-W L). In the new position the -window uses the full width/height of the screen. - -When there is not enough room in the status line for both the file name and -the ruler, use up to half the width for the ruler. Useful for narrow windows. - - -Diff mode *new-diff-mode* ---------- - -In diff mode Vim shows the differences between two, three or four files. -Folding is used to hide the parts of the file that are equal. -Highlighting is used to show deleted and changed lines. -See |diff-mode|. - -An easy way to start in diff mode is to start Vim as "vimdiff file1 file2". -Added the vimdiff manpage. - -In a running Vim the |:diffsplit| command starts diff mode for the current -file and another file. The |:diffpatch| command starts diff mode using the -current file and a patch file. The |:diffthis| command starts diff mode for -the current window. - -Differences can be removed with the |:diffget| and |:diffput| commands. - -- The 'diff' option switches diff mode on in a window. -- The |:diffupdate| command refreshes the diffs. -- The 'diffopt' option changes how diffs are displayed. -- The 'diffexpr' option can be set how a diff is to be created. -- The 'patchexpr' option can be set how patch is applied to a file. -- Added the "diff" folding method. When opening a window for diff-mode, set - 'foldlevel' to zero and 'foldenable' on, to close the folds. -- Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to - specify the highlighting for differences. The defaults are ugly... -- Unix: make a vimdiff symbolic link for "make install". -- Removed the now obsolete "vimdiff.vim" script from the distribution. -- Added the "[c" and "]c" commands to move to the next/previous change in diff - mode. - - -Easy Vim: click-and-type *new-evim* ------------------------- - -eVim stands for "Easy Vim". This is a separate program, but can also be -started as "vim -y". - -This starts Vim with 'insertmode' set to allow click-and-type editing. The -$VIMRUNTIME/evim.vim script is used to add mappings and set options to be able -to do most things like Notepad. This is only for people who can't stand two -modes. - -eView does the same but in readonly mode. - -In the GUI a CTRL-C now only interrupts when busy with something, not when -waiting for a character. Allows using CTRL-C to copy text to the clipboard. - - -User manual *new-user-manual* ------------ - -The user manual has been added. It is organised around editing tasks. It -reads like a book, from start to end. It should allow beginners to start -learning Vim. It helps everybody to learn using the most useful Vim features. -It is much easier to read than the reference manual, but omits details. See -|user-manual|. - -The user manual includes parts of the Vim book by Steve Oualline |frombook|. -It is published under the OPL |manual-copyright|. - -When syntax highlighting is not enabled, the characters in the help file which -mark examples ('>' and '<') and header lines ('~') are replaced with a space. - -When closing the help window, the window layout is restored from before -opening it, if the window layout didn't change since then. -When opening the help window, put it at the top of the Vim window if the -current window is fewer than 80 characters and not full width. - - -Flexible indenting *new-indent-flex* ------------------- - -Automatic indenting is now possible for any language. It works with a Vim -script, which makes it very flexible to compute the indent. - -The ":filetype indent on" command enables using the provided indent scripts. -This is explained in the user manual: |30.3|. - -The 'indentexpr' option is evaluated to get the indent for a line. The -'indentkeys' option tells when to trigger re-indenting. Normally these -options are set from an indent script. Like Syntax files, indent scripts will -be created and maintained by many people. - - -Extended search patterns *new-searchpat* ------------------------- - -Added the possibility to match more than one line with a pattern. (partly by -Loic Grenie) -New items in a search pattern for multi-line matches: -\n match end-of-line, also in [] -\_[] match characters in range and end-of-line -\_x match character class and end-of-line -\_. match any character or end-of-line -\_^ match start-of-line, can be used anywhere in the regexp -\_$ match end-of-line, can be used anywhere in the regexp - -Various other new items in search patterns: -\c ignore case for the whole pattern -\C match case for the whole pattern -\m magic on for the following -\M magic off for the following -\v make following characters "very magic" -\V make following characters "very nomagic" - -\@! don't match atom before this. - Example: "foo\(bar\)\@!" matches "foo " but not "foobar". -\@= match atom, resulting in zero-width match - Example: "foo\(bar\)\@=" matches "foo" in "foobar". -\@ match preceding atom as a subexpression - -\& match only when branch before and after it match - -\%[] optionally match a list of atoms; "end\%[if]" matches "end", - "endi" and "endif" -\%(\) like \(\), but without creating a back-reference; there can be - any number of these, overcomes the limit of nine \( \) pairs -\%^ match start-of-file (Chase Tingley) -\%$ match end-of-file (Chase Tingley) -\%# Match with the cursor position. (Chase Tingley) -\? Just like "\=" but can't be used in a "?" command. - -\%23l match in line 23 -\%<23l match before line 23 -\%>23l match after line 23 -\%23c, \%<23c, \%>23c match in/before/after column 23 -\%23v, \%<23v, \%>23v match in/before/after virtual column 23 - - -For syntax items: -\z(...\) external reference match set (in region start pattern) -\z1 - \z9 external reference match use (in region skip or end pattern) - (Scott Bigham) - -\zs use position as start of match -\ze use position as end of match - -Removed limit of matching only up to 32767 times with *, \+, etc. - -Added support to match multi-byte characters. (partly by Muraoka Taro) -Made "\<" and "\>" work for UTF-8. (Muraoka Taro) - - -UTF-8 support *new-utf-8* -------------- - -Vim can now edit files in UTF-8 encoding. Up to 31 bit characters can be -used, but only 16 bit characters are displayed. Up to two combining -characters are supported, they overprint the preceding character. -Double-wide characters are also supported. See |UTF-8|. - -UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to -UTF-8 internally. There is also support for editing Unicode files in a Latin1 -environment. Other encodings are converted with iconv() or an external -converter specified with 'charconvert'. - -Many new items for Multi-byte support: -- Added 'encoding' option: specifies character encoding used inside Vim. It - can be any 8-bit encoding, some double-byte encodings or Unicode. - It is initialized from the environment when a supported value is found. -- Added 'fileencoding' and 'fileencodings': specify character coding in a - file, similar to 'fileformat' and 'fileformats'. - When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will - automatically switch to latin1 if a file does not contain valid UTF-8. -- Added 'bomb' option and detection of a BOM at the start of a file. Can be - used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode - file if it starts with a BOM. Especially useful on MS-Windows (NT and - 2000), which uses ucs-2le files with a BOM (e.g., when exporting the - registry). -- Added the 'termencoding' option: Specifies the encoding used for the - terminal. Useful to put Vim in utf-8 mode while in a non-Unicode locale: > - :let &termencoding = &encoding - :set encoding=utf-8 -- When 'viminfo' contains the 'c' flag, the viminfo file is converted from the - 'encoding' it was written with to the current 'encoding'. -- Added ":scriptencoding" command: convert lines in a sourced script to - 'encoding'. Useful for menu files. -- Added 'guifontwide' to specify a font for double-wide characters. -- Added Korean support for character class detection. Also fix cls() in - search.c. (Chong-Dae Park) -- Win32: Typing multi-byte characters without IME. (Alexander Smishlajev) -- Win32 with Mingw: compile with iconv library. (Ron Aaron) -- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro) -- Make it possible to build a version with multi-byte and iconv support with - Borland 5.5. (Yasuhiro Matsumoto) -- Added 'delcombine' option: Delete combining character separately. (Ron - Aaron) -- The "xfontset" feature isn't required for "xim". These are now two - independent features. -- XIM: enable XIM when typing a language character (Insert mode, Search - pattern, "f" or "r" command). Disable XIM when typing a Normal mode - command. -- When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun) -- Support "CursorIM" for XIM. (Nam SungHyun) -- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at - each multibyte character, not only at a space. -- Made ":syntax keyword" work with multi-byte characters. -- Added support for Unicode upper/lowercase flipping and comparing. (based on - patch by Raphael Finkel) - Let "~" on multi-byte characters that have a third case ("title case") - switch between the three cases. (Raphael Finkel) - -Allow defining digraphs for multi-byte characters. -Added RFC1345 digraphs for Unicode. -Most Normal mode commands that accept a character argument, like "r", "t" and -"f" now accept a digraph. The 'D' flag in 'cpoptions' disables this to remain -Vi compatible. - -Added Language mapping and 'keymap' to be able to type multi-byte characters: -- Added the ":lmap" command and friends: Define mappings that are used when - typing characters in the language of the text. Also for "r", "t", etc. In - Insert and Command-line mode CTRL-^ switches the use of the mappings on/off. - CTRL-^ also toggles the use of an input method when no language mappings are - present. Allows switching the IM back on halfway typing. -- "" argument to ":map", allows to specify the decimal, octal or - hexadecimal value of a character. -- Implemented the 'keymap' option: Load a keymap file. Uses ":lnoremap" to - define mappings for the keymap. The new ":loadkeymap" command is used in - the keymap file. -- Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when - it's being used. Uses "" when no keymap is loaded and ":lmap"s are - active. Show this text in the default statusline too. -- Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings - and Input Method with an option. (Muraoka Taro) - Added 'imcmdline' option: When set the input method is always enabled when - starting to edit a command line. Useful for a XIM that uses dead keys to - type accented characters. - Added 'imactivatekey' option to better control XIM. (Muraoka Taro) -- When typing a mapping that's not finished yet, display the last character - under the cursor in Insert mode and Command-line mode. Looks good for dead - characters. -- Made the 'langmap' option recognize multi-byte characters. But mapping only - works for 8-bit characters. Helps when using UTF-8. -- Use a different cursor for when ":lmap" mappings are active. Can specify - two highlight groups for an item in 'guicursor'. By default "lCursor" and - "Cursor" are equal, the user must set a color he likes. - Use the cursor color for hangul input as well. (Sung-Hyun Nam) -- Show "(lang)" for 'showmode' when language mapping is enabled. -- UTF-8: Made "r" work with a ":lmap" that includes a composing character. - Also works for "f", which now works to find a character that includes a - composing character. - -Other multi-byte character additions: -- Support double-byte single-width characters for euc-jp: Characters starting - with 0x8E. Added ScreenLines2[] to store the second byte. - - -Multi-language support *new-multi-lang* ----------------------- - -The messages used in Vim can be translated. Several translations are -available. This uses the gettext mechanism. It allows adding a translation -without recompiling Vim. |multi-lang| (partly by Marcin Dalecki) - -The translation files are in the src/po directory. The src/po/README.txt file -explains a few things about doing a translation. - -Menu translations are available as well. This uses the new |:menutranslate| -command. The translations are found in the runtime directory "lang". This -allows a user to add a translation. - -Added |:language| command to set the language (locale) for messages, time and -character type. This allows switching languages in Vim without changing the -locale outside of Vim. - -Made it possible to have vimtutor use different languages. (Eduardo Fernandez) -Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro -Matsumoto) and French (Adrien Beau) translations are included. -Added "vimtutor.bat": script to start Vim on a copy of the tutor file for -MS-Windows. (Dan Sharp) - -- Added v:lang variable to be able to get current language setting. - (Marcin Dalecki) Also v:lc_time and v:ctype. -- Make it possible to translate the dialogs used by the menus. Uses global - "menutrans_" variables. ":menutrans clear" deletes them. -- removed "broken locale" (Marcin Dalecki). -- Don't use color names in icons, use RGB values. The names could be - translated. -- Win32: Added global IME support (Muraoka) -- Win32: Added dynamic loading of IME support. -- ":messages" prints a message about who maintains the messages or the - translations. Useful to find out where to make a remark about a wrong - translation. -- --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun - Nam) -- Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez) -- When available, call bind_textdomain_codeset() to have gettext() translate - messages to 'encoding'. This requires GNU gettext 0.10.36 or later. -- Added gettext support for Win32. This means messages will be translated - when the locale is set and libintl.dll can be found. (Muraoka Taro) - Also made it work with MingW compiler. (Eduardo Fernandez) - Detect the language and set $LANG to get the appropriate translated messages - (if supported). Also use $LANG to select a language, v:lang is a very - different kind of name. -- Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto) - - -Plugin support *new-plugins* --------------- - -To make it really easy to load a Vim script when starting Vim, the "plugin" -runtime directory can be used. All "*.vim" files in it will be automatically -loaded. For Unix, the directory "~/.vim/plugin" is used by default. The -'runtimepath' option can be set to look in other directories for plugins. -|load-plugins| |add-plugin| - -The |:runtime| command has been added to load one or more files in -'runtimepath'. - -Standard plugins: -netrw.vim - Edit files over a network |new-network-files| -gzip.vim - Edit compressed files -explorer.vim - Browse directories |new-file-browser| - -Added support for local help files. |add-local-help|. -When searching for help tags, all "doc/tags" files in 'runtimepath' are used. -Added the ":helptags" command: Generate a tags file for a help directory. -The first line of each help file is automagically added to the "LOCAL -ADDITIONS" section in doc/help.txt. - -Added the argument to ":map": only add a mapping when it wasn't -defined before. - -When displaying an option value with 'verbose' set will give a message about -where the option was last set. Very useful to find out which script did set -the value. - -The new |:scriptnames| command displays a list of all scripts that have been -sourced. - -GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps" -directories in 'runtimepath'. Allows adding your own bitmaps. - - -Filetype plugins *new-filetype-plugins* ------------------ - -A new group of files has been added to do settings for specific file types. -These can be options and mappings which are specifically used for one value of -'filetype'. - -The files are located in "$VIMRUNTIME/ftplugin". The 'runtimepath' option -makes it possible to use several sets of plugins: Your own, system-wide, -included in the Vim distribution, etc. - -To be able to make this work, several features were added: -- Added the "s:" variables, local to a script. Avoids name conflicts with - global variables. They can be used in the script and in functions, - autocommands and user commands defined in the script. They are kept between - invocations of the same script. |s:var| -- Added the global value for local options. This value is used when opening - a new buffer or editing another file. The option value specified in a - modeline or filetype setting is not carried over to another buffer. - ":set" sets both the local and the global value. - ":setlocal" sets the local option value only. - ":setglobal" sets or displays the global value for a local option. - ":setlocal name<" sets a local option to its global value. -- Added the buffer-local value for some global options: 'equalprg', 'makeprg', - 'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags', - 'include' and 'define'. This allows setting a local value for these global - options, without making it incompatible. -- Added mappings and abbreviations local to a buffer: ":map ". -- In a mapping "" can be used to get the value of the "mapleader" - variable. This simplifies mappings that use "mapleader". "" - defaults to "\". "" does the same with "maplocalleader". This - is to be used for mappings local to a buffer. -- Added Script ID to define functions and mappings local to a script. -- Added