1 *version5.txt* For Vim version 7.1. Last change: 2007 May 11
4 VIM REFERENCE MANUAL by Bram Moolenaar
6 Welcome to Vim Version 5.0!
8 This document lists the differences between Vim 4.x and Vim 5.0.
9 Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc..
10 See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0.
11 See |version4.txt| for differences between Vim 3.0 and Vim 4.0.
13 INCOMPATIBLE: |incompatible-5|
15 Default value for 'compatible' changed |cp-default|
16 Text formatting command "Q" changed |Q-command-changed|
17 Command-line arguments changed |cmdline-changed|
18 Autocommands are kept |autocmds-kept|
19 Use of 'hidden' changed |hidden-changed|
20 Text object commands changed |text-objects-changed|
21 X-Windows Resources removed |x-resources|
22 Use of $VIM |$VIM-use|
23 Use of $HOME for MS-DOS and Win32 |$HOME-use|
24 Tags file format changed |tags-file-changed|
25 Options changed |options-changed|
26 CTRL-B in Insert mode gone |i_CTRL-B-gone|
30 Syntax highlighting |new-highlighting|
31 Built-in script language |new-script|
32 Perl and Python support |new-perl-python|
33 Win32 GUI version |added-win32-GUI|
34 VMS version |added-VMS|
35 BeOS version |added-BeOS|
36 Macintosh GUI version |added-Mac|
37 More Vi compatible |more-compatible|
38 Read input from stdin |read-stdin|
39 Regular expression patterns |added-regexp|
40 Overloaded tags |tag-overloaded|
41 New commands |new-commands|
42 New options |added-options|
43 New command-line arguments |added-cmdline-args|
44 Various additions |added-various|
46 IMPROVEMENTS |improvements-5|
48 COMPILE TIME CHANGES |compile-changes-5|
50 BUG FIXES |bug-fixes-5|
52 VERSION 5.1 |version-5.1|
57 VERSION 5.2 |version-5.2|
58 Long lines editable |long-lines|
59 File browser added |file-browser-5.2|
60 Dialogs added |dialogs-added|
61 Popup menu added |popup-menu-added|
62 Select mode added |new-Select-mode|
63 Session files added |new-session-files|
64 User defined functions and commands |new-user-defined|
65 New interfaces |interfaces-5.2|
67 Multi-byte support |new-multi-byte|
68 New functions |new-functions-5.2|
69 New options |new-options-5.2|
70 New Ex commands |new-ex-commands-5.2|
75 VERSION 5.3 |version-5.3|
80 VERSION 5.4 |version-5.4|
81 Runtime directory introduced |new-runtime-dir|
82 Filetype introduced |new-filetype-5.4|
83 Vim script line continuation |new-line-continuation|
84 Improved session files |improved-sessions|
85 Autocommands improved |improved-autocmds-5.4|
86 Encryption |new-encryption|
87 GTK GUI port |new-GTK-GUI|
88 Menu changes |menu-changes-5.4|
89 Viminfo improved |improved-viminfo|
90 Various new commands |new-commands-5.4|
91 Various new options |new-options-5.4|
92 Vim scripts |new-script-5.4|
93 Avoid hit-enter prompt |avoid-hit-enter|
94 Improved quickfix |improved-quickfix|
95 Regular expressions |regexp-changes-5.4|
100 VERSION 5.5 |version-5.5|
101 Changed |changed-5.5|
105 VERSION 5.6 |version-5.6|
106 Changed |changed-5.6|
110 VERSION 5.7 |version-5.7|
111 Changed |changed-5.7|
115 VERSION 5.8 |version-5.8|
116 Changed |changed-5.8|
120 ==============================================================================
121 INCOMPATIBLE *incompatible-5*
123 Default value for 'compatible' changed *cp-default*
124 --------------------------------------
126 Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim
127 as a drop-in replacement for Vi, but causes some things to be incompatible
130 In version 4.x the default value for the 'compatible' option was off. Now the
131 default is on. The first thing you will notice is that the "u" command undoes
132 itself. Other side effects will be that mappings may work differently or not
135 Since a lot of people switching from Vim 4.x to 5.0 will find this annoying,
136 the 'compatible' option is switched off if Vim finds a vimrc file. This is a
137 bit of magic to make sure that 90% of the Vim users will not be bitten by
141 - If you prefer to run in 'compatible' mode and don't have a vimrc file, you
142 don't have to do anything.
143 - If you prefer to run in 'nocompatible' mode and do have a vimrc file, you
144 don't have to do anything.
145 - If you prefer to run in 'compatible' mode and do have a vimrc file, you
146 should put this line first in your vimrc file: >
148 - If you prefer to run in 'nocompatible' mode and don't have a vimrc file,
149 you can do one of the following:
150 - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix).
151 - Put this command in your .exrc file or $EXINIT: >
153 < - Start Vim with the "-N" argument.
155 If you are new to Vi and Vim, using 'nocompatible' is strongly recommended,
156 because Vi has a lot of unexpected side effects, which are avoided by this
157 setting. See 'compatible'.
159 If you like some things from 'compatible' and some not, you can tune the
160 compatibility with 'cpoptions'.
162 When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode.
165 Text formatting command "Q" changed *Q-command-changed*
166 -----------------------------------
168 The "Q" command formerly formatted lines to the width the 'textwidth' option
169 specifies. The command for this is now "gq" (see |gq| for more info). The
170 reason for this change is that "Q" is the standard Vi command to enter "Ex"
171 mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info).
173 If you still want to use "Q" for formatting, use this mapping: >
175 And if you also want to use the functionality of "Q": >
179 Command-line arguments changed *cmdline-changed*
180 ------------------------------
182 Command-line file-arguments and option-arguments can now be mixed. You can
183 give options after the file names. Example: >
186 This is not possible when editing a file that starts with a '-'. Use the "--"
187 argument then |---|: >
190 "-v" now means to start Ex in Vi mode, use "-R" for read-only mode.
191 old: "vim -v file" |-v|
192 new: "vim -R file" |-R|
194 "-e" now means to start Vi in Ex mode, use "-q" for quickfix.
195 old: "vim -e errorfile" |-e|
196 new: "vim -q errorfile" |-q|
198 "-s" in Ex mode now means to run in silent (batch) mode. |-s-ex|
200 "-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga).
201 old: "vim -x file" |-x|
202 new: "vim -f file" |-f|
204 Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed
207 "-n" now overrides any setting for 'updatecount' in a vimrc file, but not in
211 Autocommands are kept *autocmds-kept*
212 ---------------------
214 Before version 5.0, autocommands with the same event, file name pattern, and
215 command could appear only once. This was fine for simple autocommands (like
216 setting option values), but for more complicated autocommands, where the same
217 command might appear twice, this restriction caused problems. Therefore
218 Vim stores all autocommands and keeps them in the order that they are defined.
220 The most obvious side effect of this change is that when you source a vimrc
221 file twice, the autocommands in it will be defined twice. To avoid this, do
224 - Remove any autocommands that might potentially defined twice before
225 defining them. Example: >
227 :au BufEnter *.ext ...
229 - Put the autocommands inside an ":if" command. Example: >
230 if !exists("did_ext_autocmds")
231 let did_ext_autocmds = 1
232 autocmd BufEnter *.ext ...
235 - Put your autocommands in a different autocommand group so you can remove
236 them before defining them |:augroup|: >
239 au BufReadPost *.gz ...
243 Use of 'hidden' changed *hidden-changed*
244 -----------------------
246 In version 4.x, only some commands used the 'hidden' option. Now all commands
247 uses it whenever a buffer disappears from a window.
249 Previously you could do ":buf xxx" in a changed buffer and that buffer would
250 then become hidden. Now you must set the 'hidden' option for this to work.
252 The new behavior is simpler: whether Vim hides buffers no longer depends on
253 the specific command that you use.
254 - with 'hidden' not set, you never get hidden buffers. Exceptions are the
255 ":hide" and ":close!" commands and, in rare cases, where you would otherwise
256 lose changes to the buffer.
257 - With 'hidden' set, you almost never unload a buffer. Exceptions are the
258 ":bunload" or ":bdel" commands.
260 ":buffer" now supports a "!": abandon changes in current buffer. So do
261 ":bnext", ":brewind", etc.
264 Text object commands changed *text-objects-changed*
265 ----------------------------
267 Text object commands have new names. This allows more text objects and makes
268 characters available for other Visual mode commands. Since no more single
269 characters were available, text objects names now require two characters.
270 The first one is always 'i' or 'a'.
274 s as a sentence |v_as|
275 p ap a paragraph |v_ap|
276 S ab a () block |v_ab|
277 P aB a {} block |v_aB|
279 There is another set of text objects that starts with "i", for "inner". These
280 select the same objects, but exclude white space.
283 X-Windows Resources removed *x-resources*
284 --------------------------
286 Vim no longer supports the following X resources:
292 Vim now uses highlight groups to set colors. This avoids the confusion of
293 using a bold Font, which would imply a certain color. See |:highlight| and
297 Use of $VIM *$VIM-use*
300 Vim now uses the VIM environment variable to find all Vim system files. This
301 includes the global vimrc, gvimrc, and menu.vim files and all on-line help
302 and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can
304 For Unix, Vim sets a default value for $VIM when doing "make install".
305 When $VIM is not set, its default value is the directory from 'helpfile',
306 excluding "/doc/help.txt".
309 Use of $HOME for MS-DOS and Win32 *$HOME-use*
310 ---------------------------------
312 The MS-DOS and Win32 versions of Vim now first check $HOME when searching for
313 a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim
314 used $VIM for these systems, but this causes trouble on a system with several
315 users. Now Vim uses $VIM only when $HOME is not set or the file is not found
316 in $HOME. See |_vimrc|.
319 Tags file format changed *tags-file-changed*
320 ------------------------
322 Only tabs are allowed to separate fields in a tags file. This allows for
323 spaces in a file name and is still Vi compatible. In previous versions of
324 Vim, any white space was allowed to separate the fields. If you have a file
325 which doesn't use a single tab between fields, edit the tags file and execute
327 :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/
330 Options changed *options-changed*
333 The default value of 'errorfile' has changed from "errors.vim" to "errors.err".
334 The reason is that only Vim scripts should have the ".vim" extensions.
336 The ":make" command no longer uses the 'errorfile' option. This prevents the
337 output of the ":make" command from overwriting a manually saved error file.
338 ":make" uses the 'makeef' option instead. This also allows for generating a
339 unique name, to prevent concurrently running ":make" commands from overwriting
342 With 'insertmode' set, a few more things change:
343 - <Esc> in Normal mode goes to Insert mode.
344 - <Esc> in Insert mode doesn't leave Insert mode.
345 - When doing ":set im", go to Insert mode immediately.
347 Vim considers a buffer to be changed when the 'fileformat' (formerly the
348 'textmode' option) is different from the buffer's initial format.
351 CTRL-B in Insert mode gone *i_CTRL-B-gone*
352 --------------------------
354 When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to
355 toggle the 'revins' option. Unfortunately, some people hit the 'B' key
356 accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to
357 undo this. Since toggling the 'revins' option can easily be done with the
358 mapping below, this use of the CTRL-B key is disabled. You can still use the
359 CTRL-_ key for this |i_CTRL-_|. >
360 :imap <C-B> <C-O>:set revins!<CR>
362 ==============================================================================
365 Syntax highlighting *new-highlighting*
368 Vim now has a very flexible way to highlighting just about any type of file.
369 See |syntax|. Summary: >
372 Colors and attributes can be set for the syntax highlighting, and also for
373 other highlighted items with the ':' flag in the 'highlight' option. All
374 highlighted items are assigned a highlight group which specifies their
375 highlighting. See |:highlight|. The default colors have been improved.
377 You can use the "Normal" group to set the default fore/background colors for a
378 color terminal. For the GUI, you can use this group to specify the font, too.
380 The "2html.vim" script can be used to convert any file that has syntax
381 highlighting to HTML. The colors will be exactly the same as how you see them
382 in Vim. With a HTML viewer you can also print the file with colors.
385 Built-in script language *new-script*
386 ------------------------
388 A few extra commands and an expression evaluator enable you to write simple
389 but powerful scripts. Commands include ":if" and ":while". Expressions can
390 manipulate numbers and strings. You can use the '=' register to insert
391 directly the result of an expression. See |expression|.
394 Perl and Python support *new-perl-python*
395 -----------------------
397 Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|.
398 Patches made by Sven Verdoolaege and Matt Gerassimoff.
400 Vim can call Python commands with ":python" and ":pyfile". See |python|.
402 Both of these are only available when enabled at compile time.
405 Win32 GUI version *added-win32-GUI*
408 The GUI has been ported to MS Windows 95 and NT. All the features of the X11
409 GUI are available to Windows users now. |gui-w32|
410 This also fixes problems with running the Win32 console version under Windows
411 95, where console support has always been bad.
412 There is also a version that supports OLE automation interface. |if_ole.txt|
413 Vim can be integrated with Microsoft Developer Studio using the VisVim DLL.
414 It is possible to produce a DLL version of gvim with Borland C++ (Aaron).
417 VMS version *added-VMS*
420 Vim can now also be used on VMS systems. Port done by Henk Elbers.
421 This has not been tested much, but it should work.
422 Sorry, no documentation!
425 BeOS version *added-BeOS*
428 Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert)
432 Macintosh GUI version *added-Mac*
433 ---------------------
435 Vim can now be used on the Macintosh. (Dany St-Amant)
436 It has not been tested much yet, be careful!
440 More Vi compatible *more-compatible*
443 There is now a real Ex mode. Started with the "Q" command, or by calling the
444 executable "ex" or "gex". |Ex-mode|
446 Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag
447 in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo
451 Read input from stdin *read-stdin*
452 ---------------------
454 When using the "-" command-line argument, Vim reads its text input from stdin.
455 This can be used for putting Vim at the end of a pipe: >
456 grep "^a.*" *.c | vim -
460 Regular expression patterns *added-regexp*
461 ---------------------------
463 Added specifying a range for the number of matches of a atom: "\{a,b}". |/\{|
464 Added the "shortest match" regexp "\{-}" (Webb).
465 Added "\s", matches a white character. Can replace "[ \t]". |/\s|
466 Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S|
469 Overloaded tags *tag-overloaded*
472 When using a language like C++, there can be several tags for the same
473 tagname. Commands have been added to be able to jump to any of these
475 |:tselect| List matching tags, and jump to one of them.
476 |:stselect| Idem, and split window.
477 |g_CTRL-]| Do ":tselect" with the word under the cursor.
479 After ":ta {tagname}" with multiple matches:
480 |:tnext| Go to next matching tag.
481 |:tprevious| Go to previous matching tag.
482 |:trewind| Go to first matching tag.
483 |:tlast| Go to last matching tag.
485 The ":tag" command now also accepts wildcards. When doing command-line
486 completion on tags, case-insensitive matching is also available (at the end).
489 New commands *new-commands*
492 |:amenu| Define menus for all modes, inserting a CTRL-O for Insert
493 mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is
494 used for the default menus and the Syntax menu.
496 |:augroup| Set group to be used for following autocommands. Allows the
497 grouping of autocommands to enable deletion of a specific
500 |:crewind| Go to first error.
501 |:clast| Go to last error.
503 |:doautoall| Execute autocommands for all loaded buffers.
505 |:echo| Echo its argument, which is an expression. Can be used to
506 display messages which include variables.
508 |:execute| Execute its argument, which is an expression. Can be used to
509 built up an Ex command with anything.
511 |:hide| Works like ":close".
513 |:if| Conditional execution, for built-in script language.
515 |:intro| Show introductory message. This is always executed when Vim
516 is started without file arguments.
518 |:let| Assign a value to an internal variable.
520 |:omap| Map only in operator-pending mode. Makes it possible to map
521 text-object commands.
523 |:redir| Redirect output of messages to a file.
525 |:update| Write when buffer has changed.
527 |:while| While-loop for built-in script language.
530 |v_O| "O" in Visual block mode, moves the cursor to the other corner
532 |v_D| "D" in Visual block mode deletes till end of line.
535 |i_CTRL-]| Triggers abbreviation, without inserting any character.
538 New options *added-options*
541 'background' Used for selecting highlight color defaults. Also used in
542 "syntax.vim" for selecting the syntax colors. Often set
543 automatically, depending on the terminal used.
545 'complete' Specifies how Insert mode completion works.
547 'eventignore' Makes it possible to ignore autocommands temporarily.
549 'fileformat' Current file format. Replaces 'textmode'.
550 'fileformats' Possible file formats. Replaces 'textauto'.
551 New is that this also supports Macintosh format: A single <CR>
553 The default for 'fileformats' for MS-DOS, Win32 and OS/2 is
554 "dos,unix", also when 'compatible' set. Unix type files
555 didn't work anyway when 'fileformats' was empty.
557 'guicursor' Set the cursor shape and blinking in various modes.
558 Default is to adjust the cursor for Insert and Replace mode,
559 and when an operator is pending. Blinking is default on.
561 'fkmap' Farsi key mapping.
563 'hlsearch' Highlight all matches with the last used search pattern.
565 'hkmapp' Phonetic Hebrew mapping. (Ilya Dogolazky)
567 'iconstring' Define the name of the icon, when not empty. (Version 5.2: the
568 string is used literally, a newline can be used to make two
571 'lazyredraw' Don't redraw the screen while executing macros, registers or
572 other not typed commands.
574 'makeef' Errorfile to be used for ":make". "##" is replaced with a
575 unique number. Avoids that two Vim sessions overwrite each
576 others errorfile. The Unix default is "/tmp/vim##.err"; for
577 Amiga "t:vim##.Err, for others "vim##.err".
579 'matchtime' 1/10s of a second to show a matching paren, when 'showmatch'
582 'mousehide' Hide mouse pointer in GUI when typing text.
584 'nrformats' Defines what bases Vim will consider for numbers when using
585 the CTRL-A and CTRL-X commands. Default: "hex,octal".
587 'shellxquote' Add extra quotes around the whole shell command, including
590 'softtabstop' Make typing behave like tabstop is set at this value, without
591 changing the value of 'tabstop'. Makes it more easy to keep
592 'ts' at 8, while still getting four spaces for a <Tab>.
594 'titlestring' String for the window title, when not empty. (Version 5.2:
595 this string is used literally, a newline can be used to make
598 'verbose' Level of verbosity. Makes it possible to show which .vimrc,
599 .exrc, .viminfo files etc. are used for initializing. Also
600 to show autocommands that are being executed. Can also be set
601 by using the "-V" command-line argument.
604 New command-line arguments *added-cmdline-args*
605 --------------------------
607 |-U| Set the gvimrc file to be used. Like "-u" for the vimrc.
609 |-V| Set the 'verbose' option. E.g. "vim -V10".
611 |-N| Start in non-compatible mode.
613 |-C| Start in compatible mode.
615 |-Z| Start in restricted mode, disallow shell commands. Can also
616 be done by calling the executable "rvim".
618 |-h| Show usage information and exit.
621 Various additions *added-various*
624 Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can
625 be used as an editor for SNiFF. No documentation available...
627 For producing a bug report, the bugreport.vim script has been included.
628 Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file
629 "bugreport.txt" in the current directory. |bugs|
631 Added range to ":normal" command. Now you can repeat the same command for
632 each line in the range. |:normal-range|
634 Included support for the Farsi language (Shiran). Only when enabled at
635 compile time. See |farsi|.
637 ==============================================================================
638 IMPROVEMENTS *improvements-5*
641 - When 'showcmd' was set, mappings would execute much more slowly because the
642 output would be flushed very often. Helps a lot when executing the "life"
643 macros with 'showcmd' set.
644 - Included patches for binary searching in tags file (David O'Neill).
645 Can be disabled by resetting the 'tagbsearch' option.
646 - Don't update the ruler when repeating insert (slowed it down a lot).
647 - For Unix, file name expansion is now done internally instead of starting a
649 - Expand environment variables with expand_env(), instead of calling the
650 shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster.
651 - Reduced output for cursor positioning: Use CR-LF for moving to first few
652 columns in next few lines; Don't output CR twice when using termios.
653 - Optimized cursor positioning. Use CR, BS and NL when it's shorter than
654 absolute cursor positioning.
655 - Disable redrawing while repeating insert "1000ii<Esc>".
656 - Made "d$" or "D" for long lines a lot faster (delete all characters at once,
657 instead of one by one).
658 - Access option table by first letter, instead of searching from start.
659 - Made setting special highlighting attributes a lot faster by using
660 highlight_attr[], instead of searching in the 'highlight' string.
661 - Don't show the mode when redrawing is disabled.
662 - When setting an option, only redraw the screen when required.
663 - Improved performance of Ex commands by using a lookup table for the first
667 'cinoptions' Added 'g' flag, for C++ scope declarations.
668 'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text
669 area. Default is to allow empty yanks. When 'E' is included,
670 "y$" in an empty line now is handled as an error (Vi
672 Added 'j' flag: Only add two spaces for a join after a '.',
673 not after a '?' or '!'.
674 Added 'A' flag: don't give ATTENTION message.
675 Added 'L' flag: When not included, and 'list' is set,
676 'textwidth' formatting works like 'list' is not set.
677 Added 'W' flag: Let ":w!" behave like Vi: don't overwrite
678 readonly files, or a file owned by someone else.
679 'highlight' Added '@' flag, for '@' characters after the last line on the
680 screen, and '$' at the end of the line when 'list' is set.
681 Added 'i' flag: Set highlighting for 'incsearch'. Default
682 uses "IncSearch" highlight group, which is linked to "Visual".
683 Disallow 'h' flag in 'highlight' (wasn't used anymore since
685 'guifont' Win32 GUI only: When set to "*" brings up a font requester.
686 'guipty' Default on, because so many people need it.
687 'path' Can contain wildcards, and "**" for searching a whole tree.
688 'shortmess' Added 'I' flag to avoid the intro message.
689 'viminfo' Added '%' flag: Store buffer list in viminfo file.
691 - Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most
692 machines have much more RAM now that prices have dropped.
693 - Implemented ":set all&", set all options to their default value. |:set|
696 - Don't create a swap file for a readonly file. Then create one on the first
697 change. Also create a swapfile when the amount of memory used is getting
698 too high. |swap-file|
699 - Make swap file "hidden", if possible. On Unix this is done by prepending a
700 dot to the swap file name. When long file names are used, the DJGPP and
701 Win32 versions also prepend a dot, in case a file on a mounted Unix file
702 system is edited. |:swapname| On MSDOS the hidden file attribute is NOT
703 set, because this causes problems with share.exe.
704 - 'updatecount' always defaults to non-zero, also for Vi compatible mode.
705 This means there is a swap file, which can be used for recovery.
708 - Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed
710 {tag}:{fname} {fname} {command}
712 {tag} {fname} {command};" file:
713 Which is both faster to parse, shorter and Vi compatible. The old format is
714 also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS).
716 - Completion of tags now also includes static tags for other files, at the
718 - Included "shtags" from Stephen Riehm.
719 - When finding a matching tag, but the file doesn't exist, continue searching
720 for another match. Helps when using the same tags file (with links) for
721 different versions of source code.
722 - Give a tag with a global match in the current file a higher priority than a
723 global match in another file.
725 Included xxd version V1.8 (Juergen Weigert).
728 - VimLeave autocommands are executed after writing the viminfo file, instead
729 of before. |VimLeave|
730 - Allow changing autocommands while executing them. This allows for
731 self-modifying autocommands. (idea from Goldberg)
732 - When using autocommands with two or more patterns, could not split
733 ":if/:endif" over two lines. Now all matching autocommands are executed in
735 - Autocommands no longer change the command repeated with ".".
736 - Search patterns are restored after executing autocommands. This avoids
737 that the 'hlsearch' highlighting is messed up by autocommands.
738 - When trying to execute an autocommand, also try matching the pattern with
739 the short file name. Helps when short file name is different from full
740 file name (expanded symbolic links). |autocmd-patterns|
741 - Made the output of ":autocmd" shorter and look better.
742 - Expand <sfile> in an ":autocmd" when it is defined. |<sfile>|
743 - Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested|
744 - Added [group] argument to ":autocmd". Overrides the currently set group.
747 |BufUnload| before a buffer is unloaded
748 |BufDelete| before a buffer is deleted from the buffer list
749 |FileChangedShell| when a file's modification time has changed after
750 executing a shell command
751 |User| user-defined autocommand
752 - When 'modified' was set by a BufRead* autocommand, it was reset again
753 afterwards. Now the ":set modified" is remembered.
756 - Improved GUI scrollbar handling when redrawing is slower than the scrollbar
757 events are generated.
758 - "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u|
759 Use "-U" to use another gvimrc file. |-U|
760 - Handle CTRL-C for external command, also for systems where "setsid()" is
762 - When starting the GUI, restrict the window size to the screen size.
763 - The default menus are read from $VIMRUNTIME/menu.vim. This allows for a
764 customized default menu. |menu.vim|
765 - Improved the default menus. Added File/Print, a Window menu, Syntax menu,
767 - Added priority to the ":menu" command. Now each menu can be put in a place
768 where you want it, independent of the order in which the menus are defined.
771 Give a warning in the intro screen when running the Win32 console version on
772 Windows 95 because there are problems using this version under Windows 95.
775 Added 'e' flag for ":substitute" command: Don't complain when not finding a
776 match (Campbell). |:s|
778 When using search commands in a mapping, only the last one is kept in the
779 history. Avoids that the history is trashed by long mappings.
781 Ignore characters after "ex", "view" and "gvim" when checking startup mode.
782 Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly
785 When resizing windows, the cursor is kept in the same relative position, if
788 ":all" and ":ball" no longer close and then open a window for the same buffer.
789 Avoids losing options, jumplist, and other info.
791 "-f" command-line argument is now ignored if Vim was compiled without GUI.
794 In Visual block mode, the right mouse button picks up the nearest corner.
796 Changed default mappings for DOS et al. Removed the DOS-specific mappings,
797 only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and
800 Changed the numbers in the output of ":jumps", so you can see where {count}
801 CTRL-O takes you. |:jumps|
803 Using "~" for $HOME now works for all systems. |$HOME|
805 Unix: Besides using CTRL-C, also use the INTR character from the tty settings.
806 Somebody has INTR set to DEL.
808 Allow a <LF> in a ":help" command argument to end the help command, so another
811 Doing "%" on a line that starts with " #if" didn't jump to matching "#else".
812 Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag.
815 Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved
817 - 'complete' option added.
818 - When 'nowrapscan' is set, and no match found, report the searched direction
819 in the error message.
820 - Repeating CTRL-X commands adds following words/lines after the match.
821 - When adding-expansions, accept single character matches.
822 - Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole
823 insertion. Also fixes not being able to backspace over a word that has been
824 inserted with CTRL-N.
826 When copying characters in Insert mode from previous/next line, with CTRL-E or
827 CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E|
829 Commands that move in the arglist, like ":n" and ":rew", keep the old cursor
830 position of the file (this is mostly Vi compatible).
832 Vim now remembers the '< and '> marks for each buffer. This fixes a problem
833 that a line-delete in one buffer invalidated the '< and '> marks in another
836 For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable.
837 When using the executable path for $VIM, remove "src/" when present. Should
838 make Vim find the docs and syntax files when it is run directly after
841 When quitting Visual mode with <Esc>, the cursor is put at start of the Visual
842 area (like after executing an operator).
844 Win32 and Unix version: Removed 1100 character limit on external commands.
846 Added possibility to include a space in a ":edit +command" argument, by
847 putting a backslash before it. |+cmd|
849 After recovery, BufReadPost autocommands are applied. |:recover|
851 Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi|
853 Allow "%:p:h" when % is empty. |:_%|
855 Included "<sfile>": file name from the ":source" command. |<sfile>|
857 Added "<Bslash>" special character. Helps for avoiding multiple backslashes
858 in mappings and menus.
860 In a help window, a double-click jumps to the tag under the cursor (like
863 <C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word
864 forward/backward (Windows compatible). |<C-Left>|
866 Removed the requirement for a ":version" command in a .vimrc file. It wasn't
867 used for anything. You can use ":if" to handle differences between versions.
870 For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't
871 make a difference between '/' and '\' for path separator.
874 "mb": blink. Can only be used by assigning it to one of the other highlight
876 "bc": backspace character. |t_bc|
877 "nd": Used for moving the cursor right in the GUI, to avoid removing one line
878 of pixels from the last bold character. |t_nd|
879 "xs": highlighting not erased by overwriting, for hpterm. Combined with
880 'weirdinvert'. Visual mode works on hpterm now. |t_xs|
882 Unix: Set time of patch and backup file same as original file. (Hiebert).
884 Amiga: In QuickFix mode no longer opens another window. Shell commands can be
887 Added decmouse patches from David Binette. Can now use Dec and Netterm mouse.
888 But only when enabled at compile time.
890 Added '#' register: Alternate file name |quote#|. Display '#' register with
891 ":dis" command. |:display|
893 Removed ':' from 'isfname' default for Unix. Check for "://" in a file name
894 anyway. Also check for ":\\", for MS-DOS.
896 Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in
897 the man command. "2K" results in "!man 2 <cword>". |K|
899 When using "gf" on a relative path name, remove "../" from the file name, like
900 it's done for file names in the tags file. |gf|
902 When finishing recording, don't make the recorded register the default put
905 When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some
906 other enhancements to replace the line number with "." or "$" when possible.
908 MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent:
909 .vimrc/_vimrc and .viminfo/_viminfo
911 For systems where case doesn't matter in file names (MSDOS, Amiga), ignore
912 case while sorting file names. For buffer names too.
914 When reading from stdin doesn't work, read from stderr (helps for "foo | xargs
917 32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4.
919 Changed <C-Left> and <C-Right> to skip a WORD instead of a word.
921 Warning for changed modified time when overwriting a file now also works on
922 other systems than Unix.
924 Unix: Changed the defaults for configure to be the same as the defaults for
925 Makefile: include GUI, Perl, and Python.
927 Some versions of Motif require "-lXpm". Added check for this in configure.
929 Don't add "-L/usr/lib" to the link line, causes problems on a few systems.
931 ==============================================================================
932 COMPILE TIME CHANGES *compile-changes-5*
934 When compiling, allow a choice for minimal, normal or maximal features in an
935 easy way, by changing a single line in src/feature.h.
936 The DOS16 version has been compiled with minimal features to avoid running
937 out of memory too quickly. |dos16|
938 The Win32, DJGPP, and OS/2 versions use maximal features, because they have
940 The Amiga version is available with normal and maximal features.
942 Added "make test" to Unix version Makefile. Allows for a quick check if most
943 "normal" commands work properly. Also tests a few specific commands.
945 Added setlocale() with codepage support for DJGPP version.
948 - Added autoconf check for -lXdmcp.
949 - Included check for -lXmu, no longer needed to edit the Makefile for this.
950 - Switched to autoconf 2.12.
951 - Added configure check for <poll.h>. Seems to be needed when including
953 - termlib is now checked before termcap.
954 - Added configure check for strncasecmp(), stricmp() and strnicmp(). Added
955 vim_stricmp() for when there's no library function for stricmp().
956 - Use "datadir" in configure, instead of our own check for HELPDIR.
958 Removed "make proto" from Makefile.manx. Could not make it work without a lot
961 Removed "proto/" from paths in proto.h. Needed for the Mac port.
963 Drastically changed Makefile.mint. Now it includes the Unix Makefile.
965 Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor)
967 All source files are now edited with a tabstop of 8 instead of 4, which is
968 better when debugging and using other tools. 'softtabstop' is set to 4, to
971 Unix: Added "link.sh" script, which removes a few unnecessary libraries from
974 Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined.
977 ==============================================================================
978 BUG FIXES *bug-fixes-5*
980 Note: Some of these fixes may only apply to test versions which were
981 created after version 4.6, but before 5.0.
984 When doing ":bdel", try going to the next loaded buffer. Don't rewind to the
985 start of the buffer list.
987 mch_isdir() for Unix returned TRUE for "" on some systems.
989 Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use
990 backslashes in the temp file names.
992 On linux, with a FAT file system, could get spurious "file xxx changed since
993 editing started" messages, because the time is rounded off to two seconds
996 Crash in GUI, when selecting a word (double click) and then extend until an
999 For systems where isdigit() can't handle characters > 255, get_number() caused
1000 a crash when moving the mouse during the prompt for recovery.
1002 In Insert mode, "CTRL-O P" left the cursor on the last inserted character.
1003 Now the cursor is left after the last putted character.
1005 When quickfix found an error type other than 'e' or 'w', it was never printed.
1007 A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument.
1009 Some systems create a file when generating a temp file name. Filtering would
1010 then create a backup file for this, which was never deleted. Now no backup
1011 file is made when filtering.
1013 simplify_filename() could remove a ".." after a link, resulting in the wrong
1014 file name. Made simplify_filename also work for MSDOS. Don't use it for
1015 Amiga, since it doesn't have "../".
1017 otherfile() was unreliable when using links. Could think that reading/writing
1018 was for a different file, when it was the same.
1020 Pasting with mouse in Replace mode didn't replace anything.
1022 Window height computed wrong when resizing a window with an autocommand (could
1025 ":s!foo!bar!" wasn't possible (Vi compatible).
1027 do_bang() freed memory twice when called recursively, because of autocommands
1028 (test11). Thanks to Electric Fence!
1030 "v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the
1031 command-line, and inverted the cursor.
1033 ":mkexrc" didn't check for failure to open the file, causing a crash.
1036 Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to
1037 be recognized. Both console and GUI version.
1039 Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the
1040 reversing of the menu item is still wrong.
1042 Always reset 'list' option for the help window.
1044 When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be
1045 in the wrong line and the window to be scrolled (Acevedo).
1047 After ":set all&", 'lines' and 'ttytype' were still non-default, because the
1048 defaults never got set. Now the defaults for 'lines' and 'columns' are set
1049 after detecting the window size. 'term' and 'ttytype' defaults are set when
1050 detecting the terminal type.
1052 For (most) non-Unix systems, don't add file names with illegal characters when
1053 expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when
1056 In X11 GUI, drawing part of the cursor obscured the text. Now the text is
1057 drawn over the cursor, like when it fills the block. (Seibert)
1059 when started with "-c cmd -q errfile", the cursor would be left in line 1.
1060 Now a ":cc" is done after executing "cmd".
1062 ":ilist" never ignored case, even when 'ignorecase' set.
1064 "vim -r file" for a readonly file, then making a change, got ATTENTION message
1065 in insert mode, display mixed up until <Esc> typed. Also don't give ATTENTION
1066 message after recovering a file.
1068 The abbreviation ":ab #i #include" could not be removed.
1070 CTRL-L completion (longest common match) on command-line didn't work properly
1071 for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard
1074 For terminals that can hide the cursor ("vi" termcap entry), resizing the
1075 window caused the cursor to disappear.
1077 Using an invalid mark in an Ex address didn't abort the command.
1079 When 'smarttab' set, would use 'shiftround' when inserting a TAB after a
1080 space. Now it always rounds to a tabstop.
1082 Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute"
1083 and ":change". (Acevedo).
1085 "d$" in an empty line still caused an error, even when 'E' is not in
1088 Help files were stored in the viminfo buffer list without a path.
1090 GUI: Displaying cursor was not synchronized with other displaying. Caused
1091 several display errors. For example, when the last two lines in the file
1092 start with spaces, "dd" on the last line copied text to the (then) last line.
1094 Win32: Needed to type CTRL-SHIFT-- to get CTRL-_.
1096 GUI: Moving the cursor forwards over bold text would remove one column of bold
1099 X11 GUI: When a bold character in the last column was scrolled up or down, one
1100 column of pixels would not be copied.
1102 Using <BS> to move the cursor left can sometimes erase a character. Now use
1103 "le" termcap entry for this.
1105 Keyword completion with regexp didn't work. e.g., for "b.*crat".
1107 Fixed: With CTRL-O that jumps to another file, cursor could end up just after
1110 Amiga: '$' was missing from character recognized as wildcards, causing $VIM
1111 sometimes not to be expanded.
1113 ":change" didn't adjust marks for deleted lines.
1115 ":help [range]" didn't work. Also for [pattern], [count] and [quotex].
1117 For 'cindent'ing, typing "class::method" doesn't align like a label when the
1118 second ':' is typed.
1119 When inserting a CR with 'cindent' set (and a bunch of other conditions) the
1120 cursor went to a wrong location.
1121 'cindent' was wrong for a line that ends in '}'.
1122 'cindent' was wrong after "else {".
1124 While editing the cmdline in the GUI, could not use the mouse to select text
1125 from the command-line itself.
1127 When deleting lines, marks in tag stack were only adjusted for the current
1128 window, not for other windows on the same buffer.
1130 Tag guessing could find a function "some_func" instead of the "func" we were
1133 Tags file name relative to the current file didn't work.
1135 ":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause
1136 a scroll up. Now you no longer have to hit <CR>.
1138 X11 GUI: Selecting text could cause a crash.
1140 32 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set
1141 to "sh.exe", external commands didn't work. Removed using of command.com, no
1142 longer need to set 'shellquote'.
1144 Fixed crash when using ":g/pat/i".
1146 Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a
1147 pointer on the stack to a callback function, now it's static.
1149 Using "#" and "*" with an operator didn't work. E.g. "c#".
1151 Command-line expansion didn't work properly after ":*". (Acevedo)
1153 Setting 'weirdinvert' caused highlighting to be wrong in the GUI.
1155 ":e +4 #" didn't work, because the "4" was in unallocated memory (could cause
1158 Cursor position was wrong for ":e #", after ":e #" failed, because of changes
1161 When doing ":buf N", going to a buffer that was edited with ":view", the
1162 readonly flag was reset. Now make a difference between ":e file" and ":buf
1163 file": Only set/reset 'ro' for the first one.
1165 Avoid |hit-enter| prompt when not able to write viminfo on exit.
1167 When giving error messages in the terminal where the GUI was started, GUI
1168 escape codes would be written to the terminal. In an xterm this could be seen
1169 as a '$' after the message.
1171 Mouse would not work directly after ":gui", because full_screen isn't set,
1172 which causes starttermcap() not to do its work.
1174 'incsearch' did not scroll the window in the same way as the actual search.
1175 When 'nowrap' set, incsearch didn't show a match when it was off the side of
1176 the screen. Now it also shows the whole match, instead of just the cursor
1177 position (if possible).
1179 ":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as
1180 the start of a comment. Now it's Vi compatible.
1182 Using <Up><Left><Left><Up> in the command-line, when there is no previous
1183 cmdline in the history, inserted a NUL on the command-line.
1185 "i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place.
1187 GUI Motif: When adding a lot of menu items, the menu bar goes into two rows.
1188 Deleting menu items, reducing the number of rows, now also works.
1190 With ":g/pat/s//foo/c", a match in the first line was scrolled off of the
1191 screen, so you could not see it.
1192 When using ":s//c", with 'nowrap' set, a match could be off the side of the
1193 screen, so you could not see it.
1195 When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would
1196 crash. mch_Fullname can now handle file names in read-only memory. (Lottem)
1198 When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects
1199 when using CTRL-D next. Also, when repeating inserted text that included "0
1200 CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo)
1201 Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0'
1202 or '^', removed the '0' or '^' and more indent.
1204 The command "2".p" caused the last inserted text to be executed as commands.
1207 Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted.
1209 Repeating Insert completion could fail if there are special characters in the
1212 ":normal /string<CR>" caused the window to scroll. Now all ":normal" commands
1213 are executed without scrolling messages.
1215 Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as
1218 Line wrapping for 'tw' was done one character off for insert expansion
1221 buffer_exists() function didn't work properly for buffer names with a symbolic
1222 link in them (e.g. when using buffer_exists(#)).
1224 Removed the "MOTIF_COMMENT" construction from Makefile. It now works with
1225 FreeBSD make, and probably with NeXT make too.
1227 Matching the 'define' and 'include' arguments now honor the settings for
1228 'ignorecase'. (Acevedo)
1230 When one file shown in two windows, Visual selection mixed up cursor position
1231 in current window and other window.
1233 When doing ":e file" from a help file, the 'isk' option wasn't reset properly,
1234 because of a modeline in the help file.
1236 When doing ":e!", a cursor in another window on the same buffer could become
1237 invalid, leading to "ml_get: invalid lnum" errors.
1239 Matching buffer name for when expanded name has a different path from not
1240 expanded name (Brugnara).
1242 Normal mappings didn't work after an operator. For example, with ":map Q gq",
1245 When ":make" resulted in zero errors, a "No Errors" error message was given
1246 (which breaks mappings).
1248 When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V
1249 before <EOL> was not handled Vi compatible. (Acevedo)
1251 Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann)
1253 CTRL-X CTRL-I only found one match per line. (Acevedo)
1254 When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message
1257 Finally managed to ignore the "Quit" menu entry of the Window manager! Now
1258 Vim only exists when there are no changed buffers.
1260 Trying to start the GUI when $DISPLAY is not set resulted in a crash.
1261 When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks
1263 When $DISPLAY not set, starting "gvim" (dropping back to vim) and then
1264 selecting text with the mouse caused a crash.
1266 "J", with 'joinspaces' set, on a line ending in ". ", caused one space too
1267 many to be added. (Acevedo)
1269 In insert mode, a CTRL-R {regname} which didn't insert anything left the '"'
1272 ":z10" didn't work. (Clapp)
1274 "Help "*" didn't work.
1276 Renamed a lot of functions, to avoid clashes with POSIX name space.
1278 When adding characters to a line, making it wrap, the following lines were
1279 sometimes not shifted down (e.g. after a tag jump).
1281 CTRL-E, with 'so' set and cursor on last line, now does not move cursor as
1282 long as the last line is on the screen.
1284 When there are two windows, doing "^W+^W-" in the bottom window could cause
1285 the status line to be doubled (not redrawn correctly).
1287 This command would hang: ":n `cat`". Now connect stdin of the external
1288 command to /dev/null, when expanding.
1290 Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo)
1292 The "+command" argument to ":split" didn't work when there was no file name.
1294 When selecting text in the GUI, which is the output of a command-line command
1295 or an external command, the inversion would sometimes remain.
1297 GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is
1298 not changed anymore.
1300 GUI: When using the scrollbar or mouse while executing an external command,
1301 this caused garbage characters.
1303 Showmatch sometimes jumped to the wrong position. Was caused by a call to
1304 findmatch() when redrawing the display (when syntax highlighting is on).
1306 Search pattern "\(a *\)\{3} did not work correctly, also matched "a a".
1307 Problem with brace_count not being decremented.
1309 Wildcard expansion added too many non-matching file names.
1311 When 'iskeyword' contains characters like '~', "*" and "#" didn't work
1314 On Linux, on a FAT file system, modification time can change by one second.
1315 Avoid a "file has changed" warning for a one second difference.
1317 When using the page-switching in an xterm, Vim would position the cursor on
1318 the last line of the window on exit. Also removed the cursor positioning for
1321 ":g/pat/p" command (partly) overwrote the command. Now the output is on a
1324 With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were
1327 "^" on a line with only white space, put cursor beyond the end of the line.
1329 When deleting characters before where insertion started ('bs' == 2), could not
1332 CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is
1333 non-zero. CTRL-E didn't work when 'so' is big and the line below the window
1334 wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping
1337 ":retab" didn't work well when 'list' is set.
1339 Amiga: When inserting characters at the last line on the screen, causing it
1340 to wrap, messed up the display. It appears that a '\n' on the last line
1341 doesn't always cause a scroll up.
1343 In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought
1344 that the "0" was still there. (Acevedo)
1346 "z{count}l" ignored the count. Also for "zh" et. al. (Acevedo)
1348 "S" when 'autoindent' is off didn't delete leading white space.
1350 "/<Tab>" landed on the wrong character when 'incsearch' is set.
1352 Asking a yes/no question could cause a |hit-enter| prompt.
1354 When the file consists of one long line (>4100 characters), making changes
1355 caused various errors and a crash.
1357 DJGPP version could not save long lines (>64000) for undo.
1359 "yw" on the last char in the file didn't work. Also fixed "6x" at the end of
1360 the line. "6X" at the start of a line fails, but does not break a mapping. In
1361 general, a movement for an operator doesn't beep or flush a mapping, but when
1362 there is nothing to operate on it beeps (this is Vi compatible).
1364 "m'" and "m`" now set the '' mark at the cursor position.
1366 Unix: Resetting of signals for external program didn't work, because SIG_DFL
1367 and NULL are the same! For "!!yes|dd count=1|, the yes command kept on
1370 Partly fixed: Unix GUI: Typeahead while executing an external command was lost.
1371 Now it's not lost while the command is producing output.
1373 Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>". Now
1374 it works like a normal <Tab>, just like <C-Tab> and <M-Tab>.
1376 Redrawing ruler didn't check for old value correctly (caused UMR warnings in
1379 Negative array index in finish_viminfo_history().
1381 ":g/^/d|mo $" deleted all the lines. The ":move" command now removes the
1382 :global mark from the moved lines.
1384 Using "vG" while the last line in the window is a "@" line, didn't update
1385 correctly. Just the "v" showed "~" lines.
1387 "daw" on the last char of the file, when it's a space, moved the cursor beyond
1388 the end of the line.
1390 When 'hlsearch' was set or reset, only the current buffer was redrawn, while
1391 this affects all windows.
1393 CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the
1394 file, put the cursor at the bottom of the window, instead of halfway.
1396 When scrolling up for ":append" command, not all windows were updated
1399 When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc>
1400 didn't remove the highlighting, although the indent was deleted.
1402 When 'ru' set and 'nosc', using "$j" showed a wrong ruler.
1404 Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used).
1406 Mapping <S-Tab> didn't work. Changed the key translations to use the shortest
1407 key code possible. This makes the termcode translations and mappings more
1408 consistent. Now all modifiers work in all combinations, not only with <Tab>,
1409 but also with <Space>, <CR>, etc.
1411 For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C
1412 in Ex mode doesn't make Vim exit.
1414 ""a5Y" yanked 25 lines instead of 5.
1416 "vrxxx<Esc>" in an empty line could not be undone.
1418 A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying
1419 when you want to handle what ":make" produced so far).
1421 ":0;/pat" didn't find "pat" in line 1.
1423 Search for "/test/s+1" at first char of file gave bottom-top message, or
1424 didn't work at all with 'nowrapscan'.
1426 Bug in viminfo history. Could cause a crash on exit.
1428 ":print" didn't put cursor on first non-blank in line.
1430 ":0r !cat </dev/null" left cursor in line zero, with very strange effects.
1432 With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position
1433 the cursor leftwards didn't work.
1435 AIX stty settings were restored to cs5 instead of cs8 (Winn).
1437 File name completion didn't work for "zsh" versions that put spaces between
1438 file names, instead of NULs.
1440 Changed "XawChain*" to "XtChain*", should work for more systems.
1442 Included quite a few fixes for rightleft mode (Lottem).
1444 Didn't ask to |hit-enter| when GUI is started and error messages are printed.
1446 When trying to edit a file in a non-existent directory, ended up with editing
1449 "gqap" to format a paragraph did too much redrawing.
1451 When 'hlsearch' set, only the current window was updated for a new search
1454 Sometimes error messages on startup didn't cause a |hit-enter| prompt,
1455 because of autocommands containing an empty line.
1457 Was possible to select part of the window in the border, below the command
1460 '< and '> marks were not at the correct position after linewise Visual
1463 When translating a help argument to "CTRL-x", prepend or append a '_', when
1466 Blockwise visual mode wasn't correct when moving vertically over a special
1467 character (displayed as two screen characters).
1469 Renamed "struct option" to "struct vimoption" to avoid name clash with GNU
1472 ":abclear" didn't work (but ":iabclear" and ":cabclear" did work).
1474 When 'nowrap' used, screen wasn't always updated correctly.
1476 "vim -c split file" displayed extra lines.
1478 After starting the GUI, searched the termcap for a "gui" term.
1480 When 'hls' used, search for "^$" caused a hang.
1481 When 'hls' was set, an error in the last regexp caused trouble.
1483 Unix: Only output an extra <EOL> on exit when outputted something in the
1484 alternate screen, or when there is a message that needs to be cleared.
1486 "/a\{" did strange things, depending on previous search.
1488 "c}" only redrew one line (with -u NONE).
1490 For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map
1491 only accepts <MC-A>. Now <M-C-A> is shown.
1493 Unix: When using full path name in a tags file, which contains a link, and
1494 'hidden' set and jumping to a tag in the current file, would get bogus
1495 ATTENTION message. Solved by always expanding file names, even when starting
1498 'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight
1501 "r<CR>" didn't work correctly on the last char of a line.
1503 sometimes a window resize or other signal caused an endless loop, involving
1506 "vim -r" didn't work, it would just hang (using tgetent() while 'term' is
1509 "gk" while 'nowrap' set moved two lines up.
1511 When windows are split, a message that causes a scroll-up messed up one of the
1512 windows, which required a CTRL-L to be typed.
1514 Possible endless loop when using shell command in the GUI.
1516 Menus defined in the .vimrc were removed when GUI started.
1518 Crash when pasting with the mouse in insert mode.
1520 Crash with ":unmenu *" in .gvimrc for Athena.
1522 "5>>" shifted 5 lines 5 times, instead of 1 time.
1524 CTRL-C when getting a prompt in ":global" didn't interrupt.
1526 When 'so' is non-zero, and moving the scrollbar completely to the bottom,
1527 there was a lot of flashing.
1529 GUI: Scrollbar ident must be long for DEC Alpha.
1531 Some functions called vim_regcomp() without setting reg_magic, which could
1532 lead to unpredictable magicness.
1534 Crash when clicking around the status line, could get a selection with a
1537 When deleting more than one line characterwise, the last character wasn't
1540 GUI: Status line could be overwritten when moving the scrollbar quickly (or
1541 when 'wd' is non-zero).
1543 An ESC at the end of a ":normal" command caused a wait for a terminal code to
1544 finish. Now, a terminal code is not recognized when its start comes from a
1545 mapping or ":normal" command.
1547 Included patches from Robert Webb for GUI. Layout of the windows is now done
1548 inside Vim, instead of letting the layout manager do this. Makes Vim work
1551 UMR warning in set_expand_context().
1553 Memory leak: b_winlnum list was never freed.
1555 Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the
1556 terminal settings, and looked like it wasn't doing anything good. (suggested
1557 by Juergen Weigert).
1559 Ruler overwrote "is a directory" message. When starting up, and 'cmdheight'
1560 set to > 1, first message could still be in the last line.
1562 Removed prototype for putenv() from proto.h, it's already in osdef2.h.in.
1564 In replace mode, when moving the cursor and then backspacing, wrong characters
1567 Win32 GUI was checking for a CTRL-C too often, making it slow.
1569 Removed mappings for MS-DOS that were already covered by commands.
1571 When visually selecting all lines in a file, cursor at last line, then "J".
1572 Gave ml_get errors. Was a problem with scrolling down during redrawing.
1574 When doing a linewise operator, and then an operator with a mouse click, it
1575 was also linewise, instead of characterwise.
1577 When 'list' is set, the column of the ruler was wrong.
1579 Spurious error message for "/\(b\+\)*".
1581 When visually selected many lines, message from ":w file" disappeared when
1582 redrawing the screen.
1584 ":set <M-b>=^[b", then insert "^[b", waited for another character. And then
1585 inserted "<M-b>" instead of the real <M-b> character. Was trying to insert
1588 CTRL-W ] didn't use count to set window height.
1590 GUI: "-font" command-line argument didn't override 'guifont' setting from
1593 GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences
1594 fixed for the clipboard (Webb).
1596 Jumping from one help file to another help file, with 'compatible' set,
1597 removed the 'help' flag from the buffer.
1599 File-writable bit could be reset when using ":w!" for a readonly file.
1601 There was a wait for CTRL-O n in Insert mode, because the search pattern was
1603 Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed
1604 nothing was happening.
1606 ":recover" found same swap file twice.
1608 GUI: "*yy only worked the second time (when pasting to an xterm)."
1610 DJGPP version (dos32): The system flags were cleared.
1612 Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin).
1614 Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with
1617 <S-Tab> in the command-line worked like CTRL-P when no completion started yet.
1618 Now it does completion, last match first.
1620 Unix: Could get annoying "can't write viminfo" message after doing "su". Now
1621 the viminfo file is overwritten, and the user set back to the original one.
1623 ":set term=builtin_gui" started the GUI in a wrong way. Now it's not
1624 allowed anymore. But "vim -T gui" does start the GUI correctly now.
1626 GUI: Triple click after a line only put last char in selection, when it is a
1627 single character word.
1629 When the window is bigger than the screen, the scrolling up of messages was
1630 wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was
1631 obscured by another window.
1633 When using a wrong option only an error message is printed, to avoid that the
1634 usage information makes it scroll off the screen.
1636 When exiting because of not being able to read from stdin, didn't preserve the
1637 swap files properly.
1639 Visual selecting all chars in more than one line, then hit "x" didn't leave an
1640 empty line. For one line it did leave an empty line.
1642 Message for which autocommand is executing messed up file write message (for
1643 FileWritePost event).
1645 "vim -h" included "-U" even when GUI is not available, and "-l" when lisp is
1648 Crash for ":he <C-A>" (command-line longer than screen).
1650 ":s/this/that/gc", type "y" two times, then undo, did reset the modified
1651 option, even though the file is still modified.
1653 Empty lines in a tags file caused a ":tag" to be aborted.
1655 When hitting 'q' at the more prompt for ":menu", still scrolled a few lines.
1657 In an xterm that uses the bold trick a single row of characters could remain
1658 after an erased bold character. Now erase one extra char after the bold char,
1661 ":pop!" didn't work.
1663 When the reading a buffer was interrupted, ":w" should not be able to
1664 overwrite the file, ":w!" is required.
1666 ":cf%" caused a crash.
1668 ":gui longfilename", when forking is enabled, could leave part of the
1669 longfilename at the shell prompt.
1671 ==============================================================================
1672 VERSION 5.1 *version-5.1*
1674 Improvements made between version 5.0 and 5.1.
1676 This was mostly a bug-fix release, not many new features.
1679 Changed *changed-5.1*
1682 The expand() function now separates file names with <NL> instead of a space.
1683 This avoids problems for file names with embedded spaces. To get the old
1684 result, use substitute(expand(foo), "\n", " ", "g").
1686 For Insert-expanding dictionaries allow a backslash to be used for
1687 wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash.
1689 New icon for the Win32 GUI.
1691 ":tag", ":tselect" etc. only use the argument as a regexp when it starts
1692 with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub.
1693 regexp". Also, when the :tag argument contained wildcard characters, it was
1695 When using '/', the argument is taken literally too, with a higher priority,
1696 so it's found before wildcard matches.
1697 Only when the '/' is used are matches with different case found, even though
1698 'ignorecase' isn't set.
1699 Changed "g^]" to only do ":tselect" when there is more than on matching tag.
1701 Changed some of the default colors, because they were not very readable on a
1704 A character offset to a search pattern can move the cursor to the next or
1705 previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the
1708 Double-clicks in the status line do no longer start Visual mode. Dragging a
1709 status line no longer stops Visual mode.
1711 Perl interface: Buffers() and Windows() now use more logical arguments, like
1712 they are used in the rest of Vim (Moore).
1714 Init '" mark to the first character of the first line. Makes it possible to
1715 use '" in an autocommand without getting an error message.
1721 "shell_error" internal variable: result of last shell command.
1723 ":echohl" command: Set highlighting for ":echo".
1725 'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for
1726 status line of not-current window. Default is to use bold for current
1729 Added buffer_name() and buffer_number() functions (Aaron).
1730 Added flags argument "g" to substitute() function (Aaron).
1731 Added winheight() function.
1733 Win32: When an external command starts with "start ", no console is opened
1736 Win32 console: Use termcap codes for bold/reverse based on the current
1739 Configure check for "strip". (Napier)
1741 CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally,
1742 instead of as typed.
1744 Made a few "No match" error messages more informative by adding the pattern
1747 "make install" now also copies the macro files.
1749 tools/tcltags, a shell script to generate a tags file from a TCL file.
1751 "--with-tlib" setting for configure. Easy way to use termlib: "./configure
1752 --with-tlib=termlib".
1754 'u' flag in 'cino' for setting the indent for contained () parts.
1756 When Win32 OLE version can't load the registered type library, ask the user
1757 if he wants to register Vim now. (Erhardt)
1758 Win32 with OLE: When registered automatically, exit Vim.
1759 Included VisVim 1.1b, with a few enhancements and the new icon (Heiko
1762 Added patch from Vince Negri for Win32s support. Needs to be compiled with
1765 Perl interface: Added $curbuf. Rationalized Buffers() and Windows().
1766 (Moore) Added "group" argument to Msg().
1768 Included Perl files in DOS source archive. Changed Makefile.bor and
1769 Makefile.w32 to support building a Win32 version with Perl included.
1771 Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32
1772 versions, including OLE, Perl and Python.
1774 Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^].
1776 Added "g]" to always do ":tselect" for the ident under the cursor.
1777 Added ":tjump" and ":stjump" commands.
1778 Improved listing of ":tselect" when tag names are a bit long.
1780 Included patches for the Macintosh version. Also for Python interface.
1783 ":buf foo" now also restores cursor column, when the buffer was used before.
1785 Adjusted the Makefile for different final destinations for the syntax files
1786 and scripts (for Debian Linux).
1788 Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is
1789 used. This fixes that "VIM:" had to be assigned for the help files, and
1790 $VIM set for the syntax files. Now either of these work.
1792 Some xterms send vt100 compatible function keys F1-F4. Since it's not
1793 possible to detect this, recognize both type of keys and translate them to
1796 Added "VimEnter" autocommand. Executed after loading all the startup stuff.
1798 BeOS version now also runs on Intel CPUs (Seibert).
1804 ":ts" changed position in the tag stack when cancelled with <CR>.
1805 ":ts" changed the cursor position for CTRL-T when cancelled with <CR>.
1806 ":tn" would always jump to the second match. Was using the wrong entry in
1808 Doing "tag foo", then ":tselect", overwrote the original cursor position in
1811 "make install" changed the vim.1 manpage in a wrong way, causing "doc/doc"
1812 to appear for the documentation files.
1814 When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC
1815 mouse handling interfering.
1817 Was leaking memory when using selection in X11.
1819 CTRL-D halfway a command-line left some characters behind the first line(s)
1822 When expanding directories for ":set path=", put two extra backslashes
1823 before a space in a directory name.
1825 When 'lisp' set, first line of a function would be indented. Now its indent
1826 is set to zero. And use the indent of the first previous line that is at
1827 the same () level. Added test33.
1829 "so<Esc>u" in an empty file didn't work.
1831 DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe,
1832 because the swap file was made hidden. It's no longer hidden.
1834 ":global" command would sometimes not execute on a matching line. Happened
1835 when a data block is full in ml_replace().
1837 For AIX use a tgetent buffer of 2048 bytes, instead of 1024.
1839 Win32 gvim now only sets the console size for external commands to 25x80
1840 on Windows 95, not on NT.
1842 Win32 console: Dead key could cause a crash, because of a missing "WINAPI"
1845 The right mouse button started Visual mode, even when 'mouse' is empty, and
1846 in the command-line, a left click moved the cursor when 'mouse' is empty.
1847 In Visual mode, 'n' in 'mouse' would be used instead of 'v'.
1849 A blinking cursor or focus change cleared a non-Visual selection.
1851 CTRL-Home and CTRL-End didn't work for MS-DOS versions.
1853 Could include NUL in 'iskeyword', causing a crash when doing insert mode
1856 Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version.
1858 In mappings, CTRL-H was replaced by the backspace key code. This caused
1859 problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>".
1861 ":set t_Co=0" was not handled like a normal term. Now it's translated into
1862 ":set t_Co=", which works.
1864 For ":syntax keyword" the "transparent" option did work, although not
1865 mentioned in the help. But synID() returned wrong name.
1867 "gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and
1870 "gq" operator inserted screen lines in the wrong situation. Now screen
1871 lines are inserted or deleted when this speeds up displaying.
1873 cindent was wrong when an "if" contained "((".
1875 'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer
1876 list from removable media.
1878 Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project.
1879 Hand-edited to fix this...
1881 With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at
1882 the end of the line.
1884 Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP
1885 bug. That bug appears to have been fixed, therefore this translation has
1888 "/^*" didn't work (find '*' in first column).
1890 "<afile>" was not always set for autocommands. E.g., for ":au BufEnter *
1891 let &tags = expand("<afile>:p:h") . "/tags".
1893 In an xterm, the window may be a child of the outer xterm window. Use the
1894 parent window when getting the title and icon names. (Smith)
1896 When starting with "gvim -bg black -fg white", the value of 'background' is
1897 only set after reading the .gvimrc file. This causes a ":syntax on" to use
1898 the wrong colors. Now allow using ":gui" to open the GUI window and set the
1899 colors. Previously ":gui" in a gvimrc crashed Vim.
1901 tempname() returned the same name all the time, unless the file was actually
1902 created. Now there are at least 26 different names.
1904 File name used for <afile> was sometimes full path, sometimes file name
1905 relative to current directory.
1907 When 'background' was set after the GUI window was opened, it could change
1908 colors that were set by the user in the .gvimrc file. Now it only changes
1909 colors that have not been set by the user.
1911 Ignore special characters after a CSI in the GUI version. These could be
1912 interpreted as special characters in a wrong way. (St-Amant)
1914 Memory leak in farsi code, when using search or ":s" command.
1915 Farsi string reversing for a mapping was only done for new mappings. Now it
1916 also works for replacing a mapping.
1918 Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron)
1920 When BufDelete autocommands were executed, some things for the buffer were
1921 already deleted (esp. Perl stuff).
1923 Perl interface: Buffer specific items were deleted too soon; fixes "screen
1924 no longer exists" messages. (Moore)
1926 The Perl functions didn't set the 'modified' flag.
1928 link.sh did not return an error on exit, which may cause Vim to start
1929 installing, even though there is no executable to install. (Riehm)
1931 Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to
1932 'cpoptions'. Only for 'compatible' mode.
1934 ":echohl" defined a new group, when the argument was not an existing group.
1936 "syn on" and ":syn off" could move the cursor, if there is a hidden buffer
1937 that is shorter that the current cursor position.
1939 The " mark was not set when doing ":b file".
1941 When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at
1942 the end of the line made the nextgroup also be found in the next line.
1944 ":he g<CTRL-D>", then ":" and backspace to the start didn't redraw.
1946 X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the
1947 result is really reverse video (background darker than foreground).
1949 "cat link.sh | vim -" didn't set syntax highlighting.
1951 Win32: Expanding "file.sw?" matched ".file.swp". This is an error of
1952 FindnextFile() that we need to work around. (Kilgore)
1954 "gqgq" gave an "Invalid lnum" error on the last line.
1955 Formatting with "gq" didn't format the first line after a change of comment
1958 There was no check for out-of-memory in win_alloc().
1960 "vim -h" didn't mention "-register" and "-unregister" for the OLE version.
1962 Could not increase 'cmdheight' when the last window is only one line. Now
1963 other windows are also made smaller, when necessary.
1965 Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x.
1966 Changed return type of main() from void to int. (Nam)
1968 Using '~' twice in a substitute pattern caused a crash.
1970 "syn on" and ":syn off" could scroll the window, if there is a hidden buffer
1971 that is shorter that the current cursor position.
1973 ":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif".
1975 With two windows on modified files, with 'autowrite' set, cursor in second
1976 window, ":qa" gave a warning for the file in the first window, but then
1977 auto-wrote the file in the second window. (Webb)
1979 Win32 GUI scrollbar could only handle 32767 lines. Also makes the
1980 intellimouse wheel use the configurable number of scrolls. (Robinson)
1982 When using 'patchmode', and the backup file is on another partition, the file
1983 copying messed up the write-file message.
1985 GUI X11: Alt-Backspace and Alt-Delete didn't work.
1987 "`0" could put the cursor after the last character in the line, causing
1988 trouble for other commands, like "i".
1990 When completing tags in insert mode with ^X^], some matches were skipped,
1991 because the compare with other tags was wrong. E.g., when "mnuFileSave" was
1992 already there, "mnuFile" would be skipped. (Negri)
1994 When scrolling up/down, a syntax item with "keepend" didn't work properly.
1995 Now the flags are also stored for the syntax state a the start of each line.
1997 When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the
2000 Win32 GUI: Don't display "No write since last chance" in a message box, but in
2003 ==============================================================================
2004 VERSION 5.2 *version-5.2*
2006 Improvements made between version 5.1 and 5.2.
2009 Long lines editable *long-lines*
2012 A single long line that doesn't fit in the window doesn't show a line of @@@
2013 anymore. Redrawing starts at a character further on in the line, such that
2014 the text around the cursor can be seen. This makes it possible to edit these
2015 long lines when wrapping is on.
2018 File browser added *file-browser-5.2*
2021 The Win32, Athena and Motif GUI bring up a file requester if the user asks to
2022 ":browse" for the ":e", ":w", ":r", ":so", ":redirect" and
2023 ":mkexrc/vimrc/vsess" commands. ::browse e /foo/bar" opens the requester in
2024 the /foo/bar directory, so you can have nice mapping rhs's like ":browse so
2025 $vim/macros". If no initial dir specified for ":browse e", can be compiled to
2026 either begin in the current directory, or that of the current buffer. (Negri
2028 Added the 'browsedir' option, with value "current", "last" or "buffer". Tells
2029 whether a browse dialog starts in last used dir, dir of current buffer, or
2030 current dir. ":browse w" is unaffected.
2031 The default menus have been changed to use the ":browse" command.
2034 Dialogs added *dialogs-added*
2037 Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32,
2038 Athena and Motif GUI uses a window-dialog. All other platforms can use
2039 prompt in command-line. ":confirm qa" offers a choice to save all modified
2042 confirm() function: allows user access to the confirm engine.
2044 Added 'v' flag to 'guioptions'. When included, a vertical button layout is
2045 always used for the Win32 GUI dialog. Otherwise, a horizontal layout is
2048 Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace.
2049 To be used from a menu entry. (Negri)
2052 Popup menu added *popup-menu-added*
2055 When the 'mousemodel' option is set to "popup", the right mouse button
2056 displays the top level menu headed with "PopUp" as pop-up context menu. The
2057 "PopUp" menu is not displayed in the normal menu bar. This currently only
2058 works for Win32 and Athena GUI.
2061 Select mode added *new-Select-mode*
2064 A new mode has been added: "Select mode". It is like Visual mode, but typing
2065 a printable character replaces the selection.
2066 - CTRL-G can be used to toggle between Visual mode and Select mode.
2067 - CTRL-O can be used to switch from Select mode to Visual mode for one command.
2068 - Added 'selectmode' option: tells when to start Select mode instead of Visual
2070 - Added 'mousemodel' option: Change use of mouse buttons.
2071 - Added 'keymodel' option: tells to use shifted special keys to start a
2072 Visual or Select mode selection.
2073 - Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel'
2074 and 'keymodel' for MS-Windows and xterm behavior.
2075 - The xterm-like selection is now called modeless selection.
2076 - Visual mode mappings and menus are used in Select mode. They automatically
2077 switch to Visual mode first. Afterwards, reselect the area, unless it was
2078 deleted. The "gV" command can be used in a mapping to skip the reselection.
2079 - Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode.
2080 - Backspace in Select mode deletes the selected area.
2082 "mswin.vim" script. Sets behavior mostly like MS-Windows.
2085 Session files added *new-session-files*
2088 ":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the
2089 currently loaded buffers and current directory, so that :so'ing the file
2090 re-loads those files and cd's to that directory. Also stores and restores
2091 windows. File names are made relative to session file.
2092 The 'sessionoptions' option sets behavior of ":mksession". (Negri)
2095 User defined functions and commands *new-user-defined*
2096 -----------------------------------
2098 Added user defined functions. Defined with ":function" until ":endfunction".
2099 Called with "Func()". Allows the use of a variable number of arguments.
2100 Included support for local variables "l:name". Return a value with ":return".
2102 Call a function with ":call". When using a range, the function is called for
2103 each line in the range. |:call|
2104 "macros/justify.vim" is an example of using user defined functions.
2105 User functions do not change the last used search pattern or the command to be
2107 'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble
2108 (crash because of out-of-memory) when a function uses endless recursion.
2110 User definable Ex commands: ":command", ":delcommand" and ":comclear".
2111 (Moore) See |user-commands|.
2114 New interfaces *interfaces-5.2*
2117 Tcl interface. (Wilken) See |tcl|.
2118 Uses the ":tcl", ":tcldo" and "tclfile" commands.
2120 Cscope support. (Kahn) (Sekera) See |cscope|.
2121 Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg',
2122 'cscopetag', 'cscopetagorder' and 'cscopeverbose'.
2125 New ports *ports-5.2*
2128 Amiga GUI port. (Nielsen) Not tested much yet!
2130 RISC OS version. (Thomas Leonard) See |riscos|.
2131 This version can run either with a GUI or in text mode, depending upon where
2133 Deleted the "os_archie" files, they were not working anyway.
2136 Multi-byte support *new-multi-byte*
2139 MultiByte support for Win32 GUI. (Baek)
2140 The 'fileencoding' option decides how the text in the file is encoded.
2141 ":ascii" works for multi-byte characters. Multi-byte characters work on
2142 Windows 95, even when using the US version. (Aaron)
2143 Needs to be enabled in feature.h.
2144 This has not been tested much yet!
2147 New functions *new-functions-5.2*
2150 |browse()| puts up a file requester when available. (Negri)
2151 |escape()| escapes characters in a string with a backslash.
2152 |fnamemodify()| modifies a file name.
2153 |input()| asks the user to enter a line. (Aaron) There is a separate
2154 history for lines typed for the input() function.
2156 |argv()| can be used to access the argument list.
2157 |winbufnr()| buffer number of a window. (Aaron)
2158 |winnr()| window number. (Aaron)
2159 |matchstr()| Return matched string.
2160 |setline()| Set a line to a string value.
2163 New options *new-options-5.2*
2166 'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode.
2167 'browsedir' Tells in which directory a browse dialog starts.
2168 'confirm' when set, :q :w and :e commands always act as if ":confirm"
2173 'cscopeverbose' Set the |cscope| behavior.
2174 'filetype' RISC-OS specific type of file.
2176 'grepprg' For the |:grep| command.
2177 'keymodel' Tells to use shifted special keys to start a Visual or Select
2179 'listchars' Set character to show in 'list' mode for end-of-line, tabs and
2180 trailing spaces. (partly by Smith) Also sets character to
2181 display if a line doesn't fit when 'nowrap' is set.
2182 'matchpairs' Allows matching '<' with '>', and other single character
2184 'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the
2185 focus with a keyboard command moves the pointer to that
2186 window. Also move the pointer when changing the window layout
2187 (split window, change window height, etc.).
2188 'mousemodel' Change use of mouse buttons.
2189 'selection' When set to "inclusive" or "exclusive", the cursor can go one
2190 character past the end of the line in Visual or Select mode.
2191 When set to "old" the old behavior is used. When
2192 "inclusive", the character under the cursor is included in the
2193 operation. When using "exclusive", the new "ve" entry of
2194 'guicursor' is used. The default is a vertical bar.
2195 'selectmode' Tells when to start Select mode instead of Visual mode.
2196 'sessionoptions' Sets behavior of ":mksession". (Negri)
2197 'showfulltag' When completing a tag in Insert mode, show the tag search
2198 pattern (tidied up) as a choice as well (if there is one).
2199 'swapfile' Whether to use a swap file for a buffer.
2200 'syntax' When it is set, the syntax by that name is loaded. Allows for
2201 setting a specific syntax from a modeline.
2202 'ttymouse' Allows using xterm mouse codes for terminals which name
2203 doesn't start with "xterm".
2204 'wildignore' List of patterns for files that should not be completed at
2206 'wildmode' Can be used to set the type of expansion for 'wildchar'.
2207 Replaces the CTRL-T command for command line completion.
2208 Don't beep when listing all matches.
2209 'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled
2210 entirely by the window system. When "no", ALT keys are never
2211 used by the window system. When "menu" it depends on whether
2212 a key is a menu shortcut.
2213 'winminheight' Minimal height for each window. Default is 1. Set to 0 if
2214 you want zero-line windows. Scrollbar is removed for
2215 zero-height windows. (Negri)
2219 New Ex commands *new-ex-commands-5.2*
2222 |:badd| Add file name to buffer list without side effects. (Negri)
2223 |:behave| Quickly set MS-Windows or xterm behavior.
2224 |:browse| Use file selection dialog.
2225 |:call| Call a function, optionally with a range.
2227 |:colder| To access a stack of quickfix error lists.
2228 |:comclear| Clear all user-defined commands.
2229 |:command| Define a user command.
2230 |:continue| Go back to ":while".
2231 |:confirm| Ask confirmation if something unexpected happens.
2232 |:cscope| Execute cscope command.
2233 |:cstag| Use cscope to jump to a tag.
2234 |:delcommand| Delete a user-defined command.
2235 |:delfunction| Delete a user-defined function.
2236 |:endfunction| End of user-defined function.
2237 |:function| Define a user function.
2238 |:grep| Works similar to ":make". (Negri)
2239 |:mksession| Create a session file.
2240 |:nohlsearch| Stop 'hlsearch' highlighting for a moment.
2241 |:Print| This is Vi compatible. Does the same as ":print".
2242 |:promptfind| Search dialog (Win32 GUI).
2243 |:promptrepl| Search/replace dialog (Win32 GUI).
2244 |:return| Return from a user-defined function.
2245 |:simalt| Win32 GUI: Simulate alt-key pressed. (Negri)
2246 |:smagic| Like ":substitute", but always use 'magic'.
2247 |:snomagic| Like ":substitute", but always use 'nomagic'.
2248 |:tcl| Execute TCL command.
2249 |:tcldo| Execute TCL command for a range of lines.
2250 |:tclfile| Execute a TCL script file.
2251 |:tearoff| Tear-off a menu (Win32 GUI).
2253 |:tunmenu| Win32 GUI: menu tooltips. (Negri)
2254 |:star| :* Execute a register.
2257 Changed *changed-5.2*
2261 buffer_exists() -> bufexists()
2262 buffer_name() -> bufname()
2263 buffer_number() -> bufnr()
2264 file_readable() -> filereadable()
2265 highlight_exists() -> hlexists()
2266 highlightID() -> hlID()
2267 last_buffer_nr() -> bufnr("$")
2268 The old ones are still there, for backwards compatibility.
2270 The CTRL-_ command in Insert and Command-line mode is only available when the
2271 new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_
2272 accidentally enter reverse Insert mode, and don't know how to get out.
2274 When a file name path in ":tselect" listing is too long, remove a part in the
2275 middle and put "..." there.
2277 Win32 GUI: Made font selector appear inside Vim window, not just any odd
2280 ":bn" skips help buffers, unless currently in a help buffer. (Negri)
2282 When there is a status line and only one window, don't show '^' in the status
2283 line of the current window.
2285 ":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an
2286 alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible.
2288 When 'insertmode' is set, using CTRL-O to execute a mapping will work like
2289 'insertmode' was not set. This allows "normal" mappings to be used even when
2290 'insertmode' is set.
2292 When 'mouse' was set already (e.g., in the .vimrc file), don't automatically
2293 set 'mouse' when the GUI starts.
2295 Removed the 'N', 'I' and 'A' flags from the 'mouse' option.
2297 Renamed "toggle option" to "boolean option". Some people thought that ":set
2298 xyz" would toggle 'xyz' on/off each time.
2300 The internal variable "shell_error" contains the error code from the shell,
2301 instead of just 0 or 1.
2303 When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>".
2304 That is not very useful. Now the CTRL key is ignored and a <CR> is inserted.
2305 Same for all other "normal" keys with modifiers. Mapping these modified key
2306 combinations is still possible.
2307 In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then
2308 the special character.
2310 Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They
2311 are now installed like other documentation files.
2313 winheight() function returns -1 for a non-existing window. It used to be
2314 zero, but that is a valid height now.
2316 The default for 'selection' is "inclusive", which makes a difference when
2317 using "$" or the mouse to move the cursor in Visual mode.
2319 ":q!" does not exit when there are changed buffers which are hidden. Use
2320 ":qa!" to exit anyway.
2322 Disabled the Perl/Python/Tcl interfaces by default. Not many people use them
2323 and they make the executable a lot bigger. The internal scripting language is
2324 now powerful enough for most tasks.
2326 The strings from the 'titlestring' and 'iconstring' options are used
2327 untranslated for the Window title and icon. This allows for including a <CR>.
2328 Previously a <CR> would be shown as "^M" (two characters).
2330 When a mapping is started in Visual or Select mode which was started from
2331 Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode
2332 until the mapping has ended. Makes it possible to use a mapping in Visual
2333 mode that also works when the Visual mode was started from Select mode.
2335 Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps
2336 when defining menus in the .vimrc file, or when sourcing mswin.vim.
2338 Unix: Use /var/tmp for .swp files, if it exists. Files there survive a
2339 reboot (at least on Linux).
2345 --with-motif-lib configure argument. Allows for using a static Motif library.
2347 Support for mapping numeric keypad +,-,*,/ keys. (Negri)
2348 When not mapped, they produce the normal character.
2350 Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer.
2353 Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be
2356 In the output of ":map", highlight the "*" to make clear it's not part of the
2359 When showing the Visual area, the cursor is not switched off, so that it can
2360 be located. The Visual area is now highlighted with a grey background in the
2361 GUI. This makes the cursor visible when it's also reversed.
2363 Win32: When started with single full pathname (e.g. via double-clicked file),
2364 cd to that file's directory. (Negri)
2366 Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri)
2367 't' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif.
2368 It's included by default.
2369 Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri)
2371 Added ^Kaa and ^KAA digraphs.
2372 Added "euro" symbol to digraph.c. (Corry)
2374 Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis).
2375 Other GUIs ignore '&' in a menu name.
2377 DJGPP: Faster screen updating (John Lange).
2379 Clustering of syntax groups ":syntax cluster" (Bigham).
2380 Including syntax files: ":syntax include" (Bigham).
2382 Keep column when switching buffers, when 'nosol' is set (Radics).
2384 Number function for Perl interface.
2386 Support for Intellimouse in Athena GUI. (Jensen)
2388 ":sleep" also accepts an argument in milliseconds, when "m" is used.
2390 Added 'p' flag in 'guioptions': Install callbacks for enter/leave window
2391 events. Makes cursor blinking work for Terhaar, breaks it for me.
2393 "--help" and "--version" command-line arguments.
2395 Non-text in ":list" output is highlighted with NonText.
2397 Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as
2398 synonym for "iB". New: "i<" and "i>", to select <thing>. All this also for
2401 'O' flag in 'shortmess': message for reading a file overwrites any previous
2404 Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off.
2405 Included a list with self-made toolbar bitmaps. (Negri)
2407 Added menu priority for sub-menus. Implemented for Win32 and Motif GUI.
2408 Display menu priority with ":menu" command.
2409 Default and Syntax menus now include priority for items. Allows inserting
2410 menu items in between the default ones.
2412 When the 'number' option is on, highlight line numbers with the LineNr group.
2414 "Ignore" highlight group: Text highlighted with this is made blank. It is
2415 used to hide special characters in the help text.
2417 Included Exuberant Ctags version 2.3, with C++ support, Java support and
2418 recurse into directories. (Hiebert)
2420 When a tags file is not sorted, and this is detected (in a simplistic way), an
2421 error message is given.
2423 ":unlet" accepts a "!", to ignore non-existing variables, and accepts more
2424 than one argument. (Roemer)
2425 Completion of variable names for ":unlet". (Roemer)
2427 When there is an error in a function which is called by another function, show
2428 the call stack in the error message.
2430 New file name modifiers:
2431 ":.": reduce file name to be relative to current dir.
2432 ":~": reduce file name to be relative to home dir.
2433 ":s?pat?sub?": substitute "pat" with "sub" once.
2434 ":gs?pat?sub?": substitute "pat" with "sub" globally.
2436 New configure arguments: --enable-min-features and --enable-max-features.
2437 Easy way to switch to minimum or maximum features.
2439 New compile-time feature: modify_fname. For file name modifiers, e.g,
2440 "%:p:h". Can be disabled to save some code (16 bit DOS).
2442 When using whole-line completion in Insert mode, and 'cindent' is set, indent
2445 MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri)
2447 Included new set of Farsi fonts. (Shiran)
2449 Accelerator text now also works in Motif. All menus can be defined with & for
2450 mnemonic and TAB for accelerator text. They are ignored on systems that don't
2452 When removing or replacing a menu, compare the menu name only up to the <Tab>
2453 before the mnemonic.
2455 'i' and 'I' flags after ":substitute": ignore case or not.
2457 "make install" complains if the runtime files are missing.
2459 Unix: When finding an existing swap file that can't be opened, mention the
2460 owner of the file in the ATTENTION message.
2462 The 'i', 't' and 'k' options in 'complete' now also print the place where they
2463 are looking for matches. (Acevedo)
2465 "gJ" command: Join lines without inserting a space.
2467 Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed
2468 when no count given, the count is added otherwise. Configure checks if "man
2469 -s 2 read" works, and sets the default for 'keywordprg' accordingly.
2471 If you do a ":bd" and there is only one window open, Vim tries to move to a
2472 buffer of the same type (i.e. non-help to non-help, help to help), for
2473 consistent behavior to :bnext/:bprev. (Negri)
2475 Allow "<Nop>" to be used as the rhs of a mapping. ":map xx <Nop>", maps "xx"
2478 In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu
2479 path. This makes it more easy to type, no backslash needed.
2481 POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:],
2482 [:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:],
2483 [:space:], [:upper:] and [:xdigit:]. (Briscoe)
2485 regexp character classes (for fast syntax highlight matching):
2486 digits: \d [0-9] \D not digit (Roemer)
2487 hex: \x [0-9a-fA-F] \X not hex
2488 octal: \o [0-7] \O not octal
2489 word: \w [a-zA-Z0-9_] \W not word
2490 head: \h [a-zA-Z_] \H not head
2491 alphabetic: \a [a-zA-Z] \A not alphabetic
2492 lowercase: \l [a-z] \L not lowercase
2493 uppercase: \u [A-Z] \U not uppercase
2495 ":set" now accepts "+=", |^=" and "-=": add or remove parts of a string
2496 option, add or subtract a number from a number option. A comma is
2497 automagically inserted or deleted for options that are a comma separated list.
2499 Filetype feature, for autocommands. Uses a file type instead of a pattern to
2500 match a file. Currently only used for RISC OS. (Leonard)
2502 In a pattern for an autocommand, environment variables can be used. They are
2503 expanded when the autocommand is defined.
2505 "BufFilePre" and "BufFilePost" autocommand evens: Before and after applying
2506 the ":file" command to change the name of a buffer.
2507 "VimLeavePre" autocommand event: before writing the .viminfo file.
2509 For autocommands argument: <abuf> is buffer number, like <afile>.
2511 Made syntax highlighting a bit faster when scrolling backwards, by keeping
2512 more syncing context.
2514 Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or
2515 inserting screen lines.
2517 GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved
2520 Included ":highlight" in bugreport.vim.
2522 Created install.exe program, for simplistic installation on DOS and
2525 New register: '_', the black hole. When writing to it, nothing happens. When
2526 reading from it, it's always empty. Can be used to avoid a delete or change
2527 command to modify the registers, or reduce memory use for big changes.
2529 CTRL-V xff enters character by hex number. CTRL-V o123 enters character by
2530 octal number. (Aaron)
2532 Improved performance of syntax highlighting by skipping check for "keepend"
2533 when there isn't any.
2535 Moved the mode message ("-- INSERT --") to the last line of the screen. When
2536 'cmdheight' is more than one, messages will remain readable.
2538 When listing matching files, they are also sorted on 'suffixes', such that
2539 they are listed in the same order as CTRL-N retrieves them.
2541 synIDattr() takes a third argument (optionally), which tells for which
2542 terminal type to get the attributes for. This makes it possible to run
2543 2html.vim outside of gvim (using color names instead of #RRGGBB).
2545 Memory profiling, only for debugging. Prints at exit, and with "g^A" command.
2548 DOS: When using a file in the current drive, remove the drive name:
2549 "A:\dir\file" -> "\dir\file". This helps when moving a session file on a
2550 floppy from "A:\dir" to "B:\dir".
2552 Increased number of remembered jumps from 30 to 50 per window.
2554 Command to temporarily disable 'hls' highlighting until the next search:
2557 "gp" and "gP" commands: like "p" and "P", but leave the cursor just after the
2558 inserted text. Used for the CTRL-V command in MS-Windows mode.
2564 Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed
2565 this, Windows will handle the bold text anyway. (Negri)
2567 patch 5.1.1: Win32s GUI: pasting caused a crash (Negri)
2569 patch 5.1.2: When entering another window, where characters before the cursor
2570 have been deleted, could have a cursor beyond the end of the line.
2572 patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri)
2574 patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version
2577 patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that
2578 doesn't fit in the window, and splitting that line in two.
2580 patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line
2581 (so that the window scrolls horizontally), ":set wrap". Following Visual
2582 selection was wrong.
2584 patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do
2587 patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler.
2589 patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear.
2591 patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer
2592 without a name exists.
2594 patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted
2595 "make shadow" for the links in the ctags directory.
2597 patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a
2600 patch 5.1.13: When completing file names on the command-line, reallocating the
2601 command-line may go wrong.
2603 patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch
2606 Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to
2607 Fullname_save(). (Negri)
2609 Win32: ":!start" to invoke a program without opening a console, swapping
2610 screens, or waiting for completion in either console or gui version, e.g. you
2611 can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning
2612 a shell" bug. (enhancement of Aaron patch) (Negri)
2614 Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri)
2616 Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c"
2617 displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri)
2619 Win32 GUI: No copy to Windows clipboard when it's not desired.
2621 Win32s: Fix pasting from clipboard - made an assumption not valid under
2624 Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing
2627 Win32 GUI: Middle mouse button emulation now works in GUI! (Negri)
2629 Could skip messages when combining commands in one line, e.g.:
2630 ":echo "hello" | write".
2632 Perl interpreter was disabled before executing VimLeave autocommands. Could
2633 not use ":perl" in them. (Aaron)
2635 Included patch for the Intellimouse (Aaron/Robinson).
2637 Could not set 'ls' to one, when last window has only one line. (Mitterand)
2639 Fixed a memory leak when removing menus.
2641 After ":only" the ruler could overwrite a message.
2643 Dos32: removed changing of __system_flags. It appears to work better when
2644 it's left at the default value.
2646 p_aleph was an int instead of along, caused trouble on systems where
2647 sizeof(int) != sizeof(long). (Schmidt)
2649 Fixed enum problems for Ultrix. (Seibert)
2651 Small redraw problem: "dd" on last line in file cleared wrong line.
2653 Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 |
2656 Command "+|" on the last line of the file caused ml_get errors.
2658 Memory underrun in eval_vars(). (Aaron)
2660 Don't rename files in a difficult way, except on Windows 95 (was also done on
2663 Win32 GUI: An external command that produces an error code put the error
2664 message in a dialog box. had to close the window and close the dialog. Now
2665 the error code is displayed in the console. (Negri)
2667 "comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle)
2669 In Insert mode, when entering a window in Insert mode, allow the cursor to be
2670 one char beyond the text.
2672 Renamed machine dependent rename() to mch_rename(). Define mch_rename() to
2673 rename() when it works properly.
2675 Rename vim_chdir() to mch_chdir(), because it's machine dependent.
2677 When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more
2678 files to edit" error.
2680 In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed.
2681 Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins)
2683 Give an error message for an unknown argument after "--". E.g. for "vim
2686 The FileChangedShell autocommand didn't set <afile> to the name of the changed
2689 When doing ":e file", causing the attention message, there sometimes was no
2690 hit-enter prompt. Caused by empty line or "endif" at end of sourced file.
2692 A large number of patches for the VMS version. (Hunsaker)
2694 When CTRL-L completion (find longest match) results in a shorter string, no
2695 completion is done (happens with ":help").
2697 Crash in Win32 GUI version, when using an Ex "@" command, because
2698 LinePointers[] was used while not initialized.
2700 Win32 GUI: allow mapping of Alt-Space.
2702 Output from "vim -h" was sent to stderr. Sending it to stdout is better, so
2703 one can use "vim -h | more".
2705 In command-line mode, ":vi[!]" should reload the file, just like ":e[!]".
2706 In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi
2709 When using a ":set ls=1" in the .gvimrc file, would get a status line for a
2710 single window. (Robinson)
2712 Didn't give an error message for ":set ai,xx". (Roemer)
2713 Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx".
2715 Non-Unix systems: That a file exists but is unreadable is recognized as "new
2716 file". Now check for existence when file can't be opened (like Unix).
2718 Unix: osdef.sh didn't handle declarations where the function name is at the
2719 first column of the line.
2721 DJGPP: Shortening of file names didn't work properly, because get_cwd()
2722 returned a path with backslashes. (Negri)
2724 When using a 'comments' part where a space is required after the middle part,
2725 always insert a space when starting a new line. Helps for C comments, below a
2728 Replacing path of home directory with "~/" could be wrong for file names
2729 with embedded spaces or commas.
2731 A few fixes for the Sniff interface. (Leherbauer)
2733 When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused
2734 trouble. Same for ":s/x/y/c" prompt.
2736 With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks,
2737 instead of the characters specified with 'listchars'. Also for other
2738 characters that take more than one screen character.
2740 When setting 'guifont' to an unknown font name, the previous font was lost and
2741 a default font would be used. (Steed)
2743 DOS: Filenames in the root directory didn't get shortened properly. (Negri)
2745 DJGPP: making a full path name out of a file name didn't work properly when
2746 there is no _fullpath() function. (Negri)
2748 Win32 console: ":sh" caused a crash. (Negri)
2750 Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably
2751 (could hang Windows 95). (Negri)
2753 Win32: The change-drive function was not correct, went to the wrong drive.
2756 GUI: When editing a command line in Ex mode, Tabs were sometimes not
2757 backspaced properly, and unprintable characters were displayed directly.
2758 non-GUI can still be wrong, because a system function is called for this.
2760 ":set" didn't stop after an error. For example ":set no ai" gave an error for
2761 "no", but still set "ai". Now ":set" stops after the first error.
2763 When running configure for ctags, $LDFLAGS wasn't passed to it, causing
2766 "@%" and "@#" when file name not set gave an error message. Now they just
2767 return an empty string. (Steed)
2769 CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers.
2772 ":echo" always started with a blank.
2774 Updating GUI cursor shape didn't always work (e.g., when blinking is off).
2776 In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line. Also
2777 a few other commands that explicitly print a text line didn't work. Made this
2780 Win32 version of _chdrive() didn't return correct value. (Tsindlekht)
2782 When using 't' in 'complete' option, no longer give an error message for a
2785 Unix: tgoto() can return NULL, which was not handled correctly in configure.
2787 When doing ":help" from a buffer where 'binary' is set, also edited the help
2788 file in binary mode. Caused extra ^Ms for DOS systems.
2790 Cursor position in a file was reset to 1 when closing a window.
2792 ":!ls" in Ex mode switched off echo.
2794 When doing a double click in window A, while currently in window B, first
2795 click would reset double click time, had to click three times to select a
2798 When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be
2799 used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add
2800 a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a
2803 Gave confusing error message for ":set guifont=-*-lucida-*": first "font is
2804 not fixed width", then "Unknown font".
2806 Some options were still completely left out, instead of included as hidden
2809 While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after
2810 executing an external command (in rare cases).
2812 In os_unixx.h, signal() was defined to sigset(), while it already was.
2814 Memory leak when executing autocommands (was reported as a memory leak in
2815 syntax highlighting).
2817 Didn't print source of error sometimes, because pointers were the same,
2818 although names were different.
2820 Avoid a number of UMR errors from Purify (third argument to open()).
2822 A swap file could still be created just after setting 'updatecount' to zero,
2823 when there is an empty buffer and doing ":e file". (Kutschera)
2825 Test 35 failed on 64 bit machines. (Schild)
2827 With "p" and "P" commands, redrawing was slow.
2829 Awk script for html documentation didn't work correctly with AIX awk.
2830 Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe)
2831 The makehtml.awk script had a small problem, causing extra lines to be
2834 "gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a
2835 wrong way. Also made "gqq" work to be consistent with "guu".
2837 C indent was wrong after "case ':':".
2839 ":au BufReadPre *.c put": Line from put text was deleted, because the buffer
2840 was still assumed to be empty.
2842 Text pasted with the Edit/Paste menu was subject to 'textwidth' and
2843 'autoindent'. That was inconsistent with using the mouse to paste. Now "*p
2846 When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag,
2849 ":ts" got stuck on a tags line that has two extra fields.
2851 In Insert mode, with 'showmode' on, <C-O><C-G> message was directly
2852 overwritten by mode message, if preceded with search command warning message.
2854 When putting the result of an expression with "=<expr>p, newlines were
2855 inserted like ^@ (NUL in the file). Now the string is split up in lines at
2858 putenv() was declared with "const char *" in pty.c, but with "char *" in
2859 osdef2.h.in. Made the last one also "const char *".
2861 ":help {word}", where +{word} is a feature, jumped to the feature list instead
2862 of where the command was explained. E.g., ":help browse", ":help autocmd".
2864 Using the "\<xx>" form in an expression only got one byte, even when using a
2865 special character that uses several bytes (e.g., "\<F9>").
2866 Changed "\<BS>" to produce CTRL-H instead of the special key code for the
2867 backspace key. "\<Del>" produces 0x7f.
2869 ":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'.
2871 The shell syntax didn't contain a "syn sync maxlines" setting. In a long file
2872 without recognizable items, syncing took so long it looked like Vim hangs.
2873 Added a maxlines setting, and made syncing interruptible.
2875 The "gs" command didn't flush output before waiting.
2878 ":if 0 | let a = b . c | endif"
2880 ":so {file}" where {file} contains a ":while"
2882 GUI: allocated fonts were never released. (Leonard)
2885 - Changed $(DEFINES) into a list of "-D" options, so that it can also be used
2886 for the resource compiler. (not tested!)
2887 - "bcc.cfg" was used for all configurations. When building for another
2888 configuration, the settings for the previous one would be used. Moved
2889 "bcc.cfg" to the object directory. (Geddes)
2890 - Included targets for vimrun, install, ctags and xxd. Changed the default to
2891 use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron)
2893 "2*" search for the word under the cursor with "2" prepended. (Leonard)
2895 When deleting into a specific register, would still overwrite the non-Win32
2896 GUI selection. Now ""x"*P works.
2898 When deleting into the "" register, would write to the last used register.
2899 Now ""x always writes to the unnamed register.
2901 GUI Athena: A submenu with a '.' in it didn't work. E.g.,
2902 ":amenu Syntax.XY\.Z.foo lll".
2904 When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of
2905 matching tags could change, because the current file is different. Now the
2906 existing matches are kept in the same order, newly found matches are added
2907 after them, not matter what the current file is.
2909 ":ta" didn't find the second entry in a tags file, if the second entry was
2910 longer than the first one.
2912 When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the
2913 wrong position. can_si was still TRUE when the cursor is not in the indent of
2916 Running an external command in Win32 version had the problem that Vim exits
2917 when the X on the console is hit (and confirmed). Now use the "vimrun"
2918 command to start the external command indirectly. (Negri)
2920 Win32 GUI: When running an external filter, do it in a minimized DOS box.
2923 ":let" listed variables without translation into printable characters.
2925 Win32 console: When resizing the window, switching back to the old size
2926 (when exiting or executing an external command) sometimes failed. (Negri)
2927 This appears to also fix a "non fixable" problem:
2928 Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar,
2929 the scrollbar disappeared and was not restored when Vim exits. This does work
2930 under NT 3.51, it appears not to be a Vim problem.
2932 When executing BufDelete and BufUnload autocommands for a buffer without a
2933 name, the name of the current buffer was used for <afile>.
2935 When jumping to a tag it reported "tag 1 of >2", while in fact there could be
2936 only two matches. Changed to "tag 1 of 2 or more".
2938 ":tjump tag" did a linear search in the tags file, which can be slow.
2940 Configure didn't find "LibXm.so.2.0", a Xm library with a version number.
2942 Win32 GUI: When using a shifted key with ALT, the shift modifier would remain
2943 set, even when it was already used by changing the used key. E.g., "<M-S-9>"
2944 resulted in "<M-S-(>", but it should be "<M-(>". (Negri)
2946 A call to ga_init() was often followed by setting growsize and itemsize.
2947 Created ga_init2() for this, which looks better. (Aaron)
2949 Function filereadable() could call fopen() with an empty string, which might
2952 X Windows GUI: When executing an external command that outputs text, could
2953 write one character beyond the end of a buffer, which caused a crash. (Kohan)
2955 When using "*" or "#" on a string that includes '/' or '?' (when these are
2956 included in 'isk'), they were not escaped. (Parmelan)
2958 When adding a ToolBar menu in the Motif GUI, the submenu_id field was not
2959 cleared, causing random problems.
2961 When adding a menu, the check if this menu (or submenu) name already exists
2962 didn't compare with the simplified version (no mnemonic or accelerator) of the
2963 new menu. Could get two menus with the same name, e.g., "File" and "&File".
2965 Breaking a line because of 'textwidth' at the last line in the window caused a
2966 redraw of the whole window instead of a scroll. Speeds up normal typing with
2967 'textwidth' a lot for slow terminals.
2969 An invalid line number produced an "invalid range" error, even when it wasn't
2970 to be executed (inside "if 0").
2972 When the unnamed, first buffer is re-used, the "BufDelete" autocommand was
2973 not called. It would stick in a buffer list menu.
2975 When doing "%" on the NUL after the line, a "{" or "}" in the last character
2976 of the line was not found.
2978 The Insert mode menu was not used for the "s" command, the Operator-pending
2979 menu was used instead.
2981 With 'compatible' set, some syntax highlighting was not correct, because of
2982 using "[\t]" for a search pattern. Now use the regexps for syntax
2983 highlighting like the 'cpoptions' option is empty (as was documented already).
2985 When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't
2986 show any lhs for the mapping (if 'isprint' includes 160). Now always use
2987 <Space> and <M-Space>, even when they are printable.
2989 Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for
2990 Athena, where menus don't wrap).
2992 When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and
2993 digits, repeating the insert didn't work.
2995 The file "tools/ccfilter.README.txt" could not be unpacked when using short
2996 file names, because of the two dots. Renamed it to
2997 "tools/ccfilter_README.txt".
2999 For a dark 'background', using Blue for Directory and SpecialKey highlight
3000 groups is not very readable. Use Cyan instead.
3002 In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into
3003 a block with a local variable. That's illegal for some compilers.
3005 Win32 GUI: There was a row of pixels at the bottom of the window which was not
3008 Under DOS, editing "filename/" created a swap file of "filename/.swp". Should
3011 Win32 GUI: pointer was hidden when executing an external command.
3013 When 'so' is 999, "J" near the end of the file didn't redisplay correctly.
3015 ":0a" inserted after the first line, instead of before the first line.
3017 Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now
3018 ":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*').
3019 ":file {o}{n}{e}" now results in file name "one".
3021 Memory leak when setting a string option back to its default value.
3023 ==============================================================================
3024 VERSION 5.3 *version-5.3*
3026 Version 5.3 was a bug-fix version of 5.2. There are not many changes.
3027 Improvements made between version 5.2 and 5.3:
3029 Changed *changed-5.3*
3032 Renamed "IDE" menu to "Tools" menu.
3038 Win32 GUI: Give a warning when Vim is activated, and one of the files changed
3039 since editing started. (Negri)
3045 5.2.1: Win32 GUI: space for external command was not properly allocated, could
3046 cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after
3049 5.2.2: Some commands didn't complain when used without an argument, although
3050 they need one: ":badd", ":browse", ":call", ":confirm", ":behave",
3051 ":delfunction", ":delcommand" and ":tearoff".
3052 ":endfunction" outside of a function gave wrong error message: "Command not
3053 implemented". Should be ":endfunction not inside a function".
3055 5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path
3056 with a space in it, executing external commands with vimrun didn't work.
3058 5.2.4: Pasting with the mouse in Insert mode left the cursor on the last
3059 pasted character, instead of behind it.
3061 5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left
3062 didn't include the last character in the selection.
3064 5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which
3065 includes the last character in the line, the cursor could be left on the last
3066 character in the line, instead of just after it.
3068 5.2.7: Win32 GUI: scrollbar was one pixel too big.
3070 5.2.8: Completion of "PopUp" menu showed the derivates "PopUpc", "PopUPi",
3071 etc. ":menu" also showed these.
3073 5.2.9: When using two input() functions on a row, the prompt would not be
3076 5.2.10: A loop with input() could not be broken with CTRL-C.
3078 5.2.11: ":call asdf" and ":call asdf(" didn't give an error message.
3080 5.2.12: Recursively using ":normal" crashes Vim after a while. E.g.:
3081 ":map gq :normal gq<CR>"
3083 5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using
3084 ":help", then "/\k*" in another window with 'hlsearch' set.
3086 5.2.14: When using ":source" from a function, global variables would not be
3087 available unless "g:" was used.
3089 5.2.15: XPM files can have the extension ".pm", which is the same as for Perl
3090 modules. Added "syntax/pmfile.vim" to handle this.
3092 5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an
3093 empty buffer. mch_Fullname() didn't append a slash at the end of a directory
3096 Should include the character under the cursor in the Visual area when using
3097 'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f".
3099 ""p would always put register 0, instead of the unnamed (last used) register.
3100 Reverse the change that ""x doesn't write in the unnamed (last used) register.
3101 It would always write in register 0, which isn't very useful. Use "-x for the
3102 paste mappings in Visual mode.
3104 When there is one long line on the screen, and 'showcmd' is off, "0$" didn't
3107 Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor
3108 shape is changed. (Negri)
3110 When cancelling Visual mode, and the cursor moves to the start, the wanted
3111 column wasn't set, "k" or "j" moved to the wrong column.
3113 When using ":browse" or ":confirm", was checking for a comment and separating
3114 bar, which can break some commands.
3116 Included fixes for Macintosh. (Kielhorn)
3118 ==============================================================================
3119 VERSION 5.4 *version-5.4*
3121 Version 5.4 adds new features, useful changes and a lot of bug fixes.
3124 Runtime directory introduced *new-runtime-dir*
3125 ----------------------------
3127 The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM.
3128 You normally don't set $VIMRUNTIME but let Vim find it, by using
3129 $VIM/vim{version}, or use $VIM when that doesn't exist. This allows for
3130 separating the user files from the distributed files and makes it more easy to
3131 upgrade to another version. It also makes it possible to keep two versions of
3132 Vim around, each with their own runtime files.
3134 In the Unix distribution the runtime files have been moved to the "runtime"
3135 directory. This makes it possible to copy all the runtime files at once,
3136 without the need to know what needs to be copied.
3138 The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level
3139 "vim" directory. This is to make clear that user-modified files should be put
3140 here. The directory that contains the executables doesn't have '-' or '.'
3141 characters. This avoids strange extensions.
3143 The $VIM and $VIMRUNTIME variables are set when they are first used. This
3144 allows them to be used by Perl, for example.
3146 The runtime files are also found in a directory called "$VIM/runtime". This
3147 helps when running Vim after just unpacking the runtime archive. When using
3148 an executable in the "src" directory, Vim checks if "vim54" or "runtime" can
3149 be added after removing it. This make the runtime files be found just after
3152 A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful
3153 if $VIM doesn't point to above the runtime directory but to e.g., "/etc/".
3156 Filetype introduced *new-filetype-5.4*
3159 Syntax files are now loaded with the new FileType autocommand. Old
3160 "mysyntaxfile" files will no longer work. |filetypes|
3162 The scripts for loading syntax highlighting have been changed to use the
3163 new Syntax autocommand event.
3165 This combination of Filetype and Syntax events allows tuning the syntax
3166 highlighting a bit more, also when selected from the Syntax menu. The
3167 FileType autocommand can also be used to set options and mappings specifically
3168 for that type of file.
3170 The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The
3171 ":filetype on" command has been added for this. ":syntax on" also loads it.
3173 The 'filetype' option has been added. It is used to trigger the FileType
3174 autocommand event, like the 'syntax' option does for the Syntax event.
3176 ":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch
3177 syntax highlighting on/off for the current file.
3179 The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax
3180 menu is included both when ":filetype on" and when ":syntax manual" is used.
3182 Renamed the old 'filetype' option to 'osfiletype'. It was only used for
3183 RISCOS. 'filetype' is now used for the common file type.
3185 Added the ":syntax manual" command. Allows manual selection of the syntax to
3186 be used, e.g., from a modeline.
3189 Vim script line continuation *new-line-continuation*
3190 ----------------------------
3192 When an Ex line starts with a backslash, it is concatenated to the previous
3193 line. This avoids the need for long lines. |line-continuation| (Roemer)
3195 if has("dialog_con") ||
3197 :let result = confirm("Enter your choice",
3198 \ "&Yes\n&No\n&Maybe",
3203 Improved session files *improved-sessions*
3204 ----------------------
3206 New words for 'sessionoptions':
3207 - "help" Restore the help window.
3208 - "blank" Restore empty windows.
3209 - "winpos" Restore the Vim window position. Uses the new ":winpos"
3211 - "buffers" Restore hidden and unloaded buffers. Without it only the
3212 buffers in windows are restored.
3213 - "slash" Replace backward by forward slashes in file names.
3214 - "globals" Store global variables.
3215 - "unix" Use unix file format (<NL> instead of <CR><NL>)
3217 The ":mksession" and 'sessionoptions' are now in the +mksession feature.
3219 The top line of the window is also restored when using a session file.
3221 ":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected
3222 when loading a file.
3224 (Most of this was done by Vince Negri and Robert Webb)
3227 Autocommands improved *improved-autocmds-5.4*
3228 ---------------------
3231 |FileType| When the file type has been detected.
3232 |FocusGained| When Vim got input focus. (Negri)
3233 |FocusLost| When Vim lost input focus. (Negri)
3234 |BufCreate| Called just after a new buffer has been created or has been
3236 |CursorHold| Triggered when no key has been typed for 'updatetime'. Can be
3237 used to do something with the word under the cursor. (Negri)
3238 Implemented CursorHold autocommand event for Unix. (Zellner)
3239 Also for Amiga and MS-DOS.
3240 |GUIEnter| Can be used to do something with the GUI window after it has
3241 been created (e.g., a ":winpos 100 50").
3242 |BufHidden| When a buffer becomes hidden. Used to delete the
3243 option-window when it becomes hidden.
3245 Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen)
3247 The "<amatch>" pattern can be used like "<afile>" for autocommands, except
3248 that it is the matching value for the FileType and Syntax events.
3250 When ":let @/ = <string>" is used in an autocommand, this last search pattern
3251 will be used after the autocommand finishes.
3253 Made loading autocommands a bit faster. Avoid doing strlen() on each exiting
3254 pattern for each new pattern by remembering the length.
3257 Encryption *new-encryption*
3260 Files can be encrypted when writing and decrypted when reading. Added the
3261 'key' option, "-x" command line argument and ":X" command. |encryption| (based
3262 on patch from Mohsin Ahmed)
3264 When reading a file, there is an automatic detection whether it has been
3265 crypted. Vim will then prompt for the key.
3267 Note that the encryption method is not compatible with Vi. The encryption is
3268 not unbreakable. This allows it to be exported from the US.
3271 GTK GUI port *new-GTK-GUI*
3274 New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk|
3275 Added the |:helpfind| command. (Kahn and Dalecki)
3278 Menu changes *menu-changes-5.4*
3281 Menus can now also be used in the console. It is enabled by the new
3282 'wildmenu' option. This shows matches for command-line completion like a
3283 menu. This works as a minimal file browser.
3285 The new |:emenu| command can be used to execute a menu item.
3287 Uses the last status line to list items, or inserts a line just above the
3288 command line. (Negri)
3290 The 'wildcharx' option can be used to trigger 'wildmenu' completion from a
3293 When compiled without menus, this can be detected with has("menu"). Also show
3294 this in the ":version" output. Allow compiling GUI versions without menu
3295 support. Only include toolbar support when there is menu support.
3297 Moved the "Window" menu all the way to the right (priority 70). Looks more
3298 familiar for people working with MS-Windows, shouldn't matter for others.
3300 Included "Buffers" menu. Works with existing autocommands and functions. It
3301 can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen)
3303 Win32 supports separators in a menu: "-.*-". (Geddes)
3304 Menu separators for Motif now work too.
3306 Made Popup menu for Motif GUI work. (Madsen)
3308 'M' flag in 'guioptions': Don't source the system menu.
3310 All the menu code has been moved from gui.c to menu.c.
3313 Viminfo improved *improved-viminfo*
3316 New flags for 'viminfo':
3317 '!' Store global variables in the viminfo file if they are in uppercase
3319 'h' Do ":nohlsearch" when loading a viminfo file.
3321 Store search patterns in the viminfo file with their offset, magic, etc. Also
3322 store the flag whether 'hlsearch' highlighting is on or off (which is not used
3323 if the 'h' flag is in 'viminfo').
3325 Give an error message when setting 'viminfo' without commas.
3328 Various new commands *new-commands-5.4*
3329 --------------------
3331 Operator |g?|: rot13 encoding. (Negri)
3333 |zH| and |zL| commands: Horizontal scrolling by half a page.
3334 |gm| move cursor to middle of screen line. (Ideas by Campbell)
3336 Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|,
3337 |v_b_<| and |v_b_>|. (Kelly)
3339 New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to
3340 Normal mode when in Insert or Command-line mode. Can be used by VisVim or
3341 other OLE programs to make sure Vim is in Normal mode, without causing a beep.
3344 ":cscope kill" command to use the connection filename. |:cscope| (Kahn)
3346 |:startinsert| command: Start Insert mode next.
3348 |:history| command, to show all four types of histories. (Roemer)
3350 |[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end
3351 of method in a (Java) class.
3353 ":@*" executes the * register. |:@| (Acevedo)
3355 |go| and |:goto| commands: Jump to byte offset in the file.
3357 |gR| and |gr| command: Virtual Replace mode. Replace characters without
3358 changing the layout. (Webb)
3360 ":cd -" changes to the directory from before the previous ":cd" command.
3363 Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated
3364 window. Can be used to see the context of the tag (e.g., function arguments).
3366 |:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore)
3367 'previewheight' option, height for the preview window.
3368 Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|.
3370 |:find| and |:sfind| commands: Find a file in 'path', (split window) and edit
3373 The |:options| command opens an option window that shows the current option
3374 values. Or use ":browse set" to open it. Options are grouped by function.
3375 Offers short help on each option. Hit <CR> to jump to more help. Edit the
3376 option value and hit <CR> on a "set" line to set a new value.
3379 Various new options *new-options-5.4*
3382 Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind|
3383 command. Makes windows scroll the same amount (horizontally and/or
3384 vertically). (Ralston)
3386 'conskey' option for MS-DOS. Use direct console I/O. This should work with
3389 'statusline' option: Configurable contents of the status line. Also allows
3390 showing the byte offset in the file. Highlighting with %1* to %9*, using the
3391 new highlight groups User1 to User9. (Madsen)
3393 'rulerformat' option: Configurable contents of the ruler, like 'statusline'.
3396 'write' option: When off, writing files is not allowed. Avoids overwriting a
3397 file even with ":w!". The |-m| command line option resets 'write'.
3399 'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed
3400 register like "*. (Cortopassi) Value "autoselect": Like what 'a' in
3401 'guioptions' does but works in the terminal.
3403 'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI
3404 versions. Allows using normal fonts when vim is compiled with this feature.
3407 'guiheadroom' option: How much room to allow above/below the GUI window.
3408 Used for Motif, Athena and GTK.
3410 Implemented 'tagstack' option: When off, pushing tags onto the stack is
3411 disabled (Vi compatible). Useful for mappings.
3413 'shellslash' option. Only for systems that use a backslash as a file
3414 separator. This option will use a forward slash in file names when expanding
3415 it. Useful when 'shell' is sh or csh.
3417 'pastetoggle' option: Key sequence that toggles 'paste'. Works around the
3418 problem that mappings don't work in Insert mode when 'paste' is set.
3420 'display' option: When set to "lastline", the last line fills the window,
3421 instead of being replaced with "@" lines. Only the last three characters are
3422 replaced with "@@@", to indicate that the line has not finished yet.
3424 'switchbuf' option: Allows re-using existing windows on a buffer that is being
3425 jumped to, or split the window to open a new buffer. (Roemer)
3427 'titleold' option. Replaces the fixed string "Thanks for flying Vim", which
3428 is used to set the title when exiting. (Schild)
3431 Vim scripts *new-script-5.4*
3434 The |exists()| function can also check for existence of a function. (Roemer)
3435 An internal function is now found with a binary search, should be a bit
3439 - |getwinposx()| and |getwinposy()|: get Vim window position. (Webb)
3440 - |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history
3442 - |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas.
3443 - |mapcheck()|: Check if a map name matches with an existing one.
3444 - |visualmode()|: Return type of last Visual mode. (Webb)
3445 - |libcall()|: Call a function in a library. Currently only for Win32. (Negri)
3446 - |bufwinnr()|: find window that contains the specified buffer. (Roemer)
3447 - |bufloaded()|: Whether a buffer exists and is loaded.
3448 - |localtime()| and |getftime()|: wall clock time and last modification time
3450 - |glob()|: expand file name wildcards only.
3451 - |system()|: get the raw output of an external command. (based on a patch
3453 - |strtrans()|: Translate String into printable characters. Used for
3455 - |append()|: easy way to append a line of text in a buffer.
3458 - Optional argument to |strftime()| to give the time in seconds. (Webb)
3459 - |expand()| now also returns names for files that don't exist.
3461 Allow numbers in the name of a user command. (Webb)
3463 Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The
3464 ones from version 5.3 can be used without "v:" too, for backwards
3468 "v:warningmsg" and "v:statusmsg" internal variables. Contain the last given
3469 warning and status message. |v:warningmsg| |v:statusmsg| (Madsen)
3470 "v:count1" variable: like "v:count", but defaults to one when no count is
3473 When compiling without expression evaluation, "if 1" can be used around the
3474 not supported commands to avoid it being executed. Works like in Vim 4.x.
3475 Some of the runtime scripts gave errors when used with a Vim that was compiled
3476 with minimal features. Now "if 1" is used around code that is not always
3479 When evaluating an expression with && and ||, skip the parts that will not
3480 influence the outcome. This makes it faster and avoids error messages. (Webb)
3481 Also optimized the skipping of expressions inside an "if 0".
3484 Avoid hit-enter prompt *avoid-hit-enter*
3485 -----------------------
3487 Added 'T' flag to 'shortmess': Truncate all messages that would cause the
3488 hit-enter prompt (unless that would happen anyway).
3489 The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from
3492 The default for 'shortmess' is now "filnxtToO", to make most messages fit on
3493 the command line, and not cause the hit-enter prompt.
3495 Previous messages can be viewed with the new |:messages| command.
3497 Some messages are shown fully, even when 'shortmess' tells to shorten
3498 messages, because the user is expected to want to see them in full: CTRL-G and
3499 some quickfix commands.
3502 Improved quickfix *improved-quickfix*
3505 Parse change-directory lines for gmake: "make[1]: Entering directory 'name'".
3506 Uses "%D" and "%X" in 'errorformat'.
3507 Also parse "Making {target} in {dir}" messages from make. Helps when not
3508 using GNU make. (Schandl)
3510 Use 'isfname' for "%f" in 'errorformat'.
3512 Parsing of multi-line messages. |errorformat-multi-line|
3514 Allow a range for the |:clist| command. (Roemer)
3516 Support for "global" file names, for error formats that output the file name
3517 once for several errors. (Roemer)
3519 |:cnfile| jumps to first error in next file.
3521 "$*" in 'makeprg' is replaced by arguments to ":make". (Roemer)
3524 Regular expressions *regexp-changes-5.4*
3527 In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$|
3528 In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson)
3530 In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered
3531 end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same
3532 for '^' after "\(" and "\|". |/\$| |/\^|
3534 Some search patterns can be extremely slow, even though they are not really
3535 illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp
3538 Register "/: last search string (read-only). (Kohan) Changed to use last used
3539 search pattern (like what 'hlsearch' uses). Can set the search pattern with
3542 Added character classes to search patterns, to avoid the need for removing the
3543 'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and
3546 By adding a '?' after a comparative operator in an expression, the comparison
3547 is done by ignoring case. |expr-==?|
3550 Other improvements made between version 5.3 and 5.4
3551 ---------------------------------------------------
3553 Changed *changed-5.4*
3556 Unix: Use $TMPDIR for temporary files, if it is set and exists.
3558 Removed "Empty buffer" message. It isn't useful and can cause a hit-enter
3561 "ex -" now reads commands from stdin and works in silent mode. This is to be
3562 compatible with the original "ex" command that is used for scripts.
3564 Default range for ":tcldo" is the whole file.
3566 Cancelling Visual mode with ESC moved the cursor. There appears to be no
3567 reason for this. Now leave the cursor where it is.
3569 The ":grep" and ":make" commands see " as part of the arguments, instead of
3570 the start of a comment.
3572 In expressions the "=~" and "!~" operators no longer are affected by
3575 Renamed vimrc_example to vimrc_example.vim and gvimrc_example to
3576 gvimrc_example.vim. Makes them being recognized as vim scripts.
3578 "gd" no longer starts searching at the end of the previous function, but at
3579 the first blank line above the start of the current function. Avoids that
3580 using "gd" in the first function finds global a variable.
3582 Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches
3583 will be found, at the cost of time (the search can be interrupted).
3585 It is no longer possible to set 'shell*' options from a modeline. Previously
3586 only a warning message was given. This reduces security risks.
3588 The ordering of the index of documentation files was changed to make it more
3589 easy to find a subject.
3591 On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused
3592 trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files
3593 would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find
3596 When 'tags' is "./{fname}" and there is no file name for the current buffer,
3597 just use it. Previously it was skipped, causing "vim -t {tag}" not to find
3600 When trying to select text in the 'scrolloff' area by mouse dragging, the
3601 resulting scrolling made this difficult. Now 'scrolloff' is temporarily set
3602 to 0 or 1 to avoid this. But still allow scrolling in the top line to extend
3603 to above the displayed text.
3605 Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc
3606 comments work. Also helps for C comments that start with "/*******".
3608 CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used
3609 after a non-ID character, which can take a very long time. Now limit this to
3610 200 matches. Also used for command-line tag completion.
3612 The OS/2 distribution has been split in two files. It was too big to fit on a
3613 floppy. The same runtime archive as for the PC is now used.
3615 In the documentation, items like <a-z> have been replaced with {a-z} for
3616 non-optional arguments. This avoids confusion with key names: <C-Z> is a
3617 CTRL-Z, not a character between C and Z, that is {C-Z}.
3623 Color support for the iris-ansi builtin termcap entry. (Tubman)
3625 Included VisVim version 1.3a. (Erhardt)
3627 Win32 port for SNiFF+ interface. (Leherbauer)
3628 Documentation file for sniff interface: if_sniff.txt. (Leherbauer)
3630 Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory.
3631 To be used with the OLE version of gvim under MS-Windows. (Schaller)
3633 Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert)
3635 When a file that is being edited is deleted, give a warning (like when the
3636 time stamp changed).
3638 Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo)
3640 Linux console mouse support through "gpm". (Tsindlekht)
3642 Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When
3643 'secure' is set, give a warning for changing options that contain a program
3646 Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege)
3648 When giving an error message for an ambiguous mapping, include the offending
3651 Command line editing:
3652 - Command line completion of mappings. (Roemer)
3653 - Command line completion for ":function", ":delfunction", ":let", ":call",
3654 ":if", etc. (Roemer)
3655 - When using CTRL-D completion for user commands that have
3656 "-complete=tag_listfiles" also list the file names. (Madsen)
3657 - Complete the arguments of the ":command" command. (Webb)
3658 - CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W
3659 and CTRL-A after CTRL-R are used to insert an object from under the cursor.
3662 Made the text in uganda.txt about copying Vim a bit more clear.
3664 Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor
3665 and starts Vim on it. "make install" now also copies the tutor.
3667 In the output of ":clist" the current entry is highlighted, with the 'i'
3668 highlighting (same as used for 'incsearch').
3670 For the ":clist" command, you can scroll backwards with "b" (one screenful),
3671 "u" (half a screenful) and "k" (one line).
3674 - X-input method for multi-byte characters. And various fixes for multi-byte
3676 - Hangul input method feature: |hangul|. (Nam)
3677 - Cleaned up configuration of multi-byte support, XIM, fontset and Hangul
3678 input. Each is now configurable separately.
3679 - Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam)
3680 - Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam)
3681 - XIM support for GTK+. (Nam)
3682 - First attempt to include support for SJIS encoding. (Nagano)
3683 - When a double-byte character doesn't fit at the end of the line, put a "~"
3684 there and print it on the next line.
3685 - Optimize output of multi-byte text. (Park)
3686 - Win32 IME: preedit style is like over-the-spot. (Nagano)
3687 - Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano)
3688 - GUI Athena: file selection dialog can display multi-byte characters.
3690 - Selection reply for XA_TEXT as XA_STRING. (Nagano)
3692 "runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell)
3694 Added ".obj" to the 'suffixes' option.
3696 Reduced size of syntax/synload.vim by using the ":SynAu" user command.
3697 Automated numbering of Syntax menu entries in menu.vim.
3698 In the Syntax menu, insert separators between syntax names that start with
3699 a different letter. (Geddes)
3702 - Clipboard support when using the mouse in an xterm. (Madsen)
3703 - When using the xterm mouse, track dragging of the mouse. Use xterm escape
3704 sequences when possible. It is more precise than other methods, but
3705 requires a fairly recent xterm version. It is enabled with "xterm2" in
3706 'ttymouse'. (Madsen)
3707 - Check xterm patch level, to set the value of 'ttymouse'. Has only been
3708 added to xterm recently (patch level > 95). Uses the new 't_RV' termcap
3709 option. Set 'ttymouse' to "xterm2" when a correct response is recognized.
3710 Will make xterm mouse dragging work better.
3711 - Support for shifted function keys on xterm. Changed codes for shifted
3712 cursor keys to what the xterm actually produces. Added codes for shifted
3714 - Added 't_WP' to set the window position in pixels and 't_WS' to set the
3715 window size in characters. Xterm can now move (used for ":winpos") and
3716 resize (use for ":set lines=" and ":set columns=").
3719 - When in Visual mode but not owning the selection, display the Visual area
3720 with the VisualNOS group to show this. (Madsen)
3721 - Support for requesting the type of clipboard support. Used for AIX and
3723 - Support compound_text selection (even when compiled without multi-byte).
3726 - New variation for naming swap files: Replace path separators into %, place
3727 all swap files in one directory. Used when a name in 'dir' ends in two path
3728 separators. (Madsen)
3729 - When a swap file is found, show whether it contains modifications or not in
3730 the informative message. (Madsen)
3731 - When dialogs are supported, use a dialog to ask the user what to do when a
3732 swapfile already exists.
3734 "popup_setpos" in 'mousemodel' option. Allows for moving the cursor when
3735 using the right mouse button.
3737 When a buffer is deleted, the selection for which buffer to display instead
3738 now uses the most recent entry from the jump list. (Madsen)
3740 When using CTRL-O/CTRL-I, skip deleted buffers.
3742 A percentage is shown in the ruler, when there is room.
3744 Used autoconf 1.13 to generate configure.
3746 Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting
3747 when 'p' flag in 'cpoptions' is not included.
3749 Made the 2html.vim script quite a bit faster. (based on ideas from Geddes)
3752 - Included the name of the user that compiled Vim and the system name it was
3753 compiled on in the version message.
3754 - "make install" now also installs the "tools" directory. Makes them
3755 available for everybody.
3756 - "make check" now does the same as "make test". "make test" checks for
3757 Visual block mode shift, insert, replace and change.
3758 - Speed up comparing a file name with existing buffers by storing the
3759 device/inode number with the buffer.
3760 - Added configure arguments "--disable-gtk", "--disable-motif" and
3761 "--disable-athena", to be able to disable a specific GUI (when it doesn't
3763 - Renamed the configure arguments for disabling the check for specific GUIs.
3764 Should be clearer now. (Kahn)
3765 - On a Digital Unix system ("OSF1") check for the curses library before
3766 termlib and termcap. (Schild)
3767 - "make uninstall_runtime" will only delete the version-specific files. Can
3768 be used to delete the runtime files of a previous version.
3770 Macintosh: (St-Amant)
3771 - Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code
3772 from gui_w32.c to gui.c
3773 - Added dialogs and file browsing.
3774 - Resource fork preserved, warning when it will be lost.
3775 - Copy original file attributes to newly written file.
3776 - Set title/notitle bug solved.
3777 - Filename completion improved.
3778 - Grow box limit resize to a char by char size.
3779 - Use of rgb.txt for more colors (but give back bad color).
3780 - Apple menu works (beside the about...).
3781 - Internal border now vim compliant.
3782 - Removing a menu doesn't crash anymore.
3783 - Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the
3784 library is available.
3785 - If an error is encountered when sourcing the users .vimrc, the alert box now
3786 shows right away with the OK button defaulted. There's no more "Delete"-key
3787 sign at the start of each line
3788 - Better management of environment variables. Now $VIM is calculated only
3789 once, not regenerated every time it is used.
3790 - No more CPU hog when in background.
3791 - In a sourced Vim script the Mac file format can be recognized, just like DOS
3794 When both "unix" and "mac" are present in 'fileformats', prefer "mac" format
3795 when there are more CR than NL characters.
3796 When using "mac" fileformat, use CR instead of a NL, because NL is used for
3797 NUL. Will preserve all characters in a file. (Madsen)
3799 The DOS install.exe now contains checks for an existing installation. It
3800 avoids setting $VIM and $PATH again.
3801 The install program for Dos/Windows can now install Vim in the popup menu, by
3802 adding two registry keys.
3804 Port to EGCS/mingw32. New Makefile.ming. (Aaron)
3806 DOS 16 bit: Don't include cursor shape stuff. Save some bytes.
3808 TCL support to Makefile.w32. (Duperval)
3810 OS/2: Use argv[0] to find runtime files.
3812 When using "gf" to go to a buffer that has already been used, jump to the
3813 line where the cursor last was.
3815 Colored the output of ":tselect" a bit more. Different highlighting between
3816 tag name and file name. Highlight field name ("struct:") separately from
3819 Backtick expansion for non-Unix systems. Based on a patch from Aaron.
3820 Allows the use of things like ":n `grep -l test *.c`" and
3821 "echo expand('`ls m*`')".
3823 Check for the 'complete' option when it is set. (Acevedo)
3824 'd' flag in 'complete' searches for defined names or macros.
3825 While searching for Insert mode completions in include files and tags files,
3826 check for typeahead, so that you can use matches early. (Webb)
3827 The '.' flag in 'complete' now scans the current buffer completely, ignoring
3828 'nowrapscan'. (Webb)
3830 Added '~' flag to 'whichwrap'. (Acevedo)
3832 When ending the Visual mode (e.g., with ESC) don't grab ownership of the
3835 In a color terminal, "fg" and "bg" can be used as color names. They stand for
3836 the "Normal" colors.
3838 A few cscope cleanups. (Kahn)
3840 Included changed vimspell.sh from Schemenauer.
3842 Concatenation of strings in an expression with "." is a bit faster. (Roemer)
3844 The ":redir" command can now redirect to a register: ":redir @r". (Roemer)
3846 Made the output of ":marks" and ":jumps" look similar. When the mark is in
3847 the current file, show the text at the mark. Also for ":tags".
3849 When configure finds ftello() and fseeko(), they are used in tag.c (for when
3850 you have extremely big tags files).
3852 Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow)
3855 - When using ":gui" in a non-GUI Vim, give a clear error message.
3856 - "gvim -v" doesn't start the GUI (if console support is present).
3857 - When in Ex mode, use non-Visual selection for the whole screen.
3858 - When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim
3859 forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b"
3860 to run gvim in the background anyway.
3863 - Check for "-lXp" library in configure (but it doesn't work yet...).
3864 - Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the
3865 order to let a local Motif version override a system standard version.
3868 - When using "-register" or "-unregister" in the non-OLE version, give an
3870 - Use GTK toolbar icons. Make window border look better. Use sizing handles
3871 on the lower left&right corners of the window. (Negri)
3872 - When starting an external command with ":!start" and the command can not be
3873 executed, give an error message. (Webb)
3874 - Use sizing handles for the grey rectangles below the scrollbars. Can draw
3875 toolbar in flat mode now, looks better. (Negri)
3876 - Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN
3877 and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri)
3879 Avoid allocating the same string four times in buflist_findpat(). (Williams)
3881 Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and
3882 't_IE'. Allows doing this on any terminal that supports setting the title
3883 and/or icon text. (Schild)
3885 New 'x' flag in 'comments': Automatically insert the end part when its last
3886 character is typed. Helps to close a /* */ comment in C. (Webb)
3888 When expand() has a second argument which is non-zero, don't use 'suffixes'
3889 and 'wildignore', return all matches.
3891 'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if
3892 it didn't exist when editing started but it does exist when the buffer is
3893 written to the file. The file must have been created outside of Vim, possibly
3894 without the user knowing it. When this is detected after a shell command,
3895 give a warning message.
3897 When editing a new file, CTRL-G will show [New file]. When there were errors
3898 while reading the file, CTRL-G will show [Read errors].
3900 ":wall" can now use a dialog and file-browsing when needed.
3902 Grouped functionality into new features, mainly to reduce the size of the
3904 +linebreak: 'showbreak', 'breakat' and 'linebreak'
3905 +visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines
3906 in a block, ">" and "<": Shifting a block, "r": Replacing a
3907 Visual area with one character.
3908 +comments: 'comments'
3909 +cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd.
3910 "+title" Don't add code to set title or icon for MSDOS, this was not
3912 +cmdline_compl Disable commandline completion at compile time, except for
3913 files, directories and help items.
3915 Moved features from a list of function calls into an array. Should save a bit
3918 While entering the body of a function, adjust indent according to "if" and
3921 VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy.
3923 The flags in the 'comments' option can now include an offset. This makes it
3924 possible to align "/*****", "/* xxx" and "/*" comments with the same
3925 'comments' setting. The default value for 'comments' uses this.
3926 Added 'O' flag: Don't use this part for the "O" command. Useful for "set
3927 com=sO:*\ -,mO:*\ \ ,exO:*/"
3929 FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove
3930 them to find the relevant extension.
3932 The tutorial for writing a Vim script file has been extended.
3934 Some more highlighting in help files, for items that are not typed literally.
3936 Can use "CTRL-W CTRL-G" like "CTRL-W g".
3938 "make test" for OS/2.
3940 Adjusted configure to automatically use the GUI for BeOS.
3946 5.3.1: When using an autocommand for BufWritePre that changes the name of the
3947 buffer, freed memory would be used. (Geddes)
3949 Mac: Compiler didn't understand start of skip_class_name().
3952 - When cancelling the font requester, don't give an error message.
3953 - When a tearoff-menu is open and its menu is deleted, Vim could crash.
3955 - There was a problem on Windows 95 with (un)maximizing the window.
3957 - when 'mousehide' is set, the mouse would stay hidden when a menu is dropped
3958 with the keyboard. (Ralston)
3959 - The tempname() function already created the file. Caused problems when
3960 using ":w". Now the file is deleted.
3961 - Cursor disappeared when ending up in the top-left character on the screen
3962 after scrolling. (Webb)
3963 - When adding a submenu for a torn-off menu, it was not updated.
3964 - Menu tooltip was using the toolbar tooltip. (Negri)
3965 - Setting 'notitle' didn't remove the title. (Steed)
3966 - Using ":!start cmd" scrolled the screen one line up, and didn't wait for
3967 return when the command wasn't found.
3969 Cscope interface: Sorting of matches was wrong. Starting the interface could
3972 Motif GUI: Could not compile with Motif 1.1, because some tear-off
3973 functionality was not in #ifdefs.
3975 Configure could sometimes not compile or link the test program for sizeof(int)
3976 properly. This caused alignment problems for the undo structure allocations.
3977 Added a safety check that SIZEOF_INT is not zero.
3979 Added configure check to test if strings.h can be included after string.h.
3980 Some systems can't handle it.
3981 Some systems need both string.h and strings.h included. Adjusted vim.h for
3982 that. Removed including string.h from os_unixx.h, since it's already in
3984 AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and
3985 strings.h, but after the configure check said it was OK. Also define
3986 _NO_PROTO for AIX in the configure check. (Winn)
3988 When closing a window with CTRL-W c, the value of 'hidden' was not taken into
3989 account, the buffer was always unloaded. (Negri)
3991 Unix Makefile: "make install" always tried to rename an older executable and
3992 remove it. This caused an error message when it didn't exit. Added a check
3993 for the existence of an old executable.
3994 The command line for "make install" could get too long, because of the many
3995 syntax files. Now first do a "cd" to reduce the length.
3997 On RISCOS and MSDOS, reading a file could fail, because the short filename was
3998 used, which can be wrong after a ":!cd".
4000 In the DOS versions, the wrong install.exe was included (required Windows).
4001 Now the install.exe version is included that is the same as the Vim version.
4002 This also supports long file names where possible.
4004 When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O
4005 would also be recorded.
4007 32bit DOS version: "vim \file", while in a subdirectory, resulted in "new
4008 file" for "file" in the local directory, while "\file" did exist. When
4009 "file" in the current directory existed, this didn't happen.
4011 MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young)
4013 "make test" failed in the RedHat RPM, because compatible is off by default.
4015 In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars
4016 were not updated until another character was typed.
4018 MSDOS: environment options in lowercase didn't work, although they did in the
4019 Win32 versions. (Negri)
4021 After ":nohlsearch", a tag command switched highlighting back on.
4023 When using "append" command as the last line in an autocommand, Vim would
4026 RISCOS: The scroll bumpers (?) were not working properly. (Leonard)
4028 "zl" and "zh" could move the cursor, but this didn't set the column in which
4029 e.g., "k" would move the cursor.
4031 When doing ":set all&" the value of 'scroll' was not set correctly. This
4032 caused an error message when later setting any other number option.
4034 When 'hlsearch' highlighting has been disabled with ":nohlsearch",
4035 incremental searching would switch it back on too early.
4037 When listing tags for ":tselect", and using a non-search command, and the last
4038 character was equal to the first (e.g., "99"), the last char would not be
4041 When searching for tags with ":tag" Vim would assume that all matches had been
4042 found when there were still more (e.g. from another tags file).
4044 Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when
4045 upper/lowercase was different.
4047 Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END. Added these
4048 to the builtin-xterm.
4050 In ex mode, any CR was seen as the end of the line. Only a NL should be
4051 handled that way. broke ":s/foo/some^Mtext/".
4053 In menu.vim, a vmenu was used to override an amenu. That didn't work, because
4054 the system menu file doesn't overwrite existing menus. Added explicit vunmenu
4057 Configure check for terminal library could find a library that doesn't work at
4058 runtime (Solaris: shared library not found). Added a check that a program
4059 with tgoto() can run correctly.
4061 Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors
4062 compiling pathdef.c. Replaced it with "tr".
4064 Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files.
4066 Various XIM and multi-byte fixes:
4067 - Fix user cannot see his language while he is typing his language with
4068 off-the-spot method. (Nagano)
4069 - Fix preedit position using text/edit area (using gui.wid). (Nagano)
4070 - remove 'fix dead key' codes. It was needed since XNFocusWindow was
4071 "x11_window", XNFocusWindow is now gui.wid. (Nagano)
4072 - Remove some compile warnings and fix typos. (Namsh)
4073 - For status area, check the gtk+ version while Vim runs. I believe it is
4074 better than compile time check. (Namsh)
4075 - Remove one FIXME for gtk+-xim. (Namsh)
4076 - XIM: Dead keys didn't work for Czech. (Vyskovsky)
4077 - Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM
4078 could convert it to special character. (Nam)
4079 - Athena/Motif with XIM: fix preedit area. (Nam)
4080 - XIM: Composed strings were sometimes ignored. Vim crashed when compose
4081 string was longer than 256 bytes. IM's geometry control is fixed. (Nam,
4083 - Win32 multi-byte: hollowed cursor width on a double byte char was wrong.
4085 - When there is no GUI, selecting XIM caused compilation problems.
4086 Automatically disable XIM when there is no GUI in configure.
4087 - Motif and Athena: When compiled with XIM, but the input method was not
4088 enabled, there would still be a status line. Now the status line is gone if
4089 the input method doesn't work. (Nam)
4091 Win32: tooltip was not removed when selecting a parent menu (it was when
4092 selecting a menu entry). (Negri)
4094 Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call.
4095 Removed it, it should not be necessary when exiting.
4097 Win32: Crash on keypress when compiled with Borland C++. (Aaron)
4099 When checking for Motif library files, prefer the same location as the include
4100 files (with "include" replaced with "lib") above another entry.
4102 Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's
4105 Win32: When testing for a timestamp of a file on floppy, would get a dialog
4106 box when the floppy has been removed. Now return with an error. (Negri)
4108 Win32 OLE: When forced to come to the foreground, a minimized window was still
4109 minimized, now it's restored. (Zivkov)
4111 There was no check for a positive 'shiftwidth'. A negative value could cause
4112 a hangup, a zero value a crash.
4114 Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right
4115 or left of the thumb.
4117 When making a Visual-block selection in one window, and trying to scroll
4118 another, could cause errors for accessing non-existent line numbers.
4120 When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work
4123 Changed '\"' to '"' to make it compatible with old C compilers.
4125 The command line expansion for mappings caused a script with a TAB between lhs
4126 and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs
4127 when there are no mappings to expand.
4129 When editing a file with very long lines with 'scrolloff' set, "j" would
4130 sometimes end up in a line which wasn't displayed.
4132 When editing a read-only file, it was completely read into memory, even when
4133 it would not fit. Now create a swap file for a read-only file when running
4134 out of memory while reading the file.
4136 When using ":set cino={s,e-s", a line after "} else {" was not indented
4137 properly. Also added a check for this in test3.in.
4139 The Hebrew mapping for the command line was remembered for the next command
4140 line. That isn't very useful, a command is not Hebrew. (Kol)
4142 When completing file names with embedded spaces, like "Program\ files", this
4143 didn't work. Also for user commands. Moved backslash_halve() down to
4146 When using "set mouse=a" in Ex mode, mouse events were handled like typed
4147 text. Then typing "quit" screwed up the mouse behavior of the xterm.
4149 When repeating an insert with "." that contains a CTRL-Y, a number 5 was
4152 Yanking a Visual area, with the cursor past the line, didn't move the cursor
4153 back onto the line. Same for "~", "u", "U" and "g?"
4155 Win32: Default for 'grepprg' could be "findstr /n" even though there is no
4156 findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if
4159 Because gui_mouse_moved() inserted a leftmouse click in the input buffer,
4160 remapping a leftmouse click caused strange effects. Now Insert another code
4161 in the input buffer. Also insert a leftmouse release, to avoid the problem
4162 with ":map <LeftMouse> l" that the next release is seen as the release for the
4165 With 'wrap' on, when using a line that doesn't fit on the screen, if the start
4166 of the Visual area is before the start of the screen, there was no
4167 highlighting. Also, 'showbreak' doesn't work properly.
4169 DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands.
4171 When creating a swap file for a buffer which isn't the current buffer, could
4172 get a mixup of short file name, resulting in a long file name when a short
4173 file name was required. makeswapname() was calling modname() instead of
4176 When a function caused an error, and the error message was very long because
4177 of recursiveness, this would cause a crash.
4179 'suffixes' were always compared with matching case. For MS-DOS, Win32 and
4180 OS/2 case is now ignored.
4182 The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it.
4184 When generating a script file, 'cpo' was made empty. This caused backslashes
4185 to disappear from mappings. Set it to "B" to avoid that.
4187 Lots of typos in the documentation. (Campbell)
4189 When editing an existing (hidden) buffer, jump to the last used cursor
4192 On a Sun the xterm screen was not restored properly when suspending. (Madsen)
4194 When $VIMINIT is processed, 'nocompatible' was only set after processing it.
4196 Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard
4197 all together. Cleaned up the code for using select() too.
4199 When executing external commands from the GUI, some typeahead was lost. Added
4200 some code to regain as much typeahead as possible.
4202 When the window height is 5 lines or fewer, <PageDown> didn't use a one-line
4203 overlap, while <PageUp> does. Made sure that <PageUp> uses the same overlap
4204 as <PageDown>, so that using them both always displays the same lines.
4206 Removed a few unused functions and variables (found with lint).
4208 Dictionary completion didn't use 'infercase'. (Raul)
4210 Configure tests failed when the Perl library was not in LD_LIBRARY_PATH.
4211 Don't use the Perl library for configure tests, add it to the linker line only
4214 When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that
4215 has "%d" instead of "%p1%d". The light background colors didn't work then.
4217 GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs()
4218 when the GUI is active.
4220 Could use the ":let" command to set the "count", "shell_error" and "version"
4221 variables, but that didn't work. Give an error message when trying to set
4224 On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it.
4226 When Vim is linked with -lncurses, but python uses -ltermcap, this causes
4227 trouble: "OOPS". Configure now removes the -ltermcap.
4229 :@" and :*" didn't work properly, because the " was recognized as the start of
4232 Win32s GUI: Minimizing the console where a filter command runs in caused
4233 trouble for detecting that the filter command has finished. (Negri)
4235 After executing a filter command from an xterm, the mouse would be disabled.
4236 It would work again after changing the mode.
4238 Mac GUI: Crashed in newenv(). (St-Amant)
4240 The menus and mappings in mswin.vim didn't handle text ending in a NL
4241 correctly. (Acevedo)
4243 The ":k" command didn't check if it had a valid argument or extra characters.
4244 Now give a meaningful error message. (Webb)
4246 On SGI, the signal function doesn't always have three arguments. Check for
4247 struct sigcontext to find out. Might still be wrong...
4249 Could crash when using 'hlsearch' and search pattern is "^".
4251 When search patterns were saved and restored, status of no_hlsearch was not
4252 also saved and restored (from ":nohlsearch" command).
4254 When using setline() to make a line shorter, the cursor position was not
4257 MS-DOS and Win95: When trying to edit a file and accidentally adding a slash
4258 or backslash at the end, the file was deleted. Probably when trying to create
4259 the swap file. Explicitly check for a trailing slash or backslash before
4260 trying to read a file.
4262 X11 GUI: When starting the GUI failed and received a deadly signal while
4263 setting the title, would lock up when trying to exit, because the title is
4264 reset again. Avoid using mch_settitle() recursively.
4266 X11 GUI: When starting the GUI fails, and then trying it again, would crash,
4267 because argv[] has been freed and x11_display was reset to NULL.
4269 Win32: When $HOME was set, would put "~user" in the swap file, which would
4270 never compare with a file name, and never cause the attention message. Put
4271 the full path in the swap file instead.
4273 Win32 console: There were funny characters at the end of the "vim -r" swap
4274 files message (direct output of CR CR LF).
4276 DOS 32 bit: "vim -r" put the text at the top of the window.
4278 GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q".
4280 Motif and Win32 GUI: When changing 'guifont' to a font of the same size the
4281 screen wasn't redrawn.
4283 Unix: When using ":make", jumping to a file b.c, which is already open as a
4284 symbolic link a.c, opened a new buffer instead of using the existing one.
4286 Inserting text in the current buffer while sourcing the .vimrc file would
4287 cause a crash or hang. The memfile for the current buffer was never
4288 allocated. Now it's allocated as soon as something is written in the buffer.
4290 DOS 32 bit: "lightblue" background worked for text, but not drawn parts were
4293 DOS: Colors of console were not restored upon exiting.
4295 When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode
4296 caused the "recording" message to be doubled.
4298 Spurious "file changed" messages could happen on Windows. Now tolerate a one
4299 second difference, like for Linux.
4301 GUI: When returning from Ex mode, scrollbars were not updated.
4303 Win32: Copying text to the clipboard containing a <CR>, pasting it would
4304 replace it with a <NL> and drop the next character.
4306 Entering a double byte character didn't work if the second byte is in [xXoO].
4309 vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused
4310 conflicts on Solaris.
4312 A pattern in an autocommand was treated differently on DOS et al. than on
4313 Unix. Now it's the same, also when using backslashes.
4315 When using <Tab> twice for command line completion, without a match, the <Tab>
4316 would be inserted. (Negri)
4318 Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri)
4320 Testing the result of mktemp() for failure was wrong. Could cause a crash.
4323 GUI: When checking for a ".gvimrc" file in the current directory, didn't check
4324 for a "_gvimrc" file too.
4326 Motif GUI: When using the popup menu and then adding an item to the menu bar,
4327 the menu bar would get very high.
4329 Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and
4330 dialogs. Now they are ignored.
4332 When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in
4333 'mouse' also for the more-prompt.
4335 When selecting a Visual area of more than 1023 lines, with 'guioptions' set to
4336 "a", could mess up the display because of a message in free_yank(). Removed
4337 that message, except for the Amiga.
4339 Moved auto-selection from ui_write() to the screen update functions. Avoids
4340 unexpected behavior from a low-level function. Also makes the different
4341 feedback of owning the selection possible.
4343 Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the
4344 original indent instead of truncating it at the cursor. (Webb)
4346 ":echo x" didn't stop at "q" for the more prompt.
4348 Various fixes for Macintosh. (St-Amant)
4350 When using 'selectmode' set to "exclusive", selecting a word and then using
4351 CTRL-] included the character under the cursor.
4353 Using ":let a:name" in a function caused a crash. (Webb)
4355 When using ":append", an empty line didn't scroll up.
4357 DOS etc.: A file name starting with '!' didn't work. Added '!' to default for
4360 BeOS: Compilation problem with prototype of skip_class_name(). (Price)
4362 When deleting more than one line, e.g., with "de", could still use "U"
4363 command, which didn't work properly then.
4365 Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some
4366 functions to ex_cmds.c.
4368 The expand() function would add a trailing slash for directories.
4370 Didn't give an error message when trying to assign a value to an argument of a
4373 Moved including sys/ptem.h to after termios.h. Needed for Sinix.
4375 OLE interface: Don't delete the object in CVimCF::Release() when the reference
4376 count becomes zero. (Cordell)
4377 VisVim could still crash on exit. (Erhardt)
4379 "case a: case b:" (two case statements in one line) aligned with the second
4380 case. Now it uses one 'sw' for indent. (Webb)
4382 Font initialisation wasn't right for Athena/Motif GUI. Moved the call to
4383 highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam)
4385 In Replace mode, backspacing over a TAB before where the replace mode started
4386 while 'sts' is different from 'ts', would delete the TAB.
4388 Win32 console: When executing external commands and switching between the two
4389 console screens, Vim would copy the text between the buffers. That caused the
4390 screen to be messed up for backtick expansion.
4392 ":winpos -1" then ":winpos" gave wrong error message.
4394 Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the
4395 backslash before the $. Environment variables were not expanded anyway,
4396 because of the backslash before the dollar.
4398 Using "-=" with ":set" could remove half a part when it contains a "\,".
4399 E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b".
4401 When Visually selecting lines, with 'selection' set to "inclusive", including
4402 the last char of the line, "<<" moved an extra line. Also for other operators
4403 that always work on lines.
4405 link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed.
4406 Now it only remove whole words.
4408 When jumped to a mark or using "fz", and there is an error, the current column
4409 was lost. E.g. when using "$fzj".
4411 The "g CTRL-G" command could not be interrupted, even though it can take a
4414 Some terminals do have <F4> and <xF4>. <xF4> was always interpreted as <F4>.
4415 Now map <xF4> to <F4>, so that the user can override this.
4417 When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be
4420 This autocommand looped forever: ":au FileChangedShell * nested e <afile>"
4421 Now FileChangeShell never nests. (Roemer)
4423 When evaluating an ":elseif" that was not going to matter anyway, ignore
4426 GUI Lesstif: Tearoff bar was the last item, instead of the first.
4428 GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to
4429 'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would
4430 still get a tearoff item in a new menu.
4432 An inode number can be "long long". Use ino_t instead of long. Added
4433 configure check for ino_t.
4435 Binary search for tags was using a file offset "long" instead of "off_t".
4437 Insert mode completion of tags was not using 'ignorecase' properly.
4439 In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the
4440 default mappings. Also caused errors for ":mkvimrc" and ":mksession".
4442 When jumping to another window while in Insert mode, would get the "warning:
4443 changing readonly file" even when not making a change.
4445 A '(' or '{' inside a trailing "//" comment would disturb C-indenting.
4446 When using two labels below each other, the second one was not indented
4447 properly. Comments could mess up C-indenting in many places. (Roemer)
4449 Could delete or redefine a function while it was being used. Could cause a
4451 In a function it's logical to prepend "g:" to a system variable, but this
4452 didn't work. (Roemer)
4454 Hangul input: Buffer would overflow when user inputs invalid key sequence.
4457 When BufLoad or BufEnter autocommands change the topline of the buffer in the
4458 window, it was overruled and the cursor put halfway the window. Now only put
4459 the cursor halfway if the autocommands didn't change the topline.
4461 Calling exists("&option") always returned 1. (Roemer)
4463 Win32: Didn't take actually available memory into account. (Williams)
4465 White space after an automatically inserted comment leader was not removed
4466 when 'ai' is not set and <CR> hit just after inserting it. (Webb)
4468 A few menus had duplicated accelerators. (Roemer)
4470 Spelling errors in documentation, quite a few "the the". (Roemer)
4472 Missing prototypes for Macintosh. (Kielhorn)
4474 Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't
4475 executed in a disconnected process.
4477 When resizing the window, causing a line before the cursor to wrap or unwrap,
4478 the cursor was displayed in the wrong position.
4480 There was quite a bit of dead code when compiling with minimal features.
4482 When doing a ":%s///" command that makes lines shorter, such that lines above
4483 the final cursor position no longer wrap, the cursor position was not updated.
4485 get_id_list() could allocate an array one too small, when a "contains=" item
4486 has a wildcard that matches a group name that is added just after it. E.g.:
4487 "contains=a.*b,axb". Give an error message for it.
4489 When yanking a Visual area and using the middle mouse button -> crash. When
4490 clipboard doesn't work, now make "* always use "".
4492 Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file".
4494 Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was
4495 not cleared, the tselect prompt was on the last but one line.
4497 mksession didn't restore the cursor column properly when it was after a tab.
4498 Could not get all windows back when using a smaller terminal screen. Didn't
4499 restore all windows when "winsize" was not in 'sessionoptions'. (Webb)
4501 Command line completion for ":buffer" depended on 'ignorecase' for Unix, but
4502 not for DOS et al.. Now don't use 'ignorecase', but let it depend on whether
4503 file names are case sensitive or not (like when expanding file names).
4506 - Redrawing the background caused flicker when resizing the window. Removed
4507 _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the
4509 - Some parts of the window were drawn in grey, instead of using the color from
4510 the user color scheme.
4511 - Dropping a file on gvim didn't activate the window.
4512 - When there is no menu ('guioptions' excludes 'm'), never use the ALT key for
4515 GUI: When resizing the window, would make the window height a bit smaller.
4516 Now round off to the nearest char cell size. (Negri)
4518 In Vi the ")" and "(" commands don't stop at a single space after a dot.
4519 Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer)
4521 When saving a session without any buffers loaded, there would be a ":normal"
4522 command without arguments in it. (Webb)
4524 Memory leaks fixed: (Madsen)
4525 - eval.c: forgot to release func structure when func deleted
4526 - ex_docmd.c: forgot to release string after "<sfile>"
4527 - misc1.c: leak when completion pattern had no matches.
4528 - os_unix.c: forgot to release regexp after file completions
4530 Could crash when using a buffer without a name. (Madsen)
4531 Could crash when doing file name completion, because of backslash_halve().
4534 ":@a" would do mappings on register a, which is not Vi compatible. (Roemer)
4536 ":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar"
4537 and displayed "/foo.*()". (Roemer)
4539 OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file.
4541 Command line completion of options didn't work after "+=" and "-=".
4543 Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these
4544 functions, which could fail if they are defined already. Use mch_memmove() to
4547 Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but
4548 ":let a = expand("`xterm&`")" generated an error message, because the
4549 redirection was put after the '&'.
4551 Win32 GUI: Dialog buttons could not be selected properly with cursor keys,
4552 when the default is not the first button. (Webb)
4554 The "File has changed since editing started" (when regaining focus) could not
4555 always be seen. (Webb)
4557 When starting with "ex filename", the file message was overwritten with
4558 the "entering Ex mode" message.
4560 Output of ":tselect" listed name of file directly from the tags file. Now it
4561 is corrected for the position of the tags file.
4563 When 'backspace' is 0, could backspace over autoindent. Now it is no longer
4564 allowed (Vi compatible).
4566 In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting
4567 Tabs, backspacing didn't work correctly for Tabs inserted at the start of the
4568 line (unless 'sts' was set too). Also, when replacing the first non-blank
4569 after which is a space, rounding the indent was done on the first non-blank
4570 instead of on the character under the cursor.
4572 When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after
4573 four spaces (they are replaced with a tab) couldn't backspace over the tab.
4575 In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent,
4576 even when it was removed with CTRL-D.
4578 When repeating an insert command where a <BS>, <Left> or other key causes an
4579 error, would flush buffers and remain in Insert mode. No longer flush
4580 buffers, only beep and continue with the insert command.
4582 Dos and Win32 console: Setting t_me didn't work to get another color. Made
4583 this works backwards compatible.
4585 For Turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase
4586 translation in vim_strup() to avoid language problems. (Komur)
4588 Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully
4589 this avoids a hangup in select(0, ..) for Solaris 2.6.
4591 Vim would crash when using a script file with 'let &sp = "| tee"', starting
4592 vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set
4593 for a string option, could cause problems with any string option.
4595 When using "cmd | vim -", stdin is not a terminal. This gave problems with
4596 GPM (Linux console mouse) and when executing external commands. Now close
4597 stdin and re-open it as a copy of stderr.
4599 Syntax highlighting: A "nextgroup" item was not properly stored in the state
4600 list. This caused missing of next groups when not redrawing from start to
4601 end, but starting halfway.
4603 Didn't check for valid values of 'ttymouse'.
4605 When executing an external command from the GUI, waiting for the child to
4606 terminate might not work, causing a hang. (Parmelan)
4608 "make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim
4609 files and the vimtutor.
4611 Win32: "expand("%:p:h")" with no buffer name removed the directory name.
4612 "fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it.
4614 Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions':
4615 highlighting was not correct. Now overlapping matches are handled correctly.
4617 Athena, Motif and GTK GUI: When started without focus, cursor was shown as if
4620 Don't include 'shellpipe' when compiled without quickfix, it's not used.
4621 Don't include 'dictionary' option when compiled without the +insert_expand
4623 Only include the 'shelltype' option for the Amiga.
4625 When making a change to a line, with 'hlsearch' on, causing it to wrap, while
4626 executing a register, the screen would not be updated correctly. This was a
4627 generic problem in update_screenline() being called while must_redraw is
4630 Using ":bdelete" in a BufUnload autocommand could cause a crash. The window
4631 height was added to another window twice in close_window().
4633 Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri)
4635 Some performance bottlenecks removed. Allocating memory was not efficient.
4636 For Win32 checking for available memory was slow, don't check it every time
4637 now. On NT obtaining the user name takes a long time, cache the result (for
4640 fnamemodify() with an argument ":~:." or ":.:~" didn't work properly.
4642 When editing a new file and exiting, the marks for the buffer were not saved
4643 in the viminfo file.
4645 ":confirm only" didn't put up a dialog.
4647 These text objects didn't work when 'selection' was "exclusive": va( vi( va{
4648 vi{ va< vi< vi[ va[.
4650 The dialog for writing a readonly file didn't have a valid default. (Negri)
4652 The line number used for error messages when sourcing a file was reset when
4653 modelines were inspected. It was wrong when executing a function.
4655 The file name and line number for an error message wasn't displayed when it
4656 was the same as for the last error, even when this was long ago. Now reset
4657 the name/lnum after a hit-enter prompt.
4659 In a session file, a "%" in a file name caused trouble, because fprintf() was
4660 used to write it to the file.
4662 When skipping statements, a mark in an address wasn't skipped correctly:
4663 "ka|if 0|'ad|else|echo|endif". (Roemer)
4665 ":wall" could overwrite a not-edited file without asking.
4667 GUI: When $DISPLAY was not set or starting the GUI failed in another way, the
4668 console mode then started with wrong colors and skipped initializations. Now
4669 do an early check if the GUI can be started. Don't source the menu.vim or
4670 gvimrc when it will not. Also do normal terminal initializations if the GUI
4673 When using a BufEnter autocommand to position the cursor and scroll the
4674 window, the cursor was always put at the last used line and halfway the window
4677 When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list
4678 the matches. Also avoid that listing after a "longest" lists the wrong
4679 matches when the first expansion changed the string in front of the cursor.
4681 When using ":insert", ":append" or ":change" inside a while loop, was not able
4682 to break out of it with a CTRL-C.
4684 Win32: ":e ." took an awful long time before an error message when used in
4685 "C:\". Was caused by adding another backslash and then trying to get the full
4688 ":winpos -10 100" was working like ":winpos -10 -10", because a pointer was
4689 not advanced past the '-' sign.
4691 When obtaining the value of a hidden option, would give an error message. Now
4692 just use a zero value.
4694 OS/2: Was using argv[0], even though it was not a useful name. It could be
4695 just "vim", found in the search path.
4697 Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until
4698 after a delay of 'updatetime'. Didn't check for the size-changed signal.
4700 'scrollbind' didn't work in Insert mode.
4701 Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g.,
4702 when 'showcmd' was off).
4704 When compiled with minimal features but with GUI, switching on the mouse in an
4705 xterm caused garbage, because the mouse codes were not recognized. Don't
4706 enable the mouse when it can't be recognized. In the GUI it also didn't work,
4707 the arguments to the mouse code were not interpreted.
4709 When 'showbreak' used, in Insert mode, when the cursor is just after the last
4710 character in the line, which is also the in the rightmost column, the cursor
4711 position would be like the 'showbreak' string is shown, but it wasn't.
4713 Autocommands could move the cursor in a new file, so that CTRL-W i didn't show
4714 the right line. Same for when using a filemark to jump to another file.
4716 When redefining the argument list, the title used for other windows could be
4717 showing the wrong info about the position in the argument list. Also update
4718 this for a ":split" command without arguments.
4720 When editing file 97 of 13, ":Next" didn't work. Now it goes to the last
4721 file in the argument list.
4723 Insert mode completion (for dictionaries or included files) could not be
4724 interrupted by typing an <Esc>. Could get hit-enter prompt after line
4725 completion, or whenever the informative message would get too long.
4727 When using the ":edit" command to re-edit the same file, an autocommand to
4728 jump to the last cursor position caused the cursor to move. Now set the last
4729 used cursor position to avoid this.
4731 When 'comments' has a part that starts with white space, formatting the
4732 comment didn't work.
4734 At the ":tselect" prompt Normal mode mappings were used. That has been
4737 When 'selection' is not "old", some commands still didn't allow the cursor
4738 past the end-of-line in Visual mode.
4740 Athena: When a menu was deleted, it would appear again (but not functional)
4741 when adding another menu. Now they don't reappear anymore (although they are
4742 not really deleted either).
4744 Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri)
4746 "ze" didn't work when 'number' was on. (Davis)
4748 Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson)
4750 A few files were including proto.h a second time, after vim.h had already done
4751 that, which could cause problems with the vim_realloc() macro.
4753 Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and
4755 MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and
4756 number keys work. (Negri)
4758 When finding a lot of matches for a tag completion, the check for avoiding
4759 double matches could take a lot of time. Add a line_breakcheck() to be able
4760 to interrupt this. (Deshpande)
4762 When the command line was getting longer than the screen, the more-prompt
4763 would be given regularly, and the cursor position would be wrong. Now only
4764 show the part of the command line that fits on the screen and force the cursor
4765 to be positioned on the visible part. There can be text after the cursor
4766 which isn't editable.
4768 At the more prompt and with the console dialog, a cursor key was interpreted
4769 as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse
4770 and scrollbar events.
4772 When typing a BS after inserting a middle comment leader, typing the last char
4773 of the end comment leader still changed it into the end comment leader. (Webb)
4775 When a file system is full, writing to a swap file failed. Now first try to
4776 write one block to the file. Try next entry in 'dir' if it fails.
4778 When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the
4781 Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was
4782 translated to "}" before the shell got it. Now don't remove backslashes when
4783 wildcards are going to be expanded.
4785 Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a
4786 file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty"
4787 still doesn't work though.
4789 "make test" didn't always work on DOS/Windows for test30, because it depended
4790 on the external "echo" command.
4792 The link.sh script used "make" instead of $MAKE from the Makefile. Caused
4793 problems for generating pathdef.c when "make" doesn't work properly.
4795 On versions that can do console and GUI: In the console a typed CSI code could
4798 The patterns in expression evaluation didn't ignore the 'l' flag in
4799 'cpoptions'. This broke the working of <CR> in the options window.
4801 When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still
4802 highlighted red for trailing space.
4804 Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim
4805 would loop while outputting "*" characters. vgetc() was called recursively,
4806 thus it returns NUL. Added safe_vgetc(), which reads input directly from the
4807 user in this situation.
4809 While reading text from stdin, only an empty screen was shown. Now show that
4810 Vim is reading from stdin.
4812 The cursor shape wasn't set properly when returning to Insert mode, after
4813 using a CTRL-O /asdf command which fails. It would be OK after a few seconds.
4814 Now it's OK right away.
4816 The 'isfname' default for DOS/Windows didn't include the '@' character. File
4817 names that contained "dir\@file" could not be edited.
4819 Win32 console: <C-S-Left> could cause a crash when compiled with Borland or
4822 Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use
4823 "#ifdef HAVE_DIRENT_H" instead. (Jones)
4825 When a matching tag is in the current file but has a search pattern that
4826 doesn't match, the cursor would jump to the first line.
4828 Unix: Dependencies for pty.c were not included in Makefile. Dependency of
4829 ctags/config.h was not included (only matters for parallel make).
4831 Removed a few Uninitialized Memory Reads (potential crashes). In do_call()
4832 calling clear_var() when not evaluating. In win32_expandpath() and
4833 dos_expandpath() calling backslash_halve() past the end of a file name.
4835 Removed memory leaks: Set_vim_var_string() never freed the value. The
4836 next_list for a syntax keyword was never freed.
4838 On non-Unix systems, using a file name with wildcards without a match would
4839 silently fail. E.g., ":e *.sh". Now give a "No match" error message.
4841 The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized
4842 as Vim scripts. Renamed them to *.vim.
4844 [Note: some numbered patches are not relevant when upgrading from version 5.3,
4845 they have been removed]
4848 Problem: When editing a file with a long name, would get the hit-enter
4849 prompt, even though all settings are such that the name should be
4850 truncated to avoid that. filemess() was printing the file name
4851 without truncating it.
4852 Solution: Truncate the message in filemess(). Use the same code as for
4853 msg_trunc_attr(), which is moved to the new function
4855 Files: src/message.c, src/proto/message.pro, src/fileio.c
4858 Problem: The Motif libraries were not found by configure for Digital Unix.
4859 Solution: Add "/usr/shlib" to the search path. (Andy Kahn)
4860 Files: src/configure.in, src/configure
4863 Problem: Win32 GUI: When using the Save-As menu entry and selecting an
4864 existing file in the file browser, would get a dialog to confirm
4865 overwriting twice. (Ed Krall)
4866 Solution: Removed the dialog from the file browser. It would be nicer to
4867 set the "forceit" flag and skip Vim's ":confirm" dialog, but it
4868 requires quite a few changes to do that.
4869 Files: src/gui_w32.c
4872 Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -",
4873 a message box would pop up with "-stdin-" (when exiting). (Michael
4875 Solution: Don't switch off termcap mode for versions that are GUI-only.
4876 They use another terminal to read from stdin.
4877 Files: src/main.c, src/fileio.c
4880 Problem: Unix: running configure with --enable-gtk-check,
4881 --enable-motif-check, --enable-athena-check or --enable-gtktest
4882 had the reverse effect. (Thomas Koehler)
4883 Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE().
4884 Files: src/configure.in, src/configure
4887 Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2
4888 characters to the left. Syntax highlighting was wrong when a
4889 double-byte character was split for a wrapping line. When
4890 'showbreak' was on the splitting also didn't work.
4891 Solution: Adjust getvcol() and win_line(). (Chong-Dae Park)
4892 Files: src/charset.c, src/screen.c
4895 Problem: The ":call" command didn't check for illegal trailing characters.
4897 Solution: Add the check in do_call().
4901 Problem: With the ":s" command:
4902 1. When performing a substitute command, the mouse would be
4903 disabled and enabled for every substitution.
4904 2. The cursor position could be beyond the end of the line.
4905 Calling line_breakcheck() could try to position the cursor,
4906 which causes a crash in the Win32 GUI.
4907 3. When using ":s" in a ":g" command, the cursor was not put on
4908 the first non-white in the line.
4909 4. There was a hit-enter prompt when confirming the substitution
4910 and the replacement was a bit longer.
4911 Solution: 1. Only disable/enable the mouse when asking for confirmation.
4912 2. Always put the cursor on the first character, it is going to be
4913 moved to the first non-blank anyway.
4914 Don't use the cursor position in gui_mch_draw_hollow_cursor(),
4915 get the character from the screen buffer.
4916 3. Added global_need_beginline flag to call beginline() after ":g"
4917 has finished all substitutions.
4918 4. Clear the need_wait_return flag after prompting the user.
4919 Files: src/ex_cmds.c, src/gui_w32.c
4922 Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end
4923 up with two swapfiles for "xxx". That is caused by the ":bdel"
4924 command which is executed when unloading the option-window.
4925 Also, there was no check if closing a buffer made the new one
4926 invalid, this could cause a crash.
4927 Solution: When closing a buffer causes the current buffer to be deleted,
4928 use the new buffer to replace it. Also detect that the new buffer
4929 has become invalid as a side effect of closing the current one.
4930 Make autocommand that calls ":bdel" in optwin.vim nested, so that
4931 the buffer loading it triggers also executes autocommands.
4932 Also added a test for this in test13.
4933 Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h
4934 src/testdir/test13.in, src/testdir/test13.ok
4937 Problem: When using a BufEnter autocommand to reload the syntax file,
4938 conversion to HTML caused a crash. (Sung-Hyun Nam)
4939 Solution: When using ":syntax clear" the current stack of syntax items was
4940 not cleared. This will cause memory to be used that has already
4941 been freed. Added call to invalidate_current_state() in
4946 Problem: When omitting a ')' in an expression it would not be seen as a
4948 When detecting an error inside (), there would be an error message
4949 for a missing ')' too.
4950 When using ":echo 1+|echo 2" there was no error message. (Roemer)
4951 When using ":exe 1+" there was no error message.
4952 When using ":return 1+" there was no error message.
4953 Solution: Fix do_echo(), do_execute() and do_return() to give an error
4954 message when eval1() returns FAIL.
4955 Fix eval6() to handle trailing ')' correctly and return FAIL when
4960 Problem: When using input() from inside an expression entered with
4961 "CTRL-R =" on the command line, there could be a crash. And the
4962 resulting command line was wrong.
4963 Solution: Added getcmdline_prompt(), which handles recursive use of
4964 getcmdline() correctly. It also sets the command line prompt.
4965 Removed cmdline_prompt(). Also use getcmdline_prompt() for
4966 getting the crypt key in get_crypt_key().
4967 Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c
4970 Problem: When starting up, the screen structures were first allocated at
4971 the minimal size, then initializations were done with Rows
4972 possibly different from screen_Rows. Caused a crash in rare
4973 situations (GTK with XIM and fontset).
4974 Solution: Call screenalloc() in main() only after calling ui_get_winsize().
4975 Also avoids a potential delay because of calling screenclear()
4976 while "starting" is non-zero.
4980 Problem: In the GUI it was possible that the screen was resized and the
4981 screen structures re-allocated while redrawing the screen. This
4982 could cause a crash (hard to reproduce). The call sequence goes
4983 through update_screen() .. syntax_start() .. ui_breakcheck() ..
4984 gui_resize_window() .. screenalloc().
4985 Solution: Set updating_screen while redrawing. If the window is resized
4986 remember the new size and handle it only after redrawing is
4988 This also fixes that resizing the screen while still redrawing
4989 (slow syntax highlighting) would not work properly.
4990 Also disable display_hint, it was never used.
4991 Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro
4994 Problem: When using expand("<cword>") when there was no word under the
4995 cursor, would get an error message. Same for <cWORD> and <cfile>.
4996 Solution: Don't give an error message, return an empty string.
5000 Problem: ":help \|" didn't find anything. It was translated to "/\\|".
5001 Solution: Translate "\|" into "\\bar". First check the table for specific
5002 translations before checking for "\x".
5003 Files: src/ex_cmds.c
5006 Problem: Unix: When using command line completion on files that contain
5007 ''', '"' or '|' the file name could not be used.
5008 Adding this file name to the Buffers menu caused an error message.
5009 Solution: Insert a backslash before these three characters.
5010 Adjust Mungename() function to insert a backslash before '|'.
5011 Files: src/ex_getln.c, runtime/menu.vim
5014 Problem: When using a mapping of two function keys, e.g., <F1><F1>, and
5015 only the first char of the second key has been read, the mapping
5016 would not be recognized. Noticed on some Unix systems with xterm.
5017 Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even
5018 when halfway a mapping.
5019 Files: src/option.h, src/term.c
5022 Problem: When making test33 without the lisp feature it hangs. Interrupting
5023 the execution of the script then might cause a crash.
5024 Solution: In inchar(), after closing a script, don't use buf[] anymore.
5025 closescript() has freed typebuf[] and buf[] might be pointing
5027 Avoid that test33 hangs when the lisp feature is missing.
5028 Files: src/getchar.c src/testdir/test33.in
5030 "os2" was missing from the feature list. Useful for has("os2").
5033 - Included patches from Richard Offer for BeOS R4.5.
5034 - menu code didn't work right. Crashed in the Buffers menu. The window title
5038 Problem: C-indenting was wrong after " } else". The white space was not
5039 skipped. Visible when 'cino' has "+10".
5040 Solution: Skip white space before calling cin_iselse(). (Norbert Zeh)
5044 Problem: When the 't' flag in 'cpoptions' is included, after a
5045 ":nohlsearch" the search highlighting would not be enabled again
5046 after a tag search. (Norbert Zeh)
5047 Solution: When setting the new search pattern in jumpto_tag(), don't restore
5052 Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The
5053 autocommand is executed down from vgetc(). Calling vgetc()
5054 recursively to execute the command doesn't work then.
5055 Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error
5056 message when this happens.
5057 Files: src/ex_docmd.c, runtime/doc/autocmd.txt
5060 Problem: "gv" could reselect a Visual that starts and/or ends past the end
5061 of a line. (Robert Webb)
5062 Solution: Check that the start and end of the Visual area are on a valid
5063 character by calling adjust_cursor().
5067 Problem: When a mark was on a non existing line (e.g., when the .viminfo
5068 was edited), jumping to it caused ml_get errors. (Alexey
5070 Solution: Added check_cursor_lnum() in nv_gomark().
5074 Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl)
5075 Solution: Give an error message for a negative line number.
5076 Files: src/ex_docmd.c
5079 Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the
5080 text. This erased the prompt and made Vim look like it is in
5081 Normal mode, while it is actually still waiting for a <CR>.
5082 Solution: Disallow scrolling at the hit-enter prompt for systems that use
5083 on the fly scrolling.
5084 Files: src/message.c
5087 Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than
5088 what fits on the screen, the window size was made smaller than
5089 asked for (that's OK) and Vim crashed (that's not OK)>
5090 Solution: Call check_winsize() from gui_set_winsize() to resize the windows.
5094 Problem: Win32 GUI: The <F10> key both selected the menu and was handled as
5096 Solution: Apply 'winaltkeys' to <F10>, like it is used for Alt keys.
5097 Files: src/gui_w32.c
5100 Problem: Local buffer variables were freed when the buffer is unloaded.
5101 That's not logical, since options are not freed. (Ron Aaron)
5102 Solution: Free local buffer variables only when deleting the buffer.
5106 Problem: Doing ":e" (without argument) in an option-window causes trouble.
5107 The mappings for <CR> and <Space> are not removed. When there is
5108 another buffer loaded, the swap file for it gets mixed up.
5110 Solution: Also remove the mappings at the BufUnload event, if they are still
5112 When re-editing the same file causes the current buffer to be
5113 deleted, don't try editing it.
5114 Also added a test for this situation.
5115 Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in,
5116 src/testdir/test13.ok
5119 Problem: BeOS: configure never enabled the GUI, because $with_x was "no".
5120 Unix prototypes caused problems, because Display and Widget are
5122 Freeing fonts on exit caused a crash.
5123 Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes".
5124 Add dummy defines for Display and Widget in proto.h.
5125 Don't free the fonts in gui_exit() for BeOS.
5126 Files: src/configure.in, src/configure, src/proto.h, src/gui.c.
5129 The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild)
5131 Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined.
5135 - mch_setenv() had two arguments instead of three.
5136 - The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc".
5138 - call to RealWaitForChar() had one argument too many. (Campbell)
5139 - WaitForChar() is static, removed the prototype from proto/os_vms.pro.
5140 - Many file accesses failed, because Unix style file names were used.
5141 Translate file names to VMS style by using vim_fopen().
5142 - Filtering didn't work, because the temporary file name was generated wrong.
5143 - There was an extra newline every 9192 characters when writing a file. Work
5144 around it by writing line by line. (Campbell)
5145 - os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;".
5146 Only mattered for generating prototypes.
5147 - Added file name translation to many places. Made easy by defining macros
5148 mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat().
5149 - Set default for 'tagbsearch' to off, because binary tag searching apparently
5150 doesn't work for VMS.
5151 - make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell)
5155 Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham)
5156 Solution: Fix wrong use of pointers in get_file_name_in_path().
5160 Problem: The horizontal scrollbar was not sized correctly when 'number' is
5161 set and 'wrap' not set.
5162 Athena: Horizontal scrollbar wasn't updated when the cursor was
5163 positioned with a mouse click just after dragging.
5164 Solution: Subtract 8 from the size when 'number' set and 'wrap' not set.
5165 Reset gui.dragged_sb when a mouse click is received.
5169 Problem: When running in an xterm and $WINDOWID is set to an illegal value,
5170 Vim would exit with "Vim: Got X error".
5171 Solution: When using the display which was opened for the xterm clipboard,
5172 check if x11_window is valid by trying to obtain the window title.
5173 Also add a check in setup_xterm_clip(), for when using X calls to
5174 get the pointer position in an xterm.
5175 Files: src/os_unix.c
5178 Problem: Motif version with Lesstif: When removing the menubar and then
5179 using a menu shortcut key, Vim would crash. (raf)
5180 Solution: Disable the menu mnemonics when the menu bar is removed.
5181 Files: src/gui_motif.c
5184 Problem: The DOS install.exe program used the "move" program. That doesn't
5185 work on Windows NT, where "move" is internal to cmd.exe.
5186 Solution: Don't use an external program for moving the executables. Use C
5187 functions to copy the file and delete the original.
5188 Files: src/dosinst.c
5190 Motif and Athena obtained the status area height differently from GTK. Moved
5191 status_area_enabled from global.h to gui_x11.c and call
5192 xim_get_status_area_height() to get the status area height.
5195 Problem: When using auto-select, and the "gv" command is used, would not
5196 always obtain ownership of the selection. Caused by the Visual
5197 area still being the same, but ownership taken away by another
5199 Solution: Reset the clipboard Visual mode to force updating the selection.
5203 Problem: Motif and Athena with XIM: Typing 3-byte
5204 <multibyte><multibyte><space> doesn't work correctly with Ami XIM.
5205 Solution: Avoid using key_sym XK_VoidSymbol. (Nam)
5206 Files: src/multbyte.c, src/gui_x11.c
5209 Problem: Win32 GUI: The scrollbar values were reduced for a file with more
5210 than 32767 lines. But this info was kept global for all
5211 scrollbars, causing a mixup between the windows.
5212 Using the down arrow of a scrollbar in a large file didn't work.
5213 Because of round-off errors there is no scroll at all.
5214 Solution: Give each scrollbar its own scroll_shift field. When the down
5215 arrow is used, scroll several lines.
5216 Files: src/gui.h, src/gui_w32.c
5219 Problem: When changing buffers in a BufDelete autocommand, there could be
5220 ml_line errors and/or a crash. (Schandl) Was caused by deleting
5222 Solution: When the buffer to be deleted unexpectedly becomes the current
5223 buffer, don't delete it.
5224 Also added a check for this in test13.
5225 Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok
5228 Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and
5229 clicking the right mouse button outside of the selected area, the
5230 selected area wasn't removed until the popup menu has gone.
5232 Solution: Set the cursor and update the display before showing the popup
5237 Problem: The generated bugreport didn't contain information about
5238 $VIMRUNTIME and whether runtime files actually exist.
5239 Solution: Added a few checks to the bugreport script.
5240 Files: runtime/bugreport.vim
5243 Problem: The windows install.exe created a wrong entry in the popup menu.
5244 The "%1" was "". The full directory was included, even when the
5245 executable had been moved elsewhere. (Ott)
5246 Solution: Double the '%' to get one from printf. Only include the path to
5247 gvim.exe when it wasn't moved and it's not in $PATH.
5248 Files: src/dosinst.c
5251 Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used
5252 a short file name for a directory.
5253 Solution: Change the "%1" to "%L" in the registry entry.
5254 Files: src/dosinst.c
5257 Problem: Motif, Athena and GTK: When closing the GUI window when there is a
5258 changed buffer, there was only an error message and Vim would not
5260 Solution: Put up a dialog, like for ":confirm qa". Uses the code that was
5261 already used for MS-Windows.
5262 Files: src/gui.c, src/gui_w32.c
5265 Problem: Win32: Trying to expand a string that is longer than 256
5266 characters could cause a crash. (Steed)
5267 Solution: For the buffer in win32_expandpath() don't use a fixed size array,
5269 Files: src/os_win32.c
5271 MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for
5272 fname_case() and mch_update_cursor() were missing. "fd" was unused in
5273 mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in
5274 mch_call_shell() for DJGPP version.
5276 ==============================================================================
5277 VERSION 5.5 *version-5.5*
5279 Version 5.5 is a bug-fix version of 5.4.
5282 Changed *changed-5.5*
5285 The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the
5286 size of the executables.
5288 Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals
5291 'backspace' is now a string option. See patch 5.4.15.
5297 Included Exuberant Ctags version 3.3. (Darren Hiebert)
5299 In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used
5300 everywhere to do what CTRL-V used to do.
5302 Support for decompression of bzip2 files in vimrc_example.vim.
5304 When a patch is included, the patch number is entered in a table in version.c.
5305 This allows skipping a patch without breaking a next one.
5307 Support for mouse scroll wheel in X11. See patch 5.5a.14.
5309 line2byte() can be used to get the size of the buffer. See patch 5.4.35.
5311 The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to
5312 insert a register literally. See patch 5.4.48.
5314 Uninstall program for MS-Windows. To be able to remove the registry entries
5315 for "Edit with Vim". It is registered to be run from the "Add/Remove
5316 programs" application. See patch 5.4.x7.
5322 When using vimrc_example.vim: An error message when the cursor is on a line
5323 higher than the number of lines in the compressed file. Move the autocommand
5324 for jumping to the last known cursor position to after the decompressing
5327 ":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may
5328 mark a file as modified, which causes problems. This is a buffer-specific
5329 setting, it should not affect all files.
5331 "vim --version" wrote two empty lines.
5333 Unix: The alarm signal could kill Vim. It is generated by the Perl alarm()
5334 function. Ignore SIGALRM.
5336 Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script.
5338 BeOS: "tmo" must be bigtime_t, instead of double. (Seibert)
5341 Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson)
5342 Solution: Set $GZIP to an empty string.
5343 Files: src/testdir/test11.in
5346 Problem: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal)
5347 Solution: Check for a NULL pointer returned from get_crypt_key().
5351 Problem: Python: Trying to use the name of an unnamed buffer caused a
5352 crash. (Daniel Burrows)
5353 Solution: Check for b_fname being a NULL pointer.
5354 Files: src/if_python.c
5357 Problem: Win32: When compiled without toolbar, but the 'T' flag is in
5358 'guioptions', there would be an empty space for the toolbar.
5359 Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri)
5363 Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash.
5364 Looks like any ":unmenu" command may cause trouble.
5365 Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers
5366 menu, because the Refresh item would not work.
5367 Files: src/menu.c, runtime/menu.vim
5370 Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only
5371 happens when the GUI forks.
5372 Solution: Don't fork in a recursive call of gui_start().
5376 Problem: Typing 'q' at the more prompt for the ATTENTION message causes the
5377 file loading to be interrupted. (Will Day)
5378 Solution: Reset got_int after showing the ATTENTION message.
5379 Files: src/memline.c
5382 Problem: Edit some file, ":he", ":opt": options from help window are shown,
5383 but pressing space updates from the other window. (Phillipps)
5384 Also: When there are changes in the option-window, ":q!" gives an
5386 Solution: Before creating the option-window, go to a non-help window.
5387 Use ":bdel!" to delete the buffer.
5388 Files: runtime/optwin.vim
5391 Just updates version.h. The real patch has been moved to 5.4.x1.
5392 This patch is just to keep the version number correct.
5395 Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It
5396 should run in the terminal.
5397 Solution: Use gtk_init_check() instead of gtk_init().
5398 Files: src/gui_gtk_x11.c
5401 Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to
5402 the next buffer for some commands, e.g., ":buffer".
5403 Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still
5404 copy the options used by do_help() when neither the "from" or "to"
5405 buffer is a help buffer.
5409 Problem: When using 'smartindent', there would be no extra indent if the
5410 current line did not have any indent already. (Hanus Adler)
5411 Solution: There was a wrongly placed "else", that previously matched with
5412 the "if" that set trunc_line. Removed the "else" and added a
5413 check for trunc_line to be false.
5417 Problem: New SGI C compilers need another option for optimisation.
5418 Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young)
5419 Files: src/configure.in, src/configure
5422 Problem: Motif GUI: When the popup menu is present, a tiny window appears
5423 on the desktop for some users.
5424 Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler)
5425 Files: src/gui_motif.c
5428 Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no
5429 longer possible to only allow deleting autoindent.
5430 Solution: Make 'backspace' a list of parts, to allow each kind of
5431 backspacing separately.
5432 Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro,
5433 runtime/doc/option.txt, runtime/doc/insert.txt
5436 Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure.
5437 Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang)
5438 Files: src/configure.in, src/configure
5441 Problem: GUI: When started from inside gvim with ":!gvim", Vim would not
5442 start. ":!gvim -f" works fine.
5443 Solution: After forking, wait a moment in the parent process, to give the
5444 child a chance to set its process group.
5448 Problem: Python: The clear_history() function also exists in a library.
5449 Solution: Rename clear_history() to clear_hist().
5450 Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro
5453 Problem: In a terminal with 25 lines, there is a more prompt after the
5454 ATTENTION message. When hitting 'q' here the dialog prompt
5455 doesn't appear and file loading is interrupted. (Will Day)
5456 Solution: Don't allow quitting the printing of a message for the dialog
5457 prompt. Added the msg_noquit_more flag for this.
5458 Files: src/message.c
5461 Problem: GTK: When starting gvim, would send escape sequences to the
5462 terminal to switch the cursor off and on.
5463 Solution: Don't call msg_start() if the GUI is expected to start.
5467 Problem: Motif: Toplevel menu ordering was wrong when using tear-off items.
5468 Solution: Don't add one to the index for a toplevel menu.
5469 Files: src/gui_motif.c
5472 Problem: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't
5473 update the column used for vertical movement.
5474 Solution: Set curwin->w_set_curswant for those commands.
5478 Problem: When a Visual selection is lost to another program, and then the
5479 same text is Visually selected again, the clipboard ownership
5481 Solution: Set clipboard.vmode to NUL to force regaining the clipboard.
5485 Problem: Encryption: When using ":r file" while 'key' has already entered,
5486 the 'key' option would be messed up. When writing the file it
5487 would be encrypted with an unknown key and lost! (Brad Despres)
5488 Solution: Don't free cryptkey when it is equal to the 'key' option.
5492 Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not
5493 properly indented when starting a new line. (Mitterand)
5494 Solution: When there is a comment leader for the new line, but 'autoindent'
5495 isn't set, do C-indenting.
5499 Problem: Multi-byte: a multi-byte character is never recognized in a file
5500 name, causing a backslash before it to be removed on Windows.
5501 Solution: Assume that a leading-byte character is a file name character in
5503 Files: src/charset.c
5506 Problem: Entries in the PopUp[nvic] menus were added for several modes, but
5507 only deleted for the mode they were used for. This resulted in
5508 the entry remaining in the PopUp menu.
5509 When removing a PopUp[nvic] menu, the name had been truncated,
5510 could result in greying-out the whole PopUp menu.
5511 Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove
5512 the PopUp[nvic] menu entries first, before the name is changed.
5516 Problem: When using a BufWritePre autocommand to change 'fileformat', the
5517 new value would not be used for writing the file.
5518 Solution: Check 'fileformat' after executing the autocommands instead of
5523 Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a
5524 menu can result in a crash.
5525 Solution: Always grey-out menus for Athena, don't hide them.
5529 Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The
5530 first character typed after ":sh" goes to Vim, instead of the
5532 Solution: Don't suspend Vim, start a new shell. Kill the async read thread
5533 when starting a new shell. It will be restarted later. (Will Day)
5534 Files: src/os_unix.c, src/ui.c
5537 Problem: GUI: When 'mousefocus' is set, moving the mouse over where a
5538 window boundary was, causes a hit-enter prompt to be finished.
5540 Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it
5541 for the more prompt and a few other situations. When an operator
5542 is pending, abort it first.
5546 Problem: Unix: $LDFLAGS was not passed to configure.
5547 Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner)
5551 Problem: Unix: After expanding an environment variable with the shell, the
5552 next expansion would also use the shell, even though it is not
5554 Solution: Reset "recursive" before returning from gen_expand_wildcards().
5557 Patch 5.4.34 (also see 5.4.x5)
5558 Problem: When editing a file, and the file name is relative to a directory
5559 above the current directory, the file name was made absolute.
5561 Solution: Add an argument to shorten_fnames() which indicates if all file
5562 names should be shortened, or only absolute names. In main() only
5563 use shorten_fnames() to shorten absolute names.
5564 Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro
5567 Problem: There is no function to get the current file size.
5568 Solution: Allow using line2byte() with the number of lines in the file plus
5569 one. This returns the offset of the line past the end of the
5570 file, which is the file size plus one.
5571 Files: src/eval.c, runtime/doc/eval.txt
5574 Problem: Comparing strings while ignoring case didn't work correctly for
5575 some machines. (Mide Steed)
5576 Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed
5577 them to return -1 when the first argument is smaller.
5580 Patch 5.4.37 (also see 5.4.40 and 5.4.43)
5581 Problem: Long strings from the viminfo file are truncated.
5582 Solution: When writing a long string to the viminfo file, first write a line
5583 with the length, then the string itself in a second line.
5584 Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c,
5585 src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim
5588 Problem: In the option-window, ":set go&" resulted in 'go' being handled
5589 like a boolean option.
5590 Mappings for <Space> and <CR> were overruled by the option-window.
5591 Solution: When the value of an option isn't 0 or 1, don't handle it like a
5593 Save and restore mappings for <Space> and <CR> when entering and
5594 leaving the option-window.
5595 Files: runtime/optwin.vim
5598 Problem: When setting a hidden option, spaces before the equal sign were
5599 not skipped and cause an error message. E.g., ":set csprg =cmd".
5600 Solution: When skipping over a hidden option, check for a following "=val"
5604 Patch 5.4.40 (depends on 5.4.37)
5605 Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn)
5606 Solution: Add a typecast: "atol((char *)p + 1)".
5607 Files: src/ex_cmds.c
5610 Problem: Some commands that were not included would give an error message,
5611 even when after "if 0".
5612 Solution: Don't give an error message for an unsupported command when not
5613 executing the command.
5614 Files: src/ex_docmd.c
5617 Problem: ":w" would also cause a truncated message to appear in the message
5619 Solution: Don't put a kept message in the message history when it starts
5621 Files: src/message.c
5623 Patch 5.4.43 (depends on 5.4.37)
5624 Problem: Mixing long lines with multiple lines in a register causes errors
5625 when writing the viminfo file. (Robinson)
5626 Solution: When reading the viminfo file to skip register contents, skip
5627 lines that start with "<".
5631 Problem: When 'whichwrap' includes '~', a "~" command that goes on to the
5632 next line cannot be properly undone. (Zellner)
5633 Solution: Save each line for undo in n_swapchar().
5636 Patch 5.4.45 (also see 5.4.x8)
5637 Problem: When expand("$ASDF") fails, there is an error message.
5638 Solution: Remove the global expand_interactively. Pass a flag down to skip
5640 Also: expand("$ASDF") returns an empty string if $ASDF isn't set.
5641 Previously it returned "$ASDF" when 'shell' is "sh".
5642 Also: system() doesn't print an error when the command returns an
5647 Problem: Backspacing did not always use 'softtabstop' after hitting <CR>,
5648 inserting a register, moving the cursor, etc.
5649 Solution: Reset inserted_space much more often in edit().
5653 Problem: When executing BufWritePre or BufWritePost autocommands for a
5654 hidden buffer, the cursor could be moved to a non-existing
5655 position. (Vince Negri)
5656 Solution: Save and restore the cursor and topline for the current window
5657 when it is going to be used to execute autocommands for a hidden
5658 buffer. Use an existing window for the buffer when it's not
5663 Problem: A paste with the mouse in Insert mode was not repeated exactly the
5664 same with ".". For example, when 'autoindent' is set and pasting
5665 text with leading indent. (Perry)
5666 Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert
5667 mode, which insert the contents of a register literally.
5668 Files: src/edit.c, src/normal.c, runtime/doc/insert.txt
5671 Problem: When pasting text with [ <MiddleMouse>, the cursor could end up
5672 after the last character of the line.
5673 Solution: Correct the cursor position for the change in indent.
5676 Patch 5.4.x1 (note: Replaces patch 5.4.9)
5677 Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not
5678 defined until vim.h is included.
5679 Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where
5681 Files: src/gui_w32.c
5684 Problem: BeOS: When pasting text, one character was moved to the end.
5685 Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out
5686 with acquire_sem_etc(). (Will Day)
5687 Files: src/os_beos.c, src/ui.c
5690 Problem: Win32 GUI: When dropping a directory on a running gvim it crashes.
5691 Solution: Avoid using a NULL file name. Also display a message to indicate
5692 that the current directory was changed.
5693 Files: src/gui_w32.c
5696 Problem: Win32 GUI: Removing an item from the popup menu doesn't work.
5697 Solution: Don't remove the item from the menubar, but from the parent popup
5699 Files: src/gui_w32.c
5701 Patch 5.4.x5 (addition to 5.4.34)
5702 Files: src/gui_w32.c
5705 Problem: Win32: Expanding (dir)name starting with a dot doesn't work.
5706 (McCormack) Only when there is a path before it.
5707 Solution: Fix the check, done before expansion, if the file name pattern
5709 Files: src/os_win32.c
5712 Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult.
5713 Solution: Add uninstall program to remove the registry keys. It is installed
5714 in the "Add/Remove programs" list for ease of use.
5715 Also: don't set $VIM when the executable is with the runtime files.
5716 Also: Add a text file with a step-by-step description of how to
5717 uninstall Vim for DOS and Windows.
5718 Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt
5720 Patch 5.4.x8 (addition to 5.4.45)
5724 Problem: Win32 GUI: After executing an external command, focus is not
5725 always regained (when using focus-follows-mouse).
5726 Solution: Add SetFocus() in mch_system(). (Mike Steed)
5727 Files: src/os_win32.c
5731 Problem: ":let @* = @:" did not work. The text was not put on the
5732 I clipboard. (Fisher)
5733 Solution: Own the clipboard and put the text on it.
5737 Problem: append() did not mark the buffer modified. Marks below the
5738 new line were not adjusted.
5739 Solution: Fix the f_append() function.
5743 Problem: Editing compressed ".gz" files doesn't work on non-Unix systems,
5744 because there is no "mv" command.
5745 Solution: Add the rename() function and use it instead of ":!mv".
5746 Also: Disable the automatic jump to the last position, because it
5747 changes the jumplist.
5748 Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim
5751 Problem: When using whole-line completion in insert mode while the cursor
5752 is in the indent, get "out of memory" error. (Stekrt)
5753 Solution: Don't allocate a negative amount of memory in ins_complete().
5757 Problem: Win32: The 'path' option can hold only up to 256 characters,
5758 because _MAX_PATH is 256. (Robert Webb)
5759 Solution: Use a fixed path length of 1024.
5760 Files: src/os_win32.h
5763 Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work.
5764 Solution: Add $(SUFFIX) to all places where an executable is used. Also
5765 pass it to ctags. (Reynolds)
5769 Problem: When using "cat | vim -" in an xterm, the xterm version reply
5770 would end up in the file.
5771 Solution: Read the file from stdin before switching the terminal to RAW
5772 mode. Should also avoid problems with programs that use a
5773 specific terminal setting.
5774 Also: when using the GUI, print "Reading from stdin..." in the GUI
5775 window, to give a hint why it doesn't do anything.
5776 Files: src/main.c, src/fileio.c
5779 Problem: On multi-threaded Solaris, suspending doesn't work.
5780 Solution: Call pause() when the SIGCONT signal was not received after
5781 sending the SIGTSTP signal. (Nagano)
5782 Files: src/os_unix.c
5785 Problem: 'winaltkeys' could be set to an empty argument, which is illegal.
5786 Solution: Give an error message when doing ":set winaltkeys=".
5790 Problem: Win32 console: Using ALTGR on a German keyboard to produce "}"
5791 doesn't work, because the 8th bit is set when ALT is pressed.
5792 Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert)
5793 Files: src/os_win32.c
5796 Problem: Tcl: Configure always uses tclsh8.0.
5797 Also: Loading a library doesn't work.
5798 Solution: Add "--with-tclsh" configure argument to allow specifying another
5799 name for the tcl shell.
5800 Call Tcl_Init() in tclinit() to make loading libraries work.
5802 Files: src/configure.in, src/configure, src/if_tcl.c
5805 Problem: The "user_commands" feature is called "user-commands".
5806 Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom)
5807 Keep "user-commands" for the has() function, to remain backwards
5808 compatible with 5.4.
5809 Files: src/eval.c, src/version.c
5812 Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo
5813 file. That is very wrong when OS/2 is on another partition.
5814 Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS.
5815 Also: Makefile.os2 didn't depend on os_unix.h.
5816 Files: src/os_unix.h, src/Makefile.os2
5819 Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work.
5820 Solution: Interpret a click of the wheel as a key press of the <MouseDown>
5821 or <MouseUp> keys. Default behavior is to scroll three lines, or
5822 a full page when Shift is used.
5823 Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c,
5824 src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c,
5825 src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h,
5826 runtime/doc/scroll.txt
5829 Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert
5830 started with the <Insert> key. (Andreas Rohrschneider)
5831 Solution: Replace <Insert> with "i" before setting up the redo buffer.
5835 Problem: VMS: GUI does not compile and run.
5836 Solution: Various fixes. (Zoltan Arpadffy)
5837 Moved functions from os_unix.c to ui.c, so that VMS can use them
5838 too: open_app_context(), x11_setup_atoms() and clip_x11* functions.
5839 Made xterm_dpy global, it's now used by ui.c and os_unix.c.
5840 Use gethostname() always, sys_hostname doesn't exist.
5841 Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c,
5842 src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro
5844 Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar()
5845 to avoid symbol length limit of 31 characters. (Steve P. Wall)
5848 Problem: SASC complains about dead assignments and implicit type casts.
5849 Solution: Removed the dead assignments. Added explicit type casts.
5850 Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c,
5851 src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c,
5852 src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c,
5856 Problem: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in
5857 another line truncates that line. (Devin Weaver)
5858 Solution: When using a command that starts Insert mode from CTRL-O, reset
5859 "restart_edit" first. This avoids that edit() is called with a
5860 mix of starting a new edit command and restarting a previous one.
5863 ==============================================================================
5864 VERSION 5.6 *version-5.6*
5866 Version 5.6 is a bug-fix version of 5.5.
5869 Changed *changed-5.6*
5872 Small changes to OleVim files. (Christian Schaller)
5874 Inserted "/**/" between patch numbers in src/version.c. This allows for one
5875 line of context, which some versions of patch need.
5877 Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts
5878 for alphabetical items to avoid a clash with fixed items.
5884 Included Exuberant Ctags version 3.4. (Darren Hiebert)
5886 OpenWithVim in Python. (Christian Schaller)
5888 Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids
5889 the reported problems with the MS Office taskbar. Now it's a Shell Extension.
5893 abel Abel (John Cook)
5894 aml Arc Macro Language (Nikki Knuit)
5895 apachestyle Apache-style config file (Christian Hammers)
5896 cf Cold Fusion (Jeff Lanzarotta)
5897 ctrlh files with CTRL-H sequences (Bram Moolenaar)
5898 cupl CUPL (John Cook)
5899 cuplsim CUPL simulation (John Cook)
5900 erlang Erlang (Kresimir Marzic)
5901 gedcom Gedcom (Paul Johnson)
5902 icon Icon (Wendell Turner)
5903 ist MakeIndex style (Peter Meszaros)
5904 jsp Java Server Pages (Rafael Garcia-Suarez)
5905 rcslog Rcslog (Joe Karthauser)
5906 remind Remind (Davide Alberani)
5907 sqr Structured Query Report Writer (Paul Moore)
5908 tads TADS (Amir Karger)
5909 texinfo Texinfo (Sandor Kopanyi)
5910 xpm2 X Pixmap v2 (Steve Wall)
5912 The 'C' flag in 'cpoptions' can be used to switch off concatenation for
5913 sourced lines. See patch 5.5.013 below. |line-continuation|
5915 "excludenl" argument for the ":syntax" command. See patch 5.5.032 below.
5918 Implemented |z+| and |z^| commands. See patch 5.5.050 below.
5920 Vim logo in Corel Draw format. Can be scaled to any resolution.
5926 Using this mapping in Select mode, terminated completion:
5927 ":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher)
5928 Ignore K_SELECT in ins_compl_prep().
5930 VMS (Zoltan Arpadffy, David Elins):
5931 - ioctl() in pty.c caused trouble, #ifndef VMS added.
5932 - Cut & paste mismatch corrected.
5933 - Popup menu line crash corrected. (Patch 5.5.047)
5934 - Motif directories during open and save as corrected.
5935 - Handle full file names with version numbers. (Patch 5.5.046)
5936 - Directory handling (CD command etc.)
5937 - Corrected file name conversion VMS to Unix and v.v.
5938 - Recovery was not working.
5939 - Terminal and signal handling was outdated compared to os_unix.c.
5940 - Improved os_vms.txt.
5942 Configure used fprintf() instead of printf() to check for __DATE__ and
5943 __TIME__. (John Card II)
5945 BeOS: Adjust computing the char_height and char_ascent. Round them up
5946 separately, avoids redrawing artifacts. (Mike Steed)
5948 Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and
5949 findmatchlimit(). (Taro Muraoka)
5952 - With GTK 1.2.5 and later the scrollbars were not redrawn correctly.
5953 - Adjusted the gtk_form_draw() function.
5954 - SNiFF connection didn't work.
5955 - 'mousefocus' was not working. (Dalecki)
5956 - Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@.
5960 Problem: Configure in the top directory did not pass on an argument with a
5961 space correctly. For example "./configure --previs="/My home".
5963 Solution: Use '"$@"' instead of '$*' to pass on the arguments.
5967 Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker)
5968 Solution: Use "fds[].revents & POLLIN".
5969 Files: src/os_unix.c
5972 Problem: The autoconf check for sizeof(int) is wrong on machines where
5973 sizeof(size_t) != sizeof(int).
5974 Solution: Use our own configure check. Also fixes the warning for
5976 Files: src/configure.in, src/configure
5979 Problem: On Unix it's not possible to interrupt ":sleep 100".
5980 Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to
5981 wake us up. But switch off echo, added TMODE_SLEEP.
5982 Files: src/term.h, src/os_unix.c
5985 Problem: When using <f-args> with a user command, an empty argument to the
5986 command resulted in one empty string, while no string was
5988 Solution: Catch an empty argument and pass no argument to the function.
5990 Files: src/ex_docmd.c
5993 Problem: Python: When platform-dependent files are in another directory
5994 than the platform-independent files it doesn't work.
5995 Solution: Also check the executable directory, and add it to CFLAGS. (Tessa
5997 Files: src/configure.in, src/configure
5999 Patch 5.5.007 (extra)
6000 Problem: Win32 OLE: Occasional crash when exiting while still being used
6002 Solution: Move OleUninitialize() to before deleting the application object.
6004 Files: src/if_ole.cpp
6007 Problem: 10000@@ takes a long time and cannot be interrupted.
6008 Solution: Check for CTRL-C typed while in the loop to push the register.
6012 Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader)
6013 Solution: Remove configure check for Sequent.
6014 Files: src/configure.in, src/configure
6017 Problem: Ctags freed a memory block twice when exiting. When out of
6018 memory, a misleading error message was given.
6019 Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren
6024 Problem: After "CTRL-V s", the cursor jumps back to the start, while all
6025 other operators leave the cursor on the last changed character.
6027 Solution: Position cursor on last changed character, if possible.
6031 Problem: Using CTRL-] in Visual mode doesn't work when the text includes a
6032 space (just where it's useful). (Stefan Bittner)
6033 Solution: Don't escape special characters in a tag name with a backslash.
6037 Problem: The ":append" and ":insert" commands allow using a leading
6038 backslash in a line. The ":source" command concatenates those
6040 Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation.
6041 Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt,
6042 runtime/filetype.vim, runtime/scripts.vim
6045 Problem: When executing a register with ":@", the ":append" command would
6046 get text lines with a ':' prepended. (Heinlein)
6047 Solution: Remove the ':' characters.
6048 Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h
6051 Problem: When using ":g/pat/p", it's hard to see where the output starts,
6052 the ":g" command is overwritten. Vi keeps the ":g" command.
6053 Solution: Keep the ":g" command, but allow overwriting it with the report
6054 for the number of changes.
6055 Files: src/ex_cmds.c
6057 Patch 5.5.016 (extra)
6058 Problem: Win32: Using regedit to install Vim in the popup menu requires the
6059 user to confirm this in a dialog.
6060 Solution: Use "regedit /s" to avoid the dialog
6061 Files: src/dosinst.c
6064 Problem: If an error occurs when closing the current window, Vim could get
6065 stuck in the error handling.
6066 Solution: Don't set curwin to NULL when closing the current window.
6070 Problem: Absolute paths in shell scripts do not always work.
6071 Solution: Use /usr/bin/env to find out the path.
6072 Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl,
6073 runtime/tools/shtags.pl
6076 Problem: A function call in 'statusline' stops using ":q" twice from
6077 exiting, when the last argument hasn't been edited.
6078 Solution: Don't decrement quitmore when executing a function. (Madsen)
6079 Files: src/ex_docmd.c
6082 Problem: When the output of CTRL-D completion in the commandline goes all
6083 the way to the last column, there is an empty line.
6084 Solution: Don't add a newline when the cursor wrapped already. (Madsen)
6085 Files: src/ex_getln.c
6088 Problem: When checking if a file name in the tags file is relative,
6089 environment variables were not expanded.
6090 Solution: Expand the file name before checking if it is relative. (Madsen)
6094 Problem: When setting or resetting 'paste' the ruler wasn't updated.
6095 Solution: Update the status lines when 'ruler' changes because of 'paste'.
6099 Problem: When editing a new file and autocommands change the cursor
6100 position, the cursor was moved back to the first non-white, unless
6101 'startofline' was reset.
6102 Solution: Keep the new column, just like the line number.
6103 Files: src/ex_cmds.c
6105 Patch 5.5.024 (extra)
6106 Problem: Win32 GUI: When using confirm() to put up a dialog without a
6107 default button, the dialog would not have keyboard focus.
6109 Solution: Always set focus to the dialog window. Only set focus to a button
6110 when a default one is specified.
6111 Files: src/gui_w32.c
6114 Problem: When using "keepend" in a syntax region, a contained match that
6115 includes the end-of-line could still force that region to
6116 continue, if there is another contained match in between.
6117 Solution: Check the keepend_level in check_state_ends().
6121 Problem: When starting Vim in a white-on-black xterm, with 'bg' set to
6122 "dark", and then starting the GUI with ":gui", setting 'bg' to
6123 "light" in the gvimrc, the highlighting isn't set. (Tsjokwing)
6124 Solution: Set the highlighting when 'bg' is changed in the gvimrc, even
6125 though full_screen isn't set.
6129 Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but
6130 WANT_TITLE isn't. (Barnum)
6131 Solution: Move a few functions that are used by the X11 title and clipboard
6132 and put another "#if" around it.
6133 Files: src/os_unix.c
6135 Patch 5.5.028 (extra)
6136 Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":"
6137 prompt, the file is edited but the command line is actually still
6138 there, the cursor goes back to command line on the next command.
6140 Solution: When dropping a file or directory on gvim while at the ":" prompt,
6141 insert the name of the file/directory. Allows using the
6142 file/directory name for any Ex command.
6143 Files: src/gui_w32.c
6146 Problem: "das" at the end of the file didn't delete the last character of
6148 Solution: When there is no character after the sentence, make the operation
6149 inclusive in current_sent().
6153 Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in
6154 vim.h as a macro. (wuxin)
6155 Solution: Renamed "term_str" to "buf" in do_xterm_trace().
6156 Files: src/os_unix.c
6158 Patch 5.5.031 (extra)
6159 Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind
6160 and will be killed ungracefully. (Krishna)
6161 Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to
6162 exit gracefully. Allow the user to cancel the shutdown if there
6163 is a changed buffer.
6164 Files: src/gui_w32.c
6167 Problem: Patch 5.5.025 wasn't right. And C highlighting was still not
6168 working correctly for a #define.
6169 Solution: Added "excludenl" argument to ":syntax", to be able not to extend
6170 a containing item when there is a match with the end-of-line.
6171 Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim
6174 Problem: When reading from stdin, a long line in viminfo would mess up the
6175 file message. readfile() uses IObuff for keep_msg, which could be
6176 overwritten by anyone.
6177 Solution: Copy the message from IObuff to msg_buf and set keep_msg to that.
6178 Also change vim_fgets() to not use IObuff any longer.
6182 Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set.
6183 Solution: Don't try to initialize the highlighting before it has been
6184 initialized from main().
6188 Problem: GTK with XIM: Resizing with status area was messy, and
6189 ":set guioptions+=b" didn't work.
6190 Solution: Make status area a separate widget, but not a separate window.
6192 Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c
6195 Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to
6196 uncompress a file did not do detection for 'fileformat'. This is
6197 because the filtering is done with 'binary' set.
6198 Solution: Split the filtering into separate write, filter and read commands.
6199 Files: runtime/vimrc_example.vim
6202 Problem: The "U" command didn't mark the buffer as changed. (McCormack)
6203 Solution: Set the 'modified' flag when using "U".
6207 Problem: When typing a long ":" command, so that the screen scrolls up,
6208 causes the hit-enter prompt, even though the user just typed
6209 return to execute the command.
6210 Solution: Reset need_wait_return if (part of) the command was typed in
6212 Files: src/ex_getln.c
6215 Problem: When using a custom status line, "%a" (file # of #) reports the
6216 index of the current window for all windows.
6217 Solution: Pass a window pointer to append_arg_number(), and pass the window
6218 being updated from build_stl_str_hl(). (Stephen P. Wall)
6219 Files: src/buffer.c, src/screen.c, src/proto/buffer.pro
6222 Problem: Multi-byte: When there is some error in xim_real_init(), it can
6223 close XIM and return. After this there can be a segv.
6224 Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try
6225 to find more matches for supported styles. (Sung-Hyun Nam)
6226 Files: src/multbyte.c
6229 Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines.
6230 Solution: Translate CTRL-- to CTRL-_. (Robert Webb)
6231 Files: src/gui_x11.c
6234 Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even
6235 when the menu has been disabled by removing 'm' from 'guioptions'.
6236 Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf)
6237 Files: src/gui_x11.c
6240 Problem: GTK: Handling of fontset fonts was not right when 'guifontset'
6241 contains exactly 14 times '-'.
6242 Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam)
6243 Files: src/gui_gtk_x11.c
6246 Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That
6247 might not work everywhere.
6248 Solution: Use "/usr/bin/env perl" instead.
6249 Files: runtime/tools/pltags.pl
6252 Problem: Using "this_session" variable does not work, requires preceding it
6253 with "v:". Default filename for ":mksession" isn't mentioned
6254 in the docs. (Fisher)
6255 Solution: Support using "this_session" to be backwards compatible.
6256 Files: src/eval.c, runtime/doc/options.txt
6258 Patch 5.5.046 (extra)
6259 Problem: VMS: problems with path and filename.
6260 Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy)
6261 Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c,
6262 src/proto/os_vms.pro
6265 Problem: VMS: Crash when using the popup menu
6266 Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy)
6267 Files: src/structs.h, src/menu.c
6270 Problem: HP-UX 11: Compiling doesn't work, because both string.h and
6271 strings.h are included. (Squassabia)
6272 Solution: The configure test for including both string.h and strings.h
6273 must include <Xm/Xm.h> first, because it causes problems.
6274 Files: src/configure.in, src/configure, src/config.h.in
6277 Problem: Unix: When installing Vim, the protection bits of files might be
6278 influenced by the umask.
6279 Solution: Add $(FILEMOD) to Makefile. (Shetye)
6283 Problem: "z+" and "z^" commands are missing.
6284 Solution: Implemented "z+" and "z^".
6285 Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt
6288 Problem: Several Unix systems have a problem with the optimization limits
6290 Solution: Removed the configure check, let the user add it manually in
6291 Makefile or the environment.
6292 Files: src/configure.in, src/configure, src/Makefile
6295 Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani)
6296 Solution: Ignore special keys at the console dialog. Also ignore characters
6297 > 255 for other uses of tolower() and toupper().
6298 Files: src/menu.c, src/message.c, src/misc2.c
6301 Problem: Indenting is wrong after a function when 'cino' has "fs". Another
6302 problem when 'cino' has "{s".
6303 Solution: Put line after closing "}" of a function at the left margin.
6304 Apply ind_open_extra in the right way after a '{'.
6305 Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
6308 Problem: Unix: ":e #" doesn't work if the alternate file name contains a
6309 space or backslash. (Hudacek)
6310 Solution: When replacing "#", "%" or other items that stand for a file name,
6311 prepend a backslash before special characters.
6312 Files: src/ex_docmd.c
6315 Problem: Using "<C-V>$r-" in blockwise Visual mode replaces one character
6316 beyond the end of the line. (Zivkov)
6317 Solution: Only replace existing characters.
6321 Problem: After "z20<CR>" messages were printed at the old command line
6322 position once. (Veselinovic)
6323 Solution: Set msg_row and msg_col when changing cmdline_row in
6328 Problem: After "S<Esc>" it should be possible to restore the line with "U".
6330 Solution: Don't call u_clearline() in op_delete() when changing only one
6335 Problem: Using a long search pattern and then "n" causes the hit-enter
6337 Solution: Truncate the echoed pattern, like other messages. Moved code for
6338 truncating from msg_attr() to msg_strtrunc().
6339 Files: src/message.c, src/proto/message.pro, src/search.c
6342 Problem: GTK GUI: When $term is invalid, using "gvim" gives an error
6343 message, even though $term isn't really used. (Robbins)
6344 Solution: When the GUI is about to start, skip the error messages for a
6348 Patch 5.5.060 (extra)
6349 Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w"
6350 causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf)
6351 Solution: The code to work around a LFN bug in Windows 95 doesn't handle a
6352 non-existing target name correctly. When renaming fails, make
6353 sure the file has its original name. Also do this for the Win32
6354 version, although it's unlikely that it runs into this problem.
6355 Files: src/os_msdos.c, src/os_win32.c
6358 Problem: When using "\:" in a modeline, the backslash is included in the
6359 option value. (Mohsin)
6360 Solution: Remove one backslash before the ':' in a modeline.
6361 Files: src/buffer.c, runtime/doc/options.txt
6363 Patch 5.5.062 (extra)
6364 Problem: Win32 console: Temp files are created in the root of the current
6365 drive, which may be read-only. (Peterson)
6366 Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the
6367 current directory. Cleaned up vim_tempname() a bit.
6368 Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt
6371 Problem: When using whole-line completion in Insert mode, 'cindent' is
6372 applied, even after changing the indent of the line.
6373 Solution: Don't reindent the completed line after inserting/removing indent.
6378 Problem: has("sniff") doesn't work correctly.
6379 Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer)
6383 Problem: When dropping a file on Vim, the 'shellslash' option is not
6384 effective. (Krishna)
6385 Solution: Fix the slashes in the dropped file names according to
6387 Files: src/ex_docmd.c, runtime/doc/options.txt
6390 Problem: For systems with backslash in file name: Setting a file name
6391 option to a value starting with "\\machine" removed a backslash.
6392 Solution: Keep the double backslash for "\\machine", but do change
6393 "\\\\machine" to "\\machine" for backwards compatibility.
6394 Files: src/option.c, runtime/doc/options.txt
6397 Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first
6398 match in a line. (Benji Fisher)
6399 Solution: Fix highlighting an empty match. Also highlight the first
6400 character in an empty line for "$".
6404 Problem: Crash when a ":while" is used with an argument that has an error.
6406 Solution: Was using an uninitialized index in the cs_line[] array. The
6407 crash only happened when the index was far off. Made sure the
6408 uninitialized index isn't used.
6409 Files: src/ex_docmd.c
6412 Problem: Shifting lines in blockwise Visual mode didn't set the 'modified'
6414 Solution: Do set the 'modified' flag.
6418 Problem: When editing a new file, creating that file outside of Vim, then
6419 editing it again, ":w" still warns for overwriting an existing
6421 Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly.
6422 Files: src/buffer.c, src/fileio.c
6425 Problem: Using a matchgroup in a ":syn region", which is the same syntax
6426 group as the region, didn't stop a contained item from matching in
6428 Solution: Also push an item on the stack when the syntax ID of the
6429 matchgroup is the same as the syntax ID of the region.
6432 Patch 5.5.072 (extra)
6433 Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may
6434 crash, and the DOS console too.
6435 Solution: Check that the value of 'columns' isn't larger than the number of
6436 columns that the BIOS reports.
6437 Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c
6439 Patch 5.5.073 (extra)
6440 Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the
6441 "match case" checkbox. The Find/Replace dialog didn't handle the
6442 "match whole word" checkbox.
6443 Solution: Support the "match case" and "match whole word" checkboxes.
6444 Files: src/gui_w32.c
6447 Problem: Using <C-End> with a count doesn't work like it does with "G".
6449 Solution: Accept a count for <C-End> and <C-Home>.
6453 Problem: The script for conversion to HTML was an older version.
6454 Solution: Add support for running 2html.vim on a color terminal.
6455 Files: runtime/syntax/2html.vim
6458 Problem: Defining a function inside a function didn't give an error
6459 message. A missing ":endfunction" doesn't give an error message.
6460 Solution: Allow defining a function inside a function.
6461 Files: src/eval.c, runtime/doc/eval.txt
6464 Problem: A missing ":endwhile" or ":endif" doesn't give an error message.
6466 Solution: Check for missing ":endwhile" and ":endif" in sourced files.
6467 Add missing ":endif" in file selection macros.
6468 Files: src/ex_docmd.c, runtime/macros/file_select.vim
6471 Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar'
6472 was changed when 'compatible' is set.
6473 Solution: Moved entry of 'hlsearch' in options[] table down.
6474 Don't reset 'toolbar' option to the default value when
6475 'compatible' is set.
6479 Problem: Using a backwards range inside ":if 0" gave an error message.
6480 Solution: Don't complain about a range when it is not going to be used.
6482 Files: src/ex_docmd.c
6485 Problem: ":let" didn't show internal Vim variables. (Ron Aaron)
6486 Solution: Do show ":v" variables for ":let" and ":let v:name".
6490 Problem: Selecting a syntax from the Syntax menu gives an error message.
6491 Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild)
6492 Files: runtime/menu.vim
6495 Problem: When compiling with +extra_search but without +syntax, there is a
6496 compilation error in screen.c. (Axel Kielhorn)
6497 Solution: Adjust the #ifdef for declaring and initializing "line" in
6498 win_line(). Also solve compilation problem when +statusline is
6499 used without +eval. Another one when +cmdline_compl is used
6501 Files: src/screen.c, src/misc2.c
6504 Problem: In a function, ":startinsert!" does not append to the end of the
6505 line if a ":normal" command was used to move the cursor. (Fisher)
6506 Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again.
6507 Files: src/ex_docmd.c
6509 Patch 5.6a.011 (depends on 5.6a.004)
6510 Problem: A missing ":endif" or ":endwhile" in a function doesn't give an
6512 Solution: Give that error message.
6513 Files: src/ex_docmd.c
6515 Patch 5.6a.012 (depends on 5.6a.008)
6516 Problem: Some Syntax menu entries caused a hit-enter prompt.
6517 Solution: Call a function to make the command shorter. Also rename a few
6518 functions to avoid name clashes.
6519 Files: runtime/menu.vim
6522 Problem: Command line completion works different when another completion
6523 was done earlier. (Johannes Zellner)
6524 Solution: Reset wim_index when starting a new completion.
6525 Files: src/ex_getln.c
6528 Problem: Various warning messages when compiling and running lint with
6529 different combinations of features.
6530 Solution: Fix the warning messages.
6531 Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c,
6532 src/option.c, src/screen.c, src/search.c, src/syntax.c,
6533 src/feature.h, src/globals.h
6536 Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME.
6537 Solution: Let Vim expand $VIMRUNTIME, instead of the shell.
6540 Patch 5.6a.016 (extra)
6541 Problem: Mac: Window size is restricted when starting. Cannot drag the
6542 window all over the desktop.
6543 Solution: Get real screen size instead of assuming 640x400. Do not use a
6544 fixed number for the drag limits. (Axel Kielhorn)
6545 Files: src/gui_mac.c
6548 Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline
6549 mode is in the wrong position. (Stol)
6550 Solution: Add priority numbers for all Paste menu entries.
6551 Files: runtime/menu.vim
6554 Problem: GTK GUI: submenu priority doesn't work.
6555 Help dialog could be destroyed too soon.
6556 When closing a dialog window (e.g. the "ATTENTION" one), Vim would
6558 When GTK theme is changed, Vim doesn't adjust to the new colors.
6559 Argument for ":promptfind" isn't used.
6560 Solution: Fixed the mentioned problems.
6561 Made the dialogs look&feel nicer.
6562 Moved functions to avoid the need for a forward declaration.
6563 Fixed reentrancy of the file browser dialog.
6564 Added drag&drop support for GNOME.
6565 Init the text for the Find/replace dialog from the last used
6566 search string. Set "match whole word" toggle button correctly.
6567 Made repeat rate for drag outside of window depend on the
6568 distance from the window. (Marcin Dalecki)
6569 Made the drag in Visual mode actually work.
6570 Removed recursiveness protection from gui_mch_get_rgb(), it might
6571 cause more trouble than it solves.
6572 Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c,
6573 src/proto/ui.pro, src/misc2.c
6576 Problem: When trying to recover through NFS, which uses a large block size,
6577 Vim might think the swap file is empty, because mf_blocknr_max is
6578 zero. (Scott McDermott)
6579 Solution: When computing the number of blocks of the file in mf_open(),
6580 round up instead of down.
6581 Files: src/memfile.c
6584 Problem: GUI GTK: Could not set display for gvim.
6585 Solution: Add "-display" and "--display" arguments. (Marcin Dalecki)
6586 Files: src/gui_gtk_x11.c
6589 Problem: Recovering still may not work when the block size of the device
6590 where the swap file is located is larger than 4096.
6591 Solution: Read block 0 with the minimal block size.
6592 Files: src/memline.c, src/memfile.c, src/vim.h
6594 Patch 5.6a.022 (extra)
6595 Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up
6596 (e.g., for an existing swap file), Vim crashes. (David Elins)
6597 Solution: Before showing a dialog, open the main window.
6598 Files: src/gui_w32.c
6601 Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron)
6602 Solution: Check for running into the end of the string in do_string_sub().
6606 Problem: Using an autocommand to delete a buffer when leaving it can cause
6607 a crash when jumping to a tag. (Franz Gorkotte)
6608 Solution: In do_tag(), store tagstacklen before jumping to another buffer.
6609 Check tagstackidx after jumping to another buffer.
6610 Add extra check in win_split() if tagname isn't NULL.
6611 Files: src/tag.c, src/window.c
6613 Patch 5.6a.025 (extra)
6614 Problem: Win32 GUI: The tables for toupper() and tolower() are initialized
6615 too late. (Mike Steed)
6616 Solution: Move the initialization to win32_init() and call it from main().
6617 Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro
6620 Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer)
6621 Solution: Skip a second wait() call if waitpid() already detected that the
6623 Files: src/os_unix.c
6625 Patch 5.6a.027 (extra)
6626 Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems
6627 for the Office toolbar.
6628 Solution: Use a shell extension dll. (Tianmiao Hu)
6629 Added it to the install and uninstal programs, replaces the old
6630 "Edit with Vim" menu registry entries.
6631 Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt
6633 Patch 5.6a.028 (extra)
6634 Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte
6636 Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters
6638 Files: src/gui_w32.c
6640 ==============================================================================
6641 VERSION 5.7 *version-5.7*
6643 Version 5.7 is a bug-fix version of 5.6.
6645 Changed *changed-5.7*
6648 Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a
6649 wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt.
6656 stp Stored Procedures (Jeff Lanzarotta)
6657 snnsnet, snnspat, snnsres SNNS (Davide Alberani)
6658 mel MEL (Robert Minsk)
6659 ruby Ruby (Mirko Nasato)
6660 tli TealInfo (Kurt W. Andrews)
6661 ora Oracle config file (Sandor Kopanyi)
6662 abaqus Abaqus (Carl Osterwisch)
6663 jproperties Java Properties (Simon Baldwin)
6664 apache Apache config (Allan Kelly)
6665 csp CSP (Jan Bredereke)
6666 samba Samba config (Rafael Garcia-Suarez)
6667 kscript KDE script (Thomas Capricelli)
6668 hb Hyper Builder (Alejandro Forero Cuervo)
6669 fortran Fortran (rewritten) (Ajit J. Thakkar)
6670 sml SML (Fabrizio Zeno Cornelli)
6671 cvs CVS commit (Matt Dunford)
6672 aspperl ASP Perl (Aaron Hope)
6673 bc BC calculator (Vladimir Scholtz)
6674 latte Latte (Nick Moffitt)
6675 wml WML (Gerfried Fuchs)
6677 Included Exuberant ctags 3.5.1. (Darren Hiebert)
6679 "display" and "fold" arguments for syntax items. For future extension, they
6682 strftime() function for the Macintosh.
6684 macros/explorer.vim: A file browser script (M A Aziz Ahmed)
6690 The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The
6691 executable is smaller.
6693 When a "make test" failed, the output file was lost. Rename it to
6694 test99.failed to be able to see what went wrong.
6696 After sourcing bugreport.vim, it's not clear that bugreport.txt has been
6697 written in the current directory. Edit bugreport.txt to avoid that.
6699 Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka)
6701 Win32 console: Mouse drags were passed on even when the mouse didn't move.
6703 Perl interface: In Buffers(), type of argument to SvPV() was int, should be
6704 STRLEN. (Tony Leneis)
6706 Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in
6707 os_unix.h. (Jake Hamby)
6709 Mappings in mswin.vim could break when some commands are mapped. Add "nore"
6710 to most mappings to avoid re-mapping.
6712 modify_fname() made a copy of a file name for ":p" when it already was a full
6713 path name, which is a bit slow.
6715 Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags,
6716 to avoid depending on $PATH. Fixed "make clean".
6718 Many fixes to Macintosh specific parts: (mostly by Dany StAmant)
6719 - Only one Help menu.
6720 - No more crash when removing a menu item.
6721 - Support as External Editor for Codewarrior (still some little glitches).
6722 - Popup menu support.
6723 - Fixed crash when pasting after application switch.
6724 - Color from rgb.txt properly displayed.
6725 - 'isprint' default includes all chars above '~'. (Axel Kielhorn)
6726 - mac_expandpath() was leaking memory.
6727 - Add digraphs table. (Axel Kielhorn)
6728 - Multi-byte support: (Kenichi Asai)
6729 Switch keyscript when going in/out of Insert mode.
6730 Draw multi-byte character correctly.
6731 Don't use mblen() but highest bit of char to detect multi-byte char.
6732 Display value of multi-byte in statusline (also for other systems).
6733 - mouse button was not initialized properly to MOUSE_LEFT when
6734 USE_CTRLCLICKMENU not defined.
6735 - With Japanese SJIS characters: Make "w", "b", and "e" work
6736 properly. (Kenichi Asai)
6737 - Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx.
6739 Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below)
6740 - Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the
6743 - Set 'undolevels' to 1000 by default.
6744 - Made mch_settitle() equivalent to the one in os_unix.c.
6746 RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes
6750 Previously released patches:
6753 Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which
6754 reduces the indent doesn't delete the "#" or "}". (Lorton)
6755 Solution: Adjust ai_col in ins_try_si().
6759 Problem: When using the vim.vim syntax file, a comment with all uppercase
6760 characters causes a hang.
6761 Solution: Adjust pattern for vimCommentTitle (Charles Campbell)
6762 Files: runtime/syntax/vim.vim
6765 Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning
6766 about the colormap. Probably because the window has not been
6768 Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file.
6770 Files: src/gui_gtk.c
6772 Patch 5.6.004 (extra)
6773 Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font
6774 requester appears twice.
6775 Solution: In gui_mch_init_font() don't call get_logfont() but copy
6776 norm_logfont from fh. (Yasuhiro Matsumoto)
6777 Files: src/gui_w32.c
6780 Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a
6781 crash. (David Kotchan)
6782 Solution: Check for negative window height in win_setheight().
6786 Problem: GTK GUI: Bold font cannot always be used. Memory is freed too
6787 early in gui_mch_init_font().
6788 Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush)
6789 Files: src/gui_gtk_x11.c
6791 Patch 5.6.007 (extra)
6792 Problem: Win32 IME: Font is not changed when screen font is changed. And
6793 IME composition window does not trace the cursor.
6794 Solution: Initialize IME font. When cursor is moved, set IME composition
6795 window with ImeSetCompositionWindow(). Add call to
6796 ImmReleaseContext() in several places. (Taro Muraoka)
6797 Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro
6799 Patch 5.6.008 (extra)
6800 Problem: Win32: When two files exist with the same name but different case
6801 (through NFS or Samba), fixing the file name case could cause the
6802 wrong one to be edited.
6803 Solution: Prefer a perfect match above a match while ignoring case in
6804 fname_case(). (Flemming Madsen)
6805 Files: src/os_win32.c
6807 Patch 5.6.009 (extra)
6808 Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting
6809 "Edit with Vim" popup menu entry.
6810 Solution: Only return the help line when called with the GCS_HELPTEXT flag.
6812 Files: GvimExt/gvimext.cpp
6815 Problem: A file name which contains a TAB was not read correctly from the
6816 viminfo file and the ":ls" listing was not aligned properly.
6817 Solution: Parse the buffer list lines in the viminfo file from the end
6818 backwards. Count a Tab for two characters to align the ":ls" list.
6822 Problem: When 'columns' is huge (using a tiny font) and 'statusline' is
6823 used, Vim can crash.
6824 Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin)
6828 Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is
6830 Solution: Add "-c exit" when checking for the shell version.
6831 Files: src/toolcheck
6834 Problem: Multibyte char in tooltip is broken.
6835 Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka)
6839 Problem: When cursor is at the end of line and the character under cursor
6840 is a multibyte character, "yl" doesn't yank 1 multibyte-char.
6842 Solution: Recognize a multibyte-char at end-of-line correctly in oneright().
6844 Also: make "+quickfix" in ":version" output appear alphabetically.
6848 Problem: New xterm delete key sends <Esc>[3~ by default.
6849 Solution: Added <kDel> and <kIns> to make the set of keypad keys complete.
6850 Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c,
6851 src/misc2.c, src/normal.c, src/os_unix.c, src/term.c
6854 Problem: When deleting a search string from history from inside a mapping,
6855 another entry is deleted too. (Benji Fisher)
6856 Solution: Reset last_maptick when deleting the last entry of the search
6857 history. Also: Increment maptick when starting a mapping from
6858 typed characters to avoid a just added search string being
6859 overwritten or removed from history.
6860 Files: src/ex_getln.c, src/getchar.c
6863 Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the
6865 Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall)
6866 Files: src/ex_cmds.c
6869 Problem: ":help [:digit:]" takes a long time to jump to the wrong place.
6870 Solution: Insert a backslash to avoid the special meaning of '[]'.
6871 Files: src/ex_cmds.c
6874 Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype.
6875 Solution: Make pattern for mail filetype more strict.
6876 Files: runtime/filetype.vim
6878 Patch 5.6.020 (extra)
6879 Problem: The DJGPP version eats processor time (Walter Briscoe).
6880 Solution: Call __dpmi_yield() in the busy-wait loop.
6881 Files: src/os_msdos.c
6884 Problem: When 'selection' is "exclusive", a double mouse click in Insert
6885 mode doesn't select last char in line. (Lutz)
6886 Solution: Allow leaving the cursor on the NUL past the line in this case.
6890 Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work.
6891 Solution: Re-insert the backslash before the '~'.
6892 Files: src/ex_getln.c
6894 Patch 5.6.023 (extra)
6895 Problem: Various warnings for the Ming compiler.
6896 Solution: Changes to avoid the warnings. (Bill McCarthy)
6897 Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c,
6898 src/syntax.c, src/vim.rc
6900 Patch 5.6.024 (extra)
6901 Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan)
6902 Solution: Specifically catch keycode 0xBD, like the GUI.
6903 Files: src/os_win32.c
6906 Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH.
6908 Solution: Repeat the read() call to get the gui_in_use value when
6909 interrupted by a signal.
6912 Patch 5.6.026 (extra)
6913 Problem: Win32 GUI: Toolbar bitmaps are searched for in
6914 $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith
6916 Solution: Use $VIM/bitmaps for both, because these are not part of the
6917 distribution but defined by the user.
6918 Files: src/gui_w32.c, runtime/doc/gui.txt
6921 Problem: TCL: Crash when using a Tcl script (reported for Win32).
6922 Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham)
6926 Problem: Xterm patch level 126 sends codes for mouse scroll wheel.
6927 Fully works with xterm patch level 131.
6928 Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61).
6932 Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes
6934 Solution: Add support for shortcut keys. (Marcin Dalecki)
6935 Files: src/gui_gtk.c
6938 Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro
6940 Solution: Set "curbuf" to a valid value in win_close().
6944 Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits
6945 for another character to be typed.
6946 Solution: Recognize the CSI as the second byte of a character and don't wait
6947 for another one. (Yasuhiro Matsumoto)
6948 Files: src/getchar.c
6951 Problem: Functions with an argument that is a line number don't all accept
6952 ".", "$", etc. (Ralf Arens)
6953 Solution: Add get_art_lnum() and use it for setline(), line2byte() and
6958 Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun
6960 Solution: Change logic in searchc() to skip trailing byte of a double-byte
6962 Also: Ask for second byte when searching for double-byte
6963 character. (Park Chong-Dae)
6966 Patch 5.6.034 (extra)
6967 Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper().
6968 Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile
6969 to make using bcc 5.5 easier.
6970 Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor
6973 Problem: Listing the"+comments" feature in the ":version" output depended
6974 on the wrong ID. (Stephen P. Wall)
6975 Solution: Change "CRYPTV" to "COMMENTS".
6976 Files: src/version.c
6979 Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm.
6980 Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang)
6981 Files: src/gui_gtk_x11.c
6984 Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI.
6985 Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam)
6986 Files: src/gui_gtk_x11.c, src/multbyte.c
6989 Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When
6990 'ttymouse' is "xterm" a mouse click is interpreted as a mouse
6992 Solution: Don't recognize the mouse wheel in check_termcode() in the GUI.
6993 Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63.
6994 Files: src/term.c, src/os_unix.c
6997 Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the
6998 system. (Hermann Rochholz)
6999 Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND
7000 property of the window to let the session manager know we finished
7002 Files: src/gui_x11.c
7005 Problem: When using ":s" command, matching the regexp is done twice.
7006 Solution: After copying the matched line, adjust the pointers instead of
7007 finding the match again. (Loic Grenie) Added vim_regnewptr().
7008 Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro
7011 Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons.
7012 Solution: Remove the limit on the number of buttons.
7013 Also support the 'v' flag in 'guioptions'.
7014 For GTK: Center the buttons.
7015 Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c
7018 Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in
7019 the terminal can remain off.
7020 Solution: Call cursor_on() in mch_windexit().
7021 Files: src/os_unix.c
7023 Patch 5.6.043 (extra)
7024 Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont'
7025 doesn't include the bold or italic attributes.
7026 Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font().
7027 Files: src/gui_w32.c
7029 Patch 5.6.044 (extra)
7030 Problem: MS-DOS and Windows: The line that dosinst.exe appends to
7031 autoexec.bat to set PATH is wrong when Vim is in a directory with
7033 Solution: Use double quotes for the value when there is an embedded space.
7034 Files: src/dosinst.c
7036 Patch 5.6.045 (extra) (fixed version)
7037 Problem: VMS: Various small problems.
7038 Solution: Many small changes. (Zoltan Arpadffy)
7039 File name modifier ":h" keeps the path separator.
7040 File name modifier ":e" also removes version.
7041 Compile with MAX_FEAT by default.
7042 When checking for autocommands ignore version in file name.
7043 Be aware of file names being case insensitive.
7044 Added vt320 builtin termcap.
7045 Be prepared for an empty default_vim_dir.
7046 Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim,
7047 runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c,
7048 src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c,
7049 src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c,
7050 src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c
7053 Problem: Systems with backslash in file name: With 'shellslash' set, "vim
7054 */*.c" only uses a slash for the first file name. (Har'El)
7055 Solution: Fix slashes in file name arguments after reading the vimrc file.
7059 Problem: $CPPFLAGS is not passed on to ctags configure.
7060 Solution: Add it. (Walter Briscoe)
7061 Files: src/config.mk.in, src/Makefile
7064 Problem: CTRL-R in Command-line mode is documented to insert text as typed,
7065 but inserts text literally.
7066 Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert
7067 literally. This is consistent with Insert mode. But characters
7068 that end Command-line mode are inserted literally.
7069 Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c,
7070 src/ops.c, src/proto/ops.pro
7073 Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji
7075 Solution: Fix the documentation. Also improve the code to check for a match
7076 after a /* */ comment.
7077 Files: runtime/doc/tagsearch.txt, src/search.c
7080 Problem: Replacing is wrong when replacing a single-byte char with
7081 double-byte char or the other way around.
7082 Solution: Shift the text after the character when it is replaced.
7083 (Yasuhiro Matsumoto)
7084 Files: src/normal.c, src/misc1.c
7087 Problem: ":tprev" and ":tnext" don't give an error message when trying to
7088 go before the first or beyond the last tag. (Robert Webb)
7089 Solution: Added error messages. Also: Delay a second when a file-read
7090 message is going to overwrite an error message, otherwise it won't
7092 Files: src/fileio.c, src/tag.c
7095 Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte,
7096 it terminates the command.
7097 Solution: Skip second byte of multi-byte char when checking for '|' and '"'.
7099 Files: src/ex_docmd.c
7102 Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius)
7103 Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also
7104 for command-line completion.
7105 Files: src/ex_getln.c, src/normal.c
7108 Problem: When using ":e" and ":e #" the cursor is put in the first column
7109 when 'startofline' is set. (Cordell)
7110 Solution: Use the last known column when 'startofline' is set.
7111 Also, use ECMD_LAST more often to simplify the code.
7112 Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro
7115 Problem: When 'statusline' only contains a text without "%" and doesn't fit
7116 in the window, Vim crashes. (Ron Aaron)
7117 Solution: Don't use the pointer for the first item if there is no item.
7120 Patch 5.6.056 (extra)
7121 Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set.
7122 Solution: Use enhanced keyboard functions. (Vince Negri)
7123 Detect presence of enhanced keyboard and set bioskey_read and
7125 Files: src/os_msdos.c
7127 Patch 5.6.057 (extra)
7128 Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off
7130 Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka)
7131 Files: src/gui_w32.c
7134 Problem: When the 'a' flag is not in 'guioptions', non-Windows systems
7135 copy Visually selected text to the clipboard/selection on a yank
7136 or delete command anyway. On Windows it isn't done even when the
7137 'a' flag is included.
7138 Solution: Respect the 'a' flag in 'guioptions' on all systems.
7141 Patch 5.6.059 (extra)
7142 Problem: When moving the cursor over italic text and the characters spill
7143 over to the cell on the right, that spill-over is deleted.
7144 Noticed in the Win32 GUI, can happen on other systems too.
7145 Solution: Redraw italic text starting from a blank, like this is already
7146 done for bold text. (Vince Negri)
7147 Files: src/gui.c, src/gui.h, src/gui_w32.c
7150 Problem: Some bold characters spill over to the cell on the left, that
7151 spill-over can remain sometimes.
7152 Solution: Redraw a characters when the next character was bold and needs
7153 redrawing. (Robert Webb)
7157 Problem: When xterm sends 8-bit controls, recognizing the version response
7159 When using CSI instead of <Esc>[ for the termcap color codes,
7160 using 16 colors doesn't work. (Neil Bird)
7161 Solution: Also accept CSI in place of <Esc>[ for the version string.
7162 Also check for CSI when handling colors 8-15 in term_color().
7163 Use CSI for builtin xterm termcap entries when 'term' contains
7165 Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c,
7166 src/os_unix.c, src/proto/option.pro, src/proto/term.pro
7169 Problem: The documentation says that setting 'smartindent' doesn't have an
7170 effect when 'cindent' is set, but it does make a difference for
7171 lines starting with "#". (Neil Bird)
7172 Solution: Really ignore 'smartindent' when 'cindent' is set.
7173 Files: src/misc1.c, src/ops.c
7176 Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes
7178 Solution: Pass the count on to do_insert() and edit(). (Allan Kelly)
7179 Files: src/normal.c, src/ops.c, src/proto/ops.pro
7182 Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after
7183 including patch 5.6.28. (Vince Negri)
7184 Solution: Don't check for mouse scroll wheel when the mouse code contains
7185 the number of clicks.
7189 Problem: After moving the cursor around in Insert mode, typing a space can
7190 still trigger an abbreviation. (Benji Fisher)
7191 Solution: Don't check for an abbreviation after moving around in Insert mode.
7195 Problem: Still a few bold character spill-over remains after patch 60.
7196 Solution: Clear character just in front of blanking out rest of the line.
7201 Problem: When a file name contains a NL, the viminfo file is corrupted.
7202 Solution: Use viminfo_writestring() to convert the NL to CTRL-V n.
7203 Also fix the Buffers menu and listing a menu name with a newline.
7204 Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c
7207 Problem: Compiling the Perl interface doesn't work with Perl 5.6.0.
7208 (Bernhard Rosenkraenzer)
7209 Solution: Also check xs_apiversion for the version number when prepending
7214 Problem: "go" doesn't always end up at the right character when
7215 'fileformat' is "dos". (Bruce DeVisser)
7216 Solution: Correct computations in ml_find_line_or_offset().
7219 Patch 5.6.070 (depends on 5.6.068)
7220 Problem: Compiling the Perl interface doesn't work with Perl 5.6.0.
7221 (Bernhard Rosenkraenzer)
7222 Solution: Simpler check instead of the one from patch 68.
7226 Problem: "A" in Visual block mode on a Tab positions the cursor one char to
7227 the right. (Michael Haumann)
7228 Solution: Correct the column computation in op_insert().
7232 Problem: When starting Vim with "vim +startinsert", it enters Insert mode
7233 only after typing the first command. (Andrew Pimlott)
7234 Solution: Insert a dummy command in the stuff buffer.
7237 Patch 5.6.073 (extra) (depends on 5.6.034)
7238 Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work.
7239 In dosinst.c toupper() and tolower() give an "internal compiler
7241 Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan
7242 Sharp) Also cleaned up compilation arguments.
7243 Use our own implementation of toupper() in dosinst.c. Use
7244 mytoupper() instead of tolower().
7245 Files: src/Makefile.bor, src/dosinst.c
7247 Patch 5.6.074 (extra)
7248 Problem: Entering CSI directly doesn't always work, because it's recognized
7249 as the start of a special key. Mostly a problem with multi-byte
7251 Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI,
7252 <xCSI> for a CSI typed in the GUI.
7253 Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c,
7254 src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c,
7255 src/keymap.h, src/misc2.c
7258 Problem: When using "I" or "A" in Visual block mode while 'sts' is set may
7259 change spaces to a Tab the inserted text is not correct. (Mike
7260 Steed) And some other problems when using "A" to append after the
7262 Solution: Check for change in spaces/tabs after inserting the text. Append
7263 spaces to fill the gap between the end-of-line and the right edge
7268 Problem: GTK GUI: Mapping <M-Space> doesn't work.
7269 Solution: Don't use the "Alt" modifier twice in key_press_event().
7270 Files: src/gui_gtk_x11.c
7273 Problem: GUI: When interrupting an external program with CTRL-C, gvim might
7274 crash. (Benjamin Korvemaker)
7275 Solution: Avoid using a NULL pointer in ui_inchar_undo().
7279 Problem: Locale doesn't always work on FreeBSD. (David O'Brien)
7280 Solution: Link with the "xpg4" library when available.
7281 Files: src/configure.in, src/configure
7284 Problem: Vim could crash when several Tcl interpreters are created and
7286 Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo
7288 Files: runtime/doc/if_tcl.txt, src/if_tcl.c
7291 Problem: When jumping to a tag, generating the tags file and jumping to the
7292 same tag again uses the old search pattern. (Sung-Hyun Nam)
7293 Solution: Flush cached tag matches when executing an external command.
7294 Files: src/misc2.c, src/proto/tag.pro, src/tag.c
7297 Problem: ":syn include" uses a level for the included file, this confuses
7298 contained items included at the same level.
7299 Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl
7300 to sp_syn_inc_tag. (Scott Bigham)
7301 Files: src/syntax.c, src/structs.h
7304 Problem: When using cscope, Vim can crash.
7305 Solution: Initialize tag_fname in find_tags(). (Anton Blanchard)
7308 Patch 5.6.083 (extra)
7309 Problem: Win32: The visual beep can't be seen. (Eric Roesinger)
7310 Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum)
7311 Also: Allow specifying the delay in t_vb for the GUI.
7312 Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c,
7313 src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc,
7314 src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro,
7315 src/proto/gui_mac.pro, src/proto/gui_riscos.pro,
7316 src/proto/gui_w32.pro, src/proto/gui_x11.pro,
7317 src/proto/gui_beos.pro
7319 Patch 5.6.084 (depends on 5.6.074)
7320 Problem: GUI: Entering CSI doesn't always work for Athena and Motif.
7321 Solution: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074).
7322 Files: src/gui_x11.c
7325 Problem: Multi-byte: Using "r" to replace a double-byte char with a
7326 single-byte char moved the cursor one character. (Matsumoto)
7327 Also, using a count when replacing a single-byte char with a
7328 double-byte char didn't work.
7329 Solution: Don't use del_char() to delete the second byte.
7330 Get "ptr" again after calling ins_char().
7333 Patch 5.6.086 (extra)
7334 Problem: Win32: When using libcall() and the returned value is not a valid
7335 pointer, Vim crashes.
7336 Solution: Use IsBadStringPtr() to check if the pointer is valid.
7337 Files: src/os_win32.c
7340 Problem: Multi-byte: Commands and messages with multi-byte characters are
7342 Solution: Detect double-byte characters. (Yasuhiro Matsumoto)
7343 Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c
7346 Problem: Multi-byte with Motif or Athena: The message "XIM requires
7347 fontset" is annoying when Vim was compiled with XIM support but it
7349 Solution: Remove that message.
7350 Files: src/multbyte.c
7353 Problem: On non-Unix systems it's possible to overwrite a read-only file
7355 Solution: Check if the file permissions allow overwriting before moving the
7356 file to become the backup file.
7360 Problem: When editing a file in "/home/dir/home/dir" this was replaced with
7361 "~~". (Andreas Jellinghaus)
7362 Solution: Replace the home directory only once in home_replace().
7366 Problem: When editing many "no file" files, can't create swap file, because
7367 .sw[a-p] have all been used. (Neil Bird)
7368 Solution: Also use ".sv[a-z]", ".su[a-z]", etc.
7369 Files: src/memline.c
7372 Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim
7374 Solution: After tgetent() returns an error code, call it again with the
7375 terminal name "dumb". This apparently creates an environment in
7376 which tputs() doesn't fail.
7379 Patch 5.6.093 (extra)
7380 Problem: Win32 GUI: "ls | gvim -" will show a message box about reading
7381 stdin when Vim exits. (Donohue)
7382 Solution: Don't write a message about the file read from stdin until the GUI
7387 Problem: Problem with multi-byte string for ":echo var".
7388 Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam)
7389 Also make do_echo() aware of multi-byte characters.
7390 Files: src/eval.c, src/message.c
7393 Problem: With an Emacs TAGS file that include another a relative path
7394 doesn't always work.
7395 Solution: Use expand_tag_fname() on the name of the included file.
7400 Problem: Unix: When editing many files, startup can be slow. (Paul
7402 Solution: Halve the number of stat() calls used to add a file to the buffer
7407 Problem: GTK doesn't respond on drag&drop from ROX-Filer.
7408 Solution: Add "text/uri-list" target. (Thomas Leonard)
7409 Also: fix problem with checking for trash arguments.
7410 Files: src/gui_gtk_x11.c
7413 Problem: Multi-byte: 'showmatch' is performed when second byte of an
7414 inserted double-byte char is a paren or brace.
7415 Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka)
7419 Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at
7420 the end of the line on a multi-byte character the cursor moves to
7422 Solution: Check for multi-byte character at end-of-line. (Taro Muraoka)
7423 Also: fix cls() to detect a double-byte character. (Chong-Dae Park)
7424 Files: src/edit.c, src/search.c
7427 Problem: When reporting the search pattern offset, the string could be
7428 unterminated, which may cause a crash.
7429 Solution: Terminate the string for the search offset. (Stephen P. Wall)
7433 Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the
7435 Solution: Use get_search_pat() to obtain the actually used pattern.
7436 Files: src/ex_cmds.c, src/proto/search.pro, src/search.c
7438 Patch 5.7a.006 (extra)
7439 Problem: VMS: Various problems, also with the VAXC compiler.
7440 Solution: In many places use the Unix code for VMS too.
7441 Added time, date and compiler version to version message.
7443 Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h,
7444 src/main.c, src/message.c, src/misc1.c, src/os_vms.c,
7445 src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h,
7446 src/proto/os_vms.pro, src/proto/version.pro, src/term.c,
7447 src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c
7450 Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C.
7451 Solution: Only use "intr_char" when it has been set.
7452 Files: src/gui_x11.c
7455 Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing
7456 trouble for bold characters. Also happens when moving with the
7457 scrollbar. Best seen when 'writedelay' is non-zero.
7458 When starting the GUI with ":gui" the screen is redrawn once with
7460 Solution: Only set the geometry hints when the window size really changed.
7461 This avoids setting it each time the scrollbar is forcefully
7463 Don't redraw in expose_event() when gui.starting is still set.
7464 Files: src/gui_gtk_x11.c
7467 ==============================================================================
7468 VERSION 5.8 *version-5.8*
7470 Version 5.8 is a bug-fix version of 5.7.
7473 Changed *changed-5.8*
7476 Ctags is no longer included with Vim. It has grown into a project of its own.
7477 You can find it here: http://ctags.sf.net. It is highly recommended as a Vim
7478 companion when you are writing programs.
7485 acedb AceDB (Stewart Morris)
7486 aflex Aflex (Mathieu Clabaut)
7487 antlr Antlr (Mathieu Clabaut)
7488 asm68k 68000 Assembly (Steve Wall)
7489 automake Automake (John Williams)
7490 ayacc Ayacc (Mathieu Clabaut)
7491 b B (Mathieu Clabaut)
7492 bindzone BIND zone (glory hump)
7493 blank Blank (Rafal Sulejman)
7494 cfg Configure files (Igor Prischepoff)
7495 changelog ChangeLog (Gediminas Paulauskas)
7496 cl Clever (Phil Uren)
7497 crontab Crontab (John Hoelzel)
7498 csc Essbase script (Raul Segura Acevedo)
7499 cynlib Cynlib(C++) (Phil Derrick)
7500 cynpp Cyn++ (Phil Derrick)
7501 debchangelog Debian Changelog (Wichert Akkerman)
7502 debcontrol Debian Control (Wichert Akkerman)
7503 dns DNS zone file (Jehsom)
7504 dtml Zope's DTML (Jean Jordaan)
7505 dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham)
7506 ecd Embedix Component Description (John Beppu)
7507 fgl Informix 4GL (Rafal Sulejman)
7508 foxpro FoxPro (Powing Tse)
7509 gsp GNU Server Pages (Nathaniel Harward)
7510 gtkrc GTK rc (David Necas)
7511 hercules Hercules (Avant! Corporation) (Dana Edwards)
7512 htmlos HTML/OS by Aestiva (Jason Rust)
7513 inittab SysV process control (David Necas)
7514 iss Inno Setup (Dominique Stephan)
7515 jam Jam (Ralf Lemke)
7516 jess Jess (Paul Baleme)
7517 lprolog LambdaProlog (Markus Mottl)
7518 ia64 Intel Itanium (parth malwankar)
7519 kix Kixtart (Nigel Gibbs)
7520 mgp MaGic Point (Gerfried Fuchs)
7521 mason Mason (HTML with Perl) (Andrew Smith)
7522 mma Mathematica (Wolfgang Waltenberger)
7523 nqc Not Quite C (Stefan Scherer)
7524 omnimark Omnimark (Paul Terray)
7525 openroad OpenROAD (Luis Moreno Serrano)
7526 named BIND configuration (glory hump)
7527 papp PApp (Marc Lehmann)
7528 pfmain Postfix main config (Peter Kelemen)
7529 pic PIC assembly (Aleksandar Veselinovic)
7530 ppwiz PPWizard (Stefan Schwarzer)
7531 progress Progress (Phil Uren)
7532 psf Product Specification File (Rex Barzee)
7534 registry MS-Windows registry (Dominique Stephan)
7535 robots Robots.txt (Dominique Stephan)
7536 rtf Rich Text Format (Dominique Stephan)
7537 setl SETL (Alex Poylisher)
7538 sgmldecl SGML Declarations (Daniel A. Molina W.)
7539 sinda Sinda input (Adrian Nagle)
7540 sindacmp Sinda compare (Adrian Nagle)
7541 sindaout Sinda output (Adrian Nagle)
7542 smith SMITH (Rafal Sulejman)
7543 snobol4 Snobol 4 (Rafal Sulejman)
7544 strace Strace (David Necas)
7545 tak TAK input (Adrian Nagle)
7546 takcmp TAK compare (Adrian Nagle)
7547 takout TAK output (Adrian Nagle)
7548 tasm Turbo assembly (FooLman)
7549 texmf TeX configuration (David Necas)
7550 trasys Trasys input (Adrian Nagle)
7551 tssgm TSS Geometry (Adrian Nagle)
7552 tssop TSS Optics (Adrian Nagle)
7553 tsscl TSS Command line (Adrian Nagle)
7554 virata Virata Configuration Script (Manuel M.H. Stol)
7555 vsejcl VSE JCL (David Ondrejko)
7556 wdiff Wordwise diff (Gerfried Fuchs)
7557 wsh Windows Scripting Host (Paul Moore)
7558 xkb X Keyboard Extension (David Necas)
7560 Renamed php3 to php, it now also supports php4 (Lutz Eymers)
7563 Problem: Syntax files for Vim 6.0 can't be used with 5.x.
7564 Solution: Add the "default" argument to the ":highlight" command: Ignore the
7565 command if highlighting was already specified.
7568 Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done
7569 when Vim is starting up. Reduces the startup time of the GUI.
7575 Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink.
7577 Fixed compiling under NeXT. (Jeroen C.M. Goudswaard)
7579 optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C').
7581 Tcl interpreter: "buffer" command didn't check for presence of an argument.
7584 dosinst.c: Added checks for too long file name.
7586 Amiga: a file name starting with a colon was considered absolute but it isn't.
7587 Amiga: ":pwd" added a slash when in the root of a drive.
7589 Macintosh: Warnings for unused variables. (Bernhard Pruemmer)
7591 Unix: When catching a deadly signal, handle it in such a way that it's
7592 unlikely that Vim will hang. Call _exit() instead of exit() in case of a
7595 Setting the window title from nothing to something didn't work after patch 29.
7597 Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as
7598 well for extra security.
7600 Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set
7601 'fileformat' to "dos" before writing the temp file.
7603 Unix: Could start waiting for a character when checking for a CTRL-C typed
7604 when an X event is received.
7606 Could not use Perl and Python at the same time on FreeBSD, because Perl used
7607 "-lc" and Python used the threaded C library.
7609 Win32: The Mingw compiler gave a few warning messages.
7611 When using "ZZ" and an autocommand for writing uses an abbreviation it didn't
7612 work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe)
7614 VMS doesn't always have lstat(), added an #ifdef around it.
7616 Added a few corrections for the Macintosh. (Axel Kielhorn)
7618 Win32: Gvimext could not edit more than a few files at once, the length of the
7622 Previously released patches for Vim 5.7:
7625 Problem: When the current buffer is crypted, and another modified buffer
7626 isn't, ":wall" will encrypt the other buffer.
7627 Solution: In buf_write() use "buf" instead of "curbuf" to check for the
7632 Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds
7633 before displaying the read text. (Wichert Akkerman)
7634 Solution: Set "keep_msg" to the file message so that the screen is redrawn
7635 before the three seconds wait for displaying the mode message.
7639 Problem: Searching for "[[:cntrl:]]" doesn't work.
7640 Solution: Exclude NUL from the matching characters, it terminates the list.
7644 Problem: GTK: When selecting a new font, Vim can crash.
7645 Solution: In gui_mch_init_font() unreference the old font, not the new one.
7646 Files: src/gui_gtk_x11.c
7649 Problem: Multibyte: Inserting a wrapped line corrupts kterm screen.
7650 Pasting TEXT/COMPOUND_TEXT into Vim does not work.
7651 On Motif no XIM status line is displayed even though it is
7653 Solution: Don't use xterm trick for wrapping lines for multibyte mode.
7654 Correct a missing "break", added TEXT/COMPOUND_TEXT selection
7656 Add XIMStatusArea fallback code.
7658 Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c
7661 Problem: GUI: redrawing the non-Visual selection is wrong when the window
7662 is unobscured. (Jean-Pierre Etienne)
7663 Solution: Redraw the selection properly and don't clear it. Added "len"
7664 argument to clip_may_redraw_selection().
7665 Files: src/gui.c, src/ui.c, src/proto/ui.pro
7668 Problem: Python: Crash when using the current buffer twice.
7669 Solution: Increase the reference count for buffer and window objects.
7671 Files: src/if_python.c
7674 Problem: In Ex mode, backspacing over the first TAB doesn't work properly.
7676 Solution: Switch the cursor on before printing the newline.
7677 Files: src/ex_getln.c
7679 Patch 5.7.009 (extra)
7680 Problem: Mac: Crash when using a long file.
7681 Solution: Don't redefine malloc() and free(), because it will break using
7686 Problem: When using CTRL-A on a very long number Vim can crash. (Michael
7688 Solution: Truncate the length of the new number to avoid a buffer overflow.
7691 Patch 5.7.011 (extra)
7692 Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed.
7693 Solution: Output each character separately, to avoid that Windows reverses
7694 the text for some fonts. (Ron Aaron)
7695 Files: src/gui_w32.c
7698 Problem: When using "-complete=buffer" for ":command" the user command
7700 Solution: In a user command don't replace the buffer name with a count for
7702 Files: src/ex_docmd.c
7705 Problem: "gD" didn't always find a match in the first line, depending on
7706 the column the search started at.
7707 Solution: Reset the column to zero before starting to search.
7711 Problem: Rot13 encoding was done on characters with accents, which is
7712 wrong. (Sven Gottwald)
7713 Solution: Only do rot13 encoding on ASCII characters.
7717 Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was
7718 not restored, some matches were skipped. (Daniel Blaustein)
7719 Solution: Restore the reg_ic variable when 'n' was hit.
7720 Files: src/ex_cmds.c
7723 Problem: When using a Vim script for Vim 6.0 with <SID> before a function
7724 name, it produces an error message even when inside an "if version
7725 >= 600". (Charles Campbell)
7726 Solution: Ignore errors in the function name when the function is not going
7731 Problem: When running "rvim" or "vim -Z" it was still possible to execute a
7732 shell command with system() and backtick-expansion. (Antonios A.
7734 Solution: Disallow executing a shell command in get_cmd_output() and
7735 mch_expand_wildcards().
7736 Files: src/misc1.c, src/os_unix.c
7739 Problem: Multibyte: In a substitute string, a multi-byte character isn't
7740 skipped properly, can be a problem when the second byte is a
7742 Solution: Skip an extra byte for a double-byte character. (Muraoka Taro)
7743 Files: src/ex_cmds.c
7746 Problem: Compilation doesn't work on MacOS-X.
7747 Solution: Add a couple of #ifdefs. (Jamie Curmi)
7748 Files: src/regexp.c, src/ctags/general.h
7751 Problem: Vim sometimes produces a beep when started in an xterm. Only
7752 happens when compiled without mouse support.
7753 Solution: Requesting the xterm version results in a K_IGNORE. This wasn't
7754 handled when mouse support is disabled. Accept K_IGNORE always.
7758 Problem: %v in 'statusline' is not displayed when it's equal to %c.
7759 Solution: Check if %V or %v is used and handle them differently.
7763 Problem: Crash when a WinLeave autocommand deletes the buffer in the other
7765 Solution: Check that after executing the WinLeave autocommands there still
7766 is a window to be closed. Also update the test that was supposed
7767 to check for this problem.
7768 Files: src/window.c, testdir/test13.in, testdir/test13.ok
7771 Problem: Evaluating an expression for 'statusline' can have side effects.
7772 Solution: Evaluate the expression in a sandbox.
7773 Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c,
7774 src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c,
7775 src/screen.c, src/undo.c
7777 Patch 5.7.025 (fixed)
7778 Problem: Creating a temp file has a race condition.
7779 Solution: Create a private directory to write the temp files in.
7780 Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro,
7781 src/proto/fileio.pro, src/memline.c, src/os_unix.h
7783 Patch 5.7.026 (extra)
7784 Problem: Creating a temp file has a race condition.
7785 Solution: Create a private directory to write the temp files in.
7786 This is the extra part of patch 5.7.025.
7787 Files: src/os_msdos.h
7790 Problem: Starting to edit a file can cause a crash. For example when in
7791 Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and
7792 then <CR>, which edits a help file. (Robert Bogomip)
7793 Solution: Check if keep_msg is NULL before copying it.
7797 Problem: Creating a backup or swap file could fail in rare situations.
7798 Solution: Use O_EXCL for open().
7799 Files: src/fileio.c, src/memfile.c
7802 Problem: Editing a file with an extremely long name crashed Vim.
7803 Solution: Check for length of the name when setting the window title.
7807 Problem: A ":make" or ":grep" command with a very long argument could cause
7809 Solution: Allocate the buffer for the shell command.
7810 Files: src/ex_docmd.c
7813 vim:tw=78:ts=8:ft=help:norl: