Start anew
[msysgit.git] / share / vim / vim58 / doc / version5.txt
blob300be5e11c2311533df6b18914fa75e44c01a4fa
1 *version5.txt*  For Vim version 5.8.  Last change: 2001 May 31
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:
14 Default value for 'compatible' changed  |cp-default|
15 Text formatting command "Q" changed     |Q-command-changed|
16 Command-line arguments changed          |cmdline-changed|
17 Autocommands are kept                   |autocmds-kept|
18 Use of 'hidden' changed                 |hidden-changed|
19 Text object commands changed            |text-objects-changed|
20 X-Windows Resources removed             |x-resources|
21 Use of $VIM                             |$VIM-use|
22 Use of $HOME for MS-DOS and Win32       |$HOME-use|
23 Tags file format changed                |tags-file-changed|
24 Options changed                         |options-changed|
25 CTRL-B in Insert mode gone              |i_CTRL-B-gone|
27 NEW FEATURES:
28 Syntax highlighting                     |new-highlighting|
29 Built-in script language                |new-script|
30 Perl and Python support                 |new-perl-python|
31 Win32 GUI version                       |added-win32-GUI|
32 VMS version                             |added-VMS|
33 BeOS version                            |added-BeOS|
34 Macintosh GUI version                   |added-Mac|
35 More Vi compatible                      |more-compatible|
36 Read input from stdin                   |read-stdin|
37 Regular expression patterns             |added-regexp|
38 Overloaded tags                         |tag-overloaded|
39 New commands                            |new-commands|
40 New options                             |added-options|
41 New command-line arguments              |added-cmdline-args|
42 Various additions                       |added-various|
44 IMPROVEMENTS                            |improvements|
46 COMPILE TIME CHANGES                    |compile-changes|
48 BUG FIXES                               |bug-fixes|
50 VERSION 5.1                     |version-5.1|
51 Changed                                 |changed-5.1|
52 Added                                   |added-5.1|
53 Fixed                                   |fixed-5.1|
55 VERSION 5.2                     |version-5.2|
56 Long lines editable                     |long-lines|
57 File browser added                      |file-browser|
58 Dialogs added                           |dialogs-added|
59 Popup menu added                        |popup-menu-added|
60 Select mode added                       |new-Select-mode|
61 Session files added                     |new-session-files|
62 User defined functions and commands     |new-user-defined|
63 New interfaces                          |interfaces-5.2|
64 New ports                               |ports-5.2|
65 Multi-byte support                      |new-multi-byte|
66 New functions                           |new-functions-5.2|
67 New options                             |new-options-5.2|
68 New Ex commands                         |new-ex-commands-5.2|
69 Changed                                 |changed-5.2|
70 Added                                   |added-5.2|
71 Fixed                                   |fixed-5.2|
73 VERSION 5.3                     |version-5.3|
74 Changed                                 |changed-5.3|
75 Added                                   |added-5.3|
76 Fixed                                   |fixed-5.3|
78 VERSION 5.4                     |version-5.4|
79 Runtime directory introduced            |new-runtime-dir|
80 Filetype introduced                     |new-filetype-5.4|
81 Vim script line continuation            |new-line-continuation|
82 Improved session files                  |improved-sessions|
83 Autocommands improved                   |improved-autocmds-5.4|
84 Encryption                              |new-encryption|
85 GTK GUI port                            |new-GTK-GUI|
86 Menu changes                            |menu-changes-5.4|
87 Viminfo improved                        |improved-viminfo|
88 Various new commands                    |new-commands-5.4|
89 Various new options                     |new-options-5.4|
90 Vim scripts                             |new-script-5.4|
91 Avoid hit-return prompt                 |avoid-hit-return|
92 Improved quickfix                       |improved-quickfix|
93 Regular expressions                     |regexp-changes-5.4|
94 Changed                                 |changed-5.4|
95 Added                                   |added-5.4|
96 Fixed                                   |fixed-5.4|
98 VERSION 5.5                     |version-5.5|
99 Changed                                 |changed-5.5|
100 Added                                   |added-5.5|
101 Fixed                                   |fixed-5.5|
103 VERSION 5.6                     |version-5.6|
104 Changed                                 |changed-5.6|
105 Added                                   |added-5.6|
106 Fixed                                   |fixed-5.6|
108 VERSION 5.7                     |version-5.7|
109 Changed                                 |changed-5.7|
110 Added                                   |added-5.7|
111 Fixed                                   |fixed-5.7|
113 VERSION 5.8                     |version-5.8|
114 Changed                                 |changed-5.8|
115 Added                                   |added-5.8|
116 Fixed                                   |fixed-5.8|
118 ==============================================================================
119                                  INCOMPATIBLE
121 Default value for 'compatible' changed                  *cp-default*
122 --------------------------------------
124 Vim version 5.0 tries to be more Vi compatible.  This helps people who use Vim
125 as a drop-in replacement for Vi, but causes some things to be incompatible
126 with version 4.x.
128 In version 4.x the default value for the 'compatible' option was off.  Now the
129 default is on.  The first thing you will notice is that the "u" command undoes
130 itself.  Other side effects will be that mappings may work differently or not
131 work at all.
133 Since a lot of people switching from Vim 4.x to 5.0 will find this annoying,
134 the 'compatible' option is switched off if Vim finds a vimrc file.  This is a
135 bit of magic to make sure that 90% of the Vim users will not be bitten by
136 this change.
138 What does this mean?
139 - If you prefer to run in 'compatible' mode and don't have a vimrc file, you
140   don't have to do anything.
141 - If you prefer to run in 'nocompatible' mode and do have a vimrc file, you
142   don't have to do anything.
143 - If you prefer to run in 'compatible' mode and do have a vimrc file, you
144   should put this line first in your vimrc file:
145 >       :set compatible
146 - If you prefer to run in 'nocompatible' mode and don't have a vimrc file,
147   you can do one of the following:
148     - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix).
149     - Put this command in your .exrc file or $EXINIT:
150 >               :set nocompatible
151     - Start Vim with the "-N" argument.
153 If you are new to Vi and Vim, using 'nocompatible' is strongly recommended,
154 because Vi has a lot of unexpected side effects, which are avoided by this
155 setting.  See 'compatible'.
157 If you like some things from 'compatible' and some not, you can tune the
158 compatibility with 'cpoptions'.
160 When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode.
163 Text formatting command "Q" changed                     *Q-command-changed*
164 -----------------------------------
166 The "Q" command formerly formatted lines to the width the 'textwidth' option
167 specifies.  The command for this is now "gq" (see |gq| for more info).  The
168 reason for this change is that "Q" is the standard Vi command to enter "Ex"
169 mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info).
171 If you still want to use "Q" for formatting, use this mapping:
172 >       :noremap Q gq
173 And if you also want to use the functionality of "Q":
174 >       :noremap gQ Q
177 Command-line arguments changed                          *cmdline-changed*
178 ------------------------------
180 Command-line file-arguments and option-arguments can now be mixed.  You can
181 give options after the file names.  Example:
182 >  vim main.c -g
184 This is not possible when editing a file that starts with a '-'.  Use the "--"
185 argument then |---|:
186 >  vim -g -- -main.c
188 "-v" now means to start Ex in Vi mode, use "-R" for read-only mode.
189 old: "vim -v file"      |-v|
190 new: "vim -R file"      |-R|
192 "-e" now means to start Vi in Ex mode, use "-q" for quickfix.
193 old: "vim -e errorfile" |-e|
194 new: "vim -q errorfile" |-q|
196 "-s" in Ex mode now means to run in silent (batch) mode. |-s-ex|
198 "-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga).
199 old: "vim -x file"      |-x|
200 new: "vim -f file"      |-f|
202 Vim allows up to ten "+cmd" and "-c cmd" arguments.  Previously Vim executed
203 only the last one.
205 "-n" now overrides any setting for 'updatecount' in a vimrc file, but not in
206 a gvimrc file.
209 Autocommands are kept                                   *autocmds-kept*
210 ---------------------
212 Before version 5.0, autocommands with the same event, file name pattern, and
213 command could appear only once.  This was fine for simple autocommands (like
214 setting option values), but for more complicated autocommands, where the same
215 command might appear twice, this restriction caused problems.  Therefore
216 Vim stores all autocommands and keeps them in the order that they are defined.
218 The most obvious side effect of this change is that when you source a vimrc
219 file twice, the autocommands in it will be defined twice.  To avoid this, do
220 one of these:
222 - Remove any autocommands that might potentially defined twice before
223   defining them.  Example:
224 >       :au! * *.ext
225 >       :au BufEnter *.ext ...
227 - Put the autocommands inside an ":if" command.  Example:
228 >       if !exists("did_ext_autocmds")
229 >         let did_ext_autocmds = 1
230 >         autocmd BufEnter *.ext ...
231 >       endif
233 - Put your autocommands in a different autocommand group so you can remove
234   them before defining them |:augroup|:
235 >       augroup uncompress
236 >         au!
237 >         au BufReadPost *.gz ...
238 >       augroup END
241 Use of 'hidden' changed                                 *hidden-changed*
242 -----------------------
244 In version 4.x, only some commands used the 'hidden' option.  Now all commands
245 uses it whenever a buffer disappears from a window.
247 Previously you could do ":buf xxx" in a changed buffer and that buffer would
248 then become hidden.  Now you must set the 'hidden' option for this to work.
250 The new behavior is simpler: whether Vim hides buffers no longer depends on
251 the specific command that you use.
252 - with 'hidden' not set, you never get hidden buffers.  Exceptions are the
253   ":hide" and ":close!" commands and, in rare cases, where you would otherwise
254   lose changes to the buffer.
255 - With 'hidden' set, you almost never unload a buffer.  Exceptions are the
256   ":bunload" or ":bdel" commands.
258 ":buffer" now supports a "!": abandon changes in current buffer.  So do
259 ":bnext", ":brewind", etc.
262 Text object commands changed                            *text-objects-changed*
263 ----------------------------
265 Text object commands have new names.  This allows more text objects and makes
266 characters available for other Visual mode commands.  Since no more single
267 characters were available, text objects names now require two characters.
268 The first one is always 'i' or 'a'.
269         OLD     NEW     ~
270         a       aw      a word                  |v_aw|
271         A       aW      a WORD                  |v_aW|
272         s       as      a sentence              |v_as|
273         p       ap      a paragraph             |v_ap|
274         S       ab      a () block              |v_ab|
275         P       aB      a {} block              |v_aB|
277 There is another set of text objects that starts with "i", for "inner".  These
278 select the same objects, but exclude white space.
281 X-Windows Resources removed                             *x-resources*
282 --------------------------
284 Vim no longer supports the following X resources:
285 - boldColor
286 - italicColor
287 - underlineColor
288 - cursorColor
290 Vim now uses highlight groups to set colors.  This avoids the confusion of
291 using a bold Font, which would imply a certain color.  See |:highlight| and
292 |gui-resources|.
295 Use of $VIM                                             *$VIM-use*
296 -----------
298 Vim now uses the VIM environment variable to find all Vim system files.  This
299 includes the global vimrc, gvimrc, and menu.vim files and all on-line help
300 and syntax files.  See |$VIM|.  Starting with version 5.4, |$VIMRUNTIME| can
301 also be used.
302 For Unix, Vim sets a default value for $VIM when doing "make install".
303 When $VIM is not set, its default value is the directory from 'helpfile',
304 excluding "/doc/help.txt".
307 Use of $HOME for MS-DOS and Win32                       *$HOME-use*
308 ---------------------------------
310 The MS-DOS and Win32 versions of Vim now first check $HOME when searching for
311 a vimrc or exrc file and for reading/storing the viminfo file.  Previously Vim
312 used $VIM for these systems, but this causes trouble on a system with several
313 users.  Now Vim uses $VIM only when $HOME is not set or the file is not found
314 in $HOME.  See |_vimrc|.
317 Tags file format changed                                *tags-file-changed*
318 ------------------------
320 Only Tabs are allowed to separate fields in a tags file.  This allows for
321 spaces in a file name and is still Vi compatible.  In previous versions of
322 Vim, any white space was allowed to separate the fields.  If you have a file
323 which doesn't use a single Tab between fields, edit the tags file and execute
324 this command:
325 >       :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/
328 Options changed                                         *options-changed*
329 ---------------
331 The default value of 'errorfile' has changed from "errors.vim" to "errors.err".
332 The reason is that only Vim scripts should have the ".vim" extensions.
334 The ":make" command no longer uses the 'errorfile' option.  This prevents the
335 output of the ":make" command from overwriting a manually saved error file.
336 ":make" uses the 'makeef' option instead.  This also allows for generating a
337 unique name, to prevent concurrently running ":make" commands from overwriting
338 each other's files.
340 With 'insertmode' set, a few more things change:
341 - <Esc> in Normal mode goes to Insert mode.
342 - <Esc> in Insert mode doesn't leave Insert mode.
343 - When doing ":set im", go to Insert mode immediately.
345 Vim considers a buffer to be changed when the 'fileformat' (formerly the
346 'textmode' option) is different from the buffer's initial format.
349 CTRL-B in Insert mode gone                              *i_CTRL-B-gone*
350 --------------------------
352 When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to
353 toggle the 'revins' option.  Unfortunately, some people hit the 'B' key
354 accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to
355 undo this.  Since toggling the 'revins' option can easily be done with the
356 mapping below, this use of the CTRL-B key is disabled.  You can still use the
357 CTRL-_ key for this |i_CTRL-_|.
358 >  :imap <C-B> <C-O>:set revins!<CR>
360 ==============================================================================
361                                  NEW FEATURES
363 Syntax highlighting                                     *new-highlighting*
364 -------------------
366 Vim now has a very flexible way to highlighting just about any type of file.
367 See |syntax|.  Summary:
368 >  :syntax on
370 Colors and attributes can be set for the syntax highlighting, and also for
371 other highlighted items with the ':' flag in the 'highlight' option.  All
372 highlighted items are assigned a highlight group which specifies their
373 highlighting.  See |:highlight|.  The default colors have been improved.
375 You can use the "Normal" group to set the default fore/background colors for a
376 color terminal.  For the GUI, you can use this group to specify the font, too.
378 The "2html.vim" script can be used to convert any file that has syntax
379 highlighting to HTML.  The colors will be exactly the same as how you see them
380 in Vim.  With a HTML viewer you can also print the file with colors.
383 Built-in script language                                *new-script*
384 ------------------------
386 A few extra commands and an expression evaluator enable you to write simple
387 but powerful scripts.  Commands include ":if" and ":while".  Expressions can
388 manipulate numbers and strings.  You can use the '=' register to insert
389 directly the result of an expression.  See |expression|.
392 Perl and Python support                                 *new-perl-python*
393 -----------------------
395 Vim can call Perl commands with ":perldo", ":perl", etc.  See |perl|.
396 Patches made by Sven Verdoolaege and Matt Gerassimoff.
398 Vim can call Python commands with ":python" and ":pyfile".  See |python|.
400 Both of these are only available when enabled at compile time.
403 Win32 GUI version                                       *added-win32-GUI*
404 -----------------
406 The GUI has been ported to MS Windows 95 and NT.  All the features of the X11
407 GUI are available to Windows users now.  |gui-w32|
408 This also fixes problems with running the Win32 console version under Windows
409 95, where console support has always been bad.
410 There is also a version that supports OLE automation interface.  |if_ole.txt|
411 Vim can be integrated with Microsoft Developer Studio using the VisVim DLL.
412 It is possible to produce a DLL version of gvim with Borland C++ (Aaron).
415 VMS version                                             *added-VMS*
416 -----------
418 Vim can now also be used on VMS systems.  Port done by Henk Elbers.
419 This has not been tested much, but it should work.
420 Sorry, no documentation!
423 BeOS version                                            *added-BeOS*
424 ------------
426 Vim can be used on BeOS systems (including the BeBox).  (Olaf Seibert)
427 See |os_beos.txt|.
430 Macintosh GUI version                                   *added-Mac*
431 ---------------------
433 Vim can now be used on the Macintosh.  (Dany St-Amant)
434 It has not been tested much yet, be careful!
435 See |os_mac.txt|.
438 More Vi compatible                                      *more-compatible*
439 ------------------
441 There is now a real Ex mode.  Started with the "Q" command, or by calling the
442 executable "ex" or "gex".  |Ex-mode|
444 Always allow multi-level undo, also in Vi compatible mode.  When the 'u' flag
445 in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo
446 (like "." in Nvi).
449 Read input from stdin                                   *read-stdin*
450 ---------------------
452 When using the "-" command-line argument, Vim reads its text input from stdin.
453 This can be used for putting Vim at the end of a pipe:
454 >  grep "^a.*" *.c | vim -
455 See |--|.
458 Regular expression patterns                             *added-regexp*
459 ---------------------------
461 Added specifying a range for the number of matches of a atom: "\{a,b}". |/\{|
462 Added the "shortest match" regexp "\{-}" (Webb).
463 Added "\s", matches a white character.  Can replace "[ \t]".            |/\s|
464 Added "\S", matches a non-white character.  Can replace "[^ \t]".       |/\S|
467 Overloaded tags                                         *tag-overloaded*
468 ---------------
470 When using a language like C++, there can be several tags for the same
471 tagname.  Commands have been added to be able to jump to any of these
472 overloaded tags:
473 |:tselect|      List matching tags, and jump to one of them.
474 |:stselect|     Idem, and split window.
475 |g_CTRL-]|      Do ":tselect" with the word under the cursor.
477         After ":ta {tagname}" with multiple matches:
478 |:tnext|        Go to next matching tag.
479 |:tprevious|    Go to previous matching tag.
480 |:trewind|      Go to first matching tag.
481 |:tlast|        Go to last matching tag.
483 The ":tag" command now also accepts wildcards.  When doing command-line
484 completion on tags, case-insensitive matching is also available (at the end).
487 New commands                                            *new-commands*
488 ------------
490 |:amenu|        Define menus for all modes, inserting a CTRL-O for Insert
491                 mode, ESC for Visual and CTRL-C for Cmdline mode.  "amenu" is
492                 used for the default menus and the Syntax menu.
494 |:augroup|      Set group to be used for following autocommands.  Allows the
495                 grouping of autocommands to enable deletion of a specific
496                 group.
498 |:crewind|      Go to first error.
499 |:clast|        Go to last error.
501 |:doautoall|    Execute autocommands for all loaded buffers.
503 |:echo|         Echo its argument, which is an expression.  Can be used to
504                 display messages which include variables.
506 |:execute|      Execute its argument, which is an expression.  Can be used to
507                 built up an Ex command with anything.
509 |:hide|         Works like ":close".
511 |:if|           Conditional execution, for built-in script language.
513 |:intro|        Show introductory message.  This is always executed when Vim
514                 is started without file arguments.
516 |:let|          Assign a value to an internal variable.
518 |:omap|         Map only in operator-pending mode.  Makes it possible to map
519                 text-object commands.
521 |:redir|        Redirect output of messages to a file.
523 |:update|       Write when buffer has changed.
525 |:while|        While-loop for built-in script language.
527 Visual mode:
528 |v_O|           "O" in Visual block mode, moves the cursor to the other corner
529                 horizontally.
530 |v_D|           "D" in Visual block mode deletes till end of line.
532 Insert mode:
533 |i_CTRL-]|      Triggers abbreviation, without inserting any character.
536 New options                                             *added-options*
537 -----------
539 'background'    Used for selecting highlight color defaults.  Also used in
540                 "syntax.vim" for selecting the syntax colors.  Often set
541                 automatically, depending on the terminal used.
543 'complete'      Specifies how Insert mode completion works.
545 'eventignore'   Makes it possible to ignore autocommands temporarily.
547 'fileformat'    Current file format.  Replaces 'textmode'.
548 'fileformats'   Possible file formats.  Replaces 'textauto'.
549                 New is that this also supports Macintosh format: A single <CR>
550                 separates lines.
551                 The default for 'fileformats' for MS-DOS, Win32 and OS/2 is
552                 "dos,unix", also when 'compatible' set.  Unix type files
553                 didn't work anyway when 'fileformats' was empty.
555 'guicursor'     Set the cursor shape and blinking in various modes.
556                 Default is to adjust the cursor for Insert and Replace mode,
557                 and when an operator is pending.  Blinking is default on.
559 'fkmap'         Farsi key mapping.
561 'hlsearch'      Highlight all matches with the last used search pattern.
563 'hkmapp'        Phonetic Hebrew mapping (Ilya Dogolazky).
565 'iconstring'    Define the name of the icon, when not empty. (version 5.2: the
566                 string is used literally, a newline can be used to make two
567                 lines).
569 'lazyredraw'    Don't redraw the screen while executing macros, registers or
570                 other not typed commands.
572 'makeef'        Errorfile to be used for ":make".  "##" is replaced with a
573                 unique number.  Avoids that two Vim sessions overwrite each
574                 others errorfile.  The Unix default is "/tmp/vim##.err"; for
575                 Amiga "t:vim##.Err, for others "vim##.err".
577 'matchtime'     1/10s of a second to show a matching paren, when 'showmatch'
578                 is set.  Like Nvi.
580 'mousehide'     Hide mouse pointer in GUI when typing text.
582 'nrformats'     Defines what bases Vim will consider for numbers when using
583                 the CTRL-A and CTRL-X commands.  Default: "hex,octal".
585 'shellxquote'   Add extra quotes around the whole shell command, including
586                 redirection.
588 'softtabstop'   Make typing behave like tabstop is set at this value, without
589                 changing the value of 'tabstop'.  Makes it more easy to keep
590                 'ts' at 8, while still getting four spaces for a <Tab>.
592 'titlestring'   String for the window title, when not empty.  (version 5.2:
593                 this string is used literally, a newline can be used to make
594                 two lines).
596 'verbose'       Level of verbosity.  Makes it possible to show which .vimrc,
597                 .exrc, .viminfo files etc. are used for initializing.  Also
598                 to show autocommands that are being executed.  Can also be set
599                 by using the "-V" command-line argument.
602 New command-line arguments                              *added-cmdline-args*
603 --------------------------
605 |-U|            Set the gvimrc file to be used.  Like "-u" for the vimrc.
607 |-V|            Set the 'verbose' option.  E.g. "vim -V10".
609 |-N|            Start in non-compatible mode.
611 |-C|            Start in compatible mode.
613 |-Z|            Start in restricted mode, disallow shell commands.  Can also
614                 be done by calling the executable "rvim".
616 |-h|            Show usage information and exit.
619 Various additions                                       *added-various*
620 -----------------
622 Added support for SNiFF+ connection (submitted by Toni Leherbauer).  Vim can
623 be used as an editor for SNiFF.  No documentation available...
625 For producing a bug report, the bugreport.vim script has been included.
626 Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file
627 "bugreport.txt" in the current directory. |bugs|
629 Added range to ":normal" command.  Now you can repeat the same command for
630 each line in the range.  |:normal-range|
632 Included support for the Farsi language (Shiran).  Only when enabled at
633 compile time.  See |farsi|.
635 ==============================================================================
636                                  IMPROVEMENTS           *improvements*
638 Performance:
639 - When 'showcmd' was set, mappings would execute much more slowly because the
640   output would be flushed very often.  Helps a lot when executing the "life"
641   macros with 'showcmd' set.
642 - Included patches for binary searching in tags file (David O'Neill).
643   Can be disabled by resetting the 'tagbsearch' option.
644 - Don't update the ruler when repeating insert (slowed it down a lot).
645 - For Unix, file name expansion is now done internally instead of starting a
646   shell for it.
647 - Expand environment variables with expand_env(), instead of calling the
648   shell.  Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster.
649 - Reduced output for cursor positioning: Use CR-LF for moving to first few
650   columns in next few lines;  Don't output CR twice when using termios.
651 - Optimized cursor positioning.  Use CR, BS and NL when it's shorter than
652   absolute cursor positioning.
653 - Disable redrawing while repeating insert "1000ii<Esc>".
654 - Made "d$" or "D" for long lines a lot faster (delete all characters at once,
655   instead of one by one).
656 - Access option table by first letter, instead of searching from start.
657 - Made setting special highlighting attributes a lot faster by using
658   highlight_attr[], instead of searching in the 'highlight' string.
659 - Don't show the mode when redrawing is disabled.
660 - When setting an option, only redraw the screen when required.
661 - Improved performance of Ex commands by using a lookup table for the first
662   character.
664 Options:
665 'cinoptions'    Added 'g' flag, for C++ scope declarations.
666 'cpoptions'     Added 'E' flag: Disallow yanking, deleting, etc. empty text
667                 area.  Default is to allow empty yanks.  When 'E' is included,
668                 "y$" in an empty line now is handled as an error (Vi
669                 compatible).
670                 Added 'j' flag: Only add two spaces for a join after a '.',
671                 not after a '?' or '!'.
672                 Added 'A' flag: don't give ATTENTION message.
673                 Added 'L' flag: When not included, and 'list' is set,
674                 'textwidth' formatting works like 'list' is not set.
675                 Added 'W' flag:  Let ":w!" behave like Vi: don't overwrite
676                 readonly files, or a file owned by someone else.
677 'highlight'     Added '@' flag, for '@' characters after the last line on the
678                 screen, and '$' at the end of the line when 'list' is set.
679                 Added 'i' flag: Set highlighting for 'incsearch'.  Default
680                 uses "IncSearch" highlight group, which is linked to "Visual".
681                 Disallow 'h' flag in 'highlight' (wasn't used anymore since
682                 3.0).
683 'guifont'       Win32 GUI only: When set to "*" brings up a font requester.
684 'guipty'        Default on, because so many people need it.
685 'path'          Can contain wildcards, and "**" for searching a whole tree.
686 'shortmess'     Added 'I' flag to avoid the intro message.
687 'viminfo'       Added '%' flag: Store buffer list in viminfo file.
689 - Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32.  Most
690   machines have much more RAM now that prices have dropped.
691 - Implemented ":set all&", set all options to their default value. |:set|
693 Swap file:
694 - Don't create a swap file for a readonly file.  Then create one on the first
695   change.  Also create a swapfile when the amount of memory used is getting
696   too high. |swap-file|
697 - Make swap file "hidden", if possible.  On Unix this is done by prepending a
698   dot to the swap file name.  When long file names are used, the DJGPP and
699   Win32 versions also prepend a dot, in case a file on a mounted Unix file
700   system is edited.  |:swapname|  On MSDOS the hidden file attribute is NOT
701   set, because this causes problems with share.exe.
702 - 'updatecount' always defaults to non-zero, also for Vi compatible mode.
703   This means there is a swap file, which can be used for recovery.
705 Tags:
706 - Included ctags 2.0 (Darren Hiebert).  The syntax for static tags changed
707   from
708         {tag}:{fname}   {fname} {command}
709   to
710         {tag}   {fname} {command};"     file:
711   Which is both faster to parse, shorter and Vi compatible.  The old format is
712   also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS).
713   |tags-file-format|
714 - Completion of tags now also includes static tags for other files, at the
715   end.
716 - Included "shtags" from Stephen Riehm.
717 - When finding a matching tag, but the file doesn't exist, continue searching
718   for another match.  Helps when using the same tags file (with links) for
719   different versions of source code.
720 - Give a tag with a global match in the current file a higher priority than a
721   global match in another file.
723 Included xxd version V1.8 (Juergen Weigert).
725 Autocommands:
726 - VimLeave autocommands are executed after writing the viminfo file, instead
727   of before.  |VimLeave|
728 - Allow changing autocommands while executing them.  This allows for
729   self-modifying autocommands. (idea from Goldberg)
730 - When using autocommands with two or more patterns, could not split
731   ":if/:endif" over two lines.  Now all matching autocommands are executed in
732   one do_cmdline().
733 - Autocommands no longer change the command repeated with ".".
734 - Search patterns are restored after executing autocommands.  This avoids
735   that the 'hlsearch' highlighting is messed up by autocommands.
736 - When trying to execute an autocommand, also try matching the pattern with
737   the short file name.  Helps when short file name is different from full
738   file name (expanded symbolic links). |autocmd-patterns|
739 - Made the output of ":autocmd" shorter and look better.
740 - Expand <sfile> in an ":autocmd" when it is defined.  |<sfile>|
741 - Added "nested" flag to ":autocmd", allows nesting.  |autocmd-nested|
742 - Added [group] argument to ":autocmd".  Overrides the currently set group.
743   |autocmd-groups|
744 - new events:
745   |BufUnload|           before a buffer is unloaded
746   |BufDelete|           before a buffer is deleted from the buffer list
747   |FileChangedShell|    when a file's modification time has changed after
748                         executing a shell command
749   |User|                user-defined autocommand
750 - When 'modified' was set by a BufRead* autocommand, it was reset again
751   afterwards.  Now the ":set modified" is remembered.
753 GUI:
754 - Improved GUI scrollbar handling when redrawing is slower than the scrollbar
755   events are generated.
756 - "vim -u NONE" now also stops loading the .gvimrc and other GUI inits.  |-u|
757   Use "-U" to use another gvimrc file.  |-U|
758 - Handle CTRL-C for external command, also for systems where "setsid()" is
759   supported.
760 - When starting the GUI, restrict the window size to the screen size.
761 - The default menus are read from $VIMRUNTIME/menu.vim.  This allows for a
762   customized default menu.  |menu.vim|
763 - Improved the default menus.  Added File/Print, a Window menu, Syntax menu,
764   etc.
765 - Added priority to the ":menu" command.  Now each menu can be put in a place
766   where you want it, independent of the order in which the menus are defined.
767   |menu-priority|
769 Give a warning in the intro screen when running the Win32 console version on
770 Windows 95 because there are problems using this version under Windows 95.
771 |win32-problems|
773 Added 'e' flag for ":substitute" command: Don't complain when not finding a
774 match (Campbell).  |:s|
776 When using search commands in a mapping, only the last one is kept in the
777 history.  Avoids that the history is trashed by long mappings.
779 Ignore characters after "ex", "view" and "gvim" when checking startup mode.
780 Allows the use of "gvim5" et. al.  |gvim| "gview" starts the GUI in readonly
781 mode.  |gview|
783 When resizing windows, the cursor is kept in the same relative position, if
784 possible.  (Webb)
786 ":all" and ":ball" no longer close and then open a window for the same buffer.
787 Avoids losing options, jumplist, and other info.
789 "-f" command-line argument is now ignored if Vim was compiled without GUI.
790 |-f|
792 In Visual block mode, the right mouse button picks up the nearest corner.
794 Changed default mappings for DOS et al.  Removed the DOS-specific mappings,
795 only use the Windows ones.  Added Shift-Insert, Ctrl-Insert, Ctrl-Del and
796 Shift-Del.
798 Changed the numbers in the output of ":jumps", so you can see where {count}
799 CTRL-O takes you.  |:jumps|
801 Using "~" for $HOME now works for all systems.  |$HOME|
803 Unix: Besides using CTRL-C, also use the INTR character from the tty settings.
804 Somebody has INTR set to DEL.
806 Allow a <LF> in a ":help" command argument to end the help command, so another
807 command can follow.
809 Doing "%" on a line that starts with "   #if" didn't jump to matching "#else".
810 Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag.
813 Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved
814 |ins-completion|:
815 - 'complete' option added.
816 - When 'nowrapscan' is set, and no match found, report the searched direction
817   in the error message.
818 - Repeating CTRL-X commands adds following words/lines after the match.
819 - When adding-expansions, accept single character matches.
820 - Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole
821   insertion.  Also fixes not being able to backspace over a word that has been
822   inserted with CTRL-N.
824 When copying characters in Insert mode from previous/next line, with CTRL-E or
825 CTRL-Y, 'textwidth' is no longer used.  |i_CTRL-E|
827 Commands that move in the arglist, like ":n" and ":rew", keep the old cursor
828 position of the file (this is mostly Vi compatible).
830 Vim now remembers the '< and '> marks for each buffer.  This fixes a problem
831 that a line-delete in one buffer invalidated the '< and '> marks in another
832 buffer.  |'<|
834 For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable.
835 When using the executable path for $VIM, remove "src/" when present.  Should
836 make Vim find the docs and syntax files when it is run directly after
837 compiling.  |$VIM|
839 When quitting Visual mode with <Esc>, the cursor is put at start of the Visual
840 area (like after executing an operator).
842 Win32 and Unix version: Removed 1100 character limit on external commands.
844 Added possibility to include a space in a ":edit +command" argument, by
845 putting a backslash before it.  |+cmd|
847 After recovery, BufReadPost autocommands are applied.  |:recover|
849 Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi|
851 Allow "%:p:h" when % is empty.  |:_%|
853 Included "<sfile>": file name from the ":source" command.  |<sfile>|
855 Added "<Bslash>" special character.  Helps for avoiding multiple backslashes
856 in mappings and menus.
858 In a help window, a double-click jumps to the tag under the cursor (like
859 CTRL-]).
861 <C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word
862 forward/backward (Windows compatible). |<C-Left>|
864 Removed the requirement for a ":version" command in a .vimrc file.  It wasn't
865 used for anything.  You can use ":if" to handle differences between versions.
866 |:version|
868 For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't
869 make a difference between '/' and '\' for path separator.
871 New termcap options:
872 "mb": blink.  Can only be used by assigning it to one of the other highlight
873       options.  |t_mb|
874 "bc": backspace character.  |t_bc|
875 "nd": Used for moving the cursor right in the GUI, to avoid removing one line
876       of pixels from the last bold character.  |t_nd|
877 "xs": highlighting not erased by overwriting, for hpterm.  Combined with
878       'weirdinvert'.  Visual mode works on hpterm now.  |t_xs|
880 Unix: Set time of patch and backup file same as original file.  (Hiebert).
882 Amiga: In QuickFix mode no longer opens another window.  Shell commands can be
883 used now.
885 Added decmouse patches from David Binette.  Can now use Dec and Netterm mouse.
886 But only when enabled at compile time.
888 Added '#' register: Alternate file name |quote#|.  Display '#' register with
889 ":dis" command. |:display|
891 Removed ':' from 'isfname' default for Unix.  Check for "://" in a file name
892 anyway.  Also check for ":\\", for MS-DOS.
894 Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in
895 the man command.  "2K" results in "!man 2 <cword>".  |K|
897 When using "gf" on a relative path name, remove "../" from the file name, like
898 it's done for file names in the tags file. |gf|
900 When finishing recording, don't make the recorded register the default put
901 register.
903 When using "!!", don't put ":5,5!" on the command-line, but ":.!".  And some
904 other enhancements to replace the line number with "." or "$" when possible.
906 MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo.  It's more consistent:
907 .vimrc/_vimrc and .viminfo/_viminfo
909 For systems where case doesn't matter in file names (MSDOS, Amiga), ignore
910 case while sorting file names.  For buffer names too.
912 When reading from stdin doesn't work, read from stderr (helps for "foo | xargs
913 vim").
915 32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4.
917 Changed <C-Left> and <C-Right> to skip a WORD instead of a word.
919 Warning for changed modified time when overwriting a file now also works on
920 other systems than Unix.
922 Unix: Changed the defaults for configure to be the same as the defaults for
923 Makefile: include GUI, Perl, and Python.
925 Some versions of Motif require "-lXpm".  Added check for this in configure.
927 Don't add "-L/usr/lib" to the link line, causes problems on a few systems.
929 ==============================================================================
930                              COMPILE TIME CHANGES       *compile-changes*
932 When compiling, allow a choice for minimal, normal or maximal features in an
933 easy way, by changing a single line in src/feature.h.
934 The DOS16 version has been compiled with minimal features to avoid running
935 out of memory too quickly. |dos16|
936 The Win32, DJGPP, and OS/2 versions use maximal features, because they have
937 enough memory.
938 The Amiga version is available with normal and maximal features.
940 Added "make test" to Unix version Makefile.  Allows for a quick check if most
941 "normal" commands work properly.  Also tests a few specific commands.
943 Added setlocale() with codepage support for DJGPP version.
945 autoconf:
946 - Added autoconf check for -lXdmcp.
947 - Included check for -lXmu, no longer needed to edit the Makefile for this.
948 - Switched to autoconf 2.12.
949 - Added configure check for <poll.h>.  Seems to be needed when including
950   Perl on Linux?
951 - termlib is now checked before termcap.
952 - Added configure check for strncasecmp(), stricmp() and strnicmp().  Added
953   vim_stricmp() for when there's no library function for stricmp().
954 - Use "datadir" in configure, instead of our own check for HELPDIR.
956 Removed "make proto" from Makefile.manx.  Could not make it work without a lot
957 of #ifdefs.
959 Removed "proto/" from paths in proto.h.  Needed for the Mac port.
961 Drastically changed Makefile.mint.  Now it includes the Unix Makefile.
963 Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor)
965 All source files are now edited with a tabstop of 8 instead of 4, which is
966 better when debugging and using other tools.  'softtabstop' is set to 4, to
967 make editing easier.
969 Unix: Added "link.sh" script, which removes a few unnecessary libraries from
970 the link command.
972 Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined.
973 |digraphs-default|
975 ==============================================================================
976                                  BUG FIXES              *bug-fixes*
978 Note:   Some of these fixes may only apply to test versions which were
979         created after version 4.6, but before 5.0.
982 When doing ":bdel", try going to the next loaded buffer.  Don't rewind to the
983 start of the buffer list.
985 mch_isdir() for Unix returned TRUE for "" on some systems.
987 Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands.  Don't use
988 backslashes in the temp file names.
990 On linux, with a FAT file system, could get spurious "file xxx changed since
991 editing started" messages, because the time is rounded off to two seconds
992 unexpectedly.
994 Crash in GUI, when selecting a word (double click) and then extend until an
995 empty line.
997 For systems where isdigit() can't handle characters > 255, get_number() caused
998 a crash when moving the mouse during the prompt for recovery.
1000 In Insert mode, "CTRL-O P" left the cursor on the last inserted character.
1001 Now the cursor is left after the last putted character.
1003 When quickfix found an error type other than 'e' or 'w', it was never printed.
1005 A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument.
1007 Some systems create a file when generating a temp file name.  Filtering would
1008 then create a backup file for this, which was never deleted.  Now no backup
1009 file is made when filtering.
1011 simplify_filename() could remove a ".." after a link, resulting in the wrong
1012 file name.  Made simplify_filename also work for MSDOS.  Don't use it for
1013 Amiga, since it doesn't have "../".
1015 otherfile() was unreliable when using links.  Could think that reading/writing
1016 was for a different file, when it was the same.
1018 Pasting with mouse in Replace mode didn't replace anything.
1020 Window height computed wrong when resizing a window with an autocommand (could
1021 cause a crash).
1023 ":s!foo!bar!" wasn't possible (Vi compatible).
1025 do_bang() freed memory twice when called recursively, because of autocommands
1026 (test11).  Thanks to Electric Fence!
1028 "v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the
1029 command-line, and inverted the cursor.
1031 ":mkexrc" didn't check for failure to open the file, causing a crash.
1032 (Felderhoff).
1034 Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to
1035 be recognized.  Both console and GUI version.
1037 Athena GUI: Crash when removing a menu item.  Now Vim doesn't crash, but the
1038 reversing of the menu item is still wrong.
1040 Always reset 'list' option for the help window.
1042 When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be
1043 in the wrong line and the window to be scrolled (Acevedo).
1045 After ":set all&", 'lines' and 'ttytype' were still non-default, because the
1046 defaults never got set.  Now the defaults for 'lines' and 'columns' are set
1047 after detecting the window size. 'term' and 'ttytype' defaults are set when
1048 detecting the terminal type.
1050 For (most) non-Unix systems, don't add file names with illegal characters when
1051 expanding.  Fixes "cannot open swapfile" error when doing ":e *.burp", when
1052 there is no match.
1054 In X11 GUI, drawing part of the cursor obscured the text.  Now the text is
1055 drawn over the cursor, like when it fills the block. (Seibert)
1057 when started with "-c cmd -q errfile", the cursor would be left in line 1.
1058 Now a ":cc" is done after executing "cmd".
1060 ":ilist" never ignored case, even when 'ignorecase' set.
1062 "vim -r file" for a readonly file, then making a change, got ATTENTION message
1063 in insert mode, display mixed up until <Esc> typed.  Also don't give ATTENTION
1064 message after recovering a file.
1066 The abbreviation ":ab #i #include" could not be removed.
1068 CTRL-L completion (longest common match) on command-line didn't work properly
1069 for case-insensitive systems (MS-DOS, Windows, etc.).  (suggested by Richard
1070 Kilgore).
1072 For terminals that can hide the cursor ("vi" termcap entry), resizing the
1073 window caused the cursor to disappear.
1075 Using an invalid mark in an Ex address didn't abort the command.
1077 When 'smarttab' set, would use 'shiftround' when inserting a TAB after a
1078 space.  Now it always rounds to a tabstop.
1080 Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute"
1081 and ":change".  (Acevedo).
1083 "d$" in an empty line still caused an error, even when 'E' is not in
1084 'cpoptions'.
1086 Help files were stored in the viminfo buffer list without a path.
1088 GUI: Displaying cursor was not synchronized with other displaying.  Caused
1089 several display errors.  For example, when the last two lines in the file
1090 start with spaces, "dd" on the last line copied text to the (then) last line.
1092 Win32: Needed to type CTRL-SHIFT-- to get CTRL-_.
1094 GUI: Moving the cursor forwards over bold text would remove one column of bold
1095 pixels.
1097 X11 GUI: When a bold character in the last column was scrolled up or down, one
1098 column of pixels would not be copied.
1100 Using <BS> to move the cursor left can sometimes erase a character.  Now use
1101 "le" termcap entry for this.
1103 Keyword completion with regexp didn't work.  e.g., for "b.*crat".
1105 Fixed: With CTRL-O that jumps to another file, cursor could end up just after
1106 the line.
1108 Amiga: '$' was missing from character recognized as wildcards, causing $VIM
1109 sometimes not to be expanded.
1111 ":change" didn't adjust marks for deleted lines.
1113 ":help [range]" didn't work.  Also for [pattern], [count] and [quotex].
1115 For 'cindent'ing, typing "class::method" doesn't align like a label when the
1116 second ':' is typed.
1117 When inserting a CR with 'cindent' set (and a bunch of other conditions) the
1118 cursor went to a wrong location.
1119 'cindent' was wrong for a line that ends in '}'.
1120 'cindent' was wrong after "else {".
1122 While editing the cmdline in the GUI, could not use the mouse to select text
1123 from the command-line itself.
1125 When deleting lines, marks in tag stack were only adjusted for the current
1126 window, not for other windows on the same buffer.
1128 Tag guessing could find a function "some_func" instead of the "func" we were
1129 looking for.
1131 Tags file name relative to the current file didn't work.
1133 ":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause
1134 a scroll up.  Now you no longer have to hit <CR>.
1136 X11 GUI: Selecting text could cause a crash.
1138 32 bit DOS version: CTRL-C in external command killed Vim.  When SHELL is set
1139 to "sh.exe", external commands didn't work.  Removed using of command.com, no
1140 longer need to set 'shellquote'.
1142 Fixed crash when using ":g/pat/i".
1144 Fixed (potential) crash for X11 GUI, when using an X selection.  Was giving a
1145 pointer on the stack to a callback function, now it's static.
1147 Using "#" and "*" with an operator didn't work.  E.g. "c#".
1149 Command-line expansion didn't work properly after ":*". (Acevedo)
1151 Setting 'weirdinvert' caused highlighting to be wrong in the GUI.
1153 ":e +4 #" didn't work, because the "4" was in unallocated memory (could cause
1154 a crash).
1156 Cursor position was wrong for ":e #", after ":e #" failed, because of changes
1157 to the buffer.
1159 When doing ":buf N", going to a buffer that was edited with ":view", the
1160 readonly flag was reset.  Now make a difference between ":e file" and ":buf
1161 file": Only set/reset 'ro' for the first one.
1163 Avoid |hit-return| prompt when not able to write viminfo on exit.
1165 When giving error messages in the terminal where the GUI was started, GUI
1166 escape codes would be written to the terminal.  In an xterm this could be seen
1167 as a '$' after the message.
1169 Mouse would not work directly after ":gui", because full_screen isn't set,
1170 which causes starttermcap() not to do its work.
1172 'incsearch' did not scroll the window in the same way as the actual search.
1173 When 'nowrap' set, incsearch didn't show a match when it was off the side of
1174 the screen.  Now it also shows the whole match, instead of just the cursor
1175 position (if possible).
1177 ":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as
1178 the start of a comment.  Now it's Vi compatible.
1180 Using <Up><Left><Left><Up> in the command-line, when there is no previous
1181 cmdline in the history, inserted a NUL on the command-line.
1183 "i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place.
1185 GUI Motif: When adding a lot of menu items, the menu bar goes into two rows.
1186 Deleting menu items, reducing the number of rows, now also works.
1188 With ":g/pat/s//foo/c", a match in the first line was scrolled off of the
1189 screen, so you could not see it.
1190 When using ":s//c", with 'nowrap' set, a match could be off the side of the
1191 screen, so you could not see it.
1193 When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would
1194 crash.  mch_Fullname can now handle file names in read-only memory. (Lottem)
1196 When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects
1197 when using CTRL-D next.  Also, when repeating inserted text that included "0
1198 CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo)
1199 Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0'
1200 or '^', removed the '0' or '^' and more indent.
1202 The command "2".p" caused the last inserted text to be executed as commands.
1203 (Acevedo)
1205 Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted.
1207 Repeating Insert completion could fail if there are special characters in the
1208 text. (Acevedo)
1210 ":normal /string<CR>" caused the window to scroll.  Now all ":normal" commands
1211 are executed without scrolling messages.
1213 Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as
1214 commands.
1216 Line wrapping for 'tw' was done one character off for insert expansion
1217 inserts.
1219 buffer_exists() function didn't work properly for buffer names with a symbolic
1220 link in them (e.g. when using buffer_exists(#)).
1222 Removed the "MOTIF_COMMENT" construction from Makefile.  It now works with
1223 FreeBSD make, and probably with NeXT make too.
1225 Matching the 'define' and 'include' arguments now honor the settings for
1226 'ignorecase'. (Acevedo)
1228 When one file shown in two windows, Visual selection mixed up cursor position
1229 in current window and other window.
1231 When doing ":e file" from a help file, the 'isk' option wasn't reset properly,
1232 because of a modeline in the help file.
1234 When doing ":e!", a cursor in another window on the same buffer could become
1235 invalid, leading to "ml_get: invalid lnum" errors.
1237 Matching buffer name for when expanded name has a different path from not
1238 expanded name (Brugnara).
1240 Normal mappings didn't work after an operator.  For example, with ":map Q gq",
1241 "QQ" didn't work.
1243 When ":make" resulted in zero errors, a "No Errors" error message was given
1244 (which breaks mappings).
1246 When ":sourcing" a file, line length was limited to 1024 characters.  CTRL-V
1247 before <EOL> was not handled Vi compatible.  (Acevedo)
1249 Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event.  (Heimann)
1251 CTRL-X CTRL-I only found one match per line. (Acevedo)
1252 When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message
1253 was stuck.
1255 Finally managed to ignore the "Quit" menu entry of the Window manager!  Now
1256 Vim only exists when there are no changed buffers.
1258 Trying to start the GUI when $DISPLAY is not set resulted in a crash.
1259 When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks
1260 for flying Vim".
1261 When $DISPLAY not set, starting "gvim" (dropping back to vim) and then
1262 selecting text with the mouse caused a crash.
1264 "J", with 'joinspaces' set, on a line ending in ". ", caused one space too
1265 many to be added.  (Acevedo)
1267 In insert mode, a CTRL-R {regname} which didn't insert anything left the '"'
1268 on the screen.
1270 ":z10" didn't work. (Clapp)
1272 "Help "*" didn't work.
1274 Renamed a lot of functions, to avoid clashes with POSIX name space.
1276 When adding characters to a line, making it wrap, the following lines were
1277 sometimes not shifted down (e.g. after a tag jump).
1279 CTRL-E, with 'so' set and cursor on last line, now does not move cursor as
1280 long as the last line is on the screen.
1282 When there are two windows, doing "^W+^W-" in the bottom window could cause
1283 the status line to be doubled (not redrawn correctly).
1285 This command would hang: ":n `cat`".  Now connect stdin of the external
1286 command to /dev/null, when expanding.
1288 Fixed lalloc(0,) error for ":echo %:e:r".  (Acevedo)
1290 The "+command" argument to ":split" didn't work when there was no file name.
1292 When selecting text in the GUI, which is the output of a command-line command
1293 or an external command, the inversion would sometimes remain.
1295 GUI: "-mh 70" argument was broken.  Now, when menuheight is specified, it is
1296 not changed anymore.
1298 GUI: When using the scrollbar or mouse while executing an external command,
1299 this caused garbage characters.
1301 Showmatch sometimes jumped to the wrong position.  Was caused by a call to
1302 findmatch() when redrawing the display (when syntax highlighting is on).
1304 Search pattern "\(a *\)\{3} did not work correctly, also matched "a a".
1305 Problem with brace_count not being decremented.
1307 Wildcard expansion added too many non-matching file names.
1309 When 'iskeyword' contains characters like '~', "*" and "#" didn't work
1310 properly. (Acevedo)
1312 On Linux, on a FAT file system, modification time can change by one second.
1313 Avoid a "file has changed" warning for a one second difference.
1315 When using the page-switching in an xterm, Vim would position the cursor on
1316 the last line of the window on exit.  Also removed the cursor positioning for
1317 ":!" commands.
1319 ":g/pat/p" command (partly) overwrote the command.  Now the output is on a
1320 separate line.
1322 With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were
1323 highlighted too.
1325 "^" on a line with only white space, put cursor beyond the end of the line.
1327 When deleting characters before where insertion started ('bs' == 2), could not
1328 use abbreviations.
1330 CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is
1331 non-zero.  CTRL-E didn't work when 'so' is big and the line below the window
1332 wraps.  CTRL-E, when 'so' is non-zero, at end of the file, caused jumping
1333 up-down.
1335 ":retab" didn't work well when 'list' is set.
1337 Amiga: When inserting characters at the last line on on the screen, causing it
1338 to wrap, messed up the display.  It appears that a '\n' on the last line
1339 doesn't always cause a scroll up.
1341 In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought
1342 that the "0" was still there. (Acevedo)
1344 "z{count}l" ignored the count.  Also for "zh" et. al. (Acevedo)
1346 "S" when 'autoindent' is off didn't delete leading white space.
1348 "/<Tab>" landed on the wrong character when 'incsearch' is set.
1350 Asking a yes/no question could cause a |hit-return| prompt.
1352 When the file consists of one long line (>4100 characters), making changes
1353 caused various errors and a crash.
1355 DJGPP version could not save long lines (>64000) for undo.
1357 "yw" on the last char in the file didn't work.  Also fixed "6x" at the end of
1358 the line. "6X" at the start of a line fails, but does not break a mapping.  In
1359 general, a movement for an operator doesn't beep or flush a mapping, but when
1360 there is nothing to operate on it beeps (this is Vi compatible).
1362 "m'" and "m`" now set the '' mark at the cursor position.
1364 Unix: Resetting of signals for external program didn't work, because SIG_DFL
1365 and NULL are the same!  For "!!yes|dd count=1|, the yes command kept on
1366 running.
1368 Partly fixed: Unix GUI: Typeahead while executing an external command was lost.
1369 Now it's not lost while the command is producing output.
1371 Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>".  Now
1372 it works like a normal <Tab>, just like <C-Tab> and <M-Tab>.
1374 Redrawing ruler didn't check for old value correctly (caused UMR warnings in
1375 Purify).
1377 Negative array index in finish_viminfo_history().
1379 ":g/^/d|mo $" deleted all the lines.  The ":move" command now removes the
1380 :global mark from the moved lines.
1382 Using "vG" while the last line in the window is a "@" line, didn't update
1383 correctly.  Just the "v" showed "~" lines.
1385 "daw" on the last char of the file, when it's a space, moved the cursor beyond
1386 the end of the line.
1388 When 'hlsearch' was set or reset, only the current buffer was redrawn, while
1389 this affects all windows.
1391 CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the
1392 file, put the cursor at the bottom of the window, instead of halfway.
1394 When scrolling up for ":append" command, not all windows were updated
1395 correctly.
1397 When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc>
1398 didn't remove the highlighting, although the indent was deleted.
1400 When 'ru' set and 'nosc', using "$j" showed a wrong ruler.
1402 Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used).
1404 Mapping <S-Tab> didn't work.  Changed the key translations to use the shortest
1405 key code possible.  This makes the termcode translations and mappings more
1406 consistent.  Now all modifiers work in all combinations, not only with <Tab>,
1407 but also with <Space>, <CR>, etc.
1409 For Unix, restore three more signals.  And Vim catches SIGINT now, so CTRL-C
1410 in Ex mode doesn't make Vim exit.
1412 ""a5Y" yanked 25 lines instead of 5.
1414 "vrxxx<Esc>" in an empty line could not be undone.
1416 A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying
1417 when you want to handle what ":make" produced so far).
1419 ":0;/pat" didn't find "pat" in line 1.
1421 Search for "/test/s+1" at first char of file gave bottom-top message, or
1422 didn't work at all with 'nowrapscan'.
1424 Bug in viminfo history.  Could cause a crash on exit.
1426 ":print" didn't put cursor on first non-blank in line.
1428 ":0r !cat </dev/null" left cursor in line zero, with very strange effects.
1430 With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position
1431 the cursor leftwards didn't work.
1433 AIX stty settings were restored to cs5 instead of cs8 (Winn).
1435 File name completion didn't work for "zsh" versions that put spaces between
1436 file names, instead of NULs.
1438 Changed "XawChain*" to "XtChain*", should work for more systems.
1440 Included quite a few fixes for rightleft mode (Lottem).
1442 Didn't ask to |hit-return| when GUI is started and error messages are printed.
1444 When trying to edit a file in a non-existent directory, ended up with editing
1445 "No file".
1447 "gqap" to format a paragraph did too much redrawing.
1449 When 'hlsearch' set, only the current window was updated for a new search
1450 pattern.
1452 Sometimes error messages on startup didn't cause a |hit-return| prompt,
1453 because of autocommands containing an empty line.
1455 Was possible to select part of the window in the border, below the command
1456 line.
1458 '< and '> marks were not at the correct position after linewise Visual
1459 selection.
1461 When translating a help argument to "CTRL-x", prepend or append a '_', when
1462 applicable.
1464 Blockwise visual mode wasn't correct when moving vertically over a special
1465 character (displayed as two screen characters).
1467 Renamed "struct option" to "struct vimoption" to avoid name clash with GNU
1468 getopt().
1470 ":abclear" didn't work (but ":iabclear" and ":cabclear" did work).
1472 When 'nowrap' used, screen wasn't always updated correctly.
1474 "vim -c split file" displayed extra lines.
1476 After starting the GUI, searched the termcap for a "gui" term.
1478 When 'hls' used, search for "^$" caused a hang.
1479 When 'hls' was set, an error in the last regexp caused trouble.
1481 Unix: Only output an extra <EOL> on exit when outputted something in the
1482 alternate screen, or when there is a message that needs to be cleared.
1484 "/a\{" did strange things, depending on previous search.
1486 "c}" only redrew one line (with -u NONE).
1488 For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map
1489 only accepts <MC-A>.  Now <M-C-A> is shown.
1491 Unix: When using full path name in a tags file, which contains a link, and
1492 'hidden' set and jumping to a tag in the current file, would get bogus
1493 ATTENTION message.  Solved by always expanding file names, even when starting
1494 with '/'.
1496 'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight
1497 the whole thing.
1499 "r<CR>" didn't work correctly on the last char of a line.
1501 sometimes a window resize or other signal caused an endless loop, involving
1502 set_winsize().
1504 "vim -r" didn't work, it would just hang (using tgetent() while 'term' is
1505 empty).
1507 "gk" while 'nowrap' set moved two lines up.
1509 When windows are split, a message that causes a scroll-up messed up one of the
1510 windows, which required a CTRL-L to be typed.
1512 Possible endless loop when using shell command in the GUI.
1514 Menus defined in the .vimrc were removed when GUI started.
1516 Crash when pasting with the mouse in insert mode.
1518 Crash whith ":unmenu *" in .gvimrc for Athena.
1520 "5>>" shifted 5 lines 5 times, instead of 1 time.
1522 CTRL-C when getting a prompt in ":global" didn't interrupt.
1524 When 'so' is non-zero, and moving the scrollbar completely to the bottom,
1525 there was a lot of flashing.
1527 GUI: Scrollbar ident must be long for DEC Alpha.
1529 Some functions called vim_regcomp() without setting reg_magic, which could
1530 lead to unpredictable magicness.
1532 Crash when clicking around the status line, could get a selection with a
1533 backwards range.
1535 When deleting more than one line characterwise, the last character wasn't
1536 deleted.
1538 GUI: Status line could be overwritten when moving the scrollbar quickly (or
1539 when 'wd' is non-zero).
1541 An ESC at the end of a ":normal" command caused a wait for a terminal code to
1542 finish.  Now, a terminal code is not recognized when its start comes from a
1543 mapping or ":normal" command.
1545 Included patches from Robert Webb for GUI.  Layout of the windows is now done
1546 inside Vim, instead of letting the layout manager do this.  Makes Vim work
1547 with Lesstif!
1549 UMR warning in set_expand_context().
1551 Memory leak: b_winlnum list was never freed.
1553 Removed TIOCLSET/TIOCLGET code from os_unix.c.  Was changing some of the
1554 terminal settings, and looked like it wasn't doing anything good.  (suggested
1555 by Juergen Weigert).
1557 Ruler overwrote "is a directory" message.  When starting up, and 'cmdheight'
1558 set to > 1, first message could still be in the last line.
1560 Removed prototype for putenv() from proto.h, it's already in osdef2.h.in.
1562 In replace mode, when moving the cursor and then backspacing, wrong characters
1563 were inserted.
1565 Win32 GUI was checking for a CTRL-C too often, making it slow.
1567 Removed mappings for MS-DOS that were already covered by commands.
1569 When visually selecting all lines in a file, cursor at last line, then "J".
1570 Gave ml_get errors.  Was a problem with scrolling down during redrawing.
1572 When doing a linewise operator, and then an operator with a mouse click, it
1573 was also linewise, instead of characterwise.
1575 When 'list' is set, the column of the ruler was wrong.
1577 Spurious error message for "/\(b\+\)*".
1579 When visually selected many lines, message from ":w file" disappeared when
1580 redrawing the screen.
1582 ":set <M-b>=^[b", then insert "^[b", waited for another character.  And then
1583 inserted "<M-b>" instead of the real <M-b> character.  Was trying to insert
1584 K_SPECIAL x NUL.
1586 CTRL-W ] didn't use count to set window height.
1588 GUI: "-font" command-line argument didn't override 'guifont' setting from
1589 .gvimrc. (Acevedo)
1591 GUI: clipboard wasn't used for "*y".  And some more Win32/X11 differences
1592 fixed for the clipboard (Webb).
1594 Jumping from one help file to another help file, with 'compatible' set,
1595 removed the 'help' flag from the buffer.
1597 File-writable bit could be reset when using ":w!" for a readonly file.
1599 There was a wait for CTRL-O n in Insert mode, because the search pattern was
1600 shown.
1601 Reduced wait, to allow reading a message, from 10 to 3 seconds.  It seemed
1602 nothing was happening.
1604 ":recover" found same swap file twice.
1606 GUI: "*yy only worked the second time (when pasting to an xterm)."
1608 DJGPP version (dos32): The system flags were cleared.
1610 Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin).
1612 Version 4.1 of ncurses can't handle tputs("", ..).  Avoid calling tputs() with
1613 an empty string.
1615 <S-Tab> in the command-line worked like CTRL-P when no completion started yet.
1616 Now it does completion, last match first.
1618 Unix: Could get annoying "can't write viminfo" message after doing "su".  Now
1619 the viminfo file is overwritten, and the user set back to the original one.
1621 ":set term=builtin_gui" started the GUI in a wrong way.  Now it's not
1622 allowed anymore.  But "vim -T gui" does start the GUI correctly now.
1624 GUI: Triple click after a line only put last char in selection, when it is a
1625 single character word.
1627 When the window is bigger than the screen, the scrolling up of messages was
1628 wrong (e.g. ":vers", ":hi").  Also when the bottom part of the window was
1629 obscured by another window.
1631 When using a wrong option only an error message is printed, to avoid that the
1632 usage information makes it scroll off the screen.
1634 When exiting because of not being able to read from stdin, didn't preserve the
1635 swap files properly.
1637 Visual selecting all chars in more than one line, then hit "x" didn't leave an
1638 empty line.  For one line it did leave an empty line.
1640 Message for which autocommand is executing messed up file write message (for
1641 FileWritePost event).
1643 "vim -h" included "-U" even when GUI is not available, and "-l" when lisp is
1644 not available.
1646 Crash for ":he <C-A>" (command-line longer than screen).
1648 ":s/this/that/gc", type "y" two times, then undo, did reset the modified
1649 option, even though the file is still modified.
1651 Empty lines in a tags file caused a ":tag" to be aborted.
1653 When hitting 'q' at the more prompt for ":menu", still scrolled a few lines.
1655 In an xterm that uses the bold trick a single row of characters could remain
1656 after an erased bold character.  Now erase one extra char after the bold char,
1657 like for the GUI.
1659 ":pop!" didn't work.
1661 When the reading a buffer was interrupted, ":w" should not be able to
1662 overwrite the file, ":w!" is required.
1664 ":cf%" caused a crash.
1666 ":gui longfilename", when forking is enabled, could leave part of the
1667 longfilename at the shell prompt.
1669 ==============================================================================
1670 VERSION 5.1                                             *version-5.1*
1672 Improvements made between version 5.0 and 5.1.
1674 This was mostly a bug-fix release, not many new features.
1677 Changed                                                 *changed-5.1*
1678 -------
1680 The expand() function now separates file names with <NL> instead of a space.
1681 This avoids problems for file names with embedded spaces.  To get the old
1682 result, use substitute(expand(foo), "\n", " ", "g").
1684 For Insert-expanding dictionaries allow a backslash to be used for
1685 wildchars.  Allows expanding "ze\kra", when 'isk' includes a backslash.
1687 New icon for the Win32 GUI.
1689 ":tag", ":tselect" etc. only use the argument as a regexp when it starts
1690 with '/'.  Avoids that ":tag xx~" gives an error message: "No previous sub.
1691 regexp".  Also, when the :tag argument contained wildcard characters, it was
1692 not Vi compatible.
1693 When using '/', the argument is taken literally too, with a higher priority,
1694 so it's found before wildcard matches.
1695 Only when the '/' is used are matches with different case found, even though
1696 'ignorecase' isn't set.
1697 Changed "g^]" to only do ":tselect" when there is more than on matching tag.
1699 Changed some of the default colors, because they were not very readable on a
1700 dark background.
1702 A character offset to a search pattern can move the cursor to the next or
1703 previous line.  Also fixes that "/pattern/e+2" got stuck on "pattern" at the
1704 end of a line.
1706 Double-clicks in the status line do no longer start Visual mode.  Dragging a
1707 status line no longer stops Visual mode.
1709 Perl interface: Buffers() and Windows() now use more logical arguments, like
1710 they are used in the rest of Vim (Moore).
1712 Init '" mark to the first character of the first line.  Makes it possible to
1713 use '" in an autocommand without getting an error message.
1716 Added                                                   *added-5.1*
1717 -----
1719 "shell_error" internal variable: result of last shell command.
1721 ":echohl" command: Set highlighting for ":echo".
1723 'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for
1724 status line of not-current window.  Default is to use bold for current
1725 window.
1727 Added buffer_name() and buffer_number() functions (Aaron).
1728 Added flags argument "g" to substitute() function (Aaron).
1729 Added winheight() function.
1731 Win32: When an external command starts with "start ", no console is opened
1732 for it (Aaron).
1734 Win32 console: Use termcap codes for bold/reverse based on the current
1735 console attributes.
1737 Configure check for "strip". (Napier)
1739 CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally,
1740 instead of as typed.
1742 Made a few "No match" error messages more informative by adding the pattern
1743 that didn't match.
1745 "make install" now also copies the macro files.
1747 tools/tcltags, a shell script to generate a tags file from a TCL file.
1749 "--with-tlib" setting for configure.  Easy way to use termlib: "./configure
1750 --with-tlib=termlib".
1752 'u' flag in 'cino' for setting the indent for contained () parts.
1754 When Win32 OLE version can't load the registered type library, ask the user
1755 if he wants to register Vim now. (Erhardt)
1756 Win32 with OLE: When registered automatically, exit Vim.
1757 Included VisVim 1.1b, with a few enhancements and the new icon (Heiko
1758 Erhardt).
1760 Added patch from Vince Negri for Win32s support.  Needs to be compiled with
1761 VC 4.1!
1763 Perl interface: Added $curbuf.  Rationalized Buffers() and Windows().
1764 (Moore) Added "group" argument to Msg().
1766 Included Perl files in DOS source archive.  Changed Makefile.bor and
1767 Makefile.w32 to support building a Win32 version with Perl included.
1769 Included new Makefile.w32 from Ken Scott.  Now it's able to make all Win32
1770 versions, including OLE, Perl and Python.
1772 Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^].
1774 Added "g]" to always do ":tselect" for the ident under the cursor.
1775 Added ":tjump" and ":stjump" commands.
1776 Improved listing of ":tselect" when tag names are a bit long.
1778 Included patches for the Macintosh version. Also for Python interface.
1779 (St-Amant)
1781 ":buf foo" now also restores cursor column, when the buffer was used before.
1783 Adjusted the Makefile for different final destinations for the syntax files
1784 and scripts (for Debian Linux).
1786 Amiga: $VIM can be used everywhere.  When $VIM is not defined, "VIM:" is
1787 used.  This fixes that "VIM:" had to be assigned for the help files, and
1788 $VIM set for the syntax files.  Now either of these work.
1790 Some xterms send vt100 compatible function keys F1-F4.  Since it's not
1791 possible to detect this, recognize both type of keys and translate them to
1792 <F1> - <F4>.
1794 Added "VimEnter" autocommand.  Executed after loading all the startup stuff.
1796 BeOS version now also runs on Intel CPUs (Seibert).
1799 Fixed                                                   *fixed-5.1*
1800 -----
1802 ":ts" changed position in the tag stack when cancelled with <CR>.
1803 ":ts" changed the cursor position for CTRL-T when cancelled with <CR>.
1804 ":tn" would always jump to the second match.    Was using the wrong entry in
1805 the tag stack.
1806 Doing "tag foo", then ":tselect", overwrote the original cursor position in
1807 the tag stack.
1809 "make install" changed the vim.1 manpage in a wrong way, causing "doc/doc"
1810 to appear for the documentation files.
1812 When compiled with MAX_FEAT, xterm mouse handling failed.  Was caused by DEC
1813 mouse handling interfering.
1815 Was leaking memory when using selection in X11.
1817 CTRL-D halfway a command-line left some characters behind the first line(s)
1818 of the listing.
1820 When expanding directories for ":set path=", put two extra backslashes
1821 before a space in a directory name.
1823 When 'lisp' set, first line of a function would be indented.  Now its indent
1824 is set to zero.  And use the indent of the first previous line that is at
1825 the same () level.  Added test33.
1827 "so<Esc>u" in an empty file didn't work.
1829 DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe,
1830 because the swap file was made hidden.  It's no longer hidden.
1832 ":global" command would sometimes not execute on a matching line.  Happened
1833 when a data block is full in ml_replace().
1835 For AIX use a tgetent buffer of 2048 bytes, instead of 1024.
1837 Win32 gvim now only sets the console size for external commands to 25x80
1838 on Windows 95, not on NT.
1840 Win32 console: Dead key could cause a crash, because of a missing "WINAPI"
1841 (Deshpande).
1843 The right mouse button started Visual mode, even when 'mouse' is empty, and
1844 in the command-line, a left click moved the cursor when 'mouse' is empty.
1845 In Visual mode, 'n' in 'mouse' would be used instead of 'v'.
1847 A blinking cursor or focus change cleared a non-Visual selection.
1849 CTRL-Home and CTRL-End didn't work for MS-DOS versions.
1851 Could include NUL in 'iskeyword', causing a crash when doing insert mode
1852 completion.
1854 Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version.
1856 In mappings, CTRL-H was replaced by the backspace key code.  This caused
1857 problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>".
1859 ":set t_Co=0" was not handled like a normal term.  Now it's translated into
1860 ":set t_Co=", which works.
1862 For ":syntax keyword" the "transparent" option did work, although not
1863 mentioned in the help.  But synID() returned wrong name.
1865 "gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and
1866 not interruptable.
1868 "gq" operator inserted screen lines in the wrong situation.  Now screen
1869 lines are inserted or deleted when this speeds up displaying.
1871 cindent was wrong when an "if" contained "((".
1873 'r' flag in 'viminfo' was not used for '%'.  Could get files in the buffer
1874 list from removable media.
1876 Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project.
1877 Hand-edited to fix this...
1879 With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at
1880 the end of the line.
1882 Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP
1883 bug.  That bug appears to have been fixed, therefore this translation has
1884 been removed.
1886 "/^*" didn't work (find '*' in first column).
1888 "<afile>" was not always set for autocommands.  E.g., for ":au BufEnter *
1889 let &tags = expand("<afile>:p:h") . "/tags".
1891 In an xterm, the window may be a child of the outer xterm window.  Use the
1892 parent window when getting the title and icon names. (Smith)
1894 When starting with "gvim -bg black -fg white", the value of 'background' is
1895 only set after reading the .gvimrc file.  This causes a ":syntax on" to use
1896 the wrong colors.  Now allow using ":gui" to open the GUI window and set the
1897 colors.  Previously ":gui" in a gvimrc crashed Vim.
1899 tempname() returned the same name all the time, unless the file was actually
1900 created.  Now there are at least 26 different names.
1902 File name used for <afile> was sometimes full path, sometimes file name
1903 relative to current directory.
1905 When 'background' was set after the GUI window was opened, it could change
1906 colors that were set by the user in the .gvimrc file.  Now it only changes
1907 colors that have not been set by the user.
1909 Ignore special characters after a CSI in the GUI version.  These could be
1910 interpreted as special characters in a wrong way. (St-Amant)
1912 Memory leak in farsi code, when using search or ":s" command.
1913 Farsi string reversing for a mapping was only done for new mappings.  Now it
1914 also works for replacing a mapping.
1916 Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron)
1918 When BufDelete autocommands were executed, some things for the buffer were
1919 already deleted (esp. Perl stuff).
1921 Perl interface: Buffer specific items were deleted too soon; fixes "screen
1922 no longer exists" messages.  (Moore)
1924 The Perl functions didn't set the 'modified' flag.
1926 link.sh did not return an error on exit, which may cause Vim to start
1927 installing, even though there is no executable to install. (Riehm)
1929 Vi incompatibility: In Vi "." redoes the "y" command.  Added the 'y' flag to
1930 'cpoptions'.  Only for 'compatible' mode.
1932 ":echohl" defined a new group, when the argument was not an existing group.
1934 "syn on" and ":syn off" could move the cursor, if there is a hidden buffer
1935 that is shorter that the current cursor position.
1937 The " mark was not set when doing ":b file".
1939 When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at
1940 the end of the line made the nextgroup also be found in the next line.
1942 ":he g<CTRL-D>", then ":" and backspace to the start didn't redraw.
1944 X11 GUI: "gvim -rv" reversed the colors twice on Sun.  Now Vim checks if the
1945 result is really reverse video (background darker than foreground).
1947 "cat link.sh | vim -" didn't set syntax highlighting.
1949 Win32: Expanding "file.sw?" matched ".file.swp".  This is an error of
1950 FindnextFile() that we need to work around.  (Kilgore)
1952 "gqgq" gave an "Invalid lnum" error on the last line.
1953 Formatting with "gq" didn't format the first line after a change of comment
1954 leader.
1956 There was no check for out-of-memory in win_alloc().
1958 "vim -h" didn't mention "-register" and "-unregister" for the OLE version.
1960 Could not increase 'cmdheight' when the last window is only one line.  Now
1961 other windows are also made smaller, when necessary.
1963 Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x.
1964 Changed return type of main() from void to int. (Nam)
1966 Using '~' twice in a substitute pattern caused a crash.
1968 "syn on" and ":syn off" could scroll the window, if there is a hidden buffer
1969 that is shorter that the current cursor position.
1971 ":if 0 | if 1 | endif | endif" didn't work.  Same for ":while" and "elseif".
1973 With two windows on modified files, with 'autowrite' set, cursor in second
1974 window, ":qa" gave a warning for the file in the first window, but then
1975 auto-wrote the file in the second window. (Webb)
1977 Win32 GUI scrollbar could only handle 32767 lines.  Also makes the
1978 intellimouse wheel use the configurable number of scrolls. (Robinson)
1980 When using 'patchmode', and the backup file is on another partition, the file
1981 copying messed up the write-file message.
1983 GUI X11: Alt-Backspace and Alt-Delete didn't work.
1985 "`0" could put the cursor after the last character in the line, causing
1986 trouble for other commands, like "i".
1988 When completing tags in insert mode with ^X^], some matches were skipped,
1989 because the compare with other tags was wrong.  E.g., when "mnuFileSave" was
1990 already there, "mnuFile" would be skipped. (Negri)
1992 When scrolling up/down, a syntax item with "keepend" didn't work properly.
1993 Now the flags are also stored for the syntax state a the start of each line.
1995 When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the
1996 effect.
1998 Win32 GUI: Don't display "No write since last chance" in a message box, but in
1999 the Vim window.
2001 ==============================================================================
2002 VERSION 5.2                                             *version-5.2*
2004 Improvements made between version 5.1 and 5.2.
2007 Long lines editable                                     *long-lines*
2008 -------------------
2010 A single long line that doesn't fit in the window doesn't show a line of @@@
2011 anymore.  Redrawing starts at a character further on in the line, such that
2012 the text around the cursor can be seen.  This makes it possible to edit these
2013 long lines when wrapping is on.
2016 File browser added                                      *file-browser*
2017 ------------------
2019 The Win32, Athena and Motif GUI bring up a file requester if the user asks to
2020 ":browse" for the ":e", ":w", ":r", ":so", ":redirect" and
2021 ":mkexrc/vimrc/vsess" commands.  ::browse e /foo/bar" opens the requester in
2022 the /foo/bar directory, so you can have nice mapping rhs's like ":browse so
2023 $vim/macros".  If no initial dir specified for ":browse e", can be compiled to
2024 either begin in the current directory, or that of the current buffer. (Negri
2025 and Kahn)
2026 Added the 'browsedir' option, with value "current", "last" or "buffer".  Tells
2027 wether a browse dialog starts in last used dir, dir of current buffer, or
2028 current dir.  ":browse w" is unaffected.
2029 The default menus have been changed to use the ":browse" command.
2032 Dialogs added                                           *dialogs-added*
2033 -------------
2035 Added the ":confirm" command.  Works on ":e", ":q", ":w", ":cl".  Win32,
2036 Athena and Motif GUI uses a window-dialog.  All other platforms can use
2037 prompt in command-line.  ":confirm qa" offers a choice to save all modified
2038 files.
2040 confirm() function: allows user access to the confirm engine.
2042 Added 'v' flag to 'guioptions'.  When included, a vertical button layout is
2043 always used for the Win32 GUI dialog.  Otherwise, a horizontal layout is
2044 preferred.
2046 Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace.
2047 To be used from a menu entry. (Negri)
2050 Popup menu added                                        *popup-menu-added*
2051 ----------------
2053 When the 'mousemodel' option is set to "popup", the right mouse button
2054 displays the top level menu headed with "PopUp" as pop-up context menu.  The
2055 "PopUp" menu is not displayed in the normal menu bar.  This currently only
2056 works for Win32 and Athena GUI.
2059 Select mode added                                       *new-Select-mode*
2060 -----------------
2062 A new mode has been added: "Select mode".  It is like Visual mode, but typing
2063 a printable character replaces the selection.
2064 - CTRL-G can be used to toggle between Visual mode and Select mode.
2065 - CTRL-O can be used to switch from Select mode to Visual mode for one command.
2066 - Added 'selectmode' option: tells when to start Select mode instead of Visual
2067   mode.
2068 - Added 'mousemodel' option: Change use of mouse buttons.
2069 - Added 'keymodel' option: tells to use shifted special keys to start a
2070   Visual or Select mode selection.
2071 - Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel'
2072   and 'keymodel' for MS-Windows and xterm behavior.
2073 - The xterm-like selection is now called modeless selection.
2074 - Visual mode mappings and menus are used in Select mode.  They automatically
2075   switch to Visual mode first.  Afterwards, reselect the area, unless it was
2076   deleted.  The "gV" command can be used in a mapping to skip the reselection.
2077 - Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode.
2078 - Backspace in Select mode deletes the selected area.
2080 "mswin.vim" script.  Sets behavior mostly like MS-Windows.
2083 Session files added                                     *new-session-files*
2084 -------------------
2086 ":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the
2087 currently loaded buffers and current directory, so that :so'ing the file
2088 re-loads those files and cd's to that directory.  Also stores and restores
2089 windows.  File names are made relative to session file.
2090 The 'sessionoptions' option sets behavior of ":mksession". (Negri)
2093 User defined functions and commands                     *new-user-defined*
2094 -----------------------------------
2096 Added user defined functions.  Defined with ":function" until ":endfunction".
2097 Called with "Func()".  Allows the use of a variable number of arguments.
2098 Included support for local variables "l:name".  Return a value with ":return".
2099 See |:function|.
2100 Call a function with ":call".  When using a range, the function is called for
2101 each line in the range. |:call|
2102 "macros/justify.vim" is an example of using user defined functions.
2103 User functions do not change the last used search pattern or the command to be
2104 redone with ".".
2105 'maxfuncdepth' option.  Restricts the depth of function calls.  Avoids trouble
2106 (crash because of out-of-memory) when a function uses endless recursion.
2108 User defineable Ex commands: ":command", ":delcommand" and ":comclear".
2109 (Moore)  See |user-commands|.
2112 New interfaces                                          *interfaces-5.2*
2113 --------------
2115 Tcl interface. (Wilken)  See |tcl|.
2116 Uses the ":tcl", ":tcldo" and "tclfile" commands.
2118 Cscope support. (Kahn) (Sekera)  See |cscope|.
2119 Uses the ":cscope" and ":cstag" commands.  Uses the options 'cscopeprg',
2120 'cscopetag', 'cscopetagorder' and 'cscopeverbose'.
2123 New ports                                               *ports-5.2*
2124 ---------
2126 Amiga GUI port. (Nielsen)  Not tested much yet!
2128 RISC OS version. (Thomas Leonard)  See |riscos|.
2129 This version can run either with a GUI or in text mode, depending upon where
2130 it is invoked.
2131 Deleted the "os_archie" files, they were not working anyway.
2134 Multi-byte support                                      *new-multi-byte*
2135 ------------------
2137 MultiByte support for Win32 GUI. (Baek)
2138 The 'fileencoding' option decides how the text in the file is encoded.
2139 ":ascii" works for multi-byte characters.  Multi-byte characters work on
2140 Windows 95, even when using the US version. (Aaron)
2141 Needs to be enabled in feature.h.
2142 This has not been tested much yet!
2145 New functions                                           *new-functions-5.2*
2146 -------------
2148 |browse()|      puts up a file requester when available. (Negri)
2149 |escape()|      escapes characters in a string with a backslash.
2150 |fnamemodify()| modifies a file name.
2151 |input()|       asks the user to enter a line. (Aaron) There is a separate
2152                 history for lines typed for the input() function.
2153 |argc()|
2154 |argv()|        can be used to access the argument list.
2155 |winbufnr()|    buffer number of a window. (Aaron)
2156 |winnr()|       window number. (Aaron)
2157 |matchstr()|    Return matched string.
2158 |setline()|     Set a line to a string value.
2161 New options                                             *new-options-5.2*
2162 -----------
2164 'allowrevins'   Enable the CTRL-_ command in Insert and Command-line mode.
2165 'browsedir'     Tells in which directory a browse dialog starts.
2166 'confirm'       when set, :q :w and :e commands always act as if ":confirm"
2167                 is used.  (Negri)
2168 'cscopeprg'
2169 'cscopetag'
2170 'cscopetagorder'
2171 'cscopeverbose' Set the |cscope| behavior.
2172 'filetype'      RISC-OS specific type of file.
2173 'grepformat'
2174 'grepprg'       For the |:grep| command.
2175 'keymodel'      Tells to use shifted special keys to start a Visual or Select
2176                 mode selection.
2177 'listchars'     Set character to show in 'list' mode for end-of-line, tabs and
2178                 trailing spaces. (partly by Smith) Also sets character to
2179                 display if a line doesn't fit when 'nowrap' is set.
2180 'matchpairs'    Allows matching '<' with '>', and other single character
2181                 pairs.
2182 'mousefocus'    Window focus follows mouse (partly by Terhaar).  Changing the
2183                 focus with a keyboard command moves the pointer to that
2184                 window.  Also move the pointer when changing the window layout
2185                 (split window, change window height, etc.).
2186 'mousemodel'    Change use of mouse buttons.
2187 'selection'     When set to "inclusive" or "exclusive", the cursor can go one
2188                 character past the end of the line in Visual or Select mode.
2189                 When set to "old" the old behavior is used.  When
2190                 "inclusive", the character under the cursor is included in the
2191                 operation.  When using "exclusive", the new "ve" entry of
2192                 'guicursor' is used.  The default is a vertical bar.
2193 'selectmode'    Tells when to start Select mode instead of Visual mode.
2194 'sessionoptions' Sets behavior of ":mksession". (Negri)
2195 'showfulltag'   When completing a tag in Insert mode, show the tag search
2196                 pattern (tidied up) as a choice as well (if there is one).
2197 'swapfile'      Whether to use a swap file for a buffer.
2198 'syntax'        When it is set, the syntax by that name is loaded.  Allows for
2199                 setting a specific syntax from a modeline.
2200 'ttymouse'      Allows using xterm mouse codes for terminals which name
2201                 doesn't start with "xterm".
2202 'wildignore'    List of patterns for files that should not be completed at
2203                 all.
2204 'wildmode'      Can be used to set the type of expansion for 'wildchar'.
2205                 Replaces the CTRL-T command for command line completion.
2206                 Don't beep when listing all matches.
2207 'winaltkeys'    Win32 and Motif GUI.  When "yes", ALT keys are handled
2208                 entirely by the window system.  When "no", ALT keys are never
2209                 used by the window system.  When "menu" it depends on whether
2210                 a key is a menu shortcut.
2211 'winminheight'  Minimal height for each window.  Default is 1.  Set to 0 if
2212                 you want zero-line windows.  Scrollbar is removed for
2213                 zero-height windows. (Negri)
2217 New Ex commands                                         *new-ex-commands-5.2*
2218 ---------------
2220 |:badd|         Add file name to buffer list without side effects.  (Negri)
2221 |:behave|       Quickly set MS-Windows or xterm behavior.
2222 |:browse|       Use file selection dialog.
2223 |:call|         Call a function, optionally with a range.
2224 |:cnewer|
2225 |:colder|       To access a stack of quickfix error lists.
2226 |:comclear|     Clear all user-defined commands.
2227 |:command|      Define a user command.
2228 |:continue|     Go back to ":while".
2229 |:confirm|      Ask confirmation if something unexpected happens.
2230 |:cscope|       Execute cscope command.
2231 |:cstag|        Use cscope to jump to a tag.
2232 |:delcommand|   Delete a user-defined command.
2233 |:delfunction|  Delete a user-defined function.
2234 |:endfunction|  End of user-defined function.
2235 |:function|     Define a user function.
2236 |:grep|         Works similar to ":make". (Negri)
2237 |:mksession|    Create a session file.
2238 |:nohlsearch|   Stop 'hlsearch' highlighting for a moment.
2239 |:Print|        This is Vi compatible.  Does the same as ":print".
2240 |:promptfind|   Search dialog (Win32 GUI).
2241 |:promptrepl|   Search/replace dialog (Win32 GUI).
2242 |:return|       Return from a user-defined function.
2243 |:simalt|       Win32 GUI: Simulate alt-key pressed.  (Negri)
2244 |:smagic|       Like ":substitute", but always use 'magic'.
2245 |:snomagic|     Like ":substitute", but always use 'nomagic'.
2246 |:tcl|          Execute TCL command.
2247 |:tcldo|        Execute TCL command for a range of lines.
2248 |:tclfile|      Execute a TCL script file.
2249 |:tearoff|      Tear-off a menu (Win32 GUI).
2250 |:tmenu|
2251 |:tunmenu|      Win32 GUI: menu tooltips.  (Negri)
2252 |:star| :*      Execute a register.
2255 Changed                                                 *changed-5.2*
2256 -------
2258 Renamed functions:
2259                 buffer_exists()    -> bufexists()
2260                 buffer_name()      -> bufname()
2261                 buffer_number()    -> bufnr()
2262                 file_readable()    -> filereadable()
2263                 highlight_exists() -> hlexists()
2264                 highlightID()      -> hlID()
2265                 last_buffer_nr()   -> bufnr("$")
2266 The old ones are still there, for backwards compatibility.
2268 The CTRL-_ command in Insert and Command-line mode is only available when the
2269 new 'allowrevins' option is set.  Avoids that people who want to type SHIFT-_
2270 accidentally enter reverse Insert mode, and don't know how to get out.
2272 When a file name path in ":tselect" listing is too long, remove a part in the
2273 middle and put "..." there.
2275 Win32 GUI: Made font selector appear inside Vim window, not just any odd
2276 place. (Negri)
2278 ":bn" skips help buffers, unless currently in a help buffer. (Negri)
2280 When there is a status line and only one window, don't show '^' in the status
2281 line of the current window.
2283 ":*" used to be used for "'<,'>", the Visual area.  But in Vi it's used as an
2284 alternative for ":@".  When 'cpoptions' includes '*' this is Vi compatible.
2286 When 'insertmode' is set, using CTRL-O to execute a mapping will work like
2287 'inertmode' was not set.  This allows "normal" mappings to be used even when
2288 'insertmode' is set.
2290 When 'mouse' was set already (e.g., in the .vimrc file), don't automatically
2291 set 'mouse' when the GUI starts.
2293 Removed the 'N', 'I' and 'A' flags from the 'mouse' option.
2295 Renamed "toggle option" to "boolean option".  Some people thought that ":set
2296 xyz" would toggle 'xyz' on/off each time.
2298 The internal variable "shell_error" contains the error code from the shell,
2299 instead of just 0 or 1.
2301 When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>".
2302 That is not very useful.  Now the CTRL key is ignored and a <CR> is inserted.
2303 Same for all other "normal" keys with modifiers.  Mapping these modified key
2304 combinations is still possible.
2305 In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then
2306 the special character.
2308 Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt.  They
2309 are now installed like other documentation files.
2311 winheight() function returns -1 for a non-existing window.  It used to be
2312 zero, but that is a valid height now.
2314 The default for 'selection' is "inclusive", which makes a difference when
2315 using "$" or the mouse to move the cursor in Visual mode.
2317 ":q!" does not exit when there are changed buffers which are hidden.  Use
2318 ":qa!" to exit anyway.
2320 Disabled the Perl/Python/Tcl interfaces by default.  Not many people use them
2321 and they make the executable a lot bigger.  The internal scripting language is
2322 now powerful enough for most tasks.
2324 The strings from the 'titlestring' and 'iconstring' options are used
2325 untranslated for the Window title and icon.  This allows for including a <CR>.
2326 Previously a <CR> would be shown as "^M" (two characters).
2328 When a mapping is started in Visual or Select mode which was started from
2329 Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode
2330 until the mapping has ended.  Makes it possible to use a mapping in Visual
2331 mode that also works when the Visual mode was started from Select mode.
2333 Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus.  This helps
2334 when defining menus in the .vimrc file, or when sourcing mswin.vim.
2336 Unix: Use /var/tmp for .swp files, if it exists.  Files there survive a
2337 reboot (at least on Linux).
2340 Added                                                   *added-5.2*
2341 -----
2343 --with-motif-lib configure argument.  Allows for using a static Motif library.
2345 Support for mapping numeric keypad +,-,*,/ keys. (Negri)
2346 When not mapped, they produce the normal character.
2348 Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer.
2349 (Negri)
2351 Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be
2352 used for mappings.
2354 In the output of ":map", highlight the "*" to make clear it's not part of the
2355 rhs. (Roemer)
2357 When showing the Visual area, the cursor is not switched off, so that it can
2358 be located.  The Visual area is now highlighted with a grey background in the
2359 GUI.  This makes the cursor visible when it's also reversed.
2361 Win32: When started with single full pathname (e.g. via double-clicked file),
2362 cd to that file's directory. (Negri)
2364 Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri)
2365 't' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif.
2366 It's included by default.
2367 Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri)
2369 Added ^Kaa and ^KAA digraphs.
2370 Added "euro" symbol to digraph.c. (Corry)
2372 Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis).
2373 Other GUIs ignore '&' in a menu name.
2375 DJGPP: Faster screen updating (John Lange).
2377 Clustering of syntax groups ":syntax cluster" (Bigham).
2378 Including syntax files: ":syntax include" (Bigham).
2380 Keep column when switching buffers, when 'nosol' is set (Radics).
2382 Number function for Perl interface.
2384 Support for Intellimouse in Athena GUI. (Jensen)
2386 ":sleep" also accepts an argument in milliseconds, when "m" is used.
2388 Added 'p' flag in 'guioptions': Install callbacks for enter/leave window
2389 events.  Makes cursor blinking work for Terhaar, breaks it for me.
2391 "--help" and "--version" command-line arguments.
2393 Non-text in ":list" output is highlighted with NonText.
2395 Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as
2396 synonym for "iB".  New: "i<" and "i>", to select <thing>.  All this also for
2397 "a" objects.
2399 'O' flag in 'shortmess': message for reading a file overwrites any previous
2400 message. (Negri)
2402 Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off.
2403 Included a list with self-made toolbar bitmaps.  (Negri)
2405 Added menu priority for sub-menus.  Implemented for Win32 and Motif GUI.
2406 Display menu priority with ":menu" command.
2407 Default and Syntax menus now include priority for items.  Allows inserting
2408 menu items in between the default ones.
2410 When the 'number' option is on, highlight line numbers with the LineNr group.
2412 "Ignore" highlight group: Text highlighted with this is made blank.  It is
2413 used to hide special characters in the help text.
2415 Included Exuberant Ctags version 2.3, with C++ support, Java support and
2416 recurse into directories. (Hiebert)
2418 When a tags file is not sorted, and this is detected (in a simplistic way), an
2419 error message is given.
2421 ":unlet" accepts a "!", to ignore non-existing variables, and accepts more
2422 than one argument. (Roemer)
2423 Completion of variable names for ":unlet". (Roemer)
2425 When there is an error in a function which is called by another function, show
2426 the call stack in the error message.
2428 New file name modifiers:
2429 ":.": reduce file name to be relative to current dir.
2430 ":~": reduce file name to be relative to home dir.
2431 ":s?pat?sub?": substitute "pat" with "sub" once.
2432 ":gs?pat?sub?": substitute "pat" with "sub" globally.
2434 New configure arguments: --enable-min-features and --enable-max-features.
2435 Easy way to switch to minimum or maximum features.
2437 New compile-time feature: modify_fname.  For file name modifiers, e.g,
2438 "%:p:h".  Can be disabled to save some code (16 bit DOS).
2440 When using whole-line completion in Insert mode, and 'cindent' is set, indent
2441 the line properly.
2443 MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri)
2445 Included new set of Farsi fonts. (Shiran)
2447 Accelerator text now also works in Motif.  All menus can be defined with & for
2448 mnemonic and TAB for accelerator text.  They are ignored on systems that don't
2449 support them.
2450 When removing or replacing a menu, compare the menu name only up to the <Tab>
2451 before the mnemonic.
2453 'i' and 'I' flags after ":substitute": ignore case or not.
2455 "make install" complains if the runtime files are missing.
2457 Unix: When finding an existing swap file that can't be opened, mention the
2458 owner of the file in the ATTENTION message.
2460 The 'i', 't' and 'k' options in 'complete' now also print the place where they
2461 are looking for matches. (Acevedo)
2463 "gJ" command: Join lines without inserting a space.
2465 Setting 'keywordprg' to "man -s" is handled specifically.  The "-s" is removed
2466 when no count given, the count is added otherwise.  Configure checks if "man
2467 -s 2 read" works, and sets the default for 'keywordprg' accordingly.
2469 If you do a ":bd" and there is only one window open, Vim tries to move to a
2470 buffer of the same type (i.e. non-help to non-help, help to help), for
2471 consistent behavior to :bnext/:bprev. (Negri)
2473 Allow "<Nop>" to be used as the rhs of a mapping.  ":map xx <Nop>", maps "xx"
2474 to nothing at all.
2476 In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu
2477 path.  This makes it more easy to type, no backslash needed.
2479 POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:],
2480 [:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:],
2481 [:space:], [:upper:] and [:xdigit:]. (Briscoe)
2483 regexp character classes (for fast syntax highlight matching):
2484         digits:     \d [0-9]            \D  not digit (Roemer)
2485         hex:        \x [0-9a-fA-F]      \X  not hex
2486         octal:      \o [0-7]            \O  not octal
2487         word:       \w [a-zA-Z0-9_]     \W  not word
2488         head:       \h [a-zA-Z_]        \H  not head
2489         alphabetic: \a [a-zA-Z]         \A  not alphabetic
2490         lowercase:  \l [a-z]            \L  not lowercase
2491         uppercase:  \u [A-Z]            \U  not uppercase
2493 ":set" now accepts "+=", |^=" and "-=": add or remove parts of a string
2494 option, add or subtract a number from a number option.  A comma is
2495 automagically inserted or deleted for options that are a comma separated list.
2497 Filetype feature, for autocommands.  Uses a file type instead of a pattern to
2498 match a file.  Currently only used for RISC OS.  (Leonard)
2500 In a pattern for an autocommand, environment variables can be used.  They are
2501 expanded when the autocommand is defined.
2503 "BufFilePre" and "BufFilePost" autocommand evens: Before and after applying
2504 the ":file" command to change the name of a buffer.
2505 "VimLeavePre" autocommand event: before writing the .viminfo file.
2507 For autocommands argument: <abuf> is buffer number, like <afile>.
2509 Made syntax highlighting a bit faster when scrolling backwards, by keeping
2510 more syncing context.
2512 Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or
2513 inserting screen lines.
2515 GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved
2516 less than a pixel.
2518 Included ":highlight" in bugreport.vim.
2520 Created install.exe program, for simplistic installation on DOS and
2521 MS-Windows.
2523 New register: '_', the black hole.  When writing to it, nothing happens.  When
2524 reading from it, it's always empty.  Can be used to avoid a delete or change
2525 command to modify the registers, or reduce memory use for big changes.
2527 CTRL-V xff enters character by hex number.  CTRL-V o123 enters character by
2528 octal number. (Aaron)
2530 Improved performance of syntax highlighting by skipping check for "keepend"
2531 when there isn't any.
2533 Moved the mode message ("-- INSERT --") to the last line of the screen.  When
2534 'cmdheight' is more than one, messages will remain readable.
2536 When listing matching files, they are also sorted on 'suffixes', such that
2537 they are listed in the same order as CTRL-N retrieves them.
2539 synIDattr() takes a third argument (optionally), which tells for which
2540 terminal type to get the attributes for.  This makes it possible to run
2541 2html.vim outside of gvim (using color names instead of #RRGGBB).
2543 Memory profiling, only for debugging.  Prints at exit, and with "g^A" command.
2544 (Kahn)
2546 DOS: When using a file in the current drive, remove the drive name:
2547 "A:\dir\file" -> "\dir\file".  This helps when moving a session file on a
2548 floppy from "A:\dir" to "B:\dir".
2550 Increased number of remembered jumps from 30 to 50 per window.
2552 Command to temporarily disable 'hls' highlighting until the next search:
2553 ":nohlsearch".
2555 "gp" and "gP" commands: like "p" and "P", but leave the cursor just after the
2556 inserted text.  Used for the CTRL-V command in MS-Windows mode.
2559 Fixed                                                   *fixed-5.2*
2560 -----
2562 Win32 GUI: Could draw text twice in one place, for fake-bold text.  Removed
2563 this, Windows will handle the bold text anyway. (Negri)
2565 patch 5.1.1: Win32s GUI: pasting caused a crash (Negri)
2567 patch 5.1.2: When entering another window, where characters before the cursor
2568 have been deleted, could have a cursor beyond the end of the line.
2570 patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri)
2572 patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version
2573 (Scott).
2575 patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that
2576 doesn't fit in the window, and splitting that line in two.
2578 patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line
2579 (so that the window scrolls horizontally), ":set wrap".  Following Visual
2580 selection was wrong.
2582 patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do
2583 binary searching.
2585 patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler.
2587 patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear.
2589 patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer
2590 without a name exists.
2592 patch 5.1.11: "make test" didn't work in the shadow directory.  Also adjusted
2593 "make shadow" for the links in the ctags directory.
2595 patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a
2596 buffer name.
2598 patch 5.1.13: When completing file names on the command-line, reallocating the
2599 command-line may go wrong.
2601 patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch
2602 specified.
2604 Graceful handling of NULLs in drag-dropped file list.  Handle passing NULL to
2605 Fullname_save(). (Negri)
2607 Win32: ":!start" to invoke a program without opening a console, swapping
2608 screens, or waiting for completion in either console or gui version. e.g. you
2609 can type ":!start winfile".  ALSO fixes "can't delete swapfile after spawning
2610 a shell" bug. (enhancement of Aaron patch) (Negri)
2612 Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri)
2614 Shorten filenames on startup.  If in /foo/bar, entering "vim ../bar/bang.c"
2615 displays "bang.c" in status bar, not "/foo/bar/bang.c"  (Negri)
2617 Win32 GUI: No copy to Windows clipboard when it's not desired.
2619 Win32s: Fix pasting from clipboard - made an assumption not valid under
2620 Win32s. (Negri)
2622 Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing
2623 functions. (Negri)
2625 Win32 GUI: Middle mouse button emulation now works in GUI! (Negri)
2627 Could skip messages when combining commands in one line, e.g.:
2628 ":echo "hello" | write".
2630 Perl interpreter was disabled before executing VimLeave autocommands.  Could
2631 not use ":perl" in them.  (Aaron)
2633 Included patch for the Intellimouse (Aaron/Robinson).
2635 Could not set 'ls' to one, when last window has only one line.  (Mitterand)
2637 Fixed a memory leak when removing menues.
2639 After ":only" the ruler could overwrite a message.
2641 Dos32: removed changing of __system_flags.  It appears to work better when
2642 it's left at the default value.
2644 p_aleph was an int instead of along, caused trouble on systems where
2645 sizeof(int) != sizeof(long). (Schmidt)
2647 Fixed enum problems for Ultrix. (Seibert)
2649 Small redraw problem: "dd" on last line in file cleared wrong line.
2651 Didn't interpret "cmd | endif" when "cmd" starts with a range.  E.g. "if 0 |
2652 .d | endif".
2654 Command "+|" on the last line of the file caused ml_get errors.
2656 Memory underrun in eval_vars(). (Aaron)
2658 Don't rename files in a difficult way, except on Windows 95 (was also done on
2659 Windows NT).
2661 Win32 GUI: An external command that produces an error code put the error
2662 message in a dialog box.  had to close the window and close the dialog.  Now
2663 the error code is displayed in the console. (Negri)
2665 "comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle)
2667 In Insert mode, when entering a window in Insert mode, allow the cursor to be
2668 one char beyond the text.
2670 Renamed machine dependent rename() to mch_rename().  Define mch_rename() to
2671 rename() when it works properly.
2673 Rename vim_chdir() to mch_chdir(), because it's machine dependent.
2675 When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more
2676 files to edit" error.
2678 In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed.
2679 Moved the Python_Release_Vim() to before the VimErrorCheck().  (Harkins)
2681 Give an error message for an unknown argument after "--".  E.g. for "vim
2682 --xyz".
2684 The FileChangedShell autocommand didn't set <afile> to the name of the changed
2685 file.
2687 When doing ":e file", causing the attention message, there sometimes was no
2688 hit-return prompt.  Caused by empty line or "endif" at end of sourced file.
2690 A large number of patches for the VMS version. (Hunsaker)
2692 When CTRL-L completion (find longest match) results in a shorter string, no
2693 completion is done (happens with ":help").
2695 Crash in Win32 GUI version, when using an Ex "@" command, because
2696 LinePointers[] was used while not initialized.
2698 Win32 GUI: allow mapping of Alt-Space.
2700 Output from "vim -h" was sent to stderr.  Sending it to stdout is better, so
2701 one can use "vim -h | more".
2703 In command-line mode, ":vi[!]" should reload the file, just like ":e[!]".
2704 In Ex mode, ":vi" stops Ex mode, but doesn't reload the file.  This is Vi
2705 compatible.
2707 When using a ":set ls=1" in the .gvimrc file, would get a status line for a
2708 single window.  (Robinson)
2710 Didn't give an error message for ":set ai,xx". (Roemer)
2711 Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx".
2713 Non-Unix systems: That a file exists but is unreadable is recognized as "new
2714 file".  Now check for existence when file can't be opened (like Unix).
2716 Unix: osdef.sh didn't handle declarations where the function name is at the
2717 first column of the line.
2719 DJGPP: Shortening of file names didn't work properly, because get_cwd()
2720 returned a path with backslashes. (Negri)
2722 When using a 'comments' part where a space is required after the middle part,
2723 always insert a space when starting a new line.  Helps for C comments, below a
2724 line with "/****".
2726 Replacing path of home directory with "~/" could be wrong for file names
2727 with embedded spaces or commas.
2729 A few fixes for the Sniff interface. (Leherbauer)
2731 When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused
2732 trouble.  Same for ":s/x/y/c" prompt.
2734 With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks,
2735 instead of the characters specified with 'listchars'.  Also for other
2736 characters that take more than one screen character.
2738 When setting 'guifont' to an unknown font name, the previous font was lost and
2739 a default font would be used. (Steed)
2741 DOS: Filenames in the root directory didn't get shortened properly. (Negri)
2743 DJGPP: making a full path name out of a file name didn't work properly when
2744 there is no _fullpath() function. (Negri)
2746 Win32 console: ":sh" caused a crash. (Negri)
2748 Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably
2749 (could hang Windows 95). (Negri)
2751 Win32: The change-drive function was not correct, went to the wrong drive.
2752 (Tsindlekht)
2754 GUI: When editing a command line in Ex mode, Tabs were sometimes not
2755 backspaced properly, and unprintable characters were displayed directly.
2756 non-GUI can still be wrong, because a system function is called for this.
2758 ":set" didn't stop after an error.  For example ":set no ai" gave an error for
2759 "no", but still set "ai".  Now ":set" stops after the first error.
2761 When running configure for ctags, $LDFLAGS wasn't passed to it, causing
2762 trouble for IRIX.
2764 "@%" and "@#" when file name not set gave an error message.  Now they just
2765 return an empty string. (Steed)
2767 CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers.
2768 (Steed)
2770 ":echo" always started with a blank.
2772 Updating GUI cursor shape didn't always work (e.g., when blinking is off).
2774 In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line.  Also
2775 a few other commands that explicitly print a text line didn't work.  Made this
2776 Vi compatible.
2778 Win32 version of _chdrive() didn't return correct value. (Tsindlekht)
2780 When using 't' in 'complete' option, no longer give an error message for a
2781 missing tags file.
2783 Unix: tgoto() can return NULL, which was not handled correctly in configure.
2785 When doing ":help" from a buffer where 'binary' is set, also edited the help
2786 file in binary mode.  Caused extra ^Ms for DOS systems.
2788 Cursor position in a file was reset to 1 when closing a window.
2790 ":!ls" in Ex mode switched off echo.
2792 When doing a double click in window A, while currently in window B, first
2793 click would reset double click time, had to click three times to select a
2794 word.
2796 When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be
2797 used in Vi compatible mode.  Added setting of 'cpo' to avoid this.  Also, add
2798 a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a
2799 special key name.
2801 Gave confusing error message for ":set guifont=-*-lucida-*": first "font is
2802 not fixed width", then "Unknown font".
2804 Some options were still completely left out, instead of included as hidden
2805 options.
2807 While running the X11 GUI, ignore SIGHUP signals.  Avoids a crash after
2808 executing an external command (in rare cases).
2810 In os_unixx.h, signal() was defined to sigset(), while it already was.
2812 Memory leak when executing autocommands (was reported as a memory leak in
2813 syntax highlighting).
2815 Didn't print source of error sometimes, because pointers were the same,
2816 although names were different.
2818 Avoid a number of UMR errors from Purify (third argument to open()).
2820 A swap file could still be created just after setting 'updatecount' to zero,
2821 when there is an empty buffer and doing ":e file". (Kutschera)
2823 Test 35 failed on 64 bit machines. (Schild)
2825 With "p" and "P" commands, redrawing was slow.
2827 Awk script for html documentation didn't work correctly with AIX awk.
2828 Replaced "[ ,.);\]      ]" with "[] ,.);        ]". (Briscoe)
2829 The makehtml.awk script had a small problem, causing extra lines to be
2830 inserted. (Briscoe)
2832 "gqgq" could not be repeated.  Repeating for "gugu" and "gUgU" worked in a
2833 wrong way.  Also made "gqq" work to be consistent with "guu".
2835 C indent was wrong after "case ':':".
2837 ":au BufReadPre *.c put": Line from put text was deleted, because the buffer
2838 was still assumed to be empty.
2840 Text pasted with the Edit/Paste menu was subject to 'textwidth' and
2841 'autoindent'.  That was inconsistent with using the mouse to paste.  Now "*p
2842 is used.
2844 When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag,
2845 window was split.
2847 ":ts" got stuck on a tags line that has two extra fields.
2849 In Insert mode, with 'showmode' on, <C-O><C-G> message was directly
2850 overwritten by mode message, if preceded with search command warning message.
2852 When putting the result of an expression with "=<expr>p, newlines were
2853 inserted like ^@ (NUL in the file).  Now the string is split up in lines at
2854 the newline.
2856 putenv() was declared with "const char *" in pty.c, but with "char *" in
2857 osdef2.h.in.  Made the last one also "const char *".
2859 ":help {word}", where +{word} is a feature, jumped to the feature list instead
2860 of where the command was explained.  E.g., ":help browse", ":help autocmd".
2862 Using the "\<xx>" form in an expression only got one byte, even when using a
2863 special character that uses several bytes (e.g., "\<F9>").
2864 Changed "\<BS>" to produce CTRL-H instead of the special key code for the
2865 backspace key.  "\<Del>" produces 0x7f.
2867 ":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'.
2869 The shell syntax didn't contain a "syn sync maxlines" setting.  In a long file
2870 without recognizable items, syncing took so long it looked like Vim hangs.
2871 Added a maxlines setting, and made syncing interruptable.
2873 The "gs" command didn't flush output before waiting.
2875 Memory leaks for:
2876     ":if 0 | let a = b . c | endif"
2877     "let a = b[c]"
2878     ":so {file}" where {file} contains a ":while"
2880 GUI: allocated fonts were never released. (Leonard)
2882 Makefile.bor:
2883 - Changed $(DEFINES) into a list of "-D" options, so that it can also be used
2884   for the resource compiler. (not tested!)
2885 - "bcc.cfg" was used for all configurations.  When building for another
2886   configuration, the settings for the previous one would be used.  Moved
2887   "bcc.cfg" to the object directory. (Geddes)
2888 - Included targets for vimrun, install, ctags and xxd.  Changed the default to
2889   use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron)
2891 "2*" search for the word under the cursor with "2" prepended. (Leonard)
2893 When deleting into a specific register, would still overwrite the non-Win32
2894 GUI selection.  Now ""x"*P works.
2896 When deleting into the "" register, would write to the last used register.
2897 Now ""x always writes to the unnamed register.
2899 GUI Athena: A submenu with a '.' in it didn't work.  E.g.,
2900 ":amenu Syntax.XY\.Z.foo lll".
2902 When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of
2903 matching tags could change, because the current file is different.  Now the
2904 existing matches are kept in the same order, newly found matches are added
2905 after them, not matter what the current file is.
2907 ":ta" didn't find the second entry in a tags file, if the second entry was
2908 longer than the first one.
2910 When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the
2911 wrong position.  can_si was still TRUE when the cursor is not in the indent of
2912 the line.
2914 Running an external command in Win32 version had the problem that Vim exits
2915 when the X on the console is hit (and confirmed).  Now use the "vimrun"
2916 command to start the external command indirectly. (Negri)
2918 Win32 GUI: When running an external filter, do it in a minimized DOS box.
2919 (Negri)
2921 ":let" listed variables without translation into printable characters.
2923 Win32 console: When resizing the window, switching back to the old size
2924 (when exiting or executing an external command) sometimes failed. (Negri)
2925 This appears to also fix a "non fixable" problem:
2926 Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar,
2927 the scrollbar disappeared and was not restored when Vim exits.  This does work
2928 under NT 3.51, it appears not to be a Vim problem.
2930 When executing BufDelete and BufUnload autocommands for a buffer without a
2931 name, the name of the current buffer was used for <afile>.
2933 When jumping to a tag it reported "tag 1 of >2", while in fact there could be
2934 only two matches.  Changed to "tag 1 of 2 or more".
2936 ":tjump tag" did a linear search in the tags file, which can be slow.
2938 Configure didn't find "LibXm.so.2.0", a Xm library with a version number.
2940 Win32 GUI: When using a shifted key with ALT, the shift modifier would remain
2941 set, even when it was already used by changing the used key.  E.g., "<M-S-9>"
2942 resulted in "<M-S-(>", but it should be "<M-(>". (Negri)
2944 A call to ga_init() was often followed by seting growsize and itemsize.
2945 Created ga_init2() for this, which looks better. (Aaron)
2947 Function filereadable() could call fopen() with an empty string, which might
2948 be illegal.
2950 X Windows GUI: When executing an external command that outputs text, could
2951 write one character beyond the end of a buffer, which caused a crash. (Kohan)
2953 When using "*" or "#" on a string that includes '/' or '?' (when these are
2954 included in 'isk'), they were not escaped. (Parmelan)
2956 When adding a ToolBar menu in the Motif GUI, the submenu_id field was not
2957 cleared, causing random problems.
2959 When adding a menu, the check if this menu (or submenu) name already exists
2960 didn't compare with the simplified version (no mnemonic or accelerator) of the
2961 new menu.  Could get two menus with the same name, e.g., "File" and "&File".
2963 Breaking a line because of 'textwidth' at the last line in the window caused a
2964 redraw of the whole window instead of a scroll.  Speeds up normal typing with
2965 'textwidth' a lot for slow terminals.
2967 An invalid line number produced an "invalid range" error, even when it wasn't
2968 to be executed (inside "if 0").
2970 When the unnamed, first buffer is re-used, the "BufDelete" autocommand was
2971 not called.  It would stick in a buffer list menu.
2973 When doing "%" on the NUL after the line, a "{" or "}" in the last character
2974 of the line was not found.
2976 The Insert mode menu was not used for the "s" command, the Operator-pending
2977 menu was used instead.
2979 With 'compatible' set, some syntax highlighting was not correct, because of
2980 using "[\t]" for a search pattern.  Now use the regexps for syntax
2981 highlighting like the 'cpoptions' option is empty (as was documented already).
2983 When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't
2984 show any lhs for the mapping (if 'isprint' includes 160).  Now always use
2985 <Space> and <M-Space>, even when they are printable.
2987 Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for
2988 Athena, where menus don't wrap).
2990 When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and
2991 digits, repeating the insert didn't work.
2993 The file "tools/ccfilter.README.txt" could not be unpacked when using short
2994 file names, because of the two dots.  Renamed it to
2995 "tools/ccfilter_README.txt".
2997 For a dark 'background', using Blue for Directory and SpecialKey highlight
2998 groups is not very readable.  Use Cyan instead.
3000 In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into
3001 a block with a local variable.  That's illegal for some compilers.
3003 Win32 GUI: There was a row of pixels at the bottom of the window which was not
3004 drawn. (Aaron)
3006 Under DOS, editing "filename/" created a swap file of "filename/.swp".  Should
3007 be "filename/_swp".
3009 Win32 GUI: pointer was hidden when executing an external command.
3011 When 'so' is 999, "J" near the end of the file didn't redisplay correctly.
3013 ":0a" inserted after the first line, instead of before the first line.
3015 Unix: Wildcard expansion didn't handle single quotes and {} patterns.  Now
3016 ":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*').
3017 ":file {o}{n}{e}" now results in file name "one".
3019 Memory leak when setting a string option back to its default value.
3021 ==============================================================================
3022 VERSION 5.3                                             *version-5.3*
3024 Version 5.3 was a bug-fix version of 5.2.  There are not many changes.
3025 Improvements made between version 5.2 and 5.3:
3027 Changed                                                 *changed-5.3*
3028 -------
3030 Renamed "IDE" menu to "Tools" menu.
3033 Added                                                   *added-5.3*
3034 -----
3036 Win32 GUI: Give a warning when Vim is activated, and one of the files changed
3037 since editing started. (Negri)
3040 Fixed                                                   *fixed-5.3*
3041 -----
3043 5.2.1: Win32 GUI: space for external command was not properly allocated, could
3044 cause a crash. (Aaron)  This was the reason to bring out 5.3 quickly after
3045 5.2.
3047 5.2.2: Some commands didn't complain when used without an argument, although
3048 they need one: ":badd", ":browse", ":call", ":confirm", ":behave",
3049 ":delfunction", ":delcommand" and ":tearoff".
3050 ":endfunction" outside of a function gave wrong error message: "Command not
3051 implemented".  Should be ":endfunction not inside a function".
3053 5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path
3054 with a space in it, executing external commands with vimrun didn't work.
3056 5.2.4: Pasting with the mouse in Insert mode left the cursor on the last
3057 pasted character, instead of behind it.
3059 5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left
3060 didn't include the last character in the selection.
3062 5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which
3063 includes the last character in the line, the cursor could be left on the last
3064 character in the line, instead of just after it.
3066 5.2.7: Win32 GUI: scrollbar was one pixel too big.
3068 5.2.8: Completion of "PopUp" menu showed the derivates "PopUpc", "PopUPi",
3069 etc.  ":menu" also showed these.
3071 5.2.9: When using two input() functions on a row, the prompt would not be
3072 drawn in column 0.
3074 5.2.10: A loop with input() could not be broken with CTRL-C.
3076 5.2.11: ":call asdf" and ":call asdf(" didn't give an error message.
3078 5.2.12: Recursively using ":normal" crashes Vim after a while.  E.g.:
3079 ":map gq :normal gq<CR>"
3081 5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer.  When using
3082 ":help", then "/\k*" in another window with 'hlsearch' set.
3084 5.2.14: When using ":source" from a function, global variables would not be
3085 available unless "g:" was used.
3087 5.2.15: XPM files can have the extension ".pm", which is the same as for Perl
3088 modules.  Added "syntax/pmfile.vim" to handle this.
3090 5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an
3091 empty buffer.  mch_Fullname() didn't append a slash at the end of a directory
3092 name.
3094 Should include the character under the cursor in the Visual area when using
3095 'selection' "exclusive".  This wasn't done for "%", "e", "E", "t" and "f".
3097 ""p would always put register 0, instead of the unnamed (last used) register.
3098 Reverse the change that ""x doesn't write in the unnamed (last used) register.
3099 It would always write in register 0, which isn't very useful.  Use "-x for the
3100 paste mappings in Visual mode.
3102 When there is one long line on the screen, and 'showcmd' is off, "0$" didn't
3103 redraw the screen.
3105 Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor
3106 shape is changed. (Negri)
3108 When cancelling Visual mode, and the cursor moves to the start, the wanted
3109 column wasn't set, "k" or "j" moved to the wrong column.
3111 When using ":browse" or ":confirm", was checking for a comment and separating
3112 bar, which can break some commands.
3114 Included fixes for Macintosh. (Kielhorn)
3116 ==============================================================================
3117 VERSION 5.4                                             *version-5.4*
3119 Version 5.4 adds new features, useful changes and a lot of bug fixes.
3122 Runtime directory introduced                            *new-runtime-dir*
3123 ----------------------------
3125 The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM.
3126 You normally don't set $VIMRUNTIME but let Vim find it, by using
3127 $VIM/vim{version}, or use $VIM when that doesn't exist.  This allows for
3128 separating the user files from the distributed files and makes it more easy to
3129 upgrade to another version.  It also makes it possible to keep two versions of
3130 Vim around, each with their own runtime files.
3132 In the Unix distribution the runtime files have been moved to the "runtime"
3133 directory.  This makes it possible to copy all the runtime files at once,
3134 without the need to know what needs to be copied.
3136 The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level
3137 "vim" directory.  This is to make clear that user-modified files should be put
3138 here.  The directory that contains the executables doesn't have '-' or '.'
3139 characters.  This avoids strange extensions.
3141 The $VIM and $VIMRUNTIME variables are set when they are first used.  This
3142 allows them to be used by Perl, for example.
3144 The runtime files are also found in a directory called "$VIM/runtime".  This
3145 helps when running Vim after just unpacking the runtime archive.  When using
3146 an executable in the "src" directory, Vim checks if "vim54" or "runtime" can
3147 be added after removing it.  This make the runtime files be found just after
3148 compiling.
3150 A default for $VIMRUNTIME can be given in the Unix Makefile.  This is useful
3151 if $VIM doesn't point to above the runtime directory but to e.g., "/etc/".
3154 Filetype introduced                                     *new-filetype-5.4*
3155 -------------------
3157 Syntax files are now loaded with the new FileType autocommand.  Old
3158 "mysyntaxfile" files will no longer work. |autocmd-filetypes|
3160 The scripts for loading syntax highlighting have been changed to use the
3161 new Syntax autocommand event.
3163 This combination of Filetype and Syntax events allows tuning the syntax
3164 highlighting a bit more, also when selected from the Syntax menu.  The
3165 FileType autocommand can also be used to set options and mappings specifically
3166 for that type of file.
3168 The "$VIMRUNTIME/filetype.vim" file is not loaded automatically.  The
3169 ":filetype on" command has been added for this.  ":syntax on" also loads it.
3171 The 'filetype' option has been added.  It is used to trigger the FileType
3172 autocommand event, like the 'syntax' option does for the Syntax event.
3174 ":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch
3175 syntax highlighting on/off for the current file.
3177 The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim.  The Syntax
3178 menu is included both when ":filetype on" and when ":syntax manual" is used.
3180 Renamed the old 'filetype' option to 'osfiletype'.  It was only used for
3181 RISCOS.  'filetype' is now used for the common file type.
3183 Added the ":syntax manual" command.  Allows manual selection of the syntax to
3184 be used, e.g., from a modeline.
3187 Vim script line continuation                    *new-line-continuation*
3188 ----------------------------
3190 When an Ex line starts with a backslash, it is concatenated to the previous
3191 line.  This avoids the need for long lines. |line-continuation| (Roemer)
3192 Example:
3193 >       if   has("dialog_con") ||
3194 >          \ has("dialog_gui")
3195 >           :let result = confirm("Enter your choice",
3196 >                               \ "&Yes\n&No\n&Maybe",
3197 >                               \ 2)
3198 >       endif
3201 Improved session files                          *improved-sessions*
3202 ----------------------
3204 New words for 'sessionoptions':
3205 - "help"        Restore the help window.
3206 - "blank"       Restore empty windows.
3207 - "winpos"      Restore the Vim window position.  Uses the new ":winpos"
3208                 command
3209 - "buffers"     Restore hidden and unloaded buffers.  Without it only the
3210                 buffers in windows are restored.
3211 - "slash"       Replace backward by forward slashes in file names.
3212 - "globals"     Store global variables.
3213 - "unix"        Use unix file format (<NL> instead of <CR><NL>)
3215 The ":mksession" and 'sessionoptions' are now in the +mksession feature.
3217 The top line of the window is also restored when using a session file.
3219 ":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected
3220 when loading a file.
3222 (Most of this was done by Vince Negri and Robert Webb)
3225 Autocommands improved                           *improved-autocmds-5.4*
3226 ---------------------
3228 New events:
3229 |FileType|      When the file type has been detected.
3230 |FocusGained|   When Vim got input focus. (Negri)
3231 |FocusLost|     When Vim lost input focus. (Negri)
3232 |BufCreate|     Called just after a new buffer has been created or has been
3233                 renamed. (Madsen)
3234 |CursorHold|    Triggered when no key has been typed for 'updatetime'.  Can be
3235                 used to do something with the word under the cursor. (Negri)
3236                 Implemented CursorHold autocommand event for Unix. (Zellner)
3237                 Also for Amiga and MS-DOS.
3238 |GUIEnter|      Can be used to do something with the GUI window after it has
3239                 been created (e.g., a ":winpos 100 50").
3240 |BufHidden|     When a buffer becomes hidden.  Used to delete the
3241                 option-window when it becomes hidden.
3243 Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen)
3245 The "<amatch>" pattern can be used like "<afile>" for autocommands, except
3246 that it is the matching value for the FileType and Syntax events.
3248 When ":let @/ = <string>" is used in an autocommand, this last search pattern
3249 will be used after the autocommand finishes.
3251 Made loading autocommands a bit faster.  Avoid doing strlen() on each exiting
3252 pattern for each new pattern by remembering the length.
3255 Encryption                                              *new-encryption*
3256 ----------
3258 Files can be encrypted when writing and decrypted when reading.  Added the
3259 'key' option, "-x" command line argument and ":X" command. |encryption| (based
3260 on patch from Mohsin Ahmed)
3262 When reading a file, there is an automatic detection whether it has been
3263 crypted.  Vim will then prompt for the key.
3265 Note that the encryption method is not compatible with Vi.  The encryption is
3266 not unbreakable.  This allows it to be exported from the US.
3269 GTK GUI port                                            *new-GTK-GUI*
3270 ------------
3272 New GUI port for GTK+.  Includes a toolbar, menu tearoffs, etc. |gui-gtk|
3273 Added the |:helpfind| command. (Kahn and Dalecki)
3276 Menu changes                                            *menu-changes-5.4*
3277 ------------
3279 Menus can now also be used in the console.  It is enabled by the new
3280 'wildmenu' option.  This shows matches for command-line completion like a
3281 menu.  This works as a minimal file browser.
3283 The new |:emenu| command can be used to execute a menu item.
3285 Uses the last status line to list items, or inserts a line just above the
3286 command line.  (Negri)
3288 The 'wildcharx' option can be used to trigger 'wildmenu' completion from a
3289 mapping.
3291 When compiled without menus, this can be detected with has("menu").  Also show
3292 this in the ":version" output.  Allow compiling GUI versions without menu
3293 support.  Only include toolbar support when there is menu support.
3295 Moved the "Window" menu all the way to the right (priority 70).  Looks more
3296 familiar for people working with MS-Windows, shouldn't matter for others.
3298 Included "Buffers" menu.  Works with existing autocommands and functions.  It
3299 can be disabled by setting the "no_buffers_menu" variable.  (Aaron and Madsen)
3301 Win32 supports separators in a menu: "-.*-". (Geddes)
3302 Menu separators for Motif now work too.
3304 Made Popup menu for Motif GUI work. (Madsen)
3306 'M' flag in 'guioptions': Don't source the system menu.
3308 All the menu code has been moved from gui.c to menu.c.
3311 Viminfo improved                                        *improved-viminfo*
3312 ----------------
3314 New flags for 'viminfo':
3315 '!'     Store global variables in the viminfo file if they are in uppercase
3316         letters. (Negri)
3317 'h'     Do ":nohlsearch" when loading a viminfo file.
3319 Store search patterns in the viminfo file with their offset, magic, etc.  Also
3320 store the flag whether 'hlsearch' highlighting is on or off (which is not used
3321 if the 'h' flag is in 'viminfo').
3323 Give an error message when setting 'viminfo' without commas.
3326 Various new commands                                    *new-commands-5.4*
3327 --------------------
3329 Operator |g?|: rot13 encoding. (Negri)
3331 |zH| and |zL| commands: Horizontal scrolling by half a page.
3332 |gm| move cursor to middle of screen line. (Ideas by Campbell)
3334 Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|,
3335 |v_b_<| and |v_b_>|. (Kelly)
3337 New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to
3338 Normal mode when in Insert or Command-line mode.  Can be used by VisVim or
3339 other OLE programs to make sure Vim is in Normal mode, without causing a beep.
3340 |CTRL-\_CTRL-N|
3342 ":cscope kill" command to use the connection filename. |:cscope| (Kahn)
3344 |:startinsert| command: Start Insert mode next.
3346 |:history| command, to show all four types of histories. (Roemer)
3348 |[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end
3349 of method in a (Java) class.
3351 ":@*" executes the * register. |:@| (Acevedo)
3353 |go| and |:goto| commands: Jump to byte offset in the file.
3355 |gR| and |gr| command: Virtual replace mode.  Replace characters without
3356 changing the layout. (Webb)
3358 ":cd -" changes to the directory from before the previous ":cd" command.
3359 |:cd-| (Webb)
3361 Tag preview commands |:ptag|.  Shows the result of a ":tag" in a dedicated
3362 window.  Can be used to see the context of the tag (e.g., function arguments).
3363 (Negri)
3364 |:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore)
3365 'previewheight' option, height for the preview window.
3366 Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|.
3368 |:find| and |:sfind| commands: Find a file in 'path', (split window) and edit
3371 The |:options| command opens an option window that shows the current option
3372 values.  Or use ":browse set" to open it.  Options are grouped by function.
3373 Offers short help on each option.  Hit <CR> to jump to more help.  Edit the
3374 option value and hit <CR> on a "set" line to set a new value.
3377 Various new options                                     *new-options-5.4*
3378 -------------------
3380 Scroll-binding: 'scrollbind' and 'scrollopt' options.  Added |:syncbind|
3381 command.  Makes windows scroll the same amount (horizontally and/or
3382 vertically). (Ralston)
3384 'conskey' option for MS-DOS.  Use direct console I/O.  This should work with
3385 telnet (untested!).
3387 'statusline' option: Configurable contents of the status line.  Also allows
3388 showing the byte offset in the file.  Highlighting with %1* to %9*, using the
3389 new highlight groups User1 to User9.  (Madsen)
3391 'rulerformat' option: Configurable contents of the ruler, like 'statusline'.
3392 (Madsen)
3394 'write' option: When off, writing files is not allowed.  Avoids overwriting a
3395 file even with ":w!".  The |-m| command line option resets 'write'.
3397 'clipboard' option: How the clipboard is used.  Value "unnamed": Use unnamed
3398 register like "*. (Cortopassi)  Value "autoselect": Like what 'a' in
3399 'guioptions' does but works in the terminal.
3401 'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI
3402 versions.  Allows using normal fonts when vim is compiled with this feature.
3403 (Nam)
3405 'guiheadroom' option: How much room to allow above/below the GUI window.
3406 Used for Motif, Athena and GTK.
3408 Implemented 'tagstack' option: When off, pushing tags onto the stack is
3409 disabled (Vi compatible).  Useful for mappings.
3411 'shellslash' option.  Only for systems that use a backslash as a file
3412 separator.  This option will use a forward slash in file names when expanding
3413 it.  Useful when 'shell' is sh or csh.
3415 'pastetoggle' option: Key sequence that toggles 'paste'.  Works around the
3416 problem that mappings don't work in Insert mode when 'paste' is set.
3418 'display' option: When set to "lastline", the last line fills the window,
3419 instead of being replaced with "@" lines.  Only the last three characters are
3420 replaced with "@@@", to indicate that the line has not finished yet.
3422 'switchbuf' option: Allows re-using existing windows on a buffer that is being
3423 jumped to, or split the window to open a new buffer. (Roemer)
3425 'titleold' option.  Replaces the fixed string "Thanks for flying Vim", which
3426 is used to set the title when exiting. (Schild)
3429 Vim scripts                                             *new-script-5.4*
3430 -----------
3432 The |exists()| function can also check for existence of a function. (Roemer)
3433 An internal function is now found with a binary search, should be a bit
3434 faster. (Roemer)
3436 New functions:
3437 - |getwinposx()| and |getwinposy()|: get Vim window position. (Webb)
3438 - |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history
3439   available. (Roemer)
3440 - |maparg()|: Returns rhs of a mapping.  Based on a patch from Vikas.
3441 - |mapcheck()|: Check if a map name matches with an existing one.
3442 - |visualmode()|: Return type of last Visual mode. (Webb)
3443 - |libcall()|: Call a function in a library.  Currently only for Win32. (Negri)
3444 - |bufwinnr()|: find window that contains the specified buffer. (Roemer)
3445 - |bufloaded()|: Whether a buffer exists and is loaded.
3446 - |localtime()| and |getftime()|: wall clock time and last modification time
3447   of a file (Webb)
3448 - |glob()|: expand file name wildcards only.
3449 - |system()|: get the raw output of an external command. (based on a patch
3450   from Aaron).
3451 - |strtrans()|: Translate String into printable characters.  Used for
3452   2html.vim script.
3453 - |append()|: easy way to append a line of text in a buffer.
3455 Changed functions:
3456 - Optional argument to |strftime()| to give the time in seconds. (Webb)
3457 - |expand()| now also returns names for files that don't exist.
3459 Allow numbers in the name of a user command. (Webb)
3461 Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc.  The
3462 ones from version 5.3 can be used without "v:" too, for backwards
3463 compatibility.
3465 New variables:
3466 "v:warningmsg" and "v:statusmsg" internal variables.  Contain the last given
3467 warning and status message. |v:warningmsg| |v:statusmsg| (Madsen)
3468 "v:count1" variable: like "v:count", but defaults to one when no count is
3469 used. |v:count1|
3471 When compiling without expression evaluation, "if 1" can be used around the
3472 not supported commands to avoid it being executed.  Works like in Vim 4.x.
3473 Some of the runtime scripts gave errors when used with a Vim that was compiled
3474 with minimal features.  Now "if 1" is used around code that is not always
3475 supported.
3477 When evaluating an expression with && and ||, skip the parts that will not
3478 influence the outcome.  This makes it faster and avoids error messages. (Webb)
3479 Also optimized the skipping of expressions inside an "if 0".
3482 Avoid hit-return prompt                                 *avoid-hit-return*
3483 -----------------------
3485 Added 'T' flag to 'shortmess': Truncate all messages that would cause the
3486 hit-return prompt (unless that would happen anyway).
3487 The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from
3488 the ":cn" command.
3490 The default for 'shortmess' is now "filnxtToO", to make most messages fit on
3491 the command line, and not cause the hit-return prompt.
3493 Previous messages can be viewed with the new |:messages| command.
3495 Some messages are shown fully, even when 'shortmess' tells to shorten
3496 messages, because the user is expected to want to see them in full: CTRL-G and
3497 some quickfix commands.
3500 Improved quickfix                                       *improved-quickfix*
3501 -----------------
3503 Parse change-directory lines for gmake: "make[1]: Entering directory 'name'".
3504 Uses "%D" and "%X" in 'errorformat'.
3505 Also parse "Making {target} in {dir}" messages from make.  Helps when not
3506 using GNU make. (Schandl)
3508 Use 'isfname' for "%f" in 'errorformat'.
3510 Parsing of multi-line messages. |errorformat-multi-line|
3512 Allow a range for the |:clist| command. (Roemer)
3514 Support for "global" file names, for error formats that output the file name
3515 once for several errors. (Roemer)
3517 |:cnfile| jumps to first error in next file.
3519 "$*" in 'makeprg' is replaced by arguments to ":make". (Roemer)
3522 Regular expressions                                     *regexp-changes-5.4*
3523 -------------------
3525 In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$|
3526 In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson)
3528 In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered
3529 end-of-line.  Now use "$" as end-of-line and "\$" for a literal dollar.  Same
3530 for '^' after "\(" and "\|". |/\$| |/\^|
3532 Some search patterns can be extremely slow, even though they are not really
3533 illegal.  For example: "\([^a-z]\+\)\+Q".  Allow interrupting any regexp
3534 search with CTRL-C.
3536 Register "/: last search string (read-only). (Kohan)  Changed to use last used
3537 search pattern (like what 'hlsearch' uses).  Can set the search pattern with
3538 ":let @/ = {expr}".
3540 Added character classes to search patterns, to avoid the need for removing the
3541 'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and
3542 |[:escape:]|.
3544 By adding a '?' after a comparitive operator in an expression, the comparison
3545 is done by ignoring case. |expr-==?|
3548 Other improvements made between version 5.3 and 5.4
3549 ---------------------------------------------------
3551 Changed                                                 *changed-5.4*
3552 -------
3554 Unix: Use $TMPDIR for temporary files, if it is set and exists.
3556 Removed "Empty buffer" message.  It isn't useful and can cause a hit-return
3557 prompt. (Negri)
3559 "ex -" now reads commands from stdin and works in silent mode.  This is to be
3560 compatible with the original "ex" command that is used for scripts.
3562 Default range for ":tcldo" is the whole file.
3564 Cancelling Visual mode with ESC moved the cursor.  There appears to be no
3565 reason for this.  Now leave the cursor where it is.
3567 The ":grep" and ":make" commands see " as part of the arguments, instead of
3568 the start of a comment.
3570 In expressions the "=~" and "!~" operators no longer are affected by
3571 'ignorecase'.
3573 Renamed vimrc_example to vimrc_example.vim and gvimrc_example to
3574 gvimrc_example.vim.  Makes them being recognized as vim scripts.
3576 "gd" no longer starts searching at the end of the previous function, but at
3577 the first blank line above the start of the current function.  Avoids that
3578 using "gd" in the first function finds global a variable.
3580 Default for 'complete' changed from ".,b" to ".,w,b,u,t,i".  Many more matches
3581 will be found, at the cost of time (the search can be interrupted).
3583 It is no longer possible to set 'shell*' options from a modeline.  Previously
3584 only a warning message was given.  This reduces security risks.
3586 The ordering of the index of documentation files was changed to make it more
3587 easy to find a subject.
3589 On MS-DOS and win32, when $VIM was not set, $HOME was used.  This caused
3590 trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files
3591 would not be found.  Now use $HOME only for _vimrc, _gvimrc, etc., not to find
3592 the runtime file.
3594 When 'tags' is "./{fname}" and there is no file name for the current buffer,
3595 just use it.  Previously it was skipped, causing "vim -t {tag}" not to find
3596 many tags.
3598 When trying to select text in the 'scrolloff' area by mouse dragging, the
3599 resulting scrolling made this difficult.  Now 'scrolloff' is temporarily set
3600 to 0 or 1 to avoid this.  But still allow scrolling in the top line to extend
3601 to above the displayed text.
3603 Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc
3604 comments work.  Also helps for C comments that start with "/*******".
3606 CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used
3607 after a non-ID character, which can take a very long time.  Now limit this to
3608 200 matches.  Also used for command-line tag completion.
3610 The OS/2 distribution has been split in two files.  It was too big to fit on a
3611 floppy.  The same runtime archive as for the PC is now used.
3613 In the documentation, items like <a-z> have been replaced with {a-z} for
3614 non-optional arguments.  This avoids confusion with key names: <C-Z> is a
3615 CTRL-Z, not a character between C and Z, that is {C-Z}.
3618 Added                                                   *added-5.4*
3619 -----
3621 Color support for the iris-ansi builtin termcap entry. (Tubman)
3623 Included VisVim version 1.3a. (Erhardt)
3625 Win32 port for SNiFF+ interface. (Leherbauer)
3626 Documentation file for sniff interface: if_sniff.txt. (Leherbauer)
3628 Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory.
3629 To be used with the OLE version of gvim under MS-Windows. (Schaller)
3631 Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert)
3633 When a file that is being edited is deleted, give a warning (like when the
3634 time stamp changed).
3636 Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo)
3638 Linux console mouse support through "gpm". (Tsindlekht)
3640 Security fix: Disallow changing 'secure' and 'exrc' from a modeline.  When
3641 'secure' is set, give a warning for changing options that contain a program
3642 name.
3644 Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege)
3646 When giving an error message for an ambiguous mapping, include the offending
3647 mapping. (Roemer)
3649 Command line editing:
3650 - Command line completion of mappings. (Roemer)
3651 - Command line completion for ":function", ":delfunction", ":let", ":call",
3652   ":if", etc. (Roemer)
3653 - When using CTRL-D completion for user commands that have
3654   "-complete=tag_listfiles" also list the file names.  (Madsen)
3655 - Complete the arguments of the ":command" command. (Webb)
3656 - CTRL-R . in command line inserts last inserted text.  CTRL-F, CTRL-P, CTRL-W
3657   and CTRL-A after CTRL-R are used to insert an object from under the cursor.
3658   (Madsen)
3660 Made the text in uganda.txt about copying Vim a bit more clear.
3662 Updated the Vim tutor.  Added the "vimtutor" command, which copies the tutor
3663 and starts Vim on it.  "make install" now also copies the tutor.
3665 In the output of ":clist" the current entry is highlighted, with the 'i'
3666 highlighting (same as used for 'incsearch').
3668 For the ":clist" command, you can scroll backwards with "b" (one screenfull),
3669 "u" (half a screenfull) and "k" (one line).
3671 Multi-byte support:
3672 - X-input method for multi-byte characters.  And various fixes for multi-byte
3673   support. (Nam)
3674 - Hangul input method feature: |hangul|. (Nam)
3675 - Cleaned up configuration of multi-byte support, XIM, fontset and Hangul
3676   input.  Each is now configurable separately.
3677 - Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam)
3678 - Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam)
3679 - XIM support for GTK+. (Nam)
3680 - First attempt to include support for SJIS encoding. (Nagano)
3681 - When a double-byte character doesn't fit at the end of the line, put a "~"
3682   there and print it on the next line.
3683 - Optimize output of multi-byte text. (Park)
3684 - Win32 IME: preedit style is like over-the-spot. (Nagano)
3685 - Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano)
3686 - GUI Athena: file selection dialog can display multi-byte characters.
3687   (Nagano)
3688 - Selection reply for XA_TEXT as XA_STRING. (Nagano)
3690 "runtime/macros/diffwin.vim".  Mappings to make a diff window. (Campbell)
3692 Added ".obj" to the 'suffixes' option.
3694 Reduced size of syntax/synload.vim by using the ":SynAu" user command.
3695 Automated numbering of Syntax menu entries in menu.vim.
3696 In the Syntax menu, insert separators between syntax names that start with
3697 a different letter. (Geddes)
3699 Xterm:
3700 - Clipboard support when using the mouse in an xterm. (Madsen)
3701 - When using the xterm mouse, track dragging of the mouse.  Use xterm escape
3702   sequences when possible.  It is more precise than other methods, but
3703   requires a fairly recent xterm version.  It is enabled with "xterm2" in
3704   'ttymouse'.  (Madsen)
3705 - Check xterm patch level, to set the value of 'ttymouse'.  Has only been
3706   added to xterm recently (patch level > 95).  Uses the new 't_RV' termcap
3707   option.  Set 'ttymouse' to "xterm2" when a correct response is recognized.
3708   Will make xterm mouse dragging work better.
3709 - Support for shifted function keys on xterm.  Changed codes for shifted
3710   cursor keys to what the xterm actually produces.  Added codes for shifted
3711   <End> and <Home>.
3712 - Added 't_WP' to set the window position in pixels and 't_WS' to set the
3713   window size in characters.  Xterm can now move (used for ":winpos") and
3714   resize (use for ":set lines=" and ":set columns=").
3716 X11:
3717 - When in Visual mode but not owning the selection, display the Visual area
3718   with the VisualNOS group to show this. (Madsen)
3719 - Support for requesting the type of clipboard support.  Used for AIX and
3720   dtterm. (Wittig)
3721 - Support compound_text selection (even when compiled without multi-byte).
3723 Swap file:
3724 - New variation for naming swap files: Replace path separators into %, place
3725   all swap files in one directory.  Used when a name in 'dir' ends in two path
3726   separators. (Madsen)
3727 - When a swap file is found, show whether it contains modifications or not in
3728   the informative message. (Madsen)
3729 - When dialogs are supported, use a dialog to ask the user what to do when a
3730   swapfile already exists.
3732 "popup_setpos" in 'mousemodel' option.  Allows for moving the cursor when
3733 using the right mouse button.
3735 When a buffer is deleted, the selection for which buffer to display instead
3736 now uses the most recent entry from the jump list. (Madsen)
3738 When using CTRL-O/CTRL-I, skip deleted buffers.
3740 A percentage is shown in the ruler, when there is room.
3742 Used autoconf 1.13 to generate configure.
3744 Included get_lisp_indent() from Dirk van Deun.  Does better Lisp indenting
3745 when 'p' flag in 'cpoptions' is not included.
3747 Made the 2html.vim script quite a bit faster.  (based on ideas from Geddes)
3749 Unix:
3750 - Included the name of the user that compiled Vim and the system name it was
3751   compiled on in the version message.
3752 - "make install" now also installs the "tools" directory.  Makes them
3753   available for everybody.
3754 - "make check" now does the same as "make test".  "make test" checks for
3755   Visual block mode shift, insert, replace and change.
3756 - Speed up comparing a file name with existing buffers by storing the
3757   device/inode number with the buffer.
3758 - Added configure arguments "--disable-gtk", "--disable-motif" and
3759   "--disable-athena", to be able to disable a specific GUI (when it doesn't
3760   work).
3761 - Renamed the configure arguments for disabling the check for specific GUIs.
3762   Should be clearer now. (Kahn)
3763 - On a Digital Unix system ("OSF1") check for the curses library before
3764   termlib and termcap. (Schild)
3765 - "make uninstall_runtime" will only delete the version-specific files.  Can
3766   be used to delete the runtime files of a previous version.
3768 Macintosh: (St-Amant)
3769 - Dragging the scrollbar, like it's done for the Win32 GUI.  Moved common code
3770   from gui_w32.c to gui.c
3771 - Added dialogs and file browsing.
3772 - Resource fork preserved, warning when it will be lost.
3773 - Copy original file attributes to newly written file.
3774 - Set title/notitle bug solved.
3775 - Filename completion improved.
3776 - Grow box limit resize to a char by char size.
3777 - Use of rgb.txt for more colors (but give back bad color).
3778 - Apple menu works (beside the about...).
3779 - Internal border now vim compliant.
3780 - Removing a menu doesn't crash anymore.
3781 - Weak-linking of Python 1.5.1 (only on PPC).  Python is supported when the
3782   library is available.
3783 - If an error is encountered when sourcing the users .vimrc, the alert box now
3784   shows right away with the OK button defaulted. There's no more "Delete"-key
3785   sign at the start of each line
3786 - Better management of environement variables.  Now $VIM is calculated only
3787   once, not regenerated every time it is used.
3788 - No more CPU hog when in background.
3789 - In a sourced Vim script the Mac file format can be recognized, just like DOS
3790   file format is.
3792 When both "unix" and "mac" are present in 'fileformats', prefer "mac" format
3793 when there are more CR than NL characters.
3794 When using "mac" fileformat, use CR instead of a NL, because NL is used for
3795 NUL.  Will preserve all characters in a file. (Madsen)
3797 The DOS install.exe now contains checks for an existing installation.  It
3798 avoids setting $VIM and $PATH again.
3799 The install program for Dos/Windows can now install Vim in the popup menu, by
3800 adding two registry keys.
3802 Port to EGCS/mingw32.  New Makefile.ming. (Aaron)
3804 DOS 16 bit: Don't include cursor shape stuff.  Save some bytes.
3806 TCL support to Makefile.w32. (Duperval)
3808 OS/2: Use argv[0] to find runtime files.
3810 When using "gf" to go to a buffer that has already been used, jump to the
3811 line where the cursor last was.
3813 Colored the output of ":tselect" a bit more.  Different highlighting between
3814 tag name and file name.  Highlight field name ("struct:") separately from
3815 argument.
3817 Backtick expansion for non-Unix systems.  Based on a patch from Aaron.
3818 Allows the use of things like ":n `grep -l test *.c`" and
3819 "echo expand('`ls m*`')".
3821 Check for the 'complete' option when it is set. (Acevedo)
3822 'd' flag in 'complete' searches for defined names or macros.
3823 While searching for Insert mode completions in include files and tags files,
3824 check for typeahead, so that you can use matches early. (Webb)
3825 The '.' flag in 'complete' now scans the current buffer completely, ignoring
3826 'nowrapscan'.  (Webb)
3828 Added '~' flag to 'whichwrap'. (Acevedo)
3830 When ending the Visual mode (e.g., with ESC) don't grab ownership of the
3831 selection.
3833 In a color terminal, "fg" and "bg" can be used as color names.  They stand for
3834 the "Normal" colors.
3836 A few cscope cleanups. (Kahn)
3838 Included changed vimspell.sh from Schemenauer.
3840 Concatenation of strings in an expression with "." is a bit faster. (Roemer)
3842 The ":redir" command can now redirect to a register: ":redir @r". (Roemer)
3844 Made the output of ":marks" and ":jumps" look similar.  When the mark is in
3845 the current file, show the text at the mark.  Also for ":tags".
3847 When configure finds ftello() and fseeko(), they are used in tag.c (for when
3848 you have extremely big tags files).
3850 Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow)
3852 GUI:
3853 - When using ":gui" in a non-GUI Vim, give a clear error message.
3854 - "gvim -v" doesn't start the GUI (if console support is present).
3855 - When in Ex mode, use non-Visual selection for the whole screen.
3856 - When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim
3857   forked anyway.  Now the "-f" flag is remembered for ":gui".  Added "gui -b"
3858   to run gvim in the background anyway.
3860 Motif GUI:
3861 - Check for "-lXp" library in configure (but it doesn't work yet...).
3862 - Let configure check for Lesstif in "/usr/local/Lesstif/Motif*".  Changed the
3863   order to let a local Motif version override a system standard version.
3865 Win32 GUI:
3866 - When using "-register" or "-unregister" in the non-OLE version, give an
3867   error message.
3868 - Use GTK toolbar icons.  Make window border look better.  Use sizing handles
3869   on the lower left&right corners of the window. (Negri)
3870 - When starting an external command with ":!start" and the command can not be
3871   executed, give an error message. (Webb)
3872 - Use sizing handles for the grey rectangles below the scrollbars.  Can draw
3873   toolbar in flat mode now, looks better. (Negri)
3874 - Preparations for MS-Windows 3.1 addition.  Mostly changing WIN32 to MSWIN
3875   and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri)
3877 Avoid allocating the same string four times in buflist_findpat(). (Williams)
3879 Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and
3880 't_IE'.  Allows doing this on any terminal that supports setting the title
3881 and/or icon text. (Schild)
3883 New 'x' flag in 'comments': Automatically insert the end part when its last
3884 character is typed.  Helps to close a /* */ comment in C. (Webb)
3886 When expand() has a second argument which is non-zero, don't use 'suffixes'
3887 and 'wildignore', return all matches.
3889 'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if
3890 it didn't exist when editing started but it does exist when the buffer is
3891 written to the file.  The file must have been created outside of Vim, possibly
3892 without the user knowing it.  When this is detected after a shell command,
3893 give a warning message.
3895 When editing a new file, CTRL-G will show [New file].  When there were errors
3896 while reading the file, CTRL-G will show [Read errors].
3898 ":wall" can now use a dialog and file-browsing when needed.
3900 Grouped functionality into new features, mainly to reduce the size of the
3901 minimal version:
3902 +linebreak:     'showbreak', 'breakat' and 'linebreak'
3903 +visualextra:   "I"nsert and "A"ppend in Visual block mode, "c"hange all lines
3904                 in a block, ">" and "<": Shifting a block, "r": Replacing a
3905                 Visual area with one character.
3906 +comments:      'comments'
3907 +cmdline_info:  'ruler' and 'showcmd'.  Replaces +showcmd.
3908 "+title"        Don't add code to set title or icon for MSDOS, this was not
3909                 possible anyway.
3910 +cmdline_compl  Disable commandline completion at compile time, except for
3911                 files, directories and help items.
3913 Moved features from a list of function calls into an array.  Should save a bit
3914 of space.
3916 While entering the body of a function, adjust indent according to "if" and
3917 "while" commands.
3919 VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy.
3921 The flags in the 'comments' option can now include an offset.  This makes it
3922 possible to align "/*****", "/*   xxx" and "/*" comments with the same
3923 'comments' setting.  The default value for 'comments' uses this.
3924 Added 'O' flag: Don't use this part for the "O" command.  Useful for "set
3925 com=sO:*\ -,mO:*\ \ ,exO:*/"
3927 FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove
3928 them to find the relevant extension.
3930 The tutorial for writing a Vim script file has been extended.
3932 Some more highlighting in help files, for items that are not typed literally.
3934 Can use "CTRL-W CTRL-G" like "CTRL-W g".
3936 "make test" for OS/2.
3938 Adjusted configure to automatically use the GUI for BeOS.
3941 Fixed                                                   *fixed-5.4*
3942 -----
3944 5.3.1: When using an autocommand for BufWritePre that changes the name of the
3945 buffer, freed memory would be used. (Geddes)
3947 Mac: Compiler didn't understand start of skip_class_name().
3949 Win32 GUI:
3950 - When cancelling the font requester, don't give an error message.
3951 - When a tearoff-menu is open and its menu is deleted, Vim could crash.
3952   (Negri)
3953 - There was a problem on Windows 95 with (un)maximizing the window.
3954   (Williams)
3955 - when 'mousehide' is set, the mouse would stay hidden when a menu is dropped
3956   with the keyboard. (Ralston)
3957 - The tempname() function already created the file.  Caused problems when
3958   using ":w".  Now the file is deleted.
3959 - Cursor disappeared when ending up in the top-left character on the screen
3960   after scrolling. (Webb)
3961 - When adding a submenu for a torn-off menu, it was not updated.
3962 - Menu tooltip was using the toolbar tooltip. (Negri)
3963 - Setting 'notitle' didn't remove the title. (Steed)
3964 - Using ":!start cmd" scrolled the screen one line up, and didn't wait for
3965   return when the command wasn't found.
3967 Cscope interface: Sorting of matches was wrong.  Starting the interface could
3968 fail. (Kahn)
3970 Motif GUI: Could not compile with Motif 1.1, because some tear-off
3971 functionality was not in #ifdefs.
3973 Configure could sometimes not compile or link the test program for sizeof(int)
3974 properly.  This caused alignment problems for the undo structure allocations.
3975 Added a safety check that SIZEOF_INT is not zero.
3977 Added configure check to test if strings.h can be included after string.h.
3978 Some systems can't handle it.
3979 Some systems need both string.h and strings.h included.  Adjusted vim.h for
3980 that.  Removed including string.h from os_unixx.h, since it's already in
3981 vim.h. (Savage)
3982 AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and
3983 strings.h, but after the configure check said it was OK.  Also define
3984 _NO_PROTO for AIX in the configure check. (Winn)
3986 When closing a window with CTRL-W c, the value of 'hidden' was not taken into
3987 account, the buffer was always unloaded. (Negri)
3989 Unix Makefile: "make install" always tried to rename an older executable and
3990 remove it.  This caused an error message when it didn't exit.  Added a check
3991 for the existence of an old executable.
3992 The command line for "make install" could get too long, because of the many
3993 syntax files.  Now first do a "cd" to reduce the length.
3995 On RISCOS and MSDOS, reading a file could fail, because the short filename was
3996 used, which can be wrong after a ":!cd".
3998 In the DOS versions, the wrong install.exe was included (required Windows).
3999 Now the install.exe version is included that is the same as the Vim version.
4000 This also supports long file names where possible.
4002 When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O
4003 would also be recorded.
4005 32bit DOS version: "vim \file", while in a subdirectory, resulted in "new
4006 file" for "file" in the local directory, while "\file" did exist.  When
4007 "file" in the current directory existed, this didn't happen.
4009 MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young)
4011 "make test" failed in the RedHat RPM, because compatible is off by default.
4013 In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars
4014 were not updated until another character was typed.
4016 MSDOS: environment options in lowercase didn't work, although they did in the
4017 Win32 versions. (Negri)
4019 After ":nohlsearch", a tag command switched highlighting back on.
4021 When using "append" command as the last line in an autocommand, Vim would
4022 crash.
4024 RISCOS: The scroll bumpers (?) were not working properly. (Leonard)
4026 "zl" and "zh" could move the cursor, but this didn't set the column in which
4027 e.g., "k" would move the cursor.
4029 When doing ":set all&" the value of 'scroll' was not set correctly.  This
4030 caused an error message when later setting any other number option.
4032 When 'hlsearch' highlighting has been disabled with ":nohlsearch",
4033 incremental searching would switch it back on too early.
4035 When listing tags for ":tselect", and using a non-search command, and the last
4036 character was equal to the first (e.g., "99"), the last char would not be
4037 shown.
4039 When searching for tags with ":tag" Vim would assume that all matches had been
4040 found when there were still more (e.g. from another tags file).
4042 Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when
4043 upper/lower case was different.
4045 Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END.  Added these
4046 to the builtin-xterm.
4048 In ex mode, any CR was seen as the end of the line.  Only a NL should be
4049 handled that way.  broke ":s/foo/some^Mtext/".
4051 In menu.vim, a vmenu was used to override an amenu.  That didn't work, because
4052 the system menu file doesn't overwite existing menus.  Added explicit vunmenu
4053 to solve this.
4055 Configure check for terminal library could find a library that doesn't work at
4056 runtime (Solaris: shared library not found).  Added a check that a program
4057 with tgoto() can run correctly.
4059 Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors
4060 compiling pathdef.c.  Replaced it with "tr".
4062 Perl: DO_JOIN was redefined by Perl.  Undefined it in the perl files.
4064 Various XIM and multi-byte fixes:
4065 - Fix user cannot see his language while he is typing his language with
4066   off-the-spot method. (Nagano)
4067 - Fix preedit position using text/edit area (using gui.wid). (Nagano)
4068 - remove 'fix dead key' codes. It was needed since XNFocusWindow was
4069   "x11_window", XNFocusWindow is now gui.wid. (Nagano)
4070 - Remove some compile warnings and fix typos. (Namsh)
4071 - For status area, check the gtk+ version while Vim runs.  I believe it is
4072   better than compile time check. (Namsh)
4073 - Remove one FIXME for gtk+-xim. (Namsh)
4074 - XIM: Dead keys didn't work for Czech. (Vyskovsky)
4075 - Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM
4076   could convert it to special character. (Nam)
4077 - Athena/Motif with XIM: fix preedit area. (Nam)
4078 - XIM: Composed strings were sometimes ignored.  Vim crashed when compose
4079   string was longer than 256 bytes.  IM's geometry control is fixed. (Nam,
4080   Nagano)
4081 - Win32 multi-byte: hollowed cursor width on a double byte char was wrong.
4082   (Nagano)
4083 - When there is no GUI, selecting XIM caused compilation problems.
4084   Automatically disable XIM when there is no GUI in configure.
4085 - Motif and Athena: When compiled with XIM, but the input method was not
4086   enabled, there would still be a status line.  Now the status line is gone if
4087   the input method doesn't work. (Nam)
4089 Win32: tooltip was not removed when selecting a parent menu (it was when
4090 selecting a menu entry). (Negri)
4092 Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call.
4093 Removed it, it should not be necessary when exiting.
4095 Win32: Crash on keypress when compiled with with Borland C++. (Aaron)
4097 When checking for Motif library files, prefer the same location as the include
4098 files (with "include" replaced with "lib") above another entry.
4100 Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's
4101 used in gui_x11.c.
4103 Win32: When testing for a timestamp of a file on floppy, would get a dialog
4104 box when the floppy has been removed.  Now return with an error.  (Negri)
4106 Win32 OLE: When forced to come to the foreground, a minimized window was still
4107 minimized, now it's restored. (Zivkov)
4109 There was no check for a positive 'shiftwidth'.  A negative value could cause
4110 a hangup, a zero value a crash.
4112 Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right
4113 or left of the thumb.
4115 When making a Visual-block selection in one window, and trying to scroll
4116 another, could cause errors for accessing non-existent line numbers.
4118 When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work
4119 properly.
4121 Changed '\"' to '"' to make it compatible with old C compilers.
4123 The command line expansion for mappings caused a script with a TAB between lhs
4124 and rhs of a map command to fail.  Assume the TAB is to separate lhs and rhs
4125 when there are no mappings to expand.
4127 When editing a file with very long lines with 'scrolloff' set, "j" would
4128 sometimes end up in a line which wasn't displayed.
4130 When editing a read-only file, it was completely read into memory, even when
4131 it would not fit.  Now create a swap file for a read-only file when running
4132 out of memory while reading the file.
4134 When using ":set cino={s,e-s", a line after "} else {" was not indented
4135 properly.  Also added a check for this in test3.in.
4137 The Hebrew mapping for the command line was remembered for the next command
4138 line.  That isn't very useful, a command is not Hebrew. (Kol)
4140 When completing file names with embedded spaces, like "Program\ files", this
4141 didn't work.  Also for user commands.  Moved backslash_halve() down to
4142 mch_expandpath().
4144 When using "set mouse=a" in Ex mode, mouse events were handled like typed
4145 text.  Then typing "quit" screwed up the mouse behavior of the xterm.
4147 When repeating an insert with "." that contains a CTRL-Y, a number 5 was
4148 inserted as "053".
4150 Yanking a Visual area, with the cursor past the line, didn't move the cursor
4151 back onto the line.  Same for "~", "u", "U" and "g?"
4153 Win32: Default for 'grepprg' could be "findstr /n" even though there is no
4154 findstr.exe (Windows 95).  Check if it exists, and fall back to "grep -n" if
4155 it doesn't.
4157 Because gui_mouse_moved() inserted a leftmouse click in the input buffer,
4158 remapping a leftmouse click caused strange effects.  Now Insert another code
4159 in the input buffer.  Also insert a leftmouse release, to avoid the problem
4160 with ":map <LeftMouse> l" that the next release is seen as the release for the
4161 focus click.
4163 With 'wrap' on, when using a line that doesn't fit on the screen, if the start
4164 of the Visual area is before the start of the screen, there was no
4165 highlighting.  Also, 'showbreak' doesn't work properly.
4167 DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands.
4169 When creating a swap file for a buffer which isn't the current buffer, could
4170 get a mixup of short file name, resulting in a long file name when a short
4171 file name was required.  makeswapname() was calling modname() instead of
4172 buf_modname().
4174 When a function caused an error, and the error message was very long because
4175 of recursiveness, this would cause a crash.
4177 'suffixes' were always compared with matching case.  For MS-DOS, Win32 and
4178 OS/2 case is now ignored.
4180 The use of CHARBITS in regexp.c didn't work on some Linux.  Don't use it.
4182 When generating a script file, 'cpo' was made empty.  This caused backslashes
4183 to disappear from mappings.  Set it to "B" to avoid that.
4185 Lots of typos in the documentation. (Campbell)
4187 When editing an existing (hidden) buffer, jump to the last used cursor
4188 position. (Madsen)
4190 On a Sun the xterm screen was not restored properly when suspending. (Madsen)
4192 When $VIMINIT is processed, 'nocompatible' was only set after procesing it.
4194 Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard
4195 all together.  Cleaned up the code for using select() too.
4197 When executing external commands from the GUI, some typeahead was lost.  Added
4198 some code to regain as much typeahead as possible.
4200 When the window height is 5 lines or less, <PageDown> didn't use a one-line
4201 overlap, while <PageUp> does.  Made sure that <PageUp> uses the same overlap
4202 as <PageDown>, so that using them both always displays the same lines.
4204 Removed a few unused functions and variables (found with lint).
4206 Dictionary completion didn't use 'infercase'. (Raul)
4208 Configure tests failed when the Perl library was not in LD_LIBRARY_PATH.
4209 Don't use the Perl library for configure tests, add it to the linker line only
4210 when linking Vim.
4212 When using ncursus/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that
4213 has "%d" instead of "%p1%d".  The light background colors didn't work then.
4215 GTK GUI with ncurses: Crashed when starting up in tputs().  Don't use tputs()
4216 when the GUI is active.
4218 Could use the ":let" command to set the "count", "shell_error" and "version"
4219 variables, but that didn't work.  Give an error message when trying to set
4220 them.
4222 On FreeBSD 3.0, tclsh is called tclsh8.0.  Adjusted configure.in to find it.
4224 When Vim is linked with -lncurses, but python uses -ltermcap, this causes
4225 trouble: "OOPS".  Configure now removes the -ltermcap.
4227 :@" and :*" didn't work properly, because the " was recognized as the start of
4228 a comment.
4230 Win32s GUI: Minimizing the console where a filter command runs in caused
4231 trouble for detecting that the filter command has finished. (Negri)
4233 After executing a filter command from an xterm, the mouse would be disabled.
4234 It would work again after changing the mode.
4236 Mac GUI: Crashed in newenv(). (St-Amant)
4238 The menus and mappings in mswin.vim didn't handle text ending in a NL
4239 correctly. (Acevedo)
4241 The ":k" command didn't check if it had a valid argument or extra characters.
4242 Now give a meaningful error message. (Webb)
4244 On SGI, the signal function doesn't always have three arguments.  Check for
4245 struct sigcontext to find out.  Might still be wrong...
4247 Could crash when using 'hlsearch' and search pattern is "^".
4249 When search patterns were saved and restored, status of no_hlsearch was not
4250 also saved and restored (from ":nohlsearch" command).
4252 When using setline() to make a line shorter, the cursor position was not
4253 adjusted.
4255 MS-DOS and Win95: When trying to edit a file and accidentally adding a slash
4256 or backslash at the end, the file was deleted.  Probably when trying to create
4257 the swap file.  Explicitly check for a trailing slash or backslash before
4258 trying to read a file.
4260 X11 GUI: When starting the GUI failed and received a deadly signal while
4261 setting the title, would lock up when trying to exit, because the title is
4262 reset again.  Avoid using mch_settitle() recursively.
4264 X11 GUI: When starting the GUI fails, and then trying it again, would crash,
4265 because argv[] has been freed and x11_display was reset to NULL.
4267 Win32: When $HOME was set, would put "~user" in the swap file, which would
4268 never compare with a file name, and never cause the attention message.  Put
4269 the full path in the swap file instead.
4271 Win32 console: There were funny characters at the end of the "vim -r" swap
4272 files message (direct output of CR CR LF).
4274 DOS 32 bit: "vim -r" put the text at the top of the window.
4276 GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q".
4278 Motif and Win32 GUI: When changing 'guifont' to a font of the same size the
4279 screen wasn't redrawn.
4281 Unix: When using ":make", jumping to a file b.c, which is already open as a
4282 symbolic link a.c, opened a new buffer instead of using the existing one.
4284 Inserting text in the current buffer while sourcing the .vimrc file would
4285 cause a crash or hang.  The memfile for the current buffer was never
4286 allocated.  Now it's allocated as soon as something is written in the buffer.
4288 DOS 32 bit: "lightblue" background worked for text, but not drawn parts were
4289 black.
4291 DOS: Colors of console were not restored upon exiting.
4293 When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode
4294 caused the "recording" message to be doubled.
4296 Spurious "file changed" messages could happen on Windows.  Now tolerate a one
4297 second difference, like for Linux.
4299 GUI: When returning from Ex mode, scrollbars were not updated.
4301 Win32: Copying text to the clipboard containing a <CR>, pasting it would
4302 replace it with a <NL> and drop the next character.
4304 Entering a double byte character didn't work if the second byte is in [xXoO].
4305 (Eric Lee)
4307 vim_realloc was both defined and had a prototype in proto/misc2.pro.  Caused
4308 conflicts on Solaris.
4310 A pattern in an autocommand was treated differently on DOS et al. than on
4311 Unix.  Now it's the same, also when using backslashes.
4313 When using <Tab> twice for command line completion, without a match, the <Tab>
4314 would be inserted. (Negri)
4316 Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri)
4318 Testing the result of mktemp() for failure was wrong.  Could cause a crash.
4319 (Peters)
4321 GUI: When checking for a ".gvimrc" file in the current directory, didn't check
4322 for a "_gvimrc" file too.
4324 Motif GUI: When using the popup menu and then adding an item to the menu bar,
4325 the menu bar would get very high.
4327 Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and
4328 dialogs.  Now they are ignored.
4330 When at the more-prompt, xterm selection didn't work.  Now use the 'r' flag in
4331 'mouse' also for the more-prompt.
4333 When selecting a Visual area of more than 1023 lines, with 'guioptions' set to
4334 "a", could mess up the display because of a message in free_yank().  Removed
4335 that message, except for the Amiga.
4337 Moved auto-selection from ui_write() to the screen update functions.  Avoids
4338 unexpected behavior from a low-level function.  Also makes the different
4339 feedback of owning the selection possible.
4341 Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the
4342 original indent instead of truncating it at the cursor. (Webb)
4344 ":echo x" didn't stop at "q" for the more prompt.
4346 Various fixes for Macintosh. (St-Amant)
4348 When using 'selectmode' set to "exclusive", selecting a word and then using
4349 CTRL-] included the character under the cursor.
4351 Using ":let a:name" in a function caused a crash. (Webb)
4353 When using ":append", an empty line didn't scroll up.
4355 DOS etc.: A file name starting with '!' didn't work.  Added '!' to default for
4356 'isfname'.
4358 BeOS: Compilation problem with prototype of skip_class_name(). (Price)
4360 When deleting more than one line, e.g., with "de", could still use "U"
4361 command, which didn't work properly then.
4363 Amiga: Could not compile ex_docmd.c, it was getting too big.  Moved some
4364 functions to ex_cmds.c.
4366 The expand() function would add a trailing slash for directories.
4368 Didn't give an error message when trying to assign a value to an argument of a
4369 function.  (Webb)
4371 Moved including sys/ptem.h to after termios.h.  Needed for Sinix.
4373 OLE interface: Don't delete the object in CVimCF::Release() when the reference
4374 count becomes zero. (Cordell)
4375 VisVim could still crash on exit. (Erhardt)
4377 "case a: case b:" (two case statements in one line) aligned with the second
4378 case.  Now it uses one 'sw' for indent. (Webb)
4380 Font intialisation wasn't right for Athena/Motif GUI.  Moved the call to
4381 highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam)
4383 In Replace mode, backspacing over a TAB before where the replace mode started
4384 while 'sts' is different from 'ts', would delete the TAB.
4386 Win32 console: When executing external commands and switching between the two
4387 console screens, Vim would copy the text between the buffers.  That caused the
4388 screen to be messed up for backtick expansion.
4390 ":winpos -1" then ":winpos" gave wrong error message.
4392 Windows commander creates files called c:\tmp\$wc\abc.txt.  Don't remove the
4393 backslash before the $.  Environment variables were not expanded anyway,
4394 because of the backslash before the dollar.
4396 Using "-=" with ":set" could remove half a part when it contains a "\,".
4397 E.g., ":set path+=a\\,b" and then "set path-=b"  removed ",b".
4399 When Visually selecting lines, with 'selection' set to "inclusive", including
4400 the last char of the line, "<<" moved an extra line.  Also for other operators
4401 that always work on lines.
4403 link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed.
4404 Now it only remove whole words.
4406 When jumped to a mark or using "fz", and there is an error, the current column
4407 was lost.  E.g. when using "$fzj".
4409 The "g CTRL-G" command could not be interrupted, even though it can take a
4410 long time.
4412 Some terminals do have <F4> and <xF4>.  <xF4> was always interpreted as <F4>.
4413 Now map <xF4> to <F4>, so that the user can override this.
4415 When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be
4416 used. (Aaron)
4418 This autocommand looped forever: ":au FileChangedShell * nested e <afile>"
4419 Now FileChangeShell never nests. (Roemer)
4421 When evaluating an ":elseif" that was not going to matter anyway, ignore
4422 errors. (Roemer)
4424 GUI Lesstif: Tearoff bar was the last item, instead of the first.
4426 GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to
4427 'guioptions' afterwards.  When 't' flag in 'guioptions' is excluded, would
4428 still get a tearoff item in a new menu.
4430 An inode number can be "long long".  Use ino_t instead of long.  Added
4431 configure check for ino_t.
4433 Binary search for tags was using a file offset "long" instead of "off_t".
4435 Insert mode completion of tags was not using 'ignorecase' properly.
4437 In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the
4438 default mappings.  Also caused errors for ":mkvimrc" and ":mksession".
4440 When jumping to another window while in Insert mode, would get the "warning:
4441 changing readonly file" even when not making a change.
4443 A '(' or '{' inside a trailing "//" comment would disturb C-indenting.
4444 When using two labels below each other, the second one was not indented
4445 properly.  Comments could mess up C-indenting in many places.  (Roemer)
4447 Could delete or redefine a function while it was being used.  Could cause a
4448 crash.
4449 In a function it's logical to prepend "g:" to a system variable, but this
4450 didn't work. (Roemer)
4452 Hangul input: Buffer would overflow when user inputs invalid key sequence.
4453 (Nam)
4455 When BufLoad or BufEnter autocommands change the topline of the buffer in the
4456 window, it was overruled and the cursor put halfway the window.  Now only put
4457 the cursor halfway if the autocommands didn't change the topline.
4459 Calling exists("&option") always returned 1. (Roemer)
4461 Win32: Didn't take actually available memory into account. (Williams)
4463 White space after an automatically inserted comment leader was not removed
4464 when 'ai' is not set and <CR> hit just after inserting it. (Webb)
4466 A few menus had duplicated accelerators. (Roemer)
4468 Spelling errors in documentation, quite a few "the the". (Roemer)
4470 Missing prototypes for Macintosh. (Kielhorn)
4472 Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't
4473 executed in a disconnected process.
4475 When resizing the window, causing a line before the cursor to wrap or unwrap,
4476 the cursor was displayed in the wrong position.
4478 There was quite a bit of dead code when compiling with minimal features.
4480 When doing a ":%s///" command that makes lines shorter, such that lines above
4481 the final cursor position no longer wrap, the cursor position was not updated.
4483 get_id_list() could allocate an array one too small, when a "contains=" item
4484 has a wildcard that matches a group name that is added just after it.  E.g.:
4485 "contains=a.*b,axb".  Give an error message for it.
4487 When yanking a Visual area and using the middle mouse button -> crash.  When
4488 clipboard doesn't work, now make "* always use "".
4490 Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file".
4492 Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was
4493 not cleared, the tselect prompt was on the last but one line.
4495 mksession didn't restore the cursor column properly when it was after a tab.
4496 Could not get all windows back when using a smaller terminal screen.  Didn't
4497 restore all windows when "winsize" was not in 'sessionoptions'. (Webb)
4499 Command line completion for ":buffer" depended on 'ignorecase' for Unix, but
4500 not for DOS et al..  Now don't use 'ignorecase', but let it depend on whether
4501 file names are case sensitive or not (like when expanding file names).
4503 Win32 GUI: (Negri)
4504 - Redrawing the background caused flicker when resizing the window.  Removed
4505   _OnEraseBG().  Removed CS_HREDRAW and CS_VREDRAW flags from the
4506   sndclass.style.
4507 - Some parts of the window were drawn in grey, instead of using the color from
4508   the user color scheme.
4509 - Dropping a file on gvim didn't activate the window.
4510 - When there is no menu ('guioptions' excludes 'm'), never use the ALT key for
4511   it.
4513 GUI: When resizing the window, would make the window height a bit smaller.
4514 Now round off to the nearest char cell size. (Negri)
4516 In Vi the ")" and "(" commands don't stop at a single space after a dot.
4517 Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer)
4519 When saving a session without any buffers loaded, there would be a ":normal"
4520 command without arguments in it. (Webb)
4522 Memory leaks fixed: (Madsen)
4523 - eval.c: forgot to release func structure when func deleted
4524 - ex_docmd.c: forgot to release string after "<sfile>"
4525 - misc1.c: leak when completion pattern had no matches.
4526 - os_unix.c: forgot to release regexp after file completions
4528 Could crash when using a buffer without a name. (Madsen)
4529 Could crash when doing file name completion, because of backslash_halve().
4530 (Madsen)
4532 ":@a" would do mappings on register a, which is not Vi compatible. (Roemer)
4534 ":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar"
4535 and displayed "/foo.*()". (Roemer)
4537 OS/2: get_cmd_output() was not included.  Didn't check for $VIM/.vimrc file.
4539 Command line completion of options didn't work after "+=" and "-=".
4541 Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these
4542 functions, which could fail if they are defined already.  Use mch_memmove() to
4543 redefine.
4545 Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but
4546 ":let a = expand("`xterm&`")" generated an error message, because the
4547 redirection was put after the '&'.
4549 Win32 GUI: Dialog buttons could not be selected properly with cursor keys,
4550 when the default is not the first button. (Webb)
4552 The "File has changed since editing started" (when regaining focus) could not
4553 always be seen. (Webb)
4555 When starting with "ex filename", the file message was overwritten with
4556 the "entering Ex mode" message.
4558 Output of ":tselect" listed name of file directly from the tags file.  Now it
4559 is corrected for the position of the tags file.
4561 When 'backspace' is 0, could backspace over autoindent.  Now it is no longer
4562 allowed (Vi compatible).
4564 In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting
4565 Tabs, backspacing didn't work correctly for Tabs inserted at the start of the
4566 line (unless 'sts' was set too).  Also, when replacing the first non-blank
4567 after which is a space, rounding the indent was done on the first non-blank
4568 instead of on the character under the cursor.
4570 When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after
4571 four spaces (they are replaced with a tab) couldn't backspace over the tab.
4573 In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent,
4574 even when it was removed with CTRL-D.
4576 When repeating an insert command where a <BS>, <Left> or other key causes an
4577 error, would flush buffers and remain in Insert mode.  No longer flush
4578 buffers, only beep and continue with the insert command.
4580 Dos and Win32 console: Setting t_me didn't work to get another color.  Made
4581 this works backwards compatible.
4583 For turkish (LANG = "tr") upper case 'i' is not an 'I'.  Use ASCII upper case
4584 translation in vim_strup() to avoid language problems. (Komur)
4586 Unix: Use usleep() or nanosleep() for mch_delay() when available.  Hopefully
4587 this avoids a hangup in select(0, ..) for Solaris 2.6.
4589 Vim would crash when using a script file with 'let &sp = "| tee"', starting
4590 vim with "vim -u test", then doing ":set sp=".  The P_WAS_SET flag wasn't set
4591 for a string option, could cause problems with any string option.
4593 When using "cmd | vim -", stdin is not a terminal.  This gave problems with
4594 GPM (Linux console mouse) and when executing external commands.  Now close
4595 stdin and re-open it as a copy of stderr.
4597 Syntax highlighting: A "nextgroup" item was not properly stored in the state
4598 list.  This caused missing of next groups when not redrawing from start to
4599 end, but starting halfway.
4601 Didn't check for valid values of 'ttymouse'.
4603 When executing an external command from the GUI, waiting for the child to
4604 terminate might not work, causing a hang. (Parmelan)
4606 "make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim
4607 files and the vimtutor.
4609 Win32: "expand("%:p:h")" with no buffer name removed the directory name.
4610 "fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it.
4612 Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions':
4613 highlighting was not correct.  Now overlapping matches are handled correctly.
4615 Athena, Motif and GTK GUI: When started without focus, cursor was shown as if
4616 with focus.
4618 Don't include 'shellpipe' when compiled without quickfix, it's not used.
4619 Don't include 'dictionary' option when compiled without the +insert_expand
4620 feature.
4621 Only include the 'shelltype' option for the Amiga.
4623 When making a change to a line, with 'hlsearch' on, causing it to wrap, while
4624 executing a register, the screen would not be updated correctly.  This was a
4625 generic problem in update_screenline() being called while must_redraw is
4626 VALID.
4628 Using ":bdelete" in a BufUnload autocommand could cause a crash.  The window
4629 height was added to another window twice in close_window().
4631 Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri)
4633 Some performance bottlenecks removed.  Allocating memory was not efficient.
4634 For Win32 checking for available memory was slow, don't check it every time
4635 now.  On NT obtaining the user name takes a long time, cache the result (for
4636 all systems).
4638 fnamemodify() with an argument ":~:." or ":.:~" didn't work properly.
4640 When editing a new file and exiting, the marks for the buffer were not saved
4641 in the viminfo file.
4643 ":confirm only" didn't put up a dialog.
4645 These text objects didn't work when 'selection' was "exclusive": va( vi( va{
4646 vi{ va< vi< vi[ va[.
4648 The dialog for writing a readonly file didn't have a valid default. (Negri)
4650 The line number used for error messages when sourcing a file was reset when
4651 modelines were inspected.  It was wrong when executing a function.
4653 The file name and line number for an error message wasn't displayed when it
4654 was the same as for the last error, even when this was long ago.  Now reset
4655 the name/lnum after a hit-return prompt.
4657 In a session file, a "%" in a file name caused trouble, because fprintf() was
4658 used to write it to the file.
4660 When skipping statements, a mark in an address wasn't skipped correctly:
4661 "ka|if 0|'ad|else|echo|endif". (Roemer)
4663 ":wall" could overwrite a not-edited file without asking.
4665 GUI: When $DISPLAY was not set or starting the GUI failed in another way, the
4666 console mode then started with wrong colors and skipped initializations.  Now
4667 do an early check if the GUI can be started.  Don't source the menu.vim or
4668 gvimrc when it will not.  Also do normal terminal initializations if the GUI
4669 might not start.
4671 When using a BufEnter autocommand to position the cursor and scroll the
4672 window, the cursor was always put at the last used line and halfway the window
4673 anyhow.
4675 When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list
4676 the matches.  Also avoid that listing after a "longest" lists the wrong
4677 matches when the first expansion changed the string in front of the cursor.
4679 When using ":insert", ":append" or ":change" inside a while loop, was not able
4680 to break out of it with a CTRL-C.
4682 Win32: ":e ." took an awful long time before an error message when used in
4683 "C:\".  Was caused by adding another backslash and then trying to get the full
4684 name for "C:\\".
4686 ":winpos -10 100" was working like ":winpos -10 -10", because a pointer was
4687 not advanced past the '-' sign.
4689 When obtaining the value of a hidden option, would give an error message.  Now
4690 just use a zero value.
4692 OS/2: Was using argv[0], even though it was not a useful name.  It could be
4693 just "vim", found in the search path.
4695 Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until
4696 after a delay of 'updatetime'.  Didn't check for the size-changed signal.
4698 'scrollbind' didn't work in Insert mode.
4699 Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g.,
4700 when 'showcmd' was off).
4702 When compiled with minimal features but with GUI, switching on the mouse in an
4703 xterm caused garbage, because the mouse codes were not recognized.  Don't
4704 enable the mouse when it can't be recognized.  In the GUI it also didn't work,
4705 the arguments to the mouse code were not interpreted.
4707 When 'showbreak' used, in Insert mode, when the cursor is just after the last
4708 character in the line, which is also the in the rightmost column, the cursor
4709 position would be like the 'showbreak' string is shown, but it wasn't.
4711 Autocommands could move the cursor in a new file, so that CTRL-W i didn't show
4712 the right line.  Same for when using a filemark to jump to another file.
4714 When redefining the argument list, the title used for other windows could be
4715 showing the wrong info about the positiion in the argument list.  Also update
4716 this for a ":split" command without arguments.
4718 When editing file 97 of 13, ":Next" didn't work.  Now it goes to the last
4719 file in the argument list.
4721 Insert mode completion (for dictionaries or included files) could not be
4722 interrupted by typing an <Esc>.  Could get hit-return prompt after line
4723 completion, or whenever the informative message would get too long.
4725 When using the ":edit" command to re-edit the same file, an autocommand to
4726 jump to the last cursor position caused the cursor to move.  Now set the last
4727 used cursor position to avoid this.
4729 When 'comments' has a part that starts with white space, formatting the
4730 comment didn't work.
4732 At the ":tselect" prompt Normal mode mappings were used.  That has been
4733 disabled.
4735 When 'selection' is not "old", some commands still didn't allow the cursor
4736 past the end-of-line in Visual mode.
4738 Athena: When a menu was deleted, it would appear again (but not functional)
4739 when adding another menu.  Now they don't reappear anymore (although they are
4740 not really deleted either).
4742 Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri)
4744 "ze" didn't work when 'number' was on. (Davis)
4746 Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson)
4748 A few files were including proto.h a second time, after vim.h had already done
4749 that, which could cause problems with the vim_realloc() macro.
4751 Win32 console: <M-x> or ALT-x was not recognized.  Also keypad '+', '-' and
4752 '*'. (Negri)
4753 MS-DOS: <M-x> didn't work, produced a two-byte code.  Now the alphabetic and
4754 number keys work. (Negri)
4756 When finding a lot of matches for a tag completion, the check for avoiding
4757 double matches could take a lot of time.  Add a line_breakcheck() to be able
4758 to interrupt this. (Deshpande)
4760 When the command line was getting longer than the screen, the more-prompt
4761 would be given regularly, and the cursor position would be wrong.  Now only
4762 show the part of the command line that fits on the screen and force the cursor
4763 to be positioned on the visible part.  There can be text after the cursor
4764 which isn't editable.
4766 At the more prompt and with the console dialog, a cursor key was interpreted
4767 as <Esc> and OA.  Now recognize special keys in get_keystroke().  Ignore mouse
4768 and scrollbar events.
4770 When typing a BS after inserting a middle comment leader, typing the last char
4771 of the end comment leader still changed it into the end comment leader. (Webb)
4773 When a file system is full, writing to a swap file failed.  Now first try to
4774 write one block to the file.  Try next entry in 'dir' if it fails.
4776 When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the
4777 display.
4779 Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was
4780 translated to "}" before the shell got it.  Now don't remove backslashes when
4781 wildcards are going to be expanded.
4783 Unix: ":e /tmp/$uid" didn't work.  When expanding environment variables in a
4784 file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty"
4785 still doesn't work though.
4787 "make test" didn't always work on DOS/Windows for test30, because it depended
4788 on the external "echo" command.
4790 The link.sh script used "make" instead of $MAKE from the Makefile.  Caused
4791 problems for generating pathdef.c when "make" doesn't work properly.
4793 On versions that can do console and GUI: In the console a typed CSI code could
4794 cause trouble.
4796 The patterns in expression evaluation didn't ignore the 'l' flag in
4797 'cpoptions'.  This broke the working of <CR> in the options window.
4799 When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still
4800 highlighted red for trailing space.
4802 Win32 GUI: Dropping an encrypted file on a running gvim didn't work right.  Vim
4803 would loop while outputting "*" characters.  vgetc() was called recursively,
4804 thus it returns NUL.  Added safe_vgetc(), which reads input directly from the
4805 user in this situation.
4807 While reading text from stdin, only an empty screen was shown.  Now show that
4808 Vim is reading from stdin.
4810 The cursor shape wasn't set properly when returning to Insert mode, after
4811 using a CTRL-O /asdf command which fails.  It would be OK after a few seconds.
4812 Now it's OK right away.
4814 The 'isfname' default for DOS/Windows didn't include the '@' character.  File
4815 names that contained "dir\@file" could not be edited.
4817 Win32 console: <C-S-Left> could cause a crash when compiled with Borland or
4818 egcs. (Aaron)
4820 Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers.  Use
4821 "#ifdef HAVE_DIRENT_H" instead. (Jones)
4823 When a matching tag is in the current file but has a search pattern that
4824 doesn't match, the cursor would jump to the first line.
4826 Unix: Dependencies for pty.c were not included in Makefile.  Dependency of
4827 ctags/config.h was not included (only matters for parallel make).
4829 Removed a few Unitialized Memory Reads (potential crashes).  In do_call()
4830 calling clear_var() when not evaluating.  In win32_expandpath() and
4831 dos_expandpath() calling backslash_halve() past the end of a file name.
4833 Removed memory leaks: Set_vim_var_string() never freed the value.  The
4834 next_list for a syntax keyword was never freed.
4836 On non-Unix systems, using a file name with wildcards without a match would
4837 silently fail.  E.g., ":e *.sh".  Now give a "No match" error message.
4839 The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized
4840 as Vim scripts.  Renamed them to *.vim.
4842 [Note: some numbered patches are not relevant when upgrading from version 5.3,
4843 they have been removed]
4845 Patch 5.4m.1
4846 Problem:    When editing a file with a long name, would get the hit-return
4847             prompt, even though all settings are such that the name should be
4848             truncated to avoid that.  filemess() was printing the file name
4849             without truncating it.
4850 Solution:   Truncate the message in filemess().  Use the same code as for
4851             msg_trunc_attr(), which is moved to the new function
4852             msg_may_trunc().
4853 Files:      src/message.c, src/proto/message.pro, src/fileio.c
4855 Patch 5.4m.3
4856 Problem:    The Motif libraries were not found by configure for Digital Unix.
4857 Solution:   Add "/usr/shlib" to the search path. (Andy Kahn)
4858 Files:      src/configure.in, src/configure
4860 Patch 5.4m.5
4861 Problem:    Win32 GUI: When using the Save-As menu entry and selecting an
4862             existing file in the file browser, would get a dialog to confirm
4863             overwriting twice.  (Ed Krall)
4864 Solution:   Removed the dialog from the file browser.  It would be nicer to
4865             set the "forceit" flag and skip Vim's ":confirm" dialog, but it
4866             requires quite a few changes to do that.
4867 Files:      src/gui_w32.c
4869 Patch 5.4m.6
4870 Problem:    Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -",
4871             a message box would pop up with "-stdin-" (when exiting). (Michael
4872             Schaap)
4873 Solution:   Don't switch off termcap mode for versions that are GUI-only.
4874             They use another terminal to read from stdin.
4875 Files:      src/main.c, src/fileio.c
4877 Patch 5.4m.7
4878 Problem:    Unix: running configure with --enable-gtk-check,
4879             --enable-motif-check, --enable-athena-check or --enable-gtktest
4880             had the reverse effect. (Thomas Koehler)
4881 Solution:   Use $enable_gtk_check variable correctly in AC_ARG_ENABLE().
4882 Files:      src/configure.in, src/configure
4884 Patch 5.4m.9
4885 Problem:    Multi-byte: With wrapping lines, the cursor was sometimes 2
4886             characters to the left.  Syntax highlighting was wrong when a
4887             double-byte character was split for a wrapping line.  When
4888             'showbreak' was on the splitting also didn't work.
4889 Solution:   Adjust getvcol() and win_line(). (Chong-Dae Park)
4890 Files:      src/charset.c, src/screen.c
4892 Patch 5.4m.11
4893 Problem:    The ":call" command didn't check for illegal trailing characters.
4894             (Stefan Roemer)
4895 Solution:   Add the check in do_call().
4896 Files:      src/eval.c
4898 Patch 5.4m.13
4899 Problem:    With the ":s" command:
4900             1. When performing a substitute command, the mouse would be
4901                disabled and enabled for every substitution.
4902             2. The cursor position could be beyond the end of the line.
4903                Calling line_breakcheck() could try to position the cursor,
4904                which causes a crash in the Win32 GUI.
4905             3. When using ":s" in a ":g" command, the cursor was not put on
4906                the first non-white in the line.
4907             4. There was a hit-return prompt when confirming the substitution
4908                and the replacement was a bit longer.
4909 Solution:   1. Only disable/enable the mouse when asking for confirmation.
4910             2. Always put the cursor on the first character, it is going to be
4911                moved to the first non-blank anyway.
4912                Don't use the cursor position in gui_mch_draw_hollow_cursor(),
4913                get the character from the screen buffer.
4914             3. Added global_need_beginline flag to call beginline() after ":g"
4915                has finished all substitutions.
4916             4. Clear the need_wait_return flag after prompting the user.
4917 Files:      src/ex_cmds.c, src/gui_w32.c
4919 Patch 5.4m.14
4920 Problem:    When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end
4921             up with two swapfiles for "xxx".  That is caused by the ":bdel"
4922             command which is executed when unloading the option-window.
4923             Also, there was no check if closing a buffer made the new one
4924             invalid, this could cause a crash.
4925 Solution:   When closing a buffer causes the current buffer to be deleted,
4926             use the new buffer to replace it.  Also detect that the new buffer
4927             has become invalid as a side effect of closing the current one.
4928             Make autocommand that calls ":bdel" in optwin.vim nested, so that
4929             the buffer loading it triggers also executes autocommands.
4930             Also added a test for this in test13.
4931 Files:      runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h
4932             src/testdir/test13.in, src/testdir/test13.ok
4934 Patch 5.4m.15
4935 Problem:    When using a BufEnter autocommand to reload the syntax file,
4936             conversion to HTML caused a crash. (Sung-Hyun Nam)
4937 Solution:   When using ":syntax clear" the current stack of syntax items was
4938             not cleared.  This will cause memory to be used that has already
4939             been freed.  Added call to invalidate_current_state() in
4940             syntax_clear().
4941 Files:      src/syntax.c
4943 Patch 5.4m.17
4944 Problem:    When omitting a ')' in an expression it would not be seen as a
4945             failure.
4946             When detecting an error inside (), there would be an error message
4947             for a missing ')' too.
4948             When using ":echo 1+|echo 2" there was no error message. (Roemer)
4949             When using ":exe 1+" there was no error message.
4950             When using ":return 1+" there was no error message.
4951 Solution:   Fix do_echo(), do_execute() and do_return() to give an error
4952             message when eval1() returns FAIL.
4953             Fix eval6() to handle trailing ')' correctly and return FAIL when
4954             it's missing.
4955 Files:      src/eval.c
4957 Patch 5.4m.18
4958 Problem:    When using input() from inside an expression entered with
4959             "CTRL-R =" on the command line, there could be a crash.  And the
4960             resulting command line was wrong.
4961 Solution:   Added getcmdline_prompt(), which handles recursive use of
4962             getcmdline() correctly.  It also sets the command line prompt.
4963             Removed cmdline_prompt().  Also use getcmdline_prompt() for
4964             getting the crypt key in get_crypt_key().
4965 Files:      src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c
4967 Patch 5.4m.21
4968 Problem:    When starting up, the screen structures were first allocated at
4969             the minimal size, then initializations were done with Rows
4970             possibly different from screen_Rows.  Caused a crash in rare
4971             situations (GTK with XIM and fontset).
4972 Solution:   Call screenalloc() in main() only after calling ui_get_winsize().
4973             Also avoids a potential delay because of calling screenclear()
4974             while "starting" is non-zero.
4975 Files:      src/main.c
4977 Patch 5.4m.22
4978 Problem:    In the GUI it was possible that the screen was resized and the
4979             screen structures re-allocated while redrawing the screen.  This
4980             could cause a crash (hard to reproduce).  The call sequence goes
4981             through update_screen() .. syntax_start() .. ui_breakcheck() ..
4982             gui_resize_window() .. screenalloc().
4983 Solution:   Set updating_screen while redrawing.  If the window is resized
4984             remember the new size and handle it only after redrawing is
4985             finished.
4986             This also fixes that resizing the screen while still redrawing
4987             (slow syntax highlighting) would not work properly.
4988             Also disable display_hint, it was never used.
4989 Files:      src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro
4991 Patch 5.4m.23
4992 Problem:    When using expand("<cword>") when there was no word under the
4993             cursor, would get an error message.  Same for <cWORD> and <cfile>.
4994 Solution:   Don't give an error message, return an empty string.
4995 Files:      src/eval.c
4997 Patch 5.4m.24
4998 Problem:    ":help \|" didn't find anything.  It was translated to "/\\|".
4999 Solution:   Translate "\|" into "\\bar".  First check the table for specific
5000             translations before checking for "\x".
5001 Files:      src/ex_cmds.c
5003 Patch 5.4m.25
5004 Problem:    Unix: When using command line completion on files that contain
5005             ''', '"' or '|' the file name could not be used.
5006             Adding this file name to the Buffers menu caused an error message.
5007 Solution:   Insert a backslash before these three characters.
5008             Adjust Mungename() function to insert a backslash before '|'.
5009 Files:      src/ex_getln.c, runtime/menu.vim
5011 Patch 5.4m.26
5012 Problem:    When using a mapping of two function keys, e.g., <F1><F1>, and
5013             only the first char of the second key has been read, the mapping
5014             would not be recognized.  Noticed on some Unix systems with xterm.
5015 Solution:   Add 'K' flag to 'cpoptions' to wait for the whole key code, even
5016             when halfway a mapping.
5017 Files:      src/option.h, src/term.c
5019 Patch 5.4m.27
5020 Problem:    When making test33 without the lisp feature it hangs.  Interupting
5021             the executing of the script then might cause a crash.
5022 Solution:   In inchar(), after closing a script, don't use buf[] anymore.
5023             closescript() has freed typebuf[] and buf[] might be pointing
5024             inside typebuf[].
5025             Avoid that test33 hangs when the lisp feature is missing.
5026 Files:      src/getchar.c src/testdir/test33.in
5028 "os2" was missing from the feature list.  Useful for has("os2").
5030 BeOS:
5031 - Included patches from Richard Offer for BeOS R4.5.
5032 - menu code didn't work right.  Crashed in the Buffers menu.  The window title
5033   wasn't set. (Offer)
5035 Patch 5.4n.3
5036 Problem:    C-indenting was wrong after "  } else".  The white space was not
5037             skipped.  Visible when 'cino' has "+10".
5038 Solution:   Skip white space before calling cin_iselse(). (Norbert Zeh)
5039 Files:      src/misc1.c
5041 Patch 5.4n.4
5042 Problem:    When the 't' flag in 'cpoptions' is included, after a
5043             ":nohlsearch" the search highlighting would not be enabled again
5044             after a tag search. (Norbert Zeh)
5045 Solution:   When setting the new search pattern in jumpto_tag(), don't restore
5046             no_hlsearch.
5047 Files:      src/tag.c
5049 Patch 5.4n.5
5050 Problem:    When using ":normal" from a CursorHold autocommand Vim hangs.  The
5051             autocommand is executed down from vgetc().  Calling vgetc()
5052             recursively to execute the command doesn't work then.
5053 Solution:   Forbid the use of ":normal" when vgetc_busy is set.  Give an error
5054             message when this happens.
5055 Files:      src/ex_docmd.c, runtime/doc/autocmd.txt
5057 Patch 5.4n.6
5058 Problem:    "gv" could reselect a Visual that starts and/or ends past the end
5059             of a line. (Robert Webb)
5060 Solution:   Check that the start and end of the Visual area are on a valid
5061             character by calling adjust_cursor().
5062 Files:      src/normal.c
5064 Patch 5.4n.8
5065 Problem:    When a mark was on a non existing line (e.g., when the .viminfo
5066             was edited), jumping to it caused ml_get errors. (Alexey
5067             Marinichev).
5068 Solution:   Added check_cursor_lnum() in nv_gomark().
5069 Files:      src/normal.c
5071 Patch 5.4n.9
5072 Problem:    ":-2" moved the cursor to a negative line number. (Ralf Schandl)
5073 Solution:   Give an error message for a negative line number.
5074 Files:      src/ex_docmd.c
5076 Patch 5.4n.10
5077 Problem:    Win32 GUI: At the hit-return prompt, it was possible to scroll the
5078             text.  This erased the prompt and made Vim look like it is in
5079             Normal mode, while it is actually still waiting for a <CR>.
5080 Solution:   Disallow scrolling at the hit-return prompt for systems that use
5081             on the fly scrolling.
5082 Files:      src/message.c
5084 Patch 5.4n.14
5085 Problem:    Win32 GUI: When using ":winsize 80 46" and the height is more than
5086             what fits on the screen, the window size was made smaller than
5087             asked for (that's OK) and Vim crashed (that's not OK)>
5088 Solution:   Call check_winsize() from gui_set_winsize() to resize the windows.
5089 Files:      src/gui.c
5091 Patch 5.4n.16
5092 Problem:    Win32 GUI: The <F10> key both selected the menu and was handled as
5093             a key hit.
5094 Solution:   Apply 'winaltkeys' to <F10>, like it is used for Alt keys.
5095 Files:      src/gui_w32.c
5097 Patch 5.4n.17
5098 Problem:    Local buffer variables were freed when the buffer is unloaded.
5099             That's not logical, since options are not freed. (Ron Aaron)
5100 Solution:   Free local buffer variables only when deleting the buffer.
5101 Files:      src/buffer.c
5103 Patch 5.4n.19
5104 Problem:    Doing ":e" (without argument) in an option-window causes trouble.
5105             The mappings for <CR> and <Space> are not removed.  When there is
5106             another buffer loaded, the swap file for it gets mixed up.
5107             (Steve Mueller)
5108 Solution:   Also remove the mappings at the BufUnload event, if they are still
5109             present.
5110             When re-editing the same file causes the current buffer to be
5111             deleted, don't try editing it.
5112             Also added a test for this situation.
5113 Files:      runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in,
5114             src/testdir/test13.ok
5116 Patch 5.4n.24
5117 Problem:    BeOS: configure never enabled the GUI, because $with_x was "no".
5118             Unix prototypes caused problems, because Display and Widget are
5119             undefined.
5120             Freeing fonts on exit caused a crash.
5121 Solution:   Only disable the GUI when $with_x is "no" and  $BEOS is not "yes".
5122             Add dummy defines for Display and Widget in proto.h.
5123             Don't free the fonts in gui_exit() for BeOS.
5124 Files:      src/configure.in, src/configure, src/proto.h, src/gui.c.
5127 The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild)
5129 Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined.
5130 (Aaron)
5132 VMS:
5133 - mch_setenv() had two arguments instead of three.
5134 - The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc".
5135   Removed the dot.
5136 - call to RealWaitForChar() had one argument too many. (Campbell)
5137 - WaitForChar() is static, removed the prototype from proto/os_vms.pro.
5138 - Many file accesses failed, because Unix style file names were used.
5139   Translate file names to VMS style by using vim_fopen().
5140 - Filtering didn't work, because the temporary file name was generated wrong.
5141 - There was an extra newline every 9192 characters when writing a file.  Work
5142   around it by writing line by line. (Campbell)
5143 - os_vms.c contained "# typedef int DESC".  Should be "typedef int DESC;".
5144   Only mattered for generating prototypes.
5145 - Added file name translation to many places.  Made easy by defining macros
5146   mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat().
5147 - Set default for 'tagbsearch' to off, because binary tag searching apparently
5148   doesn't work for VMS.
5149 - make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell)
5152 Patch 5.4o.2
5153 Problem:    Crash when using "gf" on "file.c://comment here". (Scott Graham)
5154 Solution:   Fix wrong use of pointers in get_file_name_in_path().
5155 Files:      src/window.c
5157 Patch 5.4o.3
5158 Problem:    The horizontal scrollbar was not sized correctly when 'number' is
5159             set and 'wrap' not set.
5160             Athena: Horizontal scrollbar wasn't updated when the cursor was
5161             positioned with a mouse click just after dragging.
5162 Solution:   Subtract 8 from the size when 'number' set and 'wrap' not set.
5163             Reset gui.dragged_sb when a mouse click is received.
5164 Files:      src/gui.c
5166 Patch 5.4o.4
5167 Problem:    When running in an xterm and $WINDOWID is set to an illegal value,
5168             Vim would exit with "Vim: Got X error".
5169 Solution:   When using the display which was opened for the xterm clipboard,
5170             check if x11_window is valid by trying to obtain the window title.
5171             Also add a check in setup_xterm_clip(), for when using X calls to
5172             get the pointer position in an xterm.
5173 Files:      src/os_unix.c
5175 Patch 5.4o.5
5176 Problem:    Motif version with Lesstif: When removing the menubar and then
5177             using a menu shortcut key, Vim would crash. (raf)
5178 Solution:   Disable the menu mnemonics when the menu bar is removed.
5179 Files:      src/gui_motif.c
5181 Patch 5.4o.9
5182 Problem:    The DOS install.exe program used the "move" program.  That doesn't
5183             work on Windows NT, where "move" is internal to cmd.exe.
5184 Solution:   Don't use an external program for moving the executables.  Use C
5185             functions to copy the file and delete the original.
5186 Files:      src/dosinst.c
5188 Motif and Athena obtained the status area height differently from GTK.  Moved
5189 status_area_enabled from global.h to gui_x11.c and call
5190 xim_get_status_area_height() to get the status area height.
5192 Patch 5.4p.1
5193 Problem:    When using auto-select, and the "gv" command is used, would not
5194             always obtain ownership of the selection.  Caused by the Visual
5195             area still being the same, but ownership taken away by another
5196             program.
5197 Solution:   Reset the clipboard Visual mode to force updating the selection.
5198 Files:      src/normal.c
5200 Patch 5.4p.2
5201 Problem:    Motif and Athena with XIM: Typing 3-byte
5202             <multibyte><multibyte><space> doesn't work correctly with Ami XIM.
5203 Solution:   Avoid using key_sym XK_VoidSymbol. (Nam)
5204 Files:      src/multbyte.c, src/gui_x11.c
5206 Patch 5.4p.4
5207 Problem:    Win32 GUI: The scrollbar values were reduced for a file with more
5208             than 32767 lines.  But this info was kept global for all
5209             scrollbars, causing a mixup between the windows.
5210             Using the down arrow of a scrollbar in a large file didn't work.
5211             Because of round-off errors there is no scroll at all.
5212 Solution:   Give each scrollbar its own scroll_shift field.  When the down
5213             arrow is used, scroll several lines.
5214 Files:      src/gui.h, src/gui_w32.c
5216 Patch 5.4p.5
5217 Problem:    When changing buffers in a BufDelete autocommand, there could be
5218             ml_line errors and/or a crash. (Schandl)  Was caused by deleting
5219             the current buffer.
5220 Solution:   When the buffer to be deleted unexpectedly becomes the current
5221             buffer, don't delete it.
5222             Also added a check for this in test13.
5223 Files:      src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok
5225 Patch 5.4p.7
5226 Problem:    Win32 GUI: When using 'mousemodel' set to "popup_setpos" and
5227             clicking the right mouse button outside of the selected area, the
5228             selected area wasn't removed until the popup menu has gone.
5229             (Aaron)
5230 Solution:   Set the cursor and update the display before showing the popup
5231             menu.
5232 Files:      src/normal.c
5234 Patch 5.4p.8
5235 Problem:    The generated bugreport didn't contain information about
5236             $VIMRUNTIME and whether runtime files actually exist.
5237 Solution:   Added a few checks to the bugreport script.
5238 Files:      runtime/bugreport.vim
5240 Patch 5.4p.9
5241 Problem:    The windows install.exe created a wrong entry in the popup menu.
5242             The "%1" was "".  The full directory was included, even when the
5243             executable had been moved elsewhere. (Ott)
5244 Solution:   Double the '%' to get one from printf.  Only include the path to
5245             gvim.exe when it wasn't moved and it's not in $PATH.
5246 Files:      src/dosinst.c
5248 Patch 5.4p.10
5249 Problem:    Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used
5250             a short file name for a directory.
5251 Solution:   Change the "%1" to "%L" in the registry entry.
5252 Files:      src/dosinst.c
5254 Patch 5.4p.11
5255 Problem:    Motif, Athena and GTK: When closing the GUI window when there is a
5256             changed buffer, there was only an error message and Vim would not
5257             exit.
5258 Solution:   Put up a dialog, like for ":confirm qa".  Uses the code that was
5259             already used for MS-Windows.
5260 Files:      src/gui.c, src/gui_w32.c
5262 Patch 5.4p.12
5263 Problem:    Win32: Trying to expand a string that is longer than 256
5264             characters could cause a crash. (Steed)
5265 Solution:   For the buffer in win32_expandpath() don't use a fixed size array,
5266             allocate it.
5267 Files:      src/os_win32.c
5269 MSDOS: Added "-Wall" to Makefile.djg compile flags.  Function prototypes for
5270 fname_case() and mch_update_cursor() were missing.  "fd" was unused in
5271 mf_sync().  "puiLocation" was unused in myputch().  "newcmd" unused in
5272 mch_call_shell() for DJGPP version.
5274 ==============================================================================
5275 VERSION 5.5                                             *version-5.5*
5277 Version 5.5 is a bug-fix version of 5.4.
5280 Changed                                                 *changed-5.5*
5281 -------
5283 The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the
5284 size of the executables.
5286 Moved the src/STYLE file to runtime/doc/develop.txt.  Added the design goals
5287 to it.
5289 'backspace' is now a string option.  See patch 5.4.15.
5292 Added                                                   *added-5.5*
5293 -----
5295 Included Exuberant Ctags version 3.3. (Darren Hiebert)
5297 In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used
5298 everwhere to do what CTRL-V used to do.
5300 Support for decompression of bzip2 files in vimrc_example.vim.
5302 When a patch is included, the patch number is entered in a table in version.c.
5303 This allows skipping a patch without breaking a next one.
5305 Support for mouse scroll wheel in X11.  See patch 5.5a.14.
5307 line2byte() can be used to get the size of the buffer.  See patch 5.4.35.
5309 The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to
5310 insert a register literally.  See patch 5.4.48.
5312 Uninstal program for MS-Windows.  To be able to remove the registry entries
5313 for "Edit with Vim".  It is registered to be run from the "Add/Remove
5314 programs" application.  See patch 5.4.x7.
5317 Fixed                                                   *fixed-5.5*
5318 -----
5320 When using vimrc_example.vim: An error message when the cursor is on a line
5321 higher than the number of lines in the compressed file.  Move the autocommand
5322 for jumping to the last known cursor position to after the decompressing
5323 autocommands.
5325 ":mkexrc" and ":mksession" wrote the current value of 'textmode'.  That may
5326 mark a file as modified, which causes problems.  This is a buffer-specific
5327 setting, it should not affect all files.
5329 "vim --version" wrote two empty lines.
5331 Unix: The alarm signal could kill Vim.  It is generated by the Perl alarm()
5332 function.  Ignore SIGALRM.
5334 Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script.
5336 BeOS: "tmo" must be bigtime_t, instead of double. (Seibert)
5338 Patch 5.4.1
5339 Problem:    Test11 fails when $GZIP is set to "-v". (Matthew Jackson)
5340 Solution:   Set $GZIP to an empty string.
5341 Files:      src/testdir/test11.in
5343 Patch 5.4.2
5344 Problem:    Typing <Esc> at the crypt key prompt caused a crash. (Kallingal)
5345 Solution:   Check for a NULL pointer returned from get_crypt_key().
5346 Files:      src/fileio.c
5348 Patch 5.4.3
5349 Problem:    Python: Trying to use the name of an unnamed buffer caused a
5350             crash. (Daniel Burrows)
5351 Solution:   Check for b_fname being a NULL pointer.
5352 Files:      src/if_python.c
5354 Patch 5.4.4
5355 Problem:    Win32: When compiled without toolbar, but the 'T' flag is in
5356             'guioptions', there would be an empty space for the toolbar.
5357 Solution:   Add two #ifdefs where checking for the 'T' flag. (Vince Negri)
5358 Files:      src/gui.c
5360 Patch 5.4.5
5361 Problem:    Athena GUI: Using the Buffers.Refresh menu entry caused a crash.
5362             Looks like any ":unmenu" command may cause trouble.
5363 Solution:   Disallow ":unmenu" in the Athena version.  Disable the Buffers
5364             menu, because the Refresh item would not work.
5365 Files:      src/menu.c, runtime/menu.vim
5367 Patch 5.4.6
5368 Problem:    GTK GUI: Using ":gui" in the .gvimrc file caused an error.  Only
5369             happens when the GUI forks.
5370 Solution:   Don't fork in a recursive call of gui_start().
5371 Files:      src/gui.c
5373 Patch 5.4.7
5374 Problem:    Typing 'q' at the more prompt for the ATTENTION message causes the
5375             file loading to be interrupted. (Will Day)
5376 Solution:   Reset got_int after showing the ATTENTION message.
5377 Files:      src/memline.c
5379 Patch 5.4.8
5380 Problem:    Edit some file, ":he", ":opt": options from help window are shown,
5381             but pressing space updates from the other window. (Phillipps)
5382             Also: When there are changes in the option-window, ":q!" gives an
5383             error message.
5384 Solution:   Before creating the option-window, go to a non-help window.
5385             Use ":bdel!" to delete the buffer.
5386 Files:      runtime/optwin.vim
5388 Patch 5.4.9
5389             Just updates version.h.  The real patch has been moved to 5.4.x1.
5390             This patch is just to keep the version number correct.
5392 Patch 5.4.10
5393 Problem:    GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits.  It
5394             should run in the terminal.
5395 Solution:   Use gtk_init_check() instead of gtk_init().
5396 Files:      src/gui_gtk_x11.c
5398 Patch 5.4.11
5399 Problem:    When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to
5400             the next buffer for some commands, e.g., ":buffer".
5401 Solution:   When the BCO_NOHELP flag is given to buf_copy_options(), still
5402             copy the options used by do_help() when neither the "from" or "to"
5403             buffer is a help buffer.
5404 Files:      src/option.c
5406 Patch 5.4.12
5407 Problem:    When using 'smartindent', there would be no extra indent if the
5408             current line did not have any indent already. (Hanus Adler)
5409 Solution:   There was a wrongly placed "else", that previously matched with
5410             the "if" that set trunc_line.  Removed the "else" and added a
5411             check for trunc_line to be false.
5412 Files:      src/misc1.c
5414 Patch 5.4.13
5415 Problem:    New SGI C compilers need another option for optimisation.
5416 Solution:   Add a check in configure for "-OPT:Olimit". (Chin A Young)
5417 Files:      src/configure.in, src/configure
5419 Patch 5.4.14
5420 Problem:    Motif GUI: When the popup menu is present, a tiny window appears
5421             on the desktop for some users.
5422 Solution:   Set the menu widget ID for a popup menu to 0. (Thomas Koehler)
5423 Files:      src/gui_motif.c
5425 Patch 5.4.15
5426 Problem:    Since 'backspace' set to 0 has been made Vi compatible, it is no
5427             longer possible to only allow deleting autoindent.
5428 Solution:   Make 'backspace' a list of parts, to allow each kind of
5429             backspacing separately.
5430 Files:      src/edit.c, src/option.c, src/option.h, src/proto/option.pro,
5431             runtime/doc/option.txt, runtime/doc/insert.txt
5433 Patch 5.4.16
5434 Problem:    Multibyte: Locale zh_TW.Big5 was not checked for in configure.
5435 Solution:   Add zh_TW.Big5 to configure check. (Chih-Tsun Huang)
5436 Files:      src/configure.in, src/configure
5438 Patch 5.4.17
5439 Problem:    GUI: When started from inside gvim with ":!gvim", Vim would not
5440             start.  ":!gvim -f" works fine.
5441 Solution:   After forking, wait a moment in the parent process, to give the
5442             child a chance to set its process group.
5443 Files:      src/gui.c
5445 Patch 5.4.18
5446 Problem:    Python: The clear_history() function also exists in a library.
5447 Solution:   Rename clear_history() to clear_hist().
5448 Files:      src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro
5450 Patch 5.4.19
5451 Problem:    In a terminal with 25 lines, there is a more prompt after the
5452             ATTENTION message.  When hitting 'q' here the dialog prompt
5453             doesn't appear and file loading is interrupted. (Will Day)
5454 Solution:   Don't allow quitting the printing of a message for the dialog
5455             prompt.  Added the msg_noquit_more flag for this.
5456 Files:      src/message.c
5458 Patch 5.4.20
5459 Problem:    GTK: When starting gvim, would send escape sequences to the
5460             terminal to switch the cursor off and on.
5461 Solution:   Don't call msg_start() if the GUI is expected to start.
5462 Files:      src/main.c
5464 Patch 5.4.21
5465 Problem:    Motif: Toplevel menu ordering was wrong when using tear-off items.
5466 Solution:   Don't add one to the index for a toplevel menu.
5467 Files:      src/gui_motif.c
5469 Patch 5.4.22
5470 Problem:    In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't
5471             update the column used for vertical movement.
5472 Solution:   Set curwin->w_set_curswant for those commands.
5473 Files:      src/edit.c
5475 Patch 5.4.23
5476 Problem:    When a Visual selection is lost to another program, and then the
5477             same text is Visually selected again, the clipboard ownership
5478             wasn't regained.
5479 Solution:   Set clipboard.vmode to NUL to force regaining the clipboard.
5480 Files:      src/normal.c
5482 Patch 5.4.24
5483 Problem:    Encryption: When using ":r file" while 'key' has already entered,
5484             the 'key' option would be messed up.  When writing the file it
5485             would be encrypted with an unknown key and lost! (Brad Despres)
5486 Solution:   Don't free cryptkey when it is equal to the 'key' option.
5487 Files:      src/fileio.c
5489 Patch 5.4.25
5490 Problem:    When 'cindent' is set, but 'autoindent' isn't, comments are not
5491             properly indented when starting a new line. (Mitterand)
5492 Solution:   When there is a comment leader for the new line, but 'autoindent'
5493             isn't set, do C-indenting.
5494 Files:      src/misc1.c
5496 Patch 5.4.26
5497 Problem:    Multi-byte: a multi-byte character is never recognized in a file
5498             name, causing a backslash before it to be removed on Windows.
5499 Solution:   Assume that a leading-byte character is a file hame character in
5500             vim_isfilec().
5501 Files:      src/charset.c
5503 Patch 5.4.27
5504 Problem:    Entries in the PopUp[nvic] menus were added for several modes, but
5505             only deleted for the mode they were used for.  This resulted in
5506             the  entry remaining in the PopUp menu.
5507             When removing a PopUp[nvic] menu, the name had been truncated,
5508             could result in greying-out the whole PopUp menu.
5509 Solution:   Remove entries for all modes from the PopUp[nvic] menus.  Remove
5510             the PopUp[nvic] menu entries first, before the name is changed.
5511 Files:      src/menu.c
5513 Patch 5.4.28
5514 Problem:    When using a BufWritePre autocommand to change 'fileformat', the
5515             new value would not be used for writing the file.
5516 Solution:   Check 'fileformat' after executing the autocommands instead of
5517             before.
5518 Files:      src/fileio.c
5520 Patch 5.4.29
5521 Problem:    Athena GUI: When removing the 'g' flag from 'guioptions', using a
5522             menu can result in a crash.
5523 Solution:   Always grey-out menus for Athena, don't hide them.
5524 Files:      src/menu.c
5526 Patch 5.4.30
5527 Problem:    BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim).  The
5528             first character typed after ":sh" goes to Vim, instead of the
5529             started shell.
5530 Solution:   Don't suspend Vim, start a new shell.  Kill the async read thread
5531             when starting a new shell.  It will be restarted later. (Will Day)
5532 Files:      src/os_unix.c, src/ui.c
5534 Patch 5.4.31
5535 Problem:    GUI: When 'mousefocus' is set, moving the mouse over where a
5536             window boundary was, causes a hit-return prompt to be finished.
5537             (Jeff Walker)
5538 Solution:   Don't use 'mousefocus' at the hit-return prompt.  Also ignore it
5539             for the more prompt and a few other situations.  When an operator
5540             is pending, abort it first.
5541 Files:      src/gui.c
5543 Patch 5.4.32
5544 Problem:    Unix: $LDFLAGS was not passed to configure.
5545 Solution:   Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner)
5546 Files:      src/Makefile
5548 Patch 5.4.33
5549 Problem:    Unix: After expanding an environment variable with the shell, the
5550             next expansion would also use the shell, even though it is not
5551             needed.
5552 Solution:   Reset "recursive" before returning from gen_expand_wildcards().
5553 Files:      src/misc1.c
5555 Patch 5.4.34 (also see 5.4.x5)
5556 Problem:    When editing a file, and the file name is relative to a directory
5557             above the current directory, the file name was made absolute.
5558             (Gregory Margo)
5559 Solution:   Add an argument to shorten_fnames() which indicates if all file
5560             names should be shortened, or only absolute names.  In main() only
5561             use shorten_fnames() to shorten absolute names.
5562 Files:      src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro
5564 Patch 5.4.35
5565 Problem:    There is no function to get the current file size.
5566 Solution:   Allow using line2byte() with the number of lines in the file plus
5567             one.  This returns the offset of the line past the end of the
5568             file, which is the file size plus one.
5569 Files:      src/eval.c, runtime/doc/eval.txt
5571 Patch 5.4.36
5572 Problem:    Comparing strings while ignoring case didn't work correctly for
5573             some machines. (Mide Steed)
5574 Solution:   vim_stricmp() and vim_strnicmp() only returned 0 or 1.  Changed
5575             them to return -1 when the first argument is smaller.
5576 Files:      src/misc2.c
5578 Patch 5.4.37 (also see 5.4.40 and 5.4.43)
5579 Problem:    Long strings from the viminfo file are truncated.
5580 Solution:   When writing a long string to the viminfo file, first write a line
5581             with the length, then the string itself in a second line.
5582 Files:      src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c,
5583             src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim
5585 Patch 5.4.38
5586 Problem:    In the option-window, ":set go&" resulted in 'go' being handled
5587             like a boolean option.
5588             Mappings for <Space> and <CR> were overruled by the option-window.
5589 Solution:   When the value of an option isn't 0 or 1, don't handle it like a
5590             boolean option.
5591             Save and restore mappings for <Space> and <CR> when entering and
5592             leaving the option-window.
5593 Files:      runtime/optwin.vim
5595 Patch 5.4.39
5596 Problem:    When setting a hidden option, spaces before the equal sign were
5597             not skipped and cause an error message.  E.g., ":set csprg =cmd".
5598 Solution:   When skipping over a hidden option, check for a following "=val"
5599             and skip it too.
5600 Files:      src/option.c
5602 Patch 5.4.40 (depends on 5.4.37)
5603 Problem:    Compiler error for "atol(p + 1)". (Axel Kielhorn)
5604 Solution:   Add a typecast: "atol((char *)p + 1)".
5605 Files:      src/ex_cmds.c
5607 Patch 5.4.41
5608 Problem:    Some commands that were not included would give an error message,
5609             even when after "if 0".
5610 Solution:   Don't give an error message for an unsupported command when not
5611             executing the command.
5612 Files:      src/ex_docmd.c
5614 Patch 5.4.42
5615 Problem:    ":w" would also cause a truncated message to appear in the message
5616             history.
5617 Solution:   Don't put a kept message in the message history when it starts
5618             with "<".
5619 Files:      src/message.c
5621 Patch 5.4.43 (depends on 5.4.37)
5622 Problem:    Mixing long lines with multiple lines in a register causes errors
5623             when writing the viminfo file. (Robinson)
5624 Solution:   When reading the viminfo file to skip register contents, skip
5625             lines that start with "<".
5626 Files:      src/ops.c
5628 Patch 5.4.44
5629 Problem:    When 'whichwrap' includes '~', a "~" command that goes on to the
5630             next line cannot be properly undone. (Zellner)
5631 Solution:   Save each line for undo in n_swapchar().
5632 Files:      src/normal.c
5634 Patch 5.4.45 (also see 5.4.x8)
5635 Problem:    When expand("$ASDF") fails, there is an error message.
5636 Solution:   Remove the global expand_interactively.  Pass a flag down to skip
5637             the error message.
5638             Also: expand("$ASDF") returns an empty string if $ASDF isn't set.
5639             Previously it returned "$ASDF" when 'shell' is "sh".
5640             Also: system() doesn't print an error when the command returns an
5641             error code.
5642 Files:      many
5644 Patch 5.4.46
5645 Problem:    Backspacing did not always use 'softtabstop' after hitting <CR>,
5646             inserting a register, moving the cursor, etc.
5647 Solution:   Reset inserted_space much more often in edit().
5648 Files:      src/edit.c
5650 Patch 5.4.47
5651 Problem:    When executing BufWritePre or BufWritePost autocommands for a
5652             hidden buffer, the cursor could be moved to a non-existing
5653             position. (Vince Negri)
5654 Solution:   Save and restore the cursor and topline for the current window
5655             when it is going to be used to execute autocommands for a hidden
5656             buffer.  Use an existing window for the buffer when it's not
5657             hidden.
5658 Files:      src/fileio.c
5660 Patch 5.4.48
5661 Problem:    A paste with the mouse in Insert mode was not repeated exactly the
5662             same with ".".  For example, when 'autoindent' is set and pasting
5663             text with leading indent. (Perry)
5664 Solution:   Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert
5665             mode, which insert the contents of a register literally.
5666 Files:      src/edit.c, src/normal.c, runtime/doc/insert.txt
5668 Patch 5.4.49
5669 Problem:    When pasting text with [ <MiddleMouse>, the cursor could end up
5670             after the last character of the line.
5671 Solution:   Correct the cursor position for the change in indent.
5672 Files:      src/ops.c
5674 Patch 5.4.x1 (note: Replaces patch 5.4.9)
5675 Problem:    Win32 GUI: menu hints were never used, because WANT_MENU is not
5676             defined until vim.h is included.
5677 Solution:   Move the #ifdef WANT_MENU from where MENUHINTS is defined to where
5678             it is used.
5679 Files:      src/gui_w32.c
5681 Patch 5.4.x2
5682 Problem:    BeOS: When pasting text, one character was moved to the end.
5683 Solution:   Re-enable the BeOS code in fill_input_buf(), and fix timing out
5684             with acquire_sem_etc(). (Will Day)
5685 Files:      src/os_beos.c, src/ui.c
5687 Patch 5.4.x3
5688 Problem:    Win32 GUI: When dropping a directory on a running gvim it crashes.
5689 Solution:   Avoid using a NULL file name.  Also display a message to indicate
5690             that the current directory was changed.
5691 Files:      src/gui_w32.c
5693 Patch 5.4.x4
5694 Problem:    Win32 GUI: Removing an item from the popup menu doesn't work.
5695 Solution:   Don't remove the item from the menubar, but from the parent popup
5696             menu.
5697 Files:      src/gui_w32.c
5699 Patch 5.4.x5 (addition to 5.4.34)
5700 Files:      src/gui_w32.c
5702 Patch 5.4.x6
5703 Problem:    Win32: Expanding (dir)name starting with a dot doesn't work.
5704             (McCormack)  Only when there is a path before it.
5705 Solution:   Fix the check, done before expansion, if the file name pattern
5706             starts with a dot.
5707 Files:      src/os_win32.c
5709 Patch 5.4.x7
5710 Problem:    Win32 GUI: Removing "Edit with Vim" from registry is difficult.
5711 Solution:   Add uninstal program to remove the registry keys.  It is installed
5712             in the "Add/Remove programs" list for ease of use.
5713             Also: don't set $VIM when the executable is with the runtime files.
5714             Also: Add a text file with a step-by-step description of how to
5715             uninstall Vim for DOS and Windows.
5716 Files:      src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt
5718 Patch 5.4.x8 (addition to 5.4.45)
5719 Files:      many
5721 Patch 5.4.x9
5722 Problem:    Win32 GUI: After executing an external command, focus is not
5723             always regained (when using focus-follows-mouse).
5724 Solution:   Add SetFocus() in mch_system(). (Mike Steed)
5725 Files:      src/os_win32.c
5728 Patch 5.5a.1
5729 Problem:    ":let @* = @:" did not work.  The text was not put on the
5730         I   clipboard.  (Fisher)
5731 Solution:   Own the clipboard and put the text on it.
5732 Files:      src/ops.c
5734 Patch 5.5a.2
5735 Problem:    append() did not mark the buffer modified.  Marks below the
5736             new line were not adjusted.
5737 Solution:   Fix the f_append() function.
5738 Files:      src/eval.c
5740 Patch 5.5a.3
5741 Problem:    Editing compressed ".gz" files doesn't work on non-Unix systems,
5742             because there is no "mv" command.
5743 Solution:   Add the rename() function and use it instead of ":!mv".
5744             Also: Disable the automatic jump to the last position, because it
5745             changes the jumplist.
5746 Files:      src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim
5748 Patch 5.5a.4
5749 Problem:    When using whole-line completion in insert mode while the cursor
5750             is in the indent, get "out of memory" error. (Stekrt)
5751 Solution:   Don't allocate a negative amount of memory in ins_complete().
5752 Files:      src/edit.c
5754 Patch 5.5a.5
5755 Problem:    Win32: The 'path' option can hold only up to 256 characters,
5756             because _MAX_PATH is 256.  (Robert Webb)
5757 Solution:   Use a fixed path length of 1024.
5758 Files:      src/os_win32.h
5760 Patch 5.5a.6
5761 Problem:    Compiling with gcc on Win32, using the Unix Makefile, didn't work.
5762 Solution:   Add $(SUFFIX) to all places where an executable is used.  Also
5763             pass it to ctags.  (Reynolds)
5764 Files:      src/Makefile
5766 Patch 5.5a.7
5767 Problem:    When using "cat | vim -" in an xterm, the xterm version reply
5768             would end up in the file.
5769 Solution:   Read the file from stdin before switching the terminal to RAW
5770             mode.  Should also avoid problems with programs that use a
5771             specific terminal setting.
5772             Also: when using the GUI, print "Reading from stdin..." in the GUI
5773             window, to give a hint why it doesn't do anything.
5774 Files:      src/main.c, src/fileio.c
5776 Patch 5.5a.8
5777 Problem:    On multi-threaded Solaris, suspending doesn't work.
5778 Solution:   Call pause() when the SIGCONT signal was not received after
5779             sending the SIGTSTP signal. (Nagano)
5780 Files:      src/os_unix.c
5782 Patch 5.5a.9
5783 Problem:    'winaltkeys' could be set to an empty argument, which is illegal.
5784 Solution:   Give an error message when doing ":set winaltkeys=".
5785 Files:      src/option.c
5787 Patch 5.5a.10
5788 Problem:    Win32 console: Using ALTGR on a German keyboard to produce "}"
5789             doesn't work, because the 8th bit is set when ALT is pressed.
5790 Solution:   Don't set the 8th bit when ALT and CTRL are used. (Leipert)
5791 Files:      src/os_win32.c
5793 Patch 5.5a.11
5794 Problem:    Tcl: Configure always uses tclsh8.0.
5795             Also: Loading a library doesn't work.
5796 Solution:   Add "--with-tclsh" configure argument to allow specifying another
5797             name for the tcl shell.
5798             Call Tcl_Init() in tclinit() to make loading libraries work.
5799             (Johannes Zellner)
5800 Files:      src/configure.in, src/configure, src/if_tcl.c
5802 Patch 5.5a.12
5803 Problem:    The "user_commands" feature is called "user-commands".
5804 Solution:   Replace "user-commands" with "user_commands". (Kim Sung-bom)
5805             Keep "user-commands" for the has() function, to remain backwards
5806             compatible with 5.4.
5807 Files:      src/eval.c, src/version.c
5809 Patch 5.5a.13
5810 Problem:    OS/2: When $HOME is not defined, "C:/" is used for the viminfo
5811             file.  That is very wrong when OS/2 is on another partition.
5812 Solution:   Use $VIM for the viminfo file when it is defined, like for MSDOS.
5813             Also: Makefile.os2 didn't depend on os_unix.h.
5814 Files:      src/os_unix.h, src/Makefile.os2
5816 Patch 5.5a.14
5817 Problem:    Athena, Motif and GTK: The Mouse scroll wheel doesn't work.
5818 Solution:   Interpret a click of the wheel as a key press of the <MouseDown>
5819             or <MouseUp> keys.  Default behavior is to scroll three lines, or
5820             a full page when Shift is used.
5821 Files:      src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c,
5822             src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c,
5823             src/misc2.c, src/normal.c,  src/proto/normal.pro, src/vim.h,
5824             runtime/doc/scroll.txt
5826 Patch 5.5a.15
5827 Problem:    Using CTRL-A in Insert mode doesn't work correctly when the insert
5828             started with the <Insert> key. (Andreas Rohrschneider)
5829 Solution:   Replace <Insert> with "i" before setting up the redo buffer.
5830 Files:      src/normal.c
5832 Patch 5.5a.16
5833 Problem:    VMS: GUI does not compile and run.
5834 Solution:   Various fixes. (Zoltan Arpadffy)
5835             Moved functions from os_unix.c to ui.c, so that VMS can use them
5836             too: open_app_context(), x11_setup_atoms() and clip_x11* functions.
5837             Made xterm_dpy global, it's now used by ui.c and os_unix.c.
5838             Use gethostname() always, sys_hostname doesn't exist.
5839 Files:      src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c,
5840             src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro
5842 Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar()
5843 to avoid symbol length limit of 31 characters. (Steve P. Wall)
5845 Patch 5.5b.1
5846 Problem:    SASC complains about dead assignments and implicit type casts.
5847 Solution:   Removed the dead assignments.  Added explicit type casts.
5848 Files:      src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c,
5849             src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c,
5850             src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c,
5851             src/screen.c
5853 Patch 5.5b.2
5854 Problem:    When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in
5855             another line truncates that line. (Devin Weaver)
5856 Solution:   When using a command that starts Insert mode from CTRL-O, reset
5857             "restart_edit" first.  This avoids that edit() is called with a
5858             mix of starting a new edit command and restarting a previous one.
5859 Files:      src/normal.c
5861 ==============================================================================
5862 VERSION 5.6                                             *version-5.6*
5864 Version 5.6 is a bug-fix version of 5.5.
5867 Changed                                                 *changed-5.6*
5868 -------
5870 Small changes to OleVim files. (Christian Schaller)
5872 Inserted "/**/" between patch numbers in src/version.c.  This allows for one
5873 line of context, which some versions of patch need.
5875 Reordered the Syntax menu to avoid long submenus.  Removed keyboard shortcuts
5876 for alphabetical items to avoid a clash with fixed items.
5879 Added                                                   *added-5.6*
5880 -----
5882 Included Exuberant Ctags version 3.4. (Darren Hiebert)
5884 OpenWithVim in Python. (Christian Schaller)
5886 Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry.  Avoids
5887 the reported problems with the MS Office taskbar.  Now it's a Shell Extension.
5888 (Tianmiao Hu)
5890 New syntax files:
5891 abel            Abel (John Cook)
5892 aml             Arc Macro Language (Nikki Knuit)
5893 apachestyle     Apache-style config file (Christian Hammers)
5894 cf              Cold Fusion (Jeff Lanzarotta)
5895 ctrlh           files with CTRL-H sequences (Bram Moolenaar)
5896 cupl            CUPL (John Cook)
5897 cuplsim         CUPL simulation (John Cook)
5898 erlang          Erlang (Kresimir Marzic)
5899 gedcom          Gedcom (Paul Johnson)
5900 icon            Icon (Wendell Turner)
5901 ist             MakeIndex style (Peter Meszaros)
5902 jsp             Java Server Pages (Rafael Garcia-Suarez)
5903 rcslog          Rcslog (Joe Karthauser)
5904 remind          Remind (Davide Alberani)
5905 sqr             Structured Query Report Writer (Paul Moore)
5906 tads            TADS (Amir Karger)
5907 texinfo         Texinfo (Sandor Kopanyi)
5908 xpm2            X Pixmap v2 (Steve Wall)
5910 The 'C' flag in 'cpoptions' can be used to switch off concatenation for
5911 sourced lines.  See patch 5.5.013 below. |line-continuation|
5913 "excludenl" argument for the ":syntax" command.  See patch 5.5.032 below.
5914 |:syn-excludenl|
5916 Implemented |z+| and |z^| commands.  See patch 5.5.050 below.
5918 Vim logo in Corel Draw format.  Can be scaled to any resolution.
5921 Fixed                                                   *fixed-5.6*
5922 -----
5924 Using this mapping in Select mode, terminated completion:
5925 ":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher)
5926 Ignore K_SELECT in ins_compl_prep().
5928 VMS (Zoltan Arpadffy, David Elins):
5929 - ioctl() in pty.c caused trouble, #ifndef VMS added.
5930 - Cut & paste mismatch corrected.
5931 - Popup menu line crash corrected.  (Patch 5.5.047)
5932 - Motif directories during open and save as corrected.
5933 - Handle full file names with version numbers. (Patch 5.5.046)
5934 - Directory handling (CD command etc.)
5935 - Corrected file name conversion VMS to Unix and v.v.
5936 - Recovery was not working.
5937 - Terminal and signal handling was outdated compared to os_unix.c.
5938 - Improved os_vms.txt.
5940 Configure used fprintf() instead of printf() to check for __DATE__ and
5941 __TIME__. (John Card II)
5943 BeOS: Adjust computing the char_height and char_ascent.  Round them up
5944 separately, avoids redrawing artifacts. (Mike Steed)
5946 Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and
5947 findmatchlimit(). (Taro Muraoka)
5949 GTK GUI:
5950 - With GTK 1.2.5 and later the scrollbars were not redrawn correctly.
5951 - Adjusted the gtk_form_draw() function.
5952 - SNiFF connection didn't work.
5953 - 'mousefocus' was not working. (Dalecki)
5954 - Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@.
5957 Patch 5.5.001
5958 Problem:    Configure in the top directory did not pass on an argument with a
5959             space correctly.  For example "./configure --previs="/My home".
5960             (Stephane Chazelas)
5961 Solution:   Use '"$@"' instead of '$*' to pass on the arguments.
5962 Files:      configure
5964 Patch 5.5.002
5965 Problem:    Compilation error for using "fds[] & POLLIN". (Jeff Walker)
5966 Solution:   Use "fds[].revents & POLLIN".
5967 Files:      src/os_unix.c
5969 Patch 5.5.003
5970 Problem:    The autoconf check for sizeof(int) is wrong on machines where
5971             sizeof(size_t) != sizeof(int).
5972 Solution:   Use our own configure check.  Also fixes the warning for
5973             cross-compiling.
5974 Files:      src/configure.in, src/configure
5976 Patch 5.5.004
5977 Problem:    On Unix it's not possible to interrupt ":sleep 100".
5978 Solution:   Switch terminal to cooked mode while asleep, to allow a SIGINT to
5979             wake us up.  But switch off echo, added TMODE_SLEEP.
5980 Files:      src/term.h, src/os_unix.c
5982 Patch 5.5.005
5983 Problem:    When using <f-args> with a user command, an empty argument to the
5984             command resulted in one empty string, while no string was
5985             expected.
5986 Solution:   Catch an empty argument and pass no argument to the function.
5987             (Paul Moore)
5988 Files:      src/ex_docmd.c
5990 Patch 5.5.006
5991 Problem:    Python: When platform-dependent files are in another directory
5992             than the platform-independent files it doesn't work.
5993 Solution:   Also check the executable directory, and add it to CFLAGS. (Tessa
5994             Lau)
5995 Files:      src/configure.in, src/configure
5997 Patch 5.5.007 (extra)
5998 Problem:    Win32 OLE: Occasional crash when exiting while still being used
5999             via OLE.
6000 Solution:   Move OleUninitialize() to before deleting the application object.
6001             (Vince Negri)
6002 Files:      src/if_ole.cpp
6004 Patch 5.5.008
6005 Problem:    10000@@ takes a long time and cannot be interrupted.
6006 Solution:   Check for CTRL-C typed while in the loop to push the register.
6007 Files:      src/normal.c
6009 Patch 5.5.009
6010 Problem:    Recent Sequent machines don't link with "-linet". (Kurtis Rader)
6011 Solution:   Remove configure check for Sequent.
6012 Files:      src/configure.in, src/configure
6014 Patch 5.5.010
6015 Problem:    Ctags freed a memory block twice when exiting.  When out of
6016             memory, a misleading error message was given.
6017 Solution:   Update to ctags 3.3.2.  Also fixes a few other problems. (Darren
6018             Hiebert)
6019 Files:      src/ctags/*
6021 Patch 5.5.011
6022 Problem:    After "CTRL-V s", the cursor jumps back to the start, while all
6023             other operators leave the cursor on the last changed character.
6024             (Xiangjiang Ma)
6025 Solution:   Position cursor on last changed character, if possible.
6026 Files:      src/ops.c
6028 Patch 5.5.012
6029 Problem:    Using CTRL-] in Visual mode doesn't work when the text includes a
6030             space (just where it's useful). (Stefan Bittner)
6031 Solution:   Don't escape special characters in a tag name with a backslash.
6032 Files:      src/normal.c
6034 Patch 5.5.013
6035 Problem:    The ":append" and ":insert" commands allow using a leading
6036             backslash in a line.  The ":source" command concatenates those
6037             lines. (Heinlein)
6038 Solution:   Add the 'C' flag in 'cpoptions' to switch off concatenation.
6039 Files:      src/ex_docmd.c, src/option.h, runtime/doc/options.txt,
6040             runtime/filetype.vim, runtime/scripts.vim
6042 Patch 5.5.014
6043 Problem:    When executing a register with ":@", the ":append" command would
6044             get text lines with a ':' prepended. (Heinlein)
6045 Solution:   Remove the ':' characters.
6046 Files:      src/ex_docmd.c, src/ex_getln.c, src/globals.h
6048 Patch 5.5.015
6049 Problem:    When using ":g/pat/p", it's hard to see where the output starts,
6050             the ":g" command is overwritten.  Vi keeps the ":g" command.
6051 Solution:   Keep the ":g" command, but allow overwriting it with the report
6052             for the number of changes.
6053 Files:      src/ex_cmds.c
6055 Patch 5.5.016 (extra)
6056 Problem:    Win32: Using regedit to install Vim in the popup menu requires the
6057             user to confirm this in a dialog.
6058 Solution:   Use "regedit /s" to avoid the dialog
6059 Files:      src/dosinst.c
6061 Patch 5.5.017
6062 Problem:    If an error occurs when closing the current window, Vim could get
6063             stuck in the error handling.
6064 Solution:   Don't set curwin to NULL when closing the current window.
6065 Files:      src/window.c
6067 Patch 5.5.018
6068 Problem:    Absolute paths in shell scripts do not always work.
6069 Solution:   Use /usr/bin/env to find out the path.
6070 Files:      runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl,
6071             runtime/tools/shtags.pl
6073 Patch 5.5.019
6074 Problem:    A function call in 'statusline' stops using ":q" twice from
6075             exiting, when the last argument hasn't been edited.
6076 Solution:   Don't decrement quitmore when executing a function. (Madsen)
6077 Files:      src/ex_docmd.c
6079 Patch 5.5.020
6080 Problem:    When the output of CTRL-D completion in the commandline goes all
6081             the way to the last column, there is an empty line.
6082 Solution:   Don't add a newline when the cursor wrapped already. (Madsen)
6083 Files:      src/ex_getln.c
6085 Patch 5.5.021
6086 Problem:    When checking if a file name in the tags file is relative,
6087             environment variables were not expanded.
6088 Solution:   Expand the file name before checking if it is relative. (Madsen)
6089 Files:      src/tag.c
6091 Patch 5.5.022
6092 Problem:    When setting or resetting 'paste' the ruler wasn't updated.
6093 Solution:   Update the status lines when 'ruler' changes because of 'paste'.
6094 Files:      src/option.c
6096 Patch 5.5.023
6097 Problem:    When editing a new file and autocommands change the cursor
6098             position, the cursor was moved back to the first non-white, unless
6099             'startofline' was reset.
6100 Solution:   Keep the new column, just like the line number.
6101 Files:      src/ex_cmds.c
6103 Patch 5.5.024 (extra)
6104 Problem:    Win32 GUI: When using confirm() to put up a dialog without a
6105             default button, the dialog would not have keyboard focus.
6106             (Krishna)
6107 Solution:   Always set focus to the dialog window.  Only set focus to a button
6108             when a default one is specified.
6109 Files:      src/gui_w32.c
6111 Patch 5.5.025
6112 Problem:    When using "keepend" in a syntax region, a contained match that
6113             includes the end-of-line could still force that region to
6114             continue, if there is another contained match in between.
6115 Solution:   Check the keepend_level in check_state_ends().
6116 Files:      src/syntax.c
6118 Patch 5.5.026
6119 Problem:    When starting Vim in a white-on-black xterm, with 'bg' set to
6120             "dark", and then starting the GUI with ":gui", setting 'bg' to
6121             "light" in the gvimrc, the highlighting isn't set.  (Tsjokwing)
6122 Solution:   Set the highlighting when 'bg' is changed in the gvimrc, even
6123             though full_screen isn't set.
6124 Files:      src/option.c
6126 Patch 5.5.027
6127 Problem:    Unix: os_unix.c doesn't compile when XTERM_CLIP is used but
6128             WANT_TITLE isn't. (Barnum)
6129 Solution:   Move a few functions that are used by the X11 title and clipboard
6130             and put another "#if" around it.
6131 Files:      src/os_unix.c
6133 Patch 5.5.028 (extra)
6134 Problem:    Win32 GUI: When a file is dropped on Win32 gvim while at the ":"
6135             prompt, the file is edited but the command line is actually still
6136             there, the cursor goes back to command line on the next command.
6137             (Krishna)
6138 Solution:   When dropping a file or directory on gvim while at the ":" prompt,
6139             insert the name of the file/directory.  Allows using the
6140             file/directory name for any Ex command.
6141 Files:      src/gui_w32.c
6143 Patch 5.5.029
6144 Problem:    "das" at the end of the file didn't delete the last character of
6145             the sentence.
6146 Solution:   When there is no character after the sentence, make the operation
6147             inclusive in current_sent().
6148 Files:      src/search.c
6150 Patch 5.5.030
6151 Problem:    Unix: in os_unix.c, "term_str" is used, which is also defined in
6152             vim.h as a macro. (wuxin)
6153 Solution:   Renamed "term_str" to "buf" in do_xterm_trace().
6154 Files:      src/os_unix.c
6156 Patch 5.5.031 (extra)
6157 Problem:    Win32 GUI: When exiting Windows, gvim will leave swap files behind
6158             and will be killed ungracefully. (Krishna)
6159 Solution:   Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to
6160             exit gracefully.  Allow the user to cancel the shutdown if there
6161             is a changed buffer.
6162 Files:      src/gui_w32.c
6164 Patch 5.5.032
6165 Problem:    Patch 5.5.025 wasn't right.  And C highlighting was still not
6166             working correctly for a #define.
6167 Solution:   Added "excludenl" argument to ":syntax", to be able not to extend
6168             a containing item when there is a match with the end-of-line.
6169 Files:      src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim
6171 Patch 5.5.033
6172 Problem:    When reading from stdin, a long line in viminfo would mess up the
6173             file message.  readfile() uses IObuff for keep_msg, which could be
6174             overwritten by anyone.
6175 Solution:   Copy the message from IObuff to msg_buf and set keep_msg to that.
6176             Also change vim_fgets() to not use IObuff any longer.
6177 Files:      src/fileio.c
6179 Patch 5.5.034
6180 Problem:    "gvim -rv" caused a crash.  Using 't_Co' before it's set.
6181 Solution:   Don't try to initilize the highlighting before it has been
6182             initilized from main().
6183 Files:      src/syntax.c
6185 Patch 5.5.035
6186 Problem:    GTK with XIM: Resizing with status area was messy, and
6187             ":set guioptions+=b" didn't work.
6188 Solution:   Make status area a separate widget, but not a separate window.
6189             (Chi-Deok Hwang)
6190 Files:      src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c
6192 Patch 5.5.036
6193 Problem:    The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to
6194             uncompress a file did not do detection for 'fileformat'.  This is
6195             because the filtering is done with 'binary' set.
6196 Solution:   Split the filtering into separate write, filter and read commands.
6197 Files:      runtime/vimrc_example.vim
6199 Patch 5.5.037
6200 Problem:    The "U" command didn't mark the buffer as changed. (McCormack)
6201 Solution:   Set the 'modified' flag when using "U".
6202 Files:      src/undo.c
6204 Patch 5.5.038
6205 Problem:    When typing a long ":" command, so that the screen scrolls up,
6206             causes the hit-return prompt, even though the user just typed
6207             return to execute the command.
6208 Solution:   Reset need_wait_return if (part of) the command was typed in
6209             getcmdline().
6210 Files:      src/ex_getln.c
6212 Patch 5.5.039
6213 Problem:    When using a custom status line, "%a" (file # of #) reports the
6214             index of the current window for all windows.
6215 Solution:   Pass a window pointer to append_arg_number(), and pass the window
6216             being updated from build_stl_str_hl(). (Stephen P. Wall)
6217 Files:      src/buffer.c, src/screen.c, src/proto/buffer.pro
6219 Patch 5.5.040
6220 Problem:    Multi-byte: When there is some error in xim_real_init(), it can
6221             close XIM and return.  After this there can be a segv.
6222 Solution:   Test "xic" for being non-NULL, don't set "xim" to NULL.  Also try
6223             to find more matches for supported styles. (Sung-Hyun Nam)
6224 Files:      src/multbyte.c
6226 Patch 5.5.041
6227 Problem:    X11 GUI: CTRL-_ requires the SHIFT key only on some machines.
6228 Solution:   Translate CTRL-- to CTRL-_. (Robert Webb)
6229 Files:      src/gui_x11.c
6231 Patch 5.5.042
6232 Problem:    X11 GUI: keys with ALT were assumed to be used for the menu, even
6233             when the menu has been disabled by removing 'm' from 'guioptions'.
6234 Solution:   Ignore keys with ALT only when gui.menu_is_active is set. (Raf)
6235 Files:      src/gui_x11.c
6237 Patch 5.5.043
6238 Problem:    GTK: Handling of fontset fonts was not right when 'guifontset'
6239             contains exactly 14 times '-'.
6240 Solution:   Avoid setting fonts when working with a fontset. (Sung-Hyun Nam)
6241 Files:      src/gui_gtk_x11.c
6243 Patch 5.5.044
6244 Problem:    pltags.pl contains an absolute path "/usr/local/bin/perl".  That
6245             might not work everywhere.
6246 Solution:   Use "/usr/bin/env perl" instead.
6247 Files:      runtime/tools/pltags.pl
6249 Patch 5.5.045
6250 Problem:    Using "this_session" variable does not work, requires preceding it
6251             with "v:".  Default filename for ":mksession" isn't mentioned
6252             in the docs. (Fisher)
6253 Solution:   Support using "this_session" to be backwards compatible.
6254 Files:      src/eval.c, runtime/doc/options.txt
6256 Patch 5.5.046 (extra)
6257 Problem:    VMS: problems with path and filename.
6258 Solution:   Truncate file name at last ';', etc. (Zoltan Arpadffy)
6259 Files:      src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c,
6260             src/proto/os_vms.pro
6262 Patch 5.5.047
6263 Problem:    VMS: Crash when using the popup menu
6264 Solution:   Turn the #define MENU_MODE_CHARS into an array. (Arpadffy)
6265 Files:      src/structs.h, src/menu.c
6267 Patch 5.5.048
6268 Problem:    HP-UX 11: Compiling doesn't work, because both string.h and
6269             strings.h are included. (Squassabia)
6270 Solution:   The configure test for including both string.h and strings.h
6271             must include <Xm/Xm.h> first, because it causes problems.
6272 Files:      src/configure.in, src/configure, src/config.h.in
6274 Patch 5.5.049
6275 Problem:    Unix: When installing Vim, the protection bits of files might be
6276             influenced by the umask.
6277 Solution:   Add $(FILEMOD) to Makefile. (Shetye)
6278 Files:      src/Makefile
6280 Patch 5.5.050
6281 Problem:    "z+" and "z^" commands are missing.
6282 Solution:   Implemented "z+" and "z^".
6283 Files:      src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt
6285 Patch 5.5.051
6286 Problem:    Several Unix systems have a problem with the optimization limits
6287             check in configure.
6288 Solution:   Removed the configure check, let the user add it manually in
6289             Makefile or the enviroment.
6290 Files:      src/configure.in, src/configure, src/Makefile
6292 Patch 5.5.052
6293 Problem:    Crash when using a cursor key at the ATTENTION prompt. (Alberani)
6294 Solution:   Ignore special keys at the console dialog.  Also ignore characters
6295             > 255 for other uses of tolower() and toupper().
6296 Files:      src/menu.c, src/message.c, src/misc2.c
6298 Patch 5.5.053
6299 Problem:    Indenting is wrong after a function when 'cino' has "fs".  Another
6300             problem when 'cino' has "{s".
6301 Solution:   Put line after closing "}" of a function at the left margin.
6302             Apply ind_open_extra in the right way after a '{'.
6303 Files:      src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
6305 Patch 5.5.054
6306 Problem:    Unix: ":e #" doesn't work if the alternate file name contains a
6307             space or backslash. (Hudacek)
6308 Solution:   When replacing "#", "%" or other items that stand for a file name,
6309             prepend a backslash before special characters.
6310 Files:      src/ex_docmd.c
6312 Patch 5.5.055
6313 Problem:    Using "<C-V>$r-" in blockwise Visual mode replaces one character
6314             beyond the end of the line. (Zivkov)
6315 Solution:   Only replace existing characters.
6316 Files:      src/ops.c
6318 Patch 5.5.056
6319 Problem:    After "z20<CR>" messages were printed at the old command line
6320             position once.  (Veselinovic)
6321 Solution:   Set msg_row and msg_col when changing cmdline_row in
6322             win_setheight().
6323 Files:      src/window.c
6325 Patch 5.5.057
6326 Problem:    After "S<Esc>" it should be possible to restore the line with "U".
6327             (Veselinovic)
6328 Solution:   Don't call u_clearline() in op_delete() when changing only one
6329             line.
6330 Files:      src/ops.c
6332 Patch 5.5.058
6333 Problem:    Using a long search pattern and then "n" causes the hit-return
6334             prompt.  (Krishna)
6335 Solution:   Truncate the echoed pattern, like other messages.  Moved code for
6336             truncating from msg_attr() to msg_strtrunc().
6337 Files:      src/message.c, src/proto/message.pro, src/search.c
6339 Patch 5.5.059
6340 Problem:    GTK GUI: When $term is invalid, using "gvim" gives an error
6341             message, even though $term isn't really used.  (Robbins)
6342 Solution:   When the GUI is about to start, skip the error messages for a
6343             wrong $term.
6344 Files:      src/term.c
6346 Patch 5.5.060 (extra)
6347 Problem:    Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w"
6348             causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf)
6349 Solution:   The code to work around a LFN bug in Windows 95 doesn't handle a
6350             non-existing target name correctly.  When renaming fails, make
6351             sure the file has its original name.  Also do this for the Win32
6352             version, although it's unlikely that it runs into this problem.
6353 Files:      src/os_msdos.c, src/os_win32.c
6355 Patch 5.5.061
6356 Problem:    When using "\:" in a modeline, the backslash is included in the
6357             option value. (Mohsin)
6358 Solution:   Remove one backslash before the ':' in a modeline.
6359 Files:      src/buffer.c, runtime/doc/options.txt
6361 Patch 5.5.062 (extra)
6362 Problem:    Win32 console: Temp files are created in the root of the current
6363             drive, which may be read-only. (Peterson)
6364 Solution:   Use the same mechanism of the GUI version: Use $TMP, $TEMP or the
6365             current directory.  Cleaned up vim_tempname() a bit.
6366 Files:      src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt
6368 Patch 5.5.063
6369 Problem:    When using whole-line completion in Insert mode, 'cindent' is
6370             applied, even after changing the indent of the line.
6371 Solution:   Don't reindent the completed line after inserting/removing indent.
6372             (Robert Webb)
6373 Files:      src/edit.c
6375 Patch 5.5.064
6376 Problem:    has("sniff") doesn't work correctly.
6377 Solution:   Return 1 when Vim was compiled with the +sniff feature. (Pruemmer)
6378 Files:      src/eval.c
6380 Patch 5.5.065
6381 Problem:    When dropping a file on Vim, the 'shellslash' option is not
6382             effective. (Krishna)
6383 Solution:   Fix the slashes in the dropped file names according to
6384             'shellslash'.
6385 Files:      src/ex_docmd.c, runtime/doc/options.txt
6387 Patch 5.5.066
6388 Problem:    For systems with backslash in file name: Setting a file name
6389             option to a value starting with "\\machine" removed a backslash.
6390 Solution:   Keep the double backslash for "\\machine", but do change
6391             "\\\\machine" to "\\machine" for backwards compatibility.
6392 Files:      src/option.c, runtime/doc/options.txt
6394 Patch 5.5.067
6395 Problem:    With 'hlsearch' set, the pattern "\>" doesn't highlight the first
6396             match in a line. (Benji Fisher)
6397 Solution:   Fix highlighting an empty match.  Also highlight the first
6398             character in an empty line for "$".
6399 Files:      src/screen.c
6401 Patch 5.5.068
6402 Problem:    Crash when a ":while" is used with an argument that has an error.
6403             (Sylvain Viart)
6404 Solution:   Was using an uninitialized index in the cs_line[] array.  The
6405             crash only happened when the index was far off.  Made sure the
6406             uninitialized index isn't used.
6407 Files:      src/ex_docmd.c
6409 Patch 5.5.069
6410 Problem:    Shifting lines in blockwise Visual mode didn't set the 'modified'
6411             flag.
6412 Solution:   Do set the 'modified' flag.
6413 Files:      src/ops.c
6415 Patch 5.5.070
6416 Problem:    When editing a new file, creating that file outside of Vim, then
6417             editing it again, ":w" still warns for overwriting an existing
6418             file. (Nam)
6419 Solution:   The BF_NEW flag in the "b_flags" field wasn't cleared properly.
6420 Files:      src/buffer.c, src/fileio.c
6422 Patch 5.5.071
6423 Problem:    Using a matchgroup in a ":syn region", which is the same syntax
6424             group as the region, didn't stop a contained item from matching in
6425             the start pattern.
6426 Solution:   Also push an item on the stack when the syntax ID of the
6427             matchgroup is the same as the syntax ID of the region.
6428 Files:      src/syntax.c
6430 Patch 5.5.072 (extra)
6431 Problem:    Dos 32 bit: When setting 'columns' to a too large value, Vim may
6432             crash, and the DOS console too.
6433 Solution:   Check that the value of 'columns' isn't larger than the number of
6434             columns that the BIOS reports.
6435 Files:      src/os_msdos.c, src/proto/os_msdos.pro, src/option.c
6437 Patch 5.5.073 (extra)
6438 Problem:    Win 32 GUI: The Find and Find/Replace dialogs didn't show the
6439             "match case" checkbox.  The Find/Replace dialog didn't handle the
6440             "match whole word" checkbox.
6441 Solution:   Support the "match case" and "match whole word" checkboxes.
6442 Files:      src/gui_w32.c
6444 Patch 5.6a.001
6445 Problem:    Using <C-End> with a count doesn't work like it does with "G".
6446             (Benji Fisher)
6447 Solution:   Accept a count for <C-End> and <C-Home>.
6448 Files:      src/normal.c
6450 Patch 5.6a.002
6451 Problem:    The script for conversion to HTML was an older version.
6452 Solution:   Add support for running 2html.vim on a color terminal.
6453 Files:      runtime/syntax/2html.vim
6455 Patch 5.6a.003
6456 Problem:    Defining a function inside a function didn't give an error
6457             message.  A missing ":endfunction" doesn't give an error message.
6458 Solution:   Allow defining a function inside a function.
6459 Files:      src/eval.c, runtime/doc/eval.txt
6461 Patch 5.6a.004
6462 Problem:    A missing ":endwhile" or ":endif" doesn't give an error message.
6463             (Johannes Zellner)
6464 Solution:   Check for missing ":endwhile" and ":endif" in sourced files.
6465             Add missing ":endif" in file selection macros.
6466 Files:      src/ex_docmd.c, runtime/macros/file_select.vim
6468 Patch 5.6a.005
6469 Problem:    'hlsearch' was not listed alphabetically.  The value of 'toolbar'
6470             was changed when 'compatible' is set.
6471 Solution:   Moved entry of 'hlsearch' in options[] table down.
6472             Don't reset 'toolbar' option to the default value when
6473             'compatible' is set.
6474 Files:      src/option.c
6476 Patch 5.6a.006
6477 Problem:    Using a backwards range inside ":if 0" gave an error message.
6478 Solution:   Don't complain about a range when it is not going to be used.
6479             (Stefan Roemer)
6480 Files:      src/ex_docmd.c
6482 Patch 5.6a.007
6483 Problem:    ":let" didn't show internal Vim variables.  (Ron Aaron)
6484 Solution:   Do show ":v" variables for ":let" and ":let v:name".
6485 Files:      src/eval.c
6487 Patch 5.6a.008
6488 Problem:    Selecting a syntax from the Syntax menu gives an error message.
6489 Solution:   Replace "else if" in SetSyn() with "elseif".  (Ronald Schild)
6490 Files:      runtime/menu.vim
6492 Patch 5.6a.009
6493 Problem:    When compiling with +extra_search but without +syntax, there is a
6494             compilation error in screen.c. (Axel Kielhorn)
6495 Solution:   Adjust the #ifdef for declaring and initializing "line" in
6496             win_line().  Also solve compilation problem when +statusline is
6497             used without +eval.  Another one when +cmdline_compl is used
6498             without +eval.
6499 Files:      src/screen.c, src/misc2.c
6501 Patch 5.6a.010
6502 Problem:    In a function, ":startinsert!" does not append to the end of the
6503             line if a ":normal" command was used to move the cursor. (Fisher)
6504 Solution:   Reset "w_set_curswant" to avoid that w_curswant is changed again.
6505 Files:      src/ex_docmd.c
6507 Patch 5.6a.011 (depends on 5.6a.004)
6508 Problem:    A missing ":endif" or ":endwhile" in a function doesn't give an
6509             error message.
6510 Solution:   Give that error message.
6511 Files:      src/ex_docmd.c
6513 Patch 5.6a.012 (depends on 5.6a.008)
6514 Problem:    Some Syntax menu entries caused a hit-return prompt.
6515 Solution:   Call a function to make the command shorter.  Also rename a few
6516             functions to avoid name clashes.
6517 Files:      runtime/menu.vim
6519 Patch 5.6a.013
6520 Problem:    Command line completion works different when another completion
6521             was done earlier. (Johannes Zellner)
6522 Solution:   Reset wim_index when starting a new completion.
6523 Files:      src/ex_getln.c
6525 Patch 5.6a.014
6526 Problem:    Various warning messages when compiling and running lint with
6527             different combinations of features.
6528 Solution:   Fix the warning messages.
6529 Files:      src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c,
6530             src/option.c, src/screen.c, src/search.c, src/syntax.c,
6531             src/feature.h, src/globals.h
6533 Patch 5.6a.015
6534 Problem:    The vimtutor command doesn't always know the value of $VIMRUNTIME.
6535 Solution:   Let Vim expand $VIMRUNTIME, instead of the shell.
6536 Files:      src/vimtutor
6538 Patch 5.6a.016 (extra)
6539 Problem:    Mac: Window size is restricted when starting.  Cannot drag the
6540             window all over the desktop.
6541 Solution:   Get real screen size instead of assuming 640x400.  Do not use a
6542             fixed number for the drag limits. (Axel Kielhorn)
6543 Files:      src/gui_mac.c
6545 Patch 5.6a.017
6546 Problem:    The "Paste" entry in popup menu for Visual, Insert and Cmdline
6547             mode is in the wrong position. (Stol)
6548 Solution:   Add priority numbers for all Paste menu entries.
6549 Files:      runtime/menu.vim
6551 Patch 5.6a.018
6552 Problem:    GTK GUI: submenu priority doesn't work.
6553             Help dialog could be destroyed too soon.
6554             When closing a dialog window (e.g. the "ATTENTION" one), Vim would
6555             just hang.
6556             When GTK theme is changed, Vim doesn't adjust to the new colors.
6557             Argument for ":promptfind" isn't used.
6558 Solution:   Fixed the mentioned problems.
6559             Made the dialogs look&feel nicer.
6560             Moved functions to avoid the need for a forward declaration.
6561             Fixed reentrancy of the file browser dialog.
6562             Added drag&drop support for GNOME.
6563             Init the text for the Find/replace dialog from the last used
6564             search string.  Set "match whole word" toggle button correctly.
6565             Made repeat rate for drag outside of window depend on the
6566             distance from the window.  (Marcin Dalecki)
6567             Made the drag in Visual mode actually work.
6568             Removed recursiveness protection from gui_mch_get_rgb(), it might
6569             cause more trouble than it solves.
6570 Files:      src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c,
6571             src/proto/ui.pro, src/misc2.c
6573 Patch 5.6a.019
6574 Problem:    When trying to recover through NFS, which uses a large block size,
6575             Vim might think the swap file is empty, because mf_blocknr_max is
6576             zero.  (Scott McDermott)
6577 Solution:   When computing the number of blocks of the file in mf_open(),
6578             round up instead of down.
6579 Files:      src/memfile.c
6581 Patch 5.6a.020
6582 Problem:    GUI GTK: Could not set display for gvim.
6583 Solution:   Add "-display" and "--display" arguments. (Marcin Dalecki)
6584 Files:      src/gui_gtk_x11.c
6586 Patch 5.6a.021
6587 Problem:    Recovering still may not work when the block size of the device
6588             where the swap file is located is larger than 4096.
6589 Solution:   Read block 0 with the minimal block size.
6590 Files:      src/memline.c, src/memfile.c, src/vim.h
6592 Patch 5.6a.022 (extra)
6593 Problem:    Win32 GUI: When an error in the vimrc causes a dialog to pop up
6594             (e.g., for an existing swap file), Vim crashes. (David Elins)
6595 Solution:   Before showing a dialog, open the main window.
6596 Files:      src/gui_w32.c
6598 Patch 5.6a.023
6599 Problem:    Using expand("%:gs??/?") causes a crash. (Ron Aaron)
6600 Solution:   Check for running into the end of the string in do_string_sub().
6601 Files:      src/eval.c
6603 Patch 5.6a.024
6604 Problem:    Using an autocommand to delete a buffer when leaving it can cause
6605             a crash when jumping to a tag. (Franz Gorkotte)
6606 Solution:   In do_tag(), store tagstacklen before jumping to another buffer.
6607             Check tagstackidx after jumping to another buffer.
6608             Add extra check in win_split() if tagname isn't NULL.
6609 Files:      src/tag.c, src/window.c
6611 Patch 5.6a.025 (extra)
6612 Problem:    Win32 GUI: The tables for toupper() and tolower() are initialized
6613             too late. (Mike Steed)
6614 Solution:   Move the initialization to win32_init() and call it from main().
6615 Files:      src/main.c, src/os_w32.c, src/proto/os_w32.pro
6617 Patch 5.6a.026
6618 Problem:    When the SNiFF connection is open, shell commands hang. (Pruemmer)
6619 Solution:   Skip a second wait() call if waitpid() already detected that the
6620             child has exited.
6621 Files:      src/os_unix.c
6623 Patch 5.6a.027 (extra)
6624 Problem:    Win32 GUI: The "Edit with Vim" popup menu entry causes problems
6625             for the Office toolbar.
6626 Solution:   Use a shell extension dll. (Tianmiao Hu)
6627             Added it to the install and uninstal programs, replaces the old
6628             "Edit with Vim" menu registry entries.
6629 Files:      src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt
6631 Patch 5.6a.028 (extra)
6632 Problem:    Win32 GUI: Dialogs and tear-off menus can't handle multi-byte
6633             characters.
6634 Solution:   Adjust nCopyAnsiToWideChar() to handle multi-byte characters
6635             correctly.
6636 Files:      src/gui_w32.c
6638 ==============================================================================
6639 VERSION 5.7                                             *version-5.7*
6641 Version 5.7 is a bug-fix version of 5.6.
6643 Changed                                                 *changed-5.7*
6644 -------
6646 Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a
6647 wrong file type.  Also renamed src/INSTALL.amiga to INSTALL_ami.txt.
6650 Added                                                   *added-5.7*
6651 -----
6653 New syntax files:
6654 stp             Stored Procedures (Jeff Lanzarotta)
6655 snnsnet, snnspat, snnsres       SNNS (Davide Alberani)
6656 mel             MEL (Robert Minsk)
6657 ruby            Ruby (Mirko Nasato)
6658 tli             TealInfo (Kurt W. Andrews)
6659 ora             Oracle config file (Sandor Kopanyi)
6660 abaqus          Abaqus (Carl Osterwisch)
6661 jproperties     Java Properties (Simon Baldwin)
6662 apache          Apache config (Allan Kelly)
6663 csp             CSP (Jan Bredereke)
6664 samba           Samba config (Rafael Garcia-Suarez)
6665 kscript         KDE script (Thomas Capricelli)
6666 hb              Hyper Builder (Alejandro Forero Cuervo)
6667 fortran         Fortran (rewritten) (Ajit J. Thakkar)
6668 sml             SML (Fabrizio Zeno Cornelli)
6669 cvs             CVS commit (Matt Dunford)
6670 aspperl         ASP Perl (Aaron Hope)
6671 bc              BC calculator (Vladimir Scholtz)
6672 latte           Latte (Nick Moffitt)
6673 wml             WML (Gerfried Fuchs)
6675 Included Exuberant ctags 3.5.1. (Darren Hiebert)
6677 "display" and "fold" arguments for syntax items.  For future extension, they
6678 are ignored now.
6680 strftime() function for the Macintosh.
6682 macros/explorer.vim: A file browser script (M A Aziz Ahmed)
6685 Fixed                                                   *fixed-5.7*
6686 -----
6688 The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0.  The
6689 executable is smaller.
6691 When a "make test" failed, the output file was lost.  Rename it to
6692 test99.failed to be able to see what went wrong.
6694 After sourcing bugreport.vim, it's not clear that bugreport.txt has been
6695 written in the current directory.  Edit bugreport.txt to avoid that.
6697 Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka)
6699 Win32 console: Mouse drags were passed on even when the mouse didn't move.
6701 Perl interface: In Buffers(), type of argument to SvPV() was int, should be
6702 STRLEN. (Tony Leneis)
6704 Problem with prototype for index() on AIX 4.3.0.  Added check for _AIX43 in
6705 os_unix.h. (Jake Hamby)
6707 Mappings in mswin.vim could break when some commands are mapped.  Add "nore"
6708 to most mappings to avoid re-mapping.
6710 modify_fname() made a copy of a file name for ":p" when it already was a full
6711 path name, which is a bit slow.
6713 Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags,
6714 to avoid depending on $PATH.  Fixed "make clean".
6716 Many fixes to Macintosh specific parts: (mostly by Dany StAmant)
6717 - Only one Help menu.
6718 - No more crash when removing a menu item.
6719 - Support as External Editor for Codewarior (still some little glitches).
6720 - Popup menu support.
6721 - Fixed crash when pasting after application switch.
6722 - Color from rgb.txt properly displayed.
6723 - 'isprint' default includes all chars above '~'. (Axel Kielhorn)
6724 - mac_expandpath() was leaking memory.
6725 - Add digraphs table. (Axel Kielhorn)
6726 - Multi-byte support: (Kenichi Asai)
6727   Switch keyscript when going in/out of Insert mode.
6728   Draw multi-byte character correctly.
6729   Don't use mblen() but highest bit of char to detect multi-byte char.
6730   Display value of multi-byte in statusline (also for other systems).
6731 - mouse button was not initialized properly to MOUSE_LEFT when
6732   USE_CTRLCLICKMENU not defined.
6733 - With Japanese SJIS characters: Make "w", "b", and "e" work
6734   properly.  (Kenichi Asai)
6735 - Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx.
6737 Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below)
6738 - Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the
6739   tests.
6740 - Various fixes.
6741 - Set 'undolevels' to 1000 by default.
6742 - Made mch_settitle() equivalent to the one in os_unix.c.
6744 RiscOS: A few prototypes for os_riscos.c were outdated.  Generate prototypes
6745 automatically.
6748 Previously released patches:
6750 Patch 5.6.001
6751 Problem:    When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which
6752             reduces the indent doesn't delete the "#" or "}". (Lorton)
6753 Solution:   Adjust ai_col in ins_try_si().
6754 Files:      src/edit.c
6756 Patch 5.6.002
6757 Problem:    When using the vim.vim syntax file, a comment with all uppercase
6758             characters causes a hang.
6759 Solution:   Adjust pattern for vimCommentTitle (Charles Campbell)
6760 Files:      runtime/syntax/vim.vim
6762 Patch 5.6.003
6763 Problem:    GTK GUI: Loading a user defined toolbar bitmap gives a warning
6764             about the colormap.  Probably because the window has not been
6765             opened yet.
6766 Solution:   Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file.
6767             (Keith Radebaugh)
6768 Files:      src/gui_gtk.c
6770 Patch 5.6.004 (extra)
6771 Problem:    Win32 GUI with IME: When setting 'guifont' to "*", the font
6772             requester appears twice.
6773 Solution:   In gui_mch_init_font() don't call get_logfont() but copy
6774             norm_logfont from fh. (Yasuhiro Matsumoto)
6775 Files:      src/gui_w32.c
6777 Patch 5.6.005
6778 Problem:    When 'winminheight' is zero, CTRL-W - with a big number causes a
6779             crash.  (David Kotchan)
6780 Solution:   Check for negative window height in win_setheight().
6781 Files:      src/window.c
6783 Patch 5.6.006
6784 Problem:    GTK GUI: Bold font cannot always be used.  Memory is freed too
6785             early in gui_mch_init_font().
6786 Solution:   Move call to g_free() to after where sdup is used. (Artem Hodyush)
6787 Files:      src/gui_gtk_x11.c
6789 Patch 5.6.007 (extra)
6790 Problem:    Win32 IME: Font is not changed when screen font is changed. And
6791             IME composition window does not trace the cursor.
6792 Solution:   Initialize IME font.  When cursor is moved, set IME composition
6793             window with ImeSetCompositionWindow().  Add call to
6794             ImmReleaseContext() in several places. (Taro Muraoka)
6795 Files:      src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro
6797 Patch 5.6.008 (extra)
6798 Problem:    Win32: When two files exist with the same name but different case 
6799             (through NFS or Samba), fixing the file name case could cause the
6800             wrong one to be edited.
6801 Solution:   Prefer a perfect match above a match while ignoring case in
6802             fname_case().  (Flemming Madsen)
6803 Files:      src/os_win32.c
6805 Patch 5.6.009 (extra)
6806 Problem:    Win32 GUI: Garbage in Windows Explorer help line when selecting
6807             "Edit with Vim" popup menu entry.
6808 Solution:   Only return the help line when called with the GCS_HELPTEXT flag.
6809             (Tianmiao Hu)
6810 Files:      GvimExt/gvimext.cpp
6812 Patch 5.6.010
6813 Problem:    A file name which contains a TAB was not read correctly from the
6814             viminfo file and the ":ls" listing was not aligned properly.
6815 Solution:   Parse the buffer list lines in the viminfo file from the end
6816             backwards.  Count a Tab for two characters to align the ":ls" list.
6817 Files:      src/buffer.c
6819 Patch 5.6.011
6820 Problem:    When 'columns' is huge (using a tiny font) and 'statusline' is
6821             used, Vim can crash.
6822 Solution:   Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin)
6823 Files:      src/screen.c
6825 Patch 5.6.012
6826 Problem:    When using "zsh" for /bin/sh, toolcheck may hang until "exit" is
6827             typed. (Kuratczyk)
6828 Solution:   Add "-c exit" when checking for the shell version.
6829 Files:      src/toolcheck
6831 Patch 5.6.013
6832 Problem:    Multibyte char in tooltip is broken.
6833 Solution:   Consider multibyte char in replace_termcodes(). (Taro Muraoka)
6834 Files:      src/term.c
6836 Patch 5.6.014
6837 Problem:    When cursor is at the end of line and the character under cursor
6838             is a multibyte character, "yl" doesn't yank 1 multibyte-char.
6839             (Takuhiro Nishioka)
6840 Solution:   Recognize a multibyte-char at end-of-line correctly in oneright().
6841             (Taro Muraoka)
6842             Also: make "+quickfix" in ":version" output appear alphabetically.
6843 Files:      src/edit.c
6845 Patch 5.6.015
6846 Problem:    New xterm delete key sends <Esc>[3~ by default.
6847 Solution:   Added <kDel> and <kIns> to make the set of keypad keys complete.
6848 Files:      src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c,
6849             src/misc2.c, src/normal.c, src/os_unix.c, src/term.c
6851 Patch 5.6.016
6852 Problem:    When deleting a search string from history from inside a mapping,
6853             another entry is deleted too. (Benji Fisher)
6854 Solution:   Reset last_maptick when deleting the last entry of the search
6855             history.  Also: Increment maptick when starting a mapping from
6856             typed characters to avoid a just added search string being
6857             overwritten or removed from history.
6858 Files:      src/ex_getln.c, src/getchar.c
6860 Patch 5.6.017
6861 Problem:    ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the
6862             line. (Calder)
6863 Solution:   Replace the backslash with a CTRL-V internally. (Stephen P. Wall)
6864 Files:      src/ex_cmds.c
6866 Patch 5.6.018
6867 Problem:    ":help [:digit:]" takes a long time to jump to the wrong place.
6868 Solution:   Insert a backslash to avoid the special meaning of '[]'.
6869 Files:      src/ex_cmds.c
6871 Patch 5.6.019
6872 Problem:    "snd.c", "snd.java", etc. were recognized as "mail" filetype.
6873 Solution:   Make pattern for mail filetype more strict.
6874 Files:      runtime/filetype.vim
6876 Patch 5.6.020 (extra)
6877 Problem:    The DJGPP version eats processor time (Walter Briscoe).
6878 Solution:   Call __dpmi_yield() in the busy-wait loop.
6879 Files:      src/os_msdos.c
6881 Patch 5.6.021
6882 Problem:    When 'selection' is "exclusive", a double mouse click in Insert
6883             mode doesn't select last char in line. (Lutz)
6884 Solution:   Allow leaving the cursor on the NUL past the line in this case.
6885 Files:      src/edit.c
6887 Patch 5.6.022
6888 Problem:    ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work.
6889 Solution:   Re-insert the backslash before the '~'.
6890 Files:      src/ex_getln.c
6892 Patch 5.6.023 (extra)
6893 Problem:    Various warnings for the Ming compiler.
6894 Solution:   Changes to avoid the warnings. (Bill McCarthy)
6895 Files:      src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c,
6896             src/syntax.c, src/vim.rc
6898 Patch 5.6.024 (extra)
6899 Problem:    Win32 console: Entering CTRL-_ requires the shift key. (Kotchan)
6900 Solution:   Specifically catch keycode 0xBD, like the GUI.
6901 Files:      src/os_win32.c
6903 Patch 5.6.025
6904 Problem:    GTK GUI: Starting the GUI could be interrupted by a SIGWINCH.
6905             (Nils Lohner)
6906 Solution:   Repeat the read() call to get the gui_in_use value when
6907             interrupted by a signal.
6908 Files:      src/gui.c
6910 Patch 5.6.026 (extra)
6911 Problem:    Win32 GUI: Toolbar bitmaps are searched for in
6912             $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith
6913             Radebaugh)
6914 Solution:   Use $VIM/bitmaps for both, because these are not part of the
6915             distribution but defined by the user.
6916 Files:      src/gui_w32.c, runtime/doc/gui.txt
6918 Patch 5.6.027
6919 Problem:    TCL: Crash when using a Tcl script (reported for Win32).
6920 Solution:   Call Tcl_FindExecutable() in main(). (Brent Fulgham)
6921 Files:      src/main.c
6923 Patch 5.6.028
6924 Problem:    Xterm patch level 126 sends codes for mouse scroll wheel.
6925             Fully works with xterm patch level 131.
6926 Solution:   Recognize the codes for button 4 (0x60) and button 5 (0x61).
6927 Files:      src/term.c
6929 Patch 5.6.029
6930 Problem:    GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes
6931             Zellner)
6932 Solution:   Add support for shortcut keys. (Marcin Dalecki)
6933 Files:      src/gui_gtk.c
6935 Patch 5.6.030
6936 Problem:    When closing a window and 'ea' is set, Vim can crash. (Yasuhiro
6937             Matsumoto)
6938 Solution:   Set "curbuf" to a valid value in win_close().
6939 Files:      src/window.c
6941 Patch 5.6.031
6942 Problem:    Multi-byte: When a double-byte character ends in CSI, Vim waits
6943             for another character to be typed.
6944 Solution:   Recognize the CSI as the second byte of a character and don't wait
6945             for another one. (Yasuhiro Matsumoto)
6946 Files:      src/getchar.c
6948 Patch 5.6.032
6949 Problem:    Functions with an argument that is a line number don't all accept
6950             ".", "$", etc. (Ralf Arens)
6951 Solution:   Add get_art_lnum() and use it for setline(), line2byte() and
6952             synID().
6953 Files:      src/eval.c
6955 Patch 5.6.033
6956 Problem:    Multi-byte: "f " sometimes skips to the second space.  (Sung-Hyun
6957             Nam)
6958 Solution:   Change logic in searchc() to skip trailing byte of a double-byte
6959             character.
6960             Also: Ask for second byte when searching for double-byte
6961             character. (Park Chong-Dae)
6962 Files:      src/search.c
6964 Patch 5.6.034 (extra)
6965 Problem:    Compiling with Borland C++ 5.5 fails on tolower() and toupper().
6966 Solution:   Use TO_LOWER() and TO_UPPER() instead.  Also adjust the Makefile
6967             to make using bcc 5.5 easier.
6968 Files:      src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor
6970 Patch 5.6.035
6971 Problem:    Listing the"+comments" feature in the ":version" output depended
6972             on the wrong ID. (Stephen P. Wall)
6973 Solution:   Change "CRYPTV" to "COMMENTS".
6974 Files:      src/version.c
6976 Patch 5.6.036
6977 Problem:    GTK GUI: Copy/paste text doesn't work between gvim and Eterm.
6978 Solution:   Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang)
6979 Files:      src/gui_gtk_x11.c
6981 Patch 5.6.037
6982 Problem:    Multi-byte: Can't use "f" command with multi-byte character in GUI.
6983 Solution:   Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam)
6984 Files:      src/gui_gtk_x11.c, src/multbyte.c
6986 Patch 5.6.038
6987 Problem:    Multi-clicks in GUI are interpreted as a mouse wheel click.  When
6988             'ttymouse' is "xterm" a mouse click is interpreted as a mouse
6989             wheel click.
6990 Solution:   Don't recognize the mouse wheel in check_termcode() in the GUI.
6991             Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63.
6992 Files:      src/term.c, src/os_unix.c
6994 Patch 5.6.039
6995 Problem:    Motif GUI under KDE: When trying to logout, Vim hangs up the
6996             system. (Hermann Rochholz)
6997 Solution:   When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND
6998             property of the window to let the session manager know we finished
6999             saving ourselves.
7000 Files:      src/gui_x11.c
7002 Patch 5.6.040
7003 Problem:    When using ":s" command, matching the regexp is done twice.
7004 Solution:   After copying the matched line, adjust the pointers instead of
7005             finding the match again. (Loic Grenie)  Added vim_regnewptr().
7006 Files:      src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro
7008 Patch 5.6.041
7009 Problem:    GUI: Athena, Motif and GTK don't give more than 10 dialog buttons.
7010 Solution:   Remove the limit on the number of buttons.
7011             Also support the 'v' flag in 'guioptions'.
7012             For GTK: Center the buttons.
7013 Files:      src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c
7015 Patch 5.6.042
7016 Problem:    When doing "vim -u vimrc" and vimrc contains ":q", the cursor in
7017             the terminal can remain off.
7018 Solution:   Call cursor_on() in mch_windexit().
7019 Files:      src/os_unix.c
7021 Patch 5.6.043 (extra)
7022 Problem:    Win32 GUI: When selecting guifont with the dialog, 'guifont'
7023             doesn't include the bold or italic attributes.
7024 Solution:   Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font().
7025 Files:      src/gui_w32.c
7027 Patch 5.6.044 (extra)
7028 Problem:    MS-DOS and Windows: The line that dosinst.exe appends to
7029             autoexec.bat to set PATH is wrong when Vim is in a directory with
7030             an embedded space.
7031 Solution:   Use double quotes for the value when there is an embedded space.
7032 Files:      src/dosinst.c
7034 Patch 5.6.045 (extra) (fixed version)
7035 Problem:    VMS: Various small problems.
7036 Solution:   Many small changes. (Zoltan Arpadffy)
7037             File name modifier ":h" keeps the path separator.
7038             File name modifier ":e" also removes version.
7039             Compile with MAX_FEAT by default.
7040             When checking for autocommands ignore version in file name.
7041             Be aware of file names being case insensitive.
7042             Added vt320 builtin termcap.
7043             Be prepared for an empty default_vim_dir.
7044 Files:      runtime/gvimrc_example.vim, runtime/vimrc_example.vim,
7045             runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c,
7046             src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c,
7047             src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c,
7048             src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c
7050 Patch 5.6.046
7051 Problem:    Systems with backslash in file name: With 'shellslash' set, "vim
7052             */*.c" only uses a slash for the first file name.  (Har'El)
7053 Solution:   Fix slashes in file name arguments after reading the vimrc file.
7054 Files:      src/option.c
7056 Patch 5.6.047
7057 Problem:    $CPPFLAGS is not passed on to ctags configure.
7058 Solution:   Add it. (Walter Briscoe)
7059 Files:      src/config.mk.in, src/Makefile
7061 Patch 5.6.048
7062 Problem:    CTRL-R in Command-line mode is documented to insert text as typed,
7063             but inserts text literally.
7064 Solution:   Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert
7065             literally.  This is consistent with Insert mode.  But characters
7066             that end Command-line mode are inserted literally.
7067 Files:      runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c,
7068             src/ops.c, src/proto/ops.pro
7070 Patch 5.6.049
7071 Problem:    Documentation for [!] after ":ijump" is wrong way around. (Benji
7072             Fisher)
7073 Solution:   Fix the documentation.  Also improve the code to check for a match
7074             after a /* */ comment.
7075 Files:      runtime/doc/tagsearch.txt, src/search.c
7077 Patch 5.6.050
7078 Problem:    Replacing is wrong when replacing a single-byte char with
7079             double-byte char or the other way around.
7080 Solution:   Shift the text after the character when it is replaced.
7081             (Yasuhiro Matsumoto)
7082 Files:      src/normal.c, src/misc1.c
7084 Patch 5.6.051
7085 Problem:    ":tprev" and ":tnext" don't give an error message when trying to
7086             go before the first or beyond the last tag. (Robert Webb)
7087 Solution:   Added error messages.  Also: Delay a second when a file-read
7088             message is going to overwrite an error message, otherwise it won't
7089             be seen.
7090 Files:      src/fileio.c, src/tag.c
7092 Patch 5.6.052
7093 Problem:    Multi-byte: When an Ex command has a '|' or '"' as a second byte,
7094             it terminates the command.
7095 Solution:   Skip second byte of multi-byte char when checking for '|' and '"'.
7096             (Asai Kenichi)
7097 Files:      src/ex_docmd.c
7099 Patch 5.6.053
7100 Problem:    CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius)
7101 Solution:   Escape '|', '"' and '\' in tag names when using CTRL-] and also
7102             for command-line completion.
7103 Files:      src/ex_getln.c, src/normal.c
7105 Patch 5.6.054
7106 Problem:    When using ":e" and ":e #" the cursor is put in the first column
7107             when 'startofline' is set. (Cordell)
7108 Solution:   Use the last known column when 'startofline' is set.
7109             Also, use ECMD_LAST more often to simplify the code.
7110 Files:      src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro
7112 Patch 5.6.055
7113 Problem:    When 'statusline' only contains a text without "%" and doesn't fit
7114             in the window, Vim crashes. (Ron Aaron)
7115 Solution:   Don't use the pointer for the first item if there is no item.
7116 Files:      src/screen.c
7118 Patch 5.6.056 (extra)
7119 Problem:    MS-DOS: F11 and F12 don't work when 'bioskey' is set.
7120 Solution:   Use enhanced keyboard functions. (Vince Negri)
7121             Detect presence of enhanced keybard and set bioskey_read and
7122             bioskey_ready.
7123 Files:      src/os_msdos.c
7125 Patch 5.6.057 (extra)
7126 Problem:    Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off
7127             menus.
7128 Solution:   Use system font instead of a fixed font. (Matsumoto, Muraoka)
7129 Files:      src/gui_w32.c
7131 Patch 5.6.058
7132 Problem:    When the 'a' flag is not in 'guioptions', non-Windows systems
7133             copy Visually selected text to the clipboard/selection on a yank
7134             or delete command anyway.  On Windows it isn't done even when the
7135             'a' flag is included.
7136 Solution:   Respect the 'a' flag in 'guioptions' on all systems.
7137 Files:      src/normal.c
7139 Patch 5.6.059 (extra)
7140 Problem:    When moving the cursor over italic text and the characters spill
7141             over to the cell on the right, that spill-over is deleted.
7142             Noticed in the Win32 GUI, can happen on other systems too.
7143 Solution:   Redraw italic text starting from a blank, like this is already
7144             done for bold text. (Vince Negri)
7145 Files:      src/gui.c, src/gui.h, src/gui_w32.c
7147 Patch 5.6.060
7148 Problem:    Some bold characters spill over the the cell on the left, that
7149             spill-over can remain sometimes.
7150 Solution:   Redraw a characters when the next character was bold and needs
7151             redrawing. (Robert Webb)
7152 Files:      src/screen.c
7154 Patch 5.6.061
7155 Problem:    When xterm sends 8-bit controls, recognizing the version response
7156             doesn't work.
7157             When using CSI instead of <Esc>[ for the termcap color codes,
7158             using 16 colors doesn't work. (Neil Bird)
7159 Solution:   Also accept CSI in place of <Esc>[ for the version string.
7160             Also check for CSI when handling colors 8-15 in term_color().
7161             Use CSI for builtin xterm termcap entries when 'term' contains
7162             "8bit".
7163 Files:      runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c,
7164             src/os_unix.c, src/proto/option.pro, src/proto/term.pro
7166 Patch 5.6.062
7167 Problem:    The documentation says that setting 'smartindent' doesn't have an
7168             effect when 'cindent' is set, but it does make a difference for
7169             lines starting with "#". (Neil Bird)
7170 Solution:   Really ignore 'smartindent' when 'cindent' is set.
7171 Files:      src/misc1.c, src/ops.c
7173 Patch 5.6.063
7174 Problem:    Using "I" in Visual-block mode doesn't accept a count. (Johannes
7175             Zellner)
7176 Solution:   Pass the count on to do_insert() and edit(). (Allan Kelly)
7177 Files:      src/normal.c, src/ops.c, src/proto/ops.pro
7179 Patch 5.6.064
7180 Problem:    MS-DOS and Win32 console: Mouse doesn't work correctly after
7181             including patch 5.6.28. (Vince Negri)
7182 Solution:   Don't check for mouse scroll wheel when the mouse code contains
7183             the number of clicks.
7184 Files:      src/term.c
7186 Patch 5.6.065
7187 Problem:    After moving the cursor around in Insert mode, typing a space can
7188             still trigger an abbreviation. (Benji Fisher)
7189 Solution:   Don't check for an abbreviation after moving around in Insert mode.
7190 Files:      src/edit.c
7192 Patch 5.6.066
7193 Problem:    Still a few bold character spill-over remains after patch 60.
7194 Solution:   Clear character just in front of blanking out rest of the line.
7195             (Robert Webb)
7196 Files:      src/screen.c
7198 Patch 5.6.067
7199 Problem:    When a file name contains a NL, the viminfo file is corrupted.
7200 Solution:   Use viminfo_writestring() to convert the NL to CTRL-V n.
7201             Also fix the Buffers menu and listing a menu name with a newline.
7202 Files:      runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c
7204 Patch 5.6.068
7205 Problem:    Compiling the Perl interface doesn't work with Perl 5.6.0.
7206             (Bernhard Rosenkraenzer)
7207 Solution:   Also check xs_apiversion for the version number when prepending
7208             defines for PL_*.
7209 Files:      src/Makefile
7211 Patch 5.6.069
7212 Problem:    "go" doesn't always end up at the right character when
7213             'fileformat' is "dos". (Bruce DeVisser)
7214 Solution:   Correct computations in ml_find_line_or_offset().
7215 Files:      src/memline.
7217 Patch 5.6.070 (depends on 5.6.068)
7218 Problem:    Compiling the Perl interface doesn't work with Perl 5.6.0.
7219             (Bernhard Rosenkraenzer)
7220 Solution:   Simpler check instead of the one from patch 68.
7221 Files:      src/Makefile
7223 Patch 5.6.071
7224 Problem:    "A" in Visual block mode on a Tab positions the cursor one char to
7225             the right. (Michael Haumann)
7226 Solution:   Correct the column computation in op_insert().
7227 Files:      src/ops.c
7229 Patch 5.6.072
7230 Problem:    When starting Vim with "vim +startinsert", it enters Insert mode
7231             only after typing the first command. (Andrew Pimlott)
7232 Solution:   Insert a dummy command in the stuff buffer.
7233 Files:      src/main.c
7235 Patch 5.6.073 (extra) (depends on 5.6.034)
7236 Problem:    Win32 GUI: When compiled with Bcc 5.5 menus don't work.
7237             In dosinst.c toupper() and tolower() give an "internal compiler
7238             error" for Bcc 5.5.
7239 Solution:   Define WINVER to 4 to avoid compiling for Windows 2000. (Dan
7240             Sharp)  Also cleaned up compilation arguments.
7241             Use our own implementation of toupper() in dosinst.c.  Use
7242             mytoupper() instead of tolower().
7243 Files:      src/Makefile.bor, src/dosinst.c
7245 Patch 5.6.074 (extra)
7246 Problem:    Entering CSI directly doesn't always work, because it's recognized
7247             as the start of a special key.  Mostly a problem with multi-byte
7248             in the GUI.
7249 Solution:   Use K_CSI for a typed CSI character.  Use <CSI> for a normal CSI,
7250             <xCSI> for a CSI typed in the GUI.
7251 Files:      runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c,
7252             src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c,
7253             src/keymap.h, src/misc2.c
7255 Patch 5.6.075
7256 Problem:    When using "I" or "A" in Visual block mode while 'sts' is set may
7257             change spaces to a Tab the inserted text is not correct. (Mike
7258             Steed)  And some other problems when using "A" to append after the
7259             end of the line.
7260 Solution:   Check for change in spaces/tabs after inserting the text.  Append
7261             spaces to fill the gap between the end-of-line and the right edge
7262             of the block.
7263 Files:      src/ops.c
7265 Patch 5.6.076
7266 Problem:    GTK GUI: Mapping <M-Space> doesn't work.
7267 Solution:   Don't use the "Alt" modifier twice in key_press_event().
7268 Files:      src/gui_gtk_x11.c
7270 Patch 5.6.077
7271 Problem:    GUI: When interrupting an external program with CTRL-C, gvim might
7272             crash. (Benjamin Korvemaker)
7273 Solution:   Avoid using a NULL pointer in ui_inchar_undo().
7274 Files:      src/ui.c
7276 Patch 5.6.078
7277 Problem:    Locale doesn't always work on FreeBSD. (David O'Brien)
7278 Solution:   Link with the "xpg4" library when available.
7279 Files:      src/configure.in, src/configure
7281 Patch 5.6.079
7282 Problem:    Vim could crash when several Tcl interpreters are created and
7283             destroyed.
7284 Solution:   handle the "exit" command and nested ":tcl" commands better. (Ingo
7285             Wilken)
7286 Files:      runtime/doc/if_tcl.txt, src/if_tcl.c
7288 Patch 5.6.080
7289 Problem:    When jumping to a tag, generating the tags file and jumping to the
7290             same tag again uses the old search pattern. (Sung-Hyun Nam)
7291 Solution:   Flush cached tag matches when executing an external command.
7292 Files:      src/misc2.c, src/proto/tag.pro, src/tag.c
7294 Patch 5.6.081
7295 Problem:    ":syn include" uses a level for the included file, this confuses
7296             contained items included at the same level.
7297 Solution:   Use a unique tag for each included file.  Changed sp_syn_inc_lvl
7298             to sp_syn_inc_tag. (Scott Bigham)
7299 Files:      src/syntax.c, src/structs.h
7301 Patch 5.6.082
7302 Problem:    When using cscope, Vim can crash.
7303 Solution:   Initialize tag_fname in find_tags(). (Anton Blanchard)
7304 Files:      src/tag.c
7306 Patch 5.6.083 (extra)
7307 Problem:    Win32: The visual beep can't be seen. (Eric Roesinger)
7308 Solution:   Flush the output before waiting with GdiFlush(). (Maurice S. Barnum)
7309             Also: Allow specifying the delay in t_vb for the GUI.
7310 Files:      src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c,
7311             src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc,
7312             src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro,
7313             src/proto/gui_mac.pro, src/proto/gui_riscos.pro,
7314             src/proto/gui_w32.pro, src/proto/gui_x11.pro,
7315             src/proto/gui_beos.pro
7317 Patch 5.6.084 (depends on 5.6.074)
7318 Problem:    GUI: Entering CSI doesn't always work for Athena and Motif.
7319 Solution:   Handle typed CSI as <xCSI> (forgot this bit in 5.6.074).
7320 Files:      src/gui_x11.c
7322 Patch 5.6.085
7323 Problem:    Multi-byte: Using "r" to replace a double-byte char with a
7324             single-byte char moved the cursor one character. (Matsumoto)
7325             Also, using a count when replacing a single-byte char with a
7326             double-byte char didn't work.
7327 Solution:   Don't use del_char() to delete the second byte.
7328             Get "ptr" again after calling ins_char().
7329 Files:      src/normal.c
7331 Patch 5.6.086 (extra)
7332 Problem:    Win32: When using libcall() and the returned value is not a valid
7333             pointer, Vim crashes.
7334 Solution:   Use IsBadStringPtr() to check if the pointer is valid.
7335 Files:      src/os_win32.c
7337 Patch 5.6.087
7338 Problem:    Multi-byte: Commands and messages with multi-byte characters are
7339             displayed wrong.
7340 Solution:   Detect double-byte characters. (Yasuhiro Matsumoto)
7341 Files:      src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c
7343 Patch 5.6.088
7344 Problem:    Multi-byte with Motif or Athena: The message "XIM requires
7345             fontset" is annoying when Vim was compiled with XIM support but it
7346             is not being used.
7347 Solution:   Remove that message.
7348 Files:      src/multbyte.c
7350 Patch 5.6.089
7351 Problem:    On non-Unix systems it's possible to overwrite a read-only file
7352             without using "!".
7353 Solution:   Check if the file permissions allow overwriting before moving the
7354             file to become the backup file.
7355 Files:      src/fileio.c
7357 Patch 5.6.090
7358 Problem:    When editing a file in "/home/dir/home/dir" this was replaced with
7359             "~~".  (Andreas Jellinghaus)
7360 Solution:   Replace the home directory only once in home_replace().
7361 Files:      src/misc1.c
7363 Patch 5.6.091
7364 Problem:    When editing many "no file" files, can't create swap file, because
7365             .sw[a-p] have all been used.  (Neil Bird)
7366 Solution:   Also use ".sv[a-z]", ".su[a-z]", etc.
7367 Files:      src/memline.c
7369 Patch 5.6.092
7370 Problem:    FreeBSD: When setting $TERM to a non-valid terminal name, Vim
7371             hangs in tputs().
7372 Solution:   After tgetent() returns an error code, call it again with the
7373             terminal name "dumb".  This apparently creates an environment in
7374             which tputs() doesn't fail.
7375 Files:      src/term.c
7377 Patch 5.6.093 (extra)
7378 Problem:    Win32 GUI: "ls | gvim -" will show a message box about reading
7379             stdin when Vim exits. (Donohue)
7380 Solution:   Don't write a message about the file read from stdin until the GUI
7381             has started.
7382 Files:      src/fileio.c
7384 Patch 5.6.094
7385 Problem:    Problem with multi-byte string for ":echo var".
7386 Solution:   Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam)
7387             Also make do_echo() aware of multi-byte characters.
7388 Files:      src/eval.c, src/message.c
7390 Patch 5.6.095
7391 Problem:    With an Emacs TAGS file that include another a relative path
7392             doesn't always work.
7393 Solution:   Use expand_tag_fname() on the name of the included file.
7394             (Utz-Uwe Haus)
7395 Files:      src/tag.c
7397 Patch 5.6.096
7398 Problem:    Unix: When editing many files, startup can be slow. (Paul
7399             Ackersviller)
7400 Solution:   Halve the number of stat() calls used to add a file to the buffer
7401             list.
7402 Files:      src/buffer.c
7404 Patch 5.7a.001
7405 Problem:    GTK doesn't respond on drag&drop from ROX-Filer.
7406 Solution:   Add "text/uri-list" target. (Thomas Leonard)
7407             Also: fix problem with checking for trash arguments.
7408 Files:      src/gui_gtk_x11.c
7410 Patch 5.7a.002
7411 Problem:    Multi-byte: 'showmatch' is performed when second byte of an
7412             inserted double-byte char is a paren or brace.
7413 Solution:   Check IsTrailByte() before calling showmatch(). (Taro Muraoka)
7414 Files:      src/misc1.c
7416 Patch 5.7a.003
7417 Problem:    Multi-byte: After using CTRL-O in Insert mode with the cursor at
7418             the end of the line on a multi-byte character the cursor moves to
7419             the left.
7420 Solution:   Check for multi-byte character at end-of-line. (Taro Muraoka)
7421             Also: fix cls() to detect a double-byte character. (Chong-Dae Park)
7422 Files:      src/edit.c, src/search.c
7424 Patch 5.7a.004
7425 Problem:    When reporting the search pattern offset, the string could be
7426             unterminated, which may cause a crash.
7427 Solution:   Terminate the string for the search offset. (Stephen P. Wall)
7428 Files:      src/search.c
7430 Patch 5.7a.005
7431 Problem:    When ":s//~/" doesn't find a match it reports "[NULL]" for the
7432             pattern.
7433 Solution:   Use get_search_pat() to obtain the actually used pattern.
7434 Files:      src/ex_cmds.c, src/proto/search.pro, src/search.c
7436 Patch 5.7a.006 (extra)
7437 Problem:    VMS: Various problems, also with the VAXC compiler.
7438 Solution:   In many places use the Unix code for VMS too.
7439             Added time, date and compiler version to version message.
7440             (Zoltan Arpadffy)
7441 Files:      src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h,
7442             src/main.c, src/message.c, src/misc1.c, src/os_vms.c,
7443             src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h,
7444             src/proto/os_vms.pro, src/proto/version.pro, src/term.c,
7445             src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c
7447 Patch 5.7a.007
7448 Problem:    Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C.
7449 Solution:   Only use "intr_char" when it has been set.
7450 Files:      src/gui_x11.c
7452 Patch 5.7a.008
7453 Problem:    GTK GUI: When using CTRL-L the screen is redrawn twice, causing
7454             trouble for bold characters.  Also happens when moving with the
7455             scrollbar.  Best seen when 'writedelay' is non-zero.
7456             When starting the GUI with ":gui" the screen is redrawn once with
7457             the wrong colors.
7458 Solution:   Only set the geometry hints when the window size really changed.
7459             This avoids setting it each time the scrollbar is forcefully
7460             redrawn.
7461             Don't redraw in expose_event() when gui.starting is still set.
7462 Files:      src/gui_gtk_x11.c
7465 ==============================================================================
7466 VERSION 5.8                                             *version-5.8*
7468 Version 5.8 is a bug-fix version of 5.7.
7471 Changed                                                 *changed-5.8*
7472 -------
7474 Ctags is no longer included with Vim.  It has grown into a project of its own.
7475 You can find it here:  http://ctags.sf.net.  It is highly recommended as a Vim
7476 companion when you are writing programs.
7479 Added                                                   *added-5.8*
7480 -----
7482 New syntax files:
7483 acedb           AceDB (Stewart Morris)
7484 aflex           Aflex (Mathieu Clabaut)
7485 antlr           Antlr (Mathieu Clabaut)
7486 asm68k          68000 Assembly (Steve Wall)
7487 automake        Automake (John Williams)
7488 ayacc           Ayacc (Mathieu Clabaut)
7489 b               B (Mathieu Clabaut)
7490 bindzone        BIND zone (glory hump)
7491 blank           Blank (Rafal Sulejman)
7492 cfg             Configure files (Igor Prischepoff)
7493 changelog       ChangeLog (Gediminas Paulauskas)
7494 cl              Clever (Phil Uren)
7495 crontab         Crontab (John Hoelzel)
7496 csc             Essbase script (Raul Segura Acevedo)
7497 cynlib          Cynlib(C++) (Phil Derrick)
7498 cynpp           Cyn++ (Phil Derrick)
7499 debchangelog    Debian Changelog (Wichert Akkerman)
7500 debcontrol      Debian Control (Wichert Akkerman)
7501 dns             DNS zone file (Jehsom)
7502 dtml            Zope's DTML (Jean Jordaan)
7503 dylan           Dylan, Dylan-intr and Dylan-lid (Brent Fulgham)
7504 ecd             Embedix Component Description (John Beppu)
7505 fgl             Informix 4GL (Rafal Sulejman)
7506 foxpro          FoxPro (Powing Tse)
7507 gsp             GNU Server Pages (Nathaniel Harward)
7508 gtkrc           GTK rc (David Necas)
7509 hercules        Hercules (Avant! Corporation) (Dana Edwards)
7510 htmlos          HTML/OS by Aestiva (Jason Rust)
7511 inittab         SysV process control (David Necas)
7512 iss             Inno Setup (Dominique Stephan)
7513 jam             Jam (Ralf Lemke)
7514 jess            Jess (Paul Baleme)
7515 lprolog         LambdaProlog (Markus Mottl)
7516 ia64            Intel Itanium (parth malwankar)
7517 kix             Kixtart (Nigel Gibbs)
7518 mgp             MaGic Point (Gerfried Fuchs)
7519 mason           Mason (HTML with Perl) (Andrew Smith)
7520 mma             Mathematica (Wolfgang Waltenberger)
7521 nqc             Not Quite C (Stefan Scherer)
7522 omnimark        Omnimark (Paul Terray)
7523 openroad        OpenROAD (Luis Moreno Serrano)
7524 named           BIND configuration (glory hump)
7525 papp            PApp (Marc Lehmann)
7526 pfmain          Postfix main config (Peter Kelemen)
7527 pic             PIC assembly (Aleksandar Veselinovic)
7528 ppwiz           PPWizard (Stefan Schwarzer)
7529 progress        Progress (Phil Uren)
7530 psf             Product Specification File (Rex Barzee)
7531 r               R (Tom Payne)
7532 registry        MS-Windows registry (Dominique Stephan)
7533 robots          Robots.txt (Dominique Stephan)
7534 rtf             Rich Text Format (Dominique Stephan)
7535 setl            SETL (Alex Poylisher)
7536 sgmldecl        SGML Declarations (Daniel A. Molina W.)
7537 sinda           Sinda input (Adrian Nagle)
7538 sindacmp        Sinda compare (Adrian Nagle)
7539 sindaout        Sinda output (Adrian Nagle)
7540 smith           SMITH (Rafal Sulejman)
7541 snobol4         Snobol 4 (Rafal Sulejman)
7542 strace          Strace (David Necas)
7543 tak             TAK input (Adrian Nagle)
7544 takcmp          TAK compare (Adrian Nagle)
7545 takout          TAK output (Adrian Nagle)
7546 tasm            Turbo assembly (FooLman)
7547 texmf           TeX configuration (David Necas)
7548 trasys          Trasys input (Adrian Nagle)
7549 tssgm           TSS Geometry (Adrian Nagle)
7550 tssop           TSS Optics (Adrian Nagle)
7551 tsscl           TSS Command line (Adrian Nagle)
7552 virata          Virata Configuration Script (Manuel M.H. Stol)
7553 vsejcl          VSE JCL (David Ondrejko)
7554 wdiff           Wordwise diff (Gerfried Fuchs)
7555 wsh             Windows Scripting Host (Paul Moore)
7556 xkb             X Keyboard Extension (David Necas)
7558 Renamed php3 to php, it now also supports php4 (Lutz Eymers)
7560 Patch 5.7.015
7561 Problem:    Syntax files for Vim 6.0 can't be used with 5.x.
7562 Solution:   Add the "default" argument to the ":highlight" command: Ignore the
7563             command if highlighting was already specified.  
7564 Files:      src/syntax.c
7566 Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done
7567 when Vim is starting up.  Reduces the startup time of the GUI.
7570 Fixed                                                   *fixed-5.8*
7571 -----
7573 Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink.
7575 Fixed compiling under NeXT. (Jeroen C.M. Goudswaard)
7577 optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C').
7579 Tcl interpreter: "buffer" command didn't check for precense of an argument.
7580 (Dave Bodenstab)
7582 dosinst.c: Added checks for too long file name.
7584 Amiga: a file name starting with a colon was considered absolute but it isn't.
7585 Amiga: ":pwd" added a slash when in the root of a drive.
7587 Macintosh: Warnings for unused variables. (Bernhard Pruemmer)
7589 Unix: When catching a deadly signal, handle it in such a way that it's
7590 unlikely that Vim will hang.  Call _exit() instead of exit() in case of a
7591 severe problem.
7593 Setting the window title from nothing to something didn't work after patch 29.
7595 Check for ownership of .exrc and .vimrc was done with stat().  Use lstat() as
7596 well for extra security.
7598 Win32 GUI: Printing a file with 'fileformat' "unix" didn't work.  Set
7599 'fileformat' to "dos" before writing the temp file.
7601 Unix: Could start waiting for a character when checking for a CTRL-C typed
7602 when an X event is received.
7604 Could not use Perl and Python at the same time on FreeBSD, because Perl used
7605 "-lc" and Python used the threaded C library.
7607 Win32: The Mingw compiler gave a few warning messages.
7609 When using "ZZ" and an autocommand for writing uses an abbreviation it didn't
7610 work.  Don't stuff the ":x" command but execute it directly. (Mikael Berthe)
7612 VMS doesn't always have lstat(), added an #ifdef around it.
7614 Added a few corrections for the Macintosh. (Axel Kielhorn)
7616 Win32: Gvimext could not edit more than a few files at once, the length of the
7617 argument was fixed.
7620 Previosly released patches for Vim 5.7:
7622 Patch 5.7.001
7623 Problem:    When the current buffer is crypted, and another modified buffer
7624             isn't, ":wall" will encrypt the other buffer.
7625 Solution:   In buf_write() use "buf" instead of "curbuf" to check for the
7626             crypt key.
7627 Files:      src/fileio.c
7629 Patch 5.7.002
7630 Problem:    When 'showmode' is set, using "CTRL-O :r file" waits three seconds
7631             before displaying the read text. (Wichert Akkerman)
7632 Solution:   Set "keep_msg" to the file message so that the screen is redrawn
7633             before the three seconds wait for displaying the mode message.
7634 Files:      src/fileio.c
7636 Patch 5.7.003
7637 Problem:    Searching for "[[:cntrl:]]" doesn't work.
7638 Solution:   Exclude NUL from the matching characters, it terminates the list.
7639 Files:      src/regexp.c
7641 Patch 5.7.004
7642 Problem:    GTK: When selecting a new font, Vim can crash.
7643 Solution:   In gui_mch_init_font() unreference the old font, not the new one.
7644 Files:      src/gui_gtk_x11.c
7646 Patch 5.7.005
7647 Problem:    Multibyte: Inserting a wrapped line corrupts kterm screen.
7648             Pasting TEXT/COMPOUND_TEXT into Vim does not work.
7649             On Motif no XIM status line is displayed even though it is
7650             available.
7651 Solution:   Don't use xterm trick for wrapping lines for multibyte mode.
7652             Correct a missing "break", added TEXT/COMPOUND_TEXT selection
7653             request.
7654             Add XIMStatusArea fallback code.
7655             (Katsuhito Nagano)
7656 Files:      src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c
7658 Patch 5.7.006
7659 Problem:    GUI: redrawing the non-Visual selection is wrong when the window
7660             is unobscured. (Jean-Pierre Etienne)
7661 Solution:   Redraw the selection properly and don't clear it.  Added "len"
7662             argument to clip_may_redraw_selection().
7663 Files:      src/gui.c, src/ui.c, src/proto/ui.pro
7665 Patch 5.7.007
7666 Problem:    Python: Crash when using the current buffer twice.
7667 Solution:   Increase the reference count for buffer and window objects.
7668             (Johannes Zellner)
7669 Files:      src/if_python.c
7671 Patch 5.7.008
7672 Problem:    In Ex mode, backspacing over the first TAB doesn't work properly.
7673             (Wichert Akkerman)
7674 Solution:   Switch the cursor on before printing the newline.
7675 Files:      src/ex_getln.c
7677 Patch 5.7.009 (extra)
7678 Problem:    Mac: Crash when using a long file.
7679 Solution:   Don't redefine malloc() and free(), because it will break using
7680             realloc().
7681 Files:      src/os_mac.h
7683 Patch 5.7.010
7684 Problem:    When using CTRL-A on a very long number Vim can crash.  (Michael
7685             Naumann)
7686 Solution:   Truncate the length of the new number to avoid a buffer overflow.
7687 Files:      src/ops.c
7689 Patch 5.7.011 (extra)
7690 Problem:    Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed.
7691 Solution:   Output each character separately, to avoid that Windows reverses
7692             the text for some fonts. (Ron Aaron)
7693 Files:      src/gui_w32.c
7695 Patch 5.7.012
7696 Problem:    When using "-complete=buffer" for ":command" the user command
7697             fails.
7698 Solution:   In a user command don't replace the buffer name with a count for
7699             the  buffer number.
7700 Files:      src/ex_docmd.c
7702 Patch 5.7.013
7703 Problem:    "gD" didn't always find a match in the first line, depending on
7704             the column the search started at.
7705 Solution:   Reset the column to zero before starting to search.
7706 Files:      src/normal.c
7708 Patch 5.7.014
7709 Problem:    Rot13 encoding was done on characters with accents, which is
7710             wrong. (Sven Gottwald)
7711 Solution:   Only do rot13 encoding on ASCII characters.
7712 Files:      src/ops.c
7714 Patch 5.7.016
7715 Problem:    When hitting 'n' for a ":s///c" command, the ignore-case flag was
7716             not restored, some matches were skipped. (Daniel Blaustein)
7717 Solution:   Restore the reg_ic variable when 'n' was hit.
7718 Files:      src/ex_cmds.c
7720 Patch 5.7.017
7721 Problem:    When using a Vim script for Vim 6.0 with <SID> before a function
7722             name, it produces an error message even when inside an "if version
7723             >= 600".  (Charles Campbell)
7724 Solution:   Ignore errors in the function name when the function is not going
7725             to be defined.
7726 Files:      src/eval.c
7728 Patch 5.7.018
7729 Problem:    When running "rvim" or "vim -Z" it was still possible to execute a
7730             shell command with system() and backtick-expansion. (Antonios A.
7731             Kavarnos)
7732 Solution:   Disallow executing a shell command in get_cmd_output() and
7733             mch_expand_wildcards().
7734 Files:      src/misc1.c, src/os_unix.c
7736 Patch 5.7.019
7737 Problem:    Multibyte: In a substitute string, a multi-byte character isn't
7738             skipped properly, can be a problem when the second byte is a
7739             backslash.
7740 Solution:   Skip an extra byte for a double-byte character. (Muraoka Taro)
7741 Files:      src/ex_cmds.c
7743 Patch 5.7.020
7744 Problem:    Compilation doesn't work on MacOS-X.
7745 Solution:   Add a couple of #ifdefs. (Jamie Curmi)
7746 Files:      src/regexp.c, src/ctags/general.h
7748 Patch 5.7.021
7749 Problem:    Vim sometimes produces a beep when started in an xterm.  Only
7750             happens when compiled without mouse support.
7751 Solution:   Requesting the xterm version results in a K_IGNORE.  This wasn't
7752             handled when mouse support is disabled.  Accept K_IGNORE always.
7753 Files:      src/normal.c
7755 Patch 5.7.022
7756 Problem:    %v in 'statusline' is not displayed when it's equal to %c.
7757 Solution:   Check if %V or %v is used and handle them differently.
7758 Files:      src/screen.c
7760 Patch 5.7.023
7761 Problem:    Crash when a WinLeave autocommand deletes the buffer in the other
7762             window.
7763 Solution:   Check that after executing the WinLeave autocommands there still
7764             is a window to be closed.  Also update the test that was supposed
7765             to check for this problem.
7766 Files:      src/window.c, testdir/test13.in, testdir/test13.ok
7768 Patch 5.7.024
7769 Problem:    Evaluating an expression for 'statusline' can have side effects.
7770 Solution:   Evaluate the expression in a sandbox.
7771 Files:      src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c,
7772             src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c,
7773             src/screen.c, src/undo.c
7775 Patch 5.7.025 (fixed)
7776 Problem:    Creating a temp file has a race condition.
7777 Solution:   Create a private directory to write the temp files in.
7778 Files:      src/fileio.c, src/misc1.c, src/proto/misc1.pro,
7779             src/proto/fileio.pro, src/memline.c, src/os_unix.h
7781 Patch 5.7.026 (extra)
7782 Problem:    Creating a temp file has a race condition.
7783 Solution:   Create a private directory to write the temp files in.
7784             This is the extra part of patch 5.7.025.
7785 Files:      src/os_msdos.h
7787 Patch 5.7.027
7788 Problem:    Starting to edit a file can cause a crash.  For example when in
7789             Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and
7790             then <CR>, which edits a help file. (Robert Bogomip)
7791 Solution:   Check if keep_msg is NULL before copying it.
7792 Files:      src/fileio.c
7794 Patch 5.7.028
7795 Problem:    Creating a backup or swap file could fail in rare situations.
7796 Solution:   Use O_EXCL for open().
7797 Files:      src/fileio.c, src/memfile.c
7799 Patch 5.7.029
7800 Problem:    Editing a file with an extremely long name crashed Vim.
7801 Solution:   Check for length of the name when setting the window title.
7802 Files:      src/buffer.c
7804 Patch 5.7.030
7805 Problem:    A ":make" or ":grep" command with a very long argument could cause
7806             a crash.
7807 Solution:   Allocate the buffer for the shell command.
7808 Files:      src/ex_docmd.c
7811  vim:ts=8:sw=8:tw=78: