# Vim documentation: version6

main help file

    *version6.txt*  For Vim version 6.0.  Last change: 2001 Sep 26

    		  VIM REFERENCE MANUAL    by Bram Moolenaar

    Welcome to Vim Version 6.0!  A large number of features has been added.  This
    file mentions all the new items that have been added, changes to existing
    features and bug fixes compared to Vim 5.x.

    See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0.
    See |version4.txt| for differences between Vim 3.0 and Vim 4.0.
    See |version5.txt| for differences between Vim 4.0 and Vim 5.0.

    INCOMPATIBLE CHANGES			|incompatible-6|

    Cursor position in Visual mode		|curpos-visual|
    substitute command Vi compatible	|substitute-CR|
    global option values introduced		|new-global-values|
    'fileencoding' changed			|fileencoding-changed|
    Digraphs changed			|digraphs-changed|
    Filetype detection changed		|filetypedetect-changed|
    Unlisted buffers introduced		|new-unlisted-buffers|
    CTRL-U in Command-line mode changed	|CTRL-U-changed|
    Ctags gone				|ctags-gone|
    Documentation reorganized		|documentation-6|
    Modeless selection and clipboard	|modeless-and-clipboard|
    Small incompatibilities			|incomp-small-6|

    NEW FEATURES

    Folding					|new-folding|
    Vertically split windows		|new-vertsplit|
    Diff mode				|new-diff-mode|
    Easy Vim: click-and-type		|new-evim|
    User manual				|new-user-manual|
    Flexible indenting			|new-indent-flex|
    Extended search patterns		|new-searchpat|
    UTF-8 support				|new-utf-8|
    Multi-language support			|new-multi-lang|
    Plugin support				|new-plugins|
    Filetype plugins			|new-filetype-plugins|
    File browser				|new-file-browser|
    Editing files over a network		|new-network-files|
    Window for command-line editing		|new-cmdwin|
    Debugging mode				|new-debug-mode|
    Cursor in virtual position		|new-virtedit|
    Debugger interface			|new-debug-itf|
    Communication between Vims		|new-vim-server|
    Buffer type options			|new-buftype|
    Printing				|new-printing|
    Ports					|ports-6|
    Quickfix extended			|quickfix-6|
    Operator modifiers			|new-operator-mod|
    Search Path				|new-search-path|
    Writing files improved			|new-file-writing|
    Argument list				|new-argument-list|
    Restore a View				|new-View|
    Color schemes				|new-color-schemes|
    Various new items			|new-items-6|

    IMPROVEMENTS				|improvements-6|

    COMPILE TIME CHANGES			|compile-changes-6|

    BUG FIXES				|bug-fixes-6|

    ==============================================================================

    INCOMPATIBLE CHANGES				*incompatible-6*

    These changes are incompatible with previous releases.  Check this list if you
    run into a problem when upgrading from Vim 5.x to 6.0

    Cursor position in Visual mode			*curpos-visual*

    When going from one window to another window on the same buffer while in
    Visual mode, the cursor position of the other window is adjusted to keep the
    same Visual area.  This can be used to set the start of the Visual area in one
    window and the end in another.  In vim 5.x the cursor position of the other
    window would be used, which could be anywhere and was not very useful.

    Substitute command Vi compatible		*substitute-CR*

    The substitute string (the "to" part of the substitute command) has been made
    Vi compatible.  Previously a CTRL-V had a special meaning and could be used to
    prevent a <CR> to insert a line break.  This made it impossible to insert a
    CTRL-V before a line break.  Now a backslash is used to prevent a <CR> to
    cause a line break.  Since the number of backslashes is halved, it is still
    possible to insert a line break at the end of the line.  This now works just
    like Vi, but it's not compatible with Vim versions before 6.0.

    When a ":s" command doesn't make any substitutions, it no longer sets the '[
    and '] marks.  This is not related to Vi, since it doesn't have these marks.

    Global option values introduced			*new-global-values*

    There are now global values for options which are local to a buffer or window.
    Previously the local options were copied from one buffer to another.  When
    editing another file this could cause option values from a modeline to be used
    for the wrong file.  Now the global values are used when entering a buffer
    that has not been used before.  Also, when editing another buffer in a window,
    the local window options are reset to their global values.  The ":set" command
    sets both the local and global values, this is still compatible.  But a
    modeline only sets the local value, this is not backwards compatible.

    ":let &opt = val" now sets the local and global values, like ":set".  New
    commands have been added to set the global or local value:
    	:let &opt = val		like ":set"
    	:let &g:opt = val	like ":setglobal"
    	:let &l:opt = val	like ":setlocal"

    'fileencoding' changed				*fileencoding-changed*

    'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim.
    This was a bit strange, because it was local to a buffer and worked for all
    buffers.  It could never be different between buffers, because it changed the
    way text in all buffers was interpreted.
    It is now used for the encoding of the file related to the buffer.  If you
    still set 'fileencoding' it is likely to be overwritten by the detected
    encoding from 'fileencodings', thus it is "mostly harmless".
    The old FileEncoding autocommand now does the same as the new EncodingChanged
    event.

    Digraphs changed				*digraphs-changed*

    The default digraphs now correspond to RFC1345.  This is very different from
    what was used in Vim 5.x. |digraphs|

    Filetype detection changed			*filetypedetect-changed*

    The filetype detection previously was using the "filetype" autocommand group.
    This caused confusion with the FileType event name (case is ignored).  The
    group is now called "filetypedetect".  It still works, but if the "filetype"
    group is used the autocommands will not be removed by ":filetype off".
       The support for 'runtimepath' has made the "myfiletypefile" and
    "mysyntaxfile" mechanism obsolete.  They are still used for backwards
    compatibility.

    The connection between the FileType event and setting the 'syntax' option was
    previously in the "syntax" autocommand group.  That caused confusion with the
    Syntax event name.  The group is now called "syntaxset".

    The distributed syntax files no longer contain "syntax clear".  That makes it
    possible to include one in the other without tricks.  The syntax is now
    cleared when the 'syntax' option is set (by an autocommand added from
    synload.vim).  This makes the syntax cleared when the value of 'syntax' does
    not correspond to a syntax file.  Previously the existing highlighting was
    kept.

    Unlisted buffers introduced			*new-unlisted-buffers*

    There is now a difference between buffers which don't appear in the buffer
    list and buffers which are really not in the buffer list.  Commands like
    ":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the
    buffer list. |unlisted-buffer|
    The 'buflisted' option can be used to make a buffer appear in the buffer list
    or not.

    Several commands that previously added a buffer to the buffer list now create
    an unlisted buffer.  This means that a ":bnext" and ":ball" will not find these
    files until they have actually been edited.  For example, buffers used for the
    alternative file by ":write file" and ":read file".
       Other commands previously completely deleted a buffer and now only remove
    the buffer from the buffer list.  Commands relying on a buffer not to be
    present might fail.  For example A ":bdelete" command in an autocommand that
    relied on something following to fail (was used in the automatic tests).
    |:bwipeout| can be used for the old meaning of ":bdelete".

    The BufDelete autocommand event is now triggered when a buffer is removed from
    the buffer list.  The BufCreate event is only triggered when a buffer is
    created that is added to the buffer list, or when an existing buffer is added
    to the buffer list.  BufAdd is a new name for BufCreate.
    The new BufNew event is for creating any buffer and BufWipeout for really
    deleting a buffer.

    When doing Insert mode completion, only buffers in the buffer list are
    scanned.  Added the 'U' flag to 'complete' to do completion from unlisted
    buffers.

    Unlisted buffers are not stored in a viminfo file.

    CTRL-U in Command-line mode changed		*CTRL-U-changed*

    Using CTRL-U when editing the command line cleared the whole line.  Most
    shells only delete the characters before the cursor.  Made it work like that.
    (Steve Wall)

    You can get the old behavior with CTRL-E CTRL-U:
    	:cnoremap <C-U> <C-E><C-U>

    Ctags gone					*ctags-gone*

    Ctags is no longer part of the Vim distribution.  It's now a grown-up program
    by itself, it deserves to be distributed separately.
     Ctags can be found here:	http://ctags.sf.net/.

    Documentation reorganized			*documentation-6*

    The documentation has been reorganized, an item may not be where you found it
    in Vim 5.x.
    - The user manual was added, some items have been moved to it from the
      reference manual.
    - The quick reference is now in a separate file (so that it can be printed).

    The examples in the documentation were previously marked with a ">" in the
    first column.  This made it difficult to copy/paste them.  There is now a
    single ">" before the example and it ends at a "<" or a non-blank in the first
    column.  This also looks better without highlighting.

    'helpfile' is no longer used to find the help tags file.  This allows a user
    to add its own help files (e.g., for plugins).

    Modeless selection and clipboard		*modeless-and-clipboard*

    The modeless selection is used to select text when Visual mode can't be used,
    for example when editing the command line or at the more prompt.
    In Vim 5.x the modeless selection was always used.  On MS-Windows this caused
    the clipboard to be overwritten, with no way to avoid that.  The modeless
    selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and
    "autoselectml" in 'clipboard'.  By default there is no automatic copy on
    MS-Windows.  Use the |c_CTRL-Y| command to manually copy the selection.

    To get the old behavior back, do this:

    	:set clipboard^=autoselectml guioptions+=A

    Small incompatibilities				*incomp-small-6*

    'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg',
    'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg',
    'viminfo' and 'runtimepath' can no longer be set from a modeline, for better
    security.

    Removed '_' from the 'breakat' default: It's commonly used in keywords.

    The default for 'mousehide' is on, because this works well for most people.

    The Amiga binary is now always compiled with "big" features.  The "big" binary
    archive no longer exists.

    The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in
    'statusline' no longer have a leading space.

    Non-Unix systems: When expanding wildcards for the Vim arguments, don't use
    'suffixes'.  It now works as if the shell had expanded the arguments.

    The 'lisp', 'smartindent' and 'cindent' options are not switched off when
    'paste' is set.  The auto-indenting is disabled when 'paste' is set, but
    manual indenting with "=" still works.

    When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there
    is no change in indent, this is not counted as a change ('modified' isn't set
    and there is nothing to undo).

    Report 'modified' as changed when 'fileencoding' or 'fileformat' was set.
    Thus it reflects the possibility to abandon the buffer without losing changes.

    The "Save As" menu entry now edits the saved file.  Most people expect it to
    work like this.

    A buffer for a directory is no longer added to the Buffers menu.

    Renamed <Return> to <Enter>, since that's what it's called on most keyboards.
    Thus it's now the hit-enter prompt instead of the hit-return prompt.
    Can map <Enter> just like <CR> or <Return>.

    The default for the 'viminfo' option is now '50,"50,h when 'compatible' isn't
    set.  Most people will want to use it, including beginners, but it required
    setting the option, which isn't that easy.

    After using ":colder" the newer error lists are overwritten.  This makes it
    possible to use ":grep" to browse in a tree-like way.  Must use ":cnewer 99"
    to get the old behavior.

    The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and
    sometimes not (Unix).  Now case is always ignored.  Add "\C" to the pattern to
    match case.

    The 16 bit MS-DOS version is now compiled without the +listcmds feature
    (buffer list manipulation commands).  They are not often needed and this
    executable needs to be smaller.

    'sessionoptions' now includes "curdir" by default.  This means that restoring
    a session will result in the current directory being restored, instead of
    going to the directory where the session file is located.

    A session deleted all buffers, deleting all marks.  Now keep the buffer list,
    it shouldn't hurt for some existing buffers to remain present.
    When the argument list is empty ":argdel *" caused an error message.

    No longer put the search pattern from a tag jump in the history.

    Use "SpecialKey" highlighting for unprintable characters instead of "NonText".
    The idea is that unprintable text or any text that's displayed differently
    from the characters in the file is using "SpecialKey", and "NonText" is used
    for text that doesn't really exist in the file.

    Motif now uses the system default colors for the menu and scrollbar.  Used to
    be grey.  It's still possible to set the colors with ":highlight" commands and
    resources.

    Formatting text with "gq" breaks a paragraph at a non-empty blank line.
    Previously the line would be removed, which wasn't very useful.

    ":normal" does no longer hang when the argument ends in half a command.
    Previously Vim would wait for more characters to be typed, without updating
    the screen.  Now it pretends an <Esc> was typed.

    Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in
    the "bitmaps" directories in 'runtimepath'.

    Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal
    mode menus.  This generally works better and allows using the "Copy" menu to
    produce CTRL-Y to copy the modeless selection.

    Moved the font selection from the Windows to the Edit menu, together with the
    other settings.

    The default values for 'isfname' include more characters to make "gf" work
    better.

    Changed the license for the documentation to the Open Publication License.
    This seemed fair, considering the inclusion of parts of the Vim book, which is
    also published under the OPL.  The downside is that we can't force someone who
    would sell copies of the manual to contribute to Uganda.

    After  "ayy  don't let  ""yy  or  :let @" = val  overwrite the "a register.
    Use the unnamed register instead.

    MSDOS: A pattern "*.*" previously also matched a file name without a dot.
    This was inconsistent with other versions.

    In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode.  Previously
    it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N,
    which is supposed to take us to Normal mode (especially in ":amenu").

    Allow using ":" commands after an operator.  Could be used to implement a new
    movement command.  Thus it no longer aborts a pending operator.

    For the Amiga the "-d {device}" argument was possible.  When compiled with the
    diff feature, this no longer works.  Use "-dev {device}" instead. |-dev|

    Made the default mappings for <S-Insert> in Insert mode insert the text
    literally, avoids that special characters like BS cause side effects.

    Using ":confirm" applied to the rest of the line.  Now it applies only to the
    command right after it.  Thus ":confirm if x | edit | endif" no longer works,
    use "if x | confirm edit | endif".  This was the original intention, that it
    worked differently was a bug.

    ==============================================================================
    NEW FEATURES

    Folding							*new-folding*

    Vim can now display a buffer with text folded.  This allows overviewing the
    structure of a file quickly.  It is also possible to yank, delete and put
    folded text, for example to move a function to another position.

    There is a whole bunch of new commands and options related to folding.
    See |folding|.

    Vertically split windows				*new-vertsplit*

    Windows can also be split vertically.  This makes it possible to have windows
    side by side.  One nice use for this is to compare two similar files (see
    |new-diff-mode|).  The 'scrollbind' option can be used to synchronize
    scrolling.

    A vertical split can be created with the commands:
    	:vsplit	  or  CTRL-W v  or CTRL-W CTRL-V	|:vsplit|
    	:vnew						|:vnew|
    	:vertical {cmd}					|:vertical|
    The last one is a modifier, which has a meaning for any command that splits a
    window.  For example:
    	:vertical stag main
    Will vertically split the window and jump to the tag "main" in the new window.

    Moving from window to window horizontally can be done with the |CTRL-W_h| and
    |CTRL-W_l| commands.  The |CTRL-W_k| and |CTRL-W_j| commands have been changed
    to jump to the window above or below the cursor position.

    The vertical and horizontal splits can be mixed as you like.  Resizing windows
    is easy when using the mouse, just position the pointer on a status line or
    vertical separator and drag it.  In the GUI a special mouse pointer shape
    indicates where you can drag a status or separator line.

    To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands.
    To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|.

    To force a new window to use the full width or height of the Vim window,
    these two modifiers are available:
    	:topleft {cmd}		New window appears at the top with full
    				width or at the left with full height.
    	:botright {cmd}		New window appears at the bottom with full
    				width or at the right with full height.
    This can be combined with ":vertical" to force a vertical split:
    	:vert bot dsplit DEBUG
    This will open a window at the far right, occupying the full height of the Vim
    window, with the cursor on the first definition of "DEBUG".
    The help window is opened at the top, like ":topleft" was used, if the current
    window is less than 80 characters wide.

    A few options can be used to set the preferences for vertically split windows.
    They work similar to their existing horizontal equivalents:
    	horizontal	vertical
    	'splitbelow'	'splitright'
    	'winheight'	'winwidth'
    	'winminheight'	'winminwidth'
    It's possible to set 'winminwidth' to zero, so that temporarily unused windows
    hardly take up space without closing them.

    The new 'eadirection' option tells where 'equalalways' applies:
    	:set eadirection=both		both directions
    	:set eadirection=ver		equalize window heights
    	:set eadirection=hor		equalize windows widths
    This can be used to avoid changing window sizes when you want to keep them.

    Since windows can become quite narrow with vertical splits, text lines will
    often not fit.  The 'sidescrolloff' has been added to keep some context left
    and right of the cursor.  The 'listchars' option has been extended with the
    "precedes" item, to show a "<" for example, when there is text left off the
    screen. (Utz-Uwe Haus)

    "-O" command line argument: Like "-o" but split windows vertically. (Scott
    Urban)

    Added commands to move the current window to the very top (CTRL-W K), bottom
    (CTRL-W J), left (CTRL-W H) and right (CTRL-W L).  In the new position the
    window uses the full width/height of the screen.

    When there is not enough room in the status line for both the file name and
    the ruler, use up to half the width for the ruler.  Useful for narrow windows.

    Diff mode						*new-diff-mode*

    In diff mode Vim shows the differences between two, three or four files.
    Folding is used to hide the parts of the file that are equal.
    Highlighting is used to show deleted and changed lines.
    See |diff-mode|.

    An easy way to start in diff mode is to start Vim as "vimdiff file1 file2".
    Added the vimdiff manpage.

    In a running Vim the |:diffsplit| command starts diff mode for the current
    file and another file.  The |:diffpatch| command starts diff mode using the
    current file and a patch file.  The |:diffthis| command starts diff mode for
    the current window.

    Differences can be removed with the |:diffget| and |:diffput| commands.

    - The 'diff' option switches diff mode on in a window.
    - The |:diffupdate| command refreshes the diffs.
    - The 'diffopt' option changes how diffs are displayed.
    - The 'diffexpr' option can be set how a diff is to be created.
    - The 'patchexpr' option can be set how patch is applied to a file.
    - Added the "diff" folding method.  When opening a window for diff-mode, set
      'foldlevel' to zero and 'foldenable' on, to close the folds.
    - Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to
      specify the highlighting for differences.  The defaults are ugly...
    - Unix: make a vimdiff symbolic link for "make install".
    - Removed the now obsolete "vimdiff.vim" script from the distribution.
    - Added the "[c" and "]c" commands to move to the next/previous change in diff
      mode.

    Easy Vim: click-and-type				*new-evim*

    eVim stands for "Easy Vim".  This is a separate program, but can also be
    started as "vim -y".

    This starts Vim with 'insertmode' set to allow click-and-type editing.  The
    $VIMRUNTIME/evim.vim script is used to add mappings and set options to be able
    to do most things like Notepad.  This is only for people who can't stand two
    modes.

    eView does the same but in readonly mode.

    In the GUI a CTRL-C now only interrupts when busy with something, not when
    waiting for a character.  Allows using CTRL-C to copy text to the clipboard.

    User manual						*new-user-manual*

    The user manual has been added.  It is organised around editing tasks.  It
    reads like a book, from start to end.  It should allow beginners to start
    learning Vim.  It helps everybody to learn using the most useful Vim features.
    It is much easier to read than the reference manual, but omits details.  See
    |user-manual|.

    The user manual includes parts of the Vim book by Steve Oualline |frombook|.
    It is published under the OPL |manual-copyright|.

    When syntax highlighting is not enabled, the characters in the help file which
    mark examples ('>' and '<') and header lines ('~') are replaced with a space.

    When closing the help window, the window layout is restored from before
    opening it, if the window layout didn't change since then.
    When opening the help window, put it at the top of the Vim window if the
    current window is less than 80 characters and not full width.

    Flexible indenting					*new-indent-flex*

    Automatic indenting is now possible for any language.  It works with a Vim
    script, which makes it very flexible to compute the indent.

    The ":filetype indent on" command enables using the provided indent scripts.
    This is explained in the user manual:|30.3|.

    The 'indentexpr' option is evaluated to get the indent for a line.  The
    'indentkeys' option tells when to trigger re-indenting.  Normally these
    options are set from an indent script.  Like Syntax files, indent scripts will
    be created and maintained by many people.

    Extended search patterns				*new-searchpat*

    Added the possibility to match more than one line with a pattern. (partly by
    Loic Grenie)
    New items in a search pattern for multi-line matches:
    \n		match end-of-line, also in []
    \_[]		match characters in range and end-of-line
    \_x		match character class and end-of-line
    \_.		match any character or end-of-line
    \_^		match start-of-line, can be used anywhere in the regexp
    \_$		match end-of-line, can be used anywhere in the regexp

    Various other new items in search patterns:
    \c		ignore case for the whole pattern
    \C		match case for the whole pattern
    \m		magic on for the following
    \M		magic off for the following
    \v		make following characters "very magic"
    \V		make following characters "very nomagic"

    \@!		don't match atom before this.
    		Example: "foo\(bar\)\@!" matches "foo " but not "foobar".
    \@=		match atom, resulting in  zero-width match
    		Example: "foo\(bar\)\@=" matches "foo" in "foobar".
    \@<!		don't match preceding atom before the current position
    \@<=		match preceding atom before the current position
    \@>		match preceding atom as a subexpression

    \&		match only when branch before and after it match

    \%[]		optionally match a list of atoms; "end\%[if]" matches "end",
    		"endi" and "endif"
    \%(\)		like \(\), but without creating a back-reference; there can be
    		any number of these, overcomes the limit of nine \( \) pairs
    \%^		match start-of-file (Chase Tingley)
    \%$		match end-of-file (Chase Tingley)
    \%#		Match with the cursor position. (Chase Tingley)
    \?		Just like "\=" but can't be used in a "?" command.

    \%23l		match in line 23
    \%<23l		match before line 23
    \%>23l		match after line 23
    \%23c, \%<23c, \%>23c   match in/before/after column 23
    \%23v, \%<23v, \%>23v	match in/before/after virtual column 23

    For syntax items:
    \z(...\)	external reference match set (in region start pattern)
    \z1 - \z9	external reference match use (in region skip or end pattern)
    	(Scott Bigham)

    \zs		use position as start of match
    \ze		use position as end of match

    Removed limit of matching only up to 32767 times with *, \+, etc.

    Added support to match multi-byte characters. (partly by Muraoka Taro)
    Made "\<" and "\>" work for UTF-8. (Muraoka Taro)

    UTF-8 support						*new-utf-8*

    Vim can now edit files in UTF-8 encoding.  Up to 31 bit characters can be
    used, but only 16 bit characters are displayed.  Up to two combining
    characters are supported, they overprint the preceding character.
    Double-wide characters are also supported.  See |UTF-8|.

    UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to
    UTF-8 internally.  There is also support for editing Unicode files in a Latin1
    environment.  Other encodings are converted with iconv() or an external
    converter specified with 'charconvert'.

    Many new items for Multi-byte support:
    - Added 'encoding' option: specifies character encoding used inside Vim.  It
      can be any 8-bit encoding, some double-byte encodings or Unicode.
      It is initialized from the environment when a supported value is found.
    - Added 'fileencoding' and 'fileencodings': specify character coding in a
      file, similar to 'fileformat' and 'fileformats'.
      When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will
      automatically switch to latin1 if a file does not contain valid UTF-8.
    - Added 'bomb' option and detection of a BOM at the start of a file.  Can be
      used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode
      file if it starts with a BOM.  Especially useful on MS-Windows (NT and
      2000), which uses ucs-2le files with a BOM (e.g., when exporting the
      registry).
    - Added the 'termencoding' option: Specifies the encoding used for the
      terminal.  Useful to put Vim in utf-8 mode while in a non-Unicode locale:
        :let &termencoding = &encoding
        :set encoding=utf-8
    - When 'viminfo' contains the 'c' flag, the viminfo file is converted from the
      'encoding' it was written with to the current 'encoding'.
    - Added ":scriptencoding" command: convert lines in a sourced script to
      'encoding'.  Useful for menu files.
    - Added 'guifontwide' to specify a font for double-wide characters.
    - Added Korean support for character class detection.  Also fix cls() in
      search.c. (Chong-Dae Park)
    - Win32: Typing multi-byte characters without IME. (Alexander Smishlajev)
    - Win32 with Mingw: compile with iconv library. (Ron Aaron)
    - Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro)
    - Make it possible to build a version with multi-byte and iconv support with
      Borland 5.5.  (Yasuhiro Matsumoto)
    - Added 'delcombing' option: Delete combining character separately. (Ron
      Aaron)
    - The "xfontset" feature isn't required for "xim".  These are now two
      independent features.
    - XIM: enable XIM when typing a language character (Insert mode, Search
      pattern, "f" or "r" command).  Disable XIM when typing a Normal mode
      command.
    - When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun)
    - Support "CursorIM" for XIM.  (Nam SungHyun)
    - Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at
      each multibyte character, not only at a space.
    - Made ":syntax keyword" work with multi-byte characters.
    - Added support for Unicode upper/lowercase flipping and comparing. (based on
      patch by Raphael Finkel)
      Let "~" on multi-byte characters that have a third case ("title case")
      switch between the three cases. (Raphael Finkel)

    Allow defining digraphs for multi-byte characters.
    Added RFC1345 digraphs for Unicode.
    Most Normal mode commands that accept a character argument, like "r", "t" and
    "f" now accept a digraph.  The 'D' flag in 'cpoptions' disables this to remain
    Vi compatible.

    Added Language mapping and 'keymap' to be able to type multi-byte characters:
    - Added the ":lmap" command and friends: Define mappings that are used when
      typing characters in the language of the text.  Also for "r", "t", etc.  In
      Insert and Command-line mode CTRL-^ switches the use of the mappings on/off.
      CTRL-^ also toggles the use of an input method when no language mappings are
      present.  Allows switching the IM back on halfway typing.
    - "<char-123>" argument to ":map", allows to specify the decimal, octal or
      hexadecimal value of a character.
    - Implemented the 'keymap' option: Load a keymap file.  Uses ":lnoremap" to
      define mappings for the keymap.  The new ":loadkeymap" command is used in
      the keymap file.
    - Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when
      it's being used.  Uses "<lang>" when no keymap is loaded and ":lmap"s are
      active.  Show this text in the default statusline too.
    - Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings
      and Input Method with an option. (Muraoka Taro)
      Added 'imcmdline' option: When set the input method is always enabled when
      starting to edit a command line.  Useful for a XIM that uses dead keys to
      type accented characters.
      Added 'imactivatekey' option to better control XIM.  (Muraoka Taro)
    - When typing a mapping that's not finished yet, display the last character
      under the cursor in Insert mode and Command-line mode.  Looks good for dead
      characters.
    - Made the 'langmap' option recognize multi-byte characters.  But mapping only
      works for 8-bit characters.  Helps when using UTF-8.
    - Use a different cursor for when ":lmap" mappings are active.  Can specify
      two highlight groups for an item in 'guicursor'.  By default "lCursor" and
      "Cursor" are equal, the user must set a color he likes.
      Use the cursor color for hangul input as well. (Sung-Hyun Nam)
    - Show "(lang)" for 'showmode' when language mapping is enabled.
    - UTF-8: Made "r" work with a ":lmap" that includes a composing character.
      Also works for "f", which now works to find a character that includes a
      composing character.

    Other multi-byte character additions:
    - Support double-byte single-width characters for euc-jp: Characters starting
      with 0x8E.  Added ScreenLines2[] to store the second byte.

    Multi-language support					*new-multi-lang*

    The messages used in Vim can be translated.  Several translations are
    available.  This uses the gettext mechanism.  It allows adding a translation
    without recompiling Vim.  |multi-lang| (partly by Marcin Dalecki)

    The translation files are in the src/po directory.  The src/po/README.txt file
    explains a few things about doing a translation.

    Menu translations are available as well.  This uses the new |:menutranslate|
    command.  The translations are found in the runtime directory "lang".  This
    allows a user to add a translation.

    Added |:language| command to set the language (locale) for messages, time and
    character type.  This allows switching languages in Vim without changing the
    locale outside of Vim.

    Made it possible to have vimtutor use different languages.  (Eduardo Fernandez)
    Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro
    Matsumoto) and French (Adrien Beau) translations are included.
    Added "vimtutor.bat": script to start Vim on a copy of the tutor file for
    MS-Windows. (Dan Sharp)

    - Added v:lang variable to be able to get current language setting.
      (Marcin Dalecki)  Also v:lc_time and v:ctype
    - Make it possible to translate the dialogs used by the menus.  Uses global
      "menutrans_" variables.  ":menutrans clear" deletes them.
    - removed "broken locale" (Marcin Dalecki).
    - Don't use color names in icons, use RGB values.  The names could be
      translated.
    - Win32: Added global IME support (Muraoka)
    - Win32: Added dynamic loading of IME support.
    - ":messages" prints a message about who maintains the messages or the
      translations.  Useful to find out where to make a remark about a wrong
      translation.
    - --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun
      Nam)
    - Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez)
    - When available, call bind_textdomain_codeset() to have gettext() translate
      messages to 'encoding'.  This requires GNU gettext 0.10.36 or later.
    - Added gettext support for Win32.  This means messages will be translated
      when the locale is set and libintl.dll can be found.  (Muraoka Taro)
      Also made it work with MingW compiler.  (Eduardo Fernandez)
      Detect the language and set $LANG to get the appropriate translated messages
      (if supported).  Also use $LANG to select a language, v:lang is a very
      different kind of name.
    - Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto)

    Plugin support					*new-plugins*

    To make it really easy to load a Vim script when starting Vim, the "plugin"
    runtime directory can be used.  All "*.vim" files in it will be automatically
    loaded.  For Unix, the directory "~/.vim/plugin" is used by default.  The
    'runtimepath' option can be set to look in other directories for plugins.
    |load-plugins| |add-plugin|

    The |:runtime| command has been added to load one or more files in
    'runtimepath'.

    Standard plugins:
    netrw.vim - Edit files over a network |new-network-files|
    gzip.vim - Edit compressed files
    explorer.vim - Browse directories |new-file-browser|

    Added support for local help files. |add-local-help|.
    When searching for help tags, all "doc/tags" files in 'runtimepath' are used.
    Added the ":helptags" command: Generate a tags file for a help directory.
    The first line of each help file is automagically added to the "LOCAL
    ADDITIONS" section in doc/help.txt.

    Added the <unique> argument to ":map": only add a mapping when it wasn't
    defined before.

    When displaying an option value with 'verbose' set will give a message about
    where the option was last set.  Very useful to find out which script did set
    the value.

    The new |:scriptnames| command displays a list of all scripts that have been
    sourced.

    GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps"
    directories in 'runtimepath'.  Allows adding your own bitmaps.

    Filetype plugins				*new-filetype-plugins*

    A new group of files has been added to do settings for specific file types.
    These can be options and mappings which are specifically used for one value of
    'filetype'.

    The files are located in "$VIMRUNTIME/ftplugin".  The 'runtimepath' option
    makes it possible to use several sets of plugins: Your own, system-wide,
    included in the Vim distribution, etc.

    To be able to make this work, several features were added:
    - Added the "s:" variables, local to a script.  Avoids name conflicts with
      global variables.  They can be used in the script and in functions,
      autocommands and user commands defined in the script.  They are kept between
      invocations of the same script.  |s:var|
    - Added the global value for local options.  This value is used when opening
      a new buffer or editing another file.  The option value specified in a
      modeline or filetype setting is not carried over to another buffer.
      ":set" sets both the local and the global value.
      ":setlocal" sets the local option value only.
      ":setglobal" sets or displays the global value for a local option.
      ":setlocal name<" sets a local option to its global value.
    - Added the buffer-local value for some global options: 'equalprg', 'makeprg',
      'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags',
      'include' and 'define'.  This allows setting a local value for these global
      options, without making it incompatible.
    - Added mappings and abbreviations local to a buffer: ":map <buffer>".
    - In a mapping "<Leader>" can be used to get the value of the "mapleader"
      variable.  This simplifies mappings that use "mapleader".  "<Leader>"
      defaults to "\".  "<LocalLeader>" does the same with "maplocalleader".  This
      is to be used for mappings local to a buffer.
    - Added <SID> Script ID to define functions and mappings local to a script.
    - Added <script> argument to ":noremap" and ":noremenu": Only remap
      script-local mappings.  Avoids that mappings from other scripts get in the
      way, but does allow using mappings defined in the script.
    - User commands can be local to a buffer: ":command -buffer".

    The new ":setfiletype" command is used in the filetype detection autocommands,
    to avoid that 'filetype' is set twice.

    File browser						*new-file-browser*

    When editing a directory, the explorer plugin will list the files in the
    directory.  Pressing <Enter> on a file name edits that file.  Pressing <Enter>
    on a directory moves the browser to that directory.

    There are several other possibilities, such as opening a file in the preview
    window, renaming files and deleting files.

    See |file-explorer|.

    Editing files over a network				*new-network-files*

     Files starting with scp://, rcp://,	ftp:// and	http:// are recognized as
    remote files.  An attempt is made to access these files with the indicated
     method. For	http:// only reading is possible, for the others writing is also
    supported.  Uses the netrw.vim script as a standard "plugin". |netrw|

    Made "gf" work on a URL.  It no longer assumes the file is local on the
    computer (mostly didn't work anyway, because the full path was required).
    Adjusted test2 for this.

    Allow using a URL in 'path'.  Makes ":find index.html" work.

     GTK: Allow dropping a	http:// and	ftp:// URL on Vim. The netrw plugin takes
    care of downloading the file. (MiKael Berthe)

    Window for command-line editing				*new-cmdwin*

    The Command-line window can be used to edit a command-line with Normal and
    Insert mode commands.  When it is opened it contains the history.  This allows
    copying parts of previous command lines. |cmdwin|

    The command-line window can be opened from the command-line with the key
    specified by the 'cedit' option (like Nvi).  It can also be opened directly
    from Normal mode with "q:", "q/" and "q?".

    The 'cmdwinheight' is used to specify the initial height of the window.

    In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like
    it's done on the command-line.  This is also useful for writing Vim scripts!

    Additionally, there is "improved Ex mode".  Entered when Vim is started as
    "exim" or "vim -E", and with the "gQ" command.  Works like repeated use of
    ":", with full command-line editing and completion. (Ulf Carlsson)

    Debugging mode						*new-debug-mode*

    In debugging mode sourced scripts and user functions can be executed line by
    line.  There are commands to step over a command or step into it. |debug-mode|

    Breakpoints can be set to run until a certain line in a script or user
    function is executed. |:breakadd|

    Debugging can be started with ":debug {cmd}" to debug what happens when a
    command executes.  The |-D| argument can be used to debug while starting up.

    Cursor in virtual position				*new-virtedit*

    Added the 'virtualedit' option: Allow positioning the cursor where there is no
    actual character in Insert mode, Visual mode or allways. (Matthias Kramm)
    This is especially useful in Visual-block mode.  It allows positioning a
    corner of the area where there is no text character.  (Many improvements by
    Chase Tingley)

    Debugger interface					*new-debug-itf*

    This was originally made to work with Sun Visual Workshop. (Gordon Prieur)
    See |debugger.txt|, |sign.txt| and |workshop.txt|.

    Added the ":sign" command to define and place signs.  They can be displayed
    with two ASCII characters or an icon.  The line after it can be highlighted.
    Useful to display breakpoints and the current PC position.

    Added the |:wsverb| command to execute debugger commands.

    Added balloon stuff: 'balloondelay' and 'ballooneval' options.

    Added "icon=" argument for ":menu".  Allows defining a specific icon for a
    ToolBar item.

    Communication between Vims				*new-vim-server*

    Added communication between two Vims.  Makes it possible to send commands from
    one Vim to another.  Works for X-Windows and MS-Windows |clientserver|.

    Use "--remote" to have files be edited in an already running Vim.
    Use "--remote-wait" to do the same and wait for the editing to finish.
    Use "--remote-send" to send commands from one Vim to another.
    Use "--remote-expr" to have an expression evaluated in another Vim.
    Use "--serverlist" to list the currently available Vim servers. (X only)
    There are also functions to communicate betweeen the server and the client.
    |remote_send()| |remote_expr()|

    (X-windows version implemented by Flemming Madsen, MS-Windows version by Paul
    Moore)

    Added the command server name to the window title, so you can see which server
    name belongs to which Vim.

    Removed the OleVim directory and SendToVim.exe and EditWithVim.exe from the
    distribution.  Can now use "gvim --remote" and "gvim --remote-send", which is
    portable.

    GTK: Support running Vim inside another window.  Uses the --socketid argument
    (Neil Bird)

    Buffer type options					*new-buftype*

    The 'buftype' and 'bufhidden' options have been added.  They can be set to
    have different kinds of buffers.  For example:
    - 'buftype' = "quickfix": buffer with error list
    - 'buftype' = "nofile" and 'bufhidden' = "delete": scratch buffer that will be
      deleted as soon as there is no window displaying it.

    'bufhidden' can be used to overrule the 'hidden' option for one buffer.

    In combination with 'buflisted' and 'swapfile' this offers the possibility to
    use various kinds of special buffers.  See |special-buffers|.

    Printing						*new-printing*

    Included first implementation of the ":hardcopy" command for printing
    to paper.  For MS-Windows any installed printer can be used.  For other
    systems a PostScript file is generated, which can be printed with the
    'printexpr' option.
    (MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and
    Mike Williams)

    Made ":hardcopy" work with multi-byte characters. (Muraoka Taro, Yasuhiro
    Matsumoto)

    Added options to tune the way printing works: (Vince Negri)
    - 'printoptions' defines various things.
    - 'printheader' specifies the header format.  Added "N" field to 'statusline'
      for the page number.
    - 'printfont' specifies the font name and attributes.
    - 'printdevice' defines the default printer for ":hardcopy!".

    Ports							*ports-6*

    Port to OS/390 Unix (Ralf Schandl)
    - A lot of changes to handle EBCDIC encoding.
    - Changed Ctrl('x') to Ctrl_x define.

    Included jsbmouse support. (Darren Garth)
    Support for dec mouse in Unix. (Steve Wall)

    Port to 16-bit MS Windows (Windows 3.1x) (Vince Negri)

    Port to QNX.  Supports the Photon GUI, mouse, etc. (Julian Kinraid)

    Allow cross-compiling the Win32 version with Make_ming.mak. (Ron Aaron)
    Added Python support for compiling with Mingw. (Ron Aaron)

    Dos 32 bit: Added support the Windows clipboard. (David Kotchan)

    Win32: Dynamically load Perl and Python.  Allows compiling Vim with these
    interfaces and will try to find the DLLs at runtime. (Muraoka Taro)

    Compiling the Win32 GUI with Cygwin.  Also compile vimrun, dosinst and
    uninstall.  (Gerfried)

    Mac: Make Vim compile with the free MPW compiler supplied by Apple.  And
    updates for CodeWarrior. (Axel Kielhorn)

    Added typecasts and ifdefs as a start to make Vim work on Win64 (George
    Reilly)

    Quickfix extended					*quickfix-6*

    Added the "error window".  It contains all the errors of the current error
    list.  Pressing <Enter> in a line makes Vim jump to that line (in another
    window).  This makes it easy to navigate through the error list.
    |quickfix-window|.

    - |:copen| opens the quickfix window.
    - |:cclose| closes the quickfix window.
    - |:cwindow| takes care that there is a quickfix window only when there are
      recognized errors. (Dan Sharp)

    - Quickfix also knows "info", next to "warning" and "error" types. "%I" can be
      used for the start of a multi-line informational message. (Tony Leneis)
    - The "%p" argument can be used in 'errorformat' to get the column number from
      a line where "^" points to the column. (Stefan Roemer)
    - When using "%f" in 'errorformat' on a DOS/Windows system, also include "c:"
      in the filename, even when using "%f:".

    Operator modifiers					*new-operator-mod*

    Insert "v", "V" or CTRL-V between an operator and a motion command to force
    the operator to work characterwise, linewise or blockwise. |o_v|

    Search Path						*new-search-path*

    Vim can search in a directory tree not only in downwards but also upwards.
    Works for the 'path', 'cdpath' and 'tags' options. (Ralf Schandl)

    Also use "**" for 'tags' option. (Ralf Schandl)

    Added 'includeexpr', can be used to modify file name found by 'include'
    option.
    Also use 'includeexpr' for "gf" and "<cfile>" when the file can't be found
    without modification.  Useful for doing "gf" on the name after an include or
    import statement.

    Added the 'cdpath' option: Locations to find a ":cd" argument. (Raf)

    Added the 'suffixesadd' option: Suffixes to be added to a file name when
    searching for a file for the "gf", "[I", etc. commands.

    Writing files improved					*new-file-writing*

    Added the 'backupcopy' option: Select whether a file is to be copied or
    renamed to make a backup file.  Useful on Unix to speed up writing an ordinary
    file.  Useful on other systems to preserve file attributes and when editing a
    file on a Unix filesystem.

    Added the 'autowriteall' option.  Works like 'autowrite' but for more
    commands.

    Added the 'backupskip' option: A list of file patterns to skip making a backup
    file when it matches.  The default is "/tmp/*", this makes "crontab -e" work.

    Added support for Access Control Lists (ACL) for FreeBSD and Win32.  The ACL
    is copied from the original file to the new file (or the backup if it's
    copied).
    ACL is also supported for AIX, Solaris and generic POSIX. (Tomas Ogren)
    And on SGI.

    Argument list						*new-argument-list*

    The support for the argument list has been extended.  It can now be
    manipulated to contain the files you want it to contain.

    The argument list can now be local to a window.  It is created with the
    |:arglocal| command.  The |:argglobal| command can be used to go back to the
    global argument list.

    The |:argdo| command executes a command on all files in the argument list.

    File names can be added to the argument list with |:argadd|.  File names can
    be removed with |:argdelete|.

    "##" can be used like "#", it is replaced by all the names in the argument
    list concatenated.  Useful for ":grep foo ##".

    The |:argedit| adds a file to the argument list and edits it.  Like ":argadd"
    and then ":edit".

    Restore a View						*new-View*

    The ":mkview" command writes a Vim script with the settings and mappings for
    one window.  When the created file is sourced, the view of the window is
    restored.  It's like ":mksession" for one window.
    The View also contains the local argument list and manually created, opened
    and closed folds.

    Added the ":loadview" command and the 'viewdir' option: Allows for saving and
    restoring views of a file with simple commands. ":mkview 1" saves view 1 for
    the current file, ":loadview 1" loads it again.  Also allows quickly switching
    between two views on one file.  And saving and restoring manual folds and the
    folding state.

    Added 'viewoptions' to specify how ":mkview" works.

    ":mksession" now also works fine with vertical splits.  It has been further
    improved and restores the view of each window.  It also works properly with
    preview and quickfix windows.

    'sessionoptions' is used for ":mkview" as well.
    Added "curdir" and "sesdir" to 'sessionoptions'.  Allows selection of what
    the current directory will be restored to.

    The session file now also contains the argument list(s).

    Color schemes						*new-color-schemes*

    Support for loading a color scheme.  Added the ":colorscheme" command.
    Automatically add menu entries for available schemes.
    Should now properly reset the colors when 'background' or 't_Co' is changed.
    ":highlight clear" sets the default colors again.
    ":syntax reset" sets the syntax highlight colors back to the defaults.
    For ":set bg&" guess the value.  This allows a color scheme to switch back to
    the default colors.
    When syntax highlighting is switched on and a color scheme was defined, reload
    the color scheme to define the colors.

    Various new items					*new-items-6*

    Normal mode commands:

    "gi"		Jump to the ^ mark and start Insert mode.  Also works when the
    		mark is just after the line. |gi|

    "g'm" and "g`m"
    		Jump to a mark without changing the jumplist.  Now you can use
    		g`" to jump to the last known position in a file without side
    		effects.  Also useful in mappings.

    [', [`, ]' and ]`
    		move the cursor to the next/previous lowercase mark.

    g_		Go to last non-blank in line. (Steve Wall)

    Options:

    'autoread'	When detected that a file changed outside of Vim,
    		automatically read a buffer again when it's not changed.
    		It has a global and a local value.  Use ":setlocal autoread<"
    		to go back to using the global value for 'autoread'.

    'debug'		When set to "msg" it will print error messages that would
    		otherwise be omitted.  Useful for debugging 'indentexpr' and
    		'foldexpr'.

    'lispwords'	List of words used for lisp indenting.  It was previously hard
    		coded.  Added a number of Lisp names to the default.

    'fold...'	Many new options for folding.

    'modifiable'	When off, it is impossible to make changes to a buffer.
    		The %m and %M items in 'statusline' show a '-'.

    'previewwindow' Set in the preview window.  Used in a session file to mark a
    		window as the preview window.

    'printfont'
    'printexpr'
    'printheader'
    'printdevice'
    'printoptions'	for ":hardcopy".

    'buflisted'	Makes a buffer appear in the buffer list or not.

    Use "vim{version}:" for modelines, only to be executed when the version is
    >= {version}.  Also "vim>{version}", "vim<{version}" and "vim={version}".

    Ex commands:

    :sav[eas][!] {file}
    		Works like ":w file" and ":e #", but without loading the file
    		again and avoiding other side effects. |:saveas|

    :silent[!] {cmd}
    		Execute a command silently.  Also don't use a delay that would
    		come after the message.  And don't do 'showmatch'.
    		RISCOS: Removed that "!~cmd" didn't output anything, and
    		didn't wait for <Enter> afterwards.  Can use ":silent !cmd"
    		now.
    :menu <silent>  Add a menu that won't echo Ex commands.
    :map <silent>   Add a mapping that won't echo Ex commands.

    :checktime	Check for changed buffers.

    :verbose {cmd}  Set 'verbose' for one command.

    :echomsg {expr}
    :echoerr {expr} Like ":echo" but store the message in the history. (Mark
    		Waggoner)

    :grepadd	Works just like ":grep" but adds to the current error list
    		instead of defining a new list. |:grepadd|

    :finish		Finish sourcing a file.  Can be used to skip the rest of a Vim
    		script. |:finish|

    :leftbelow
    :belowleft	Split left/below current window.

    :rightabove
    :aboveright	Split right/above current window.

    :first, :bfirst, :ptfirst, etc.
    		Alias for ":rewind".  It's more logical compared to ":last".

    :enew		Edit a new, unnamed buffer.  This is needed, because ":edit"
    		re-edits the same file. (Wall)

    :quitall	Same as ":qall".

    :match		Define match highlighting local to a window.  Allows
    		highlighting an item in the current window without interfering
    		with syntax highlighting.

    :menu enable
    :menu disable	Commands to enable/disable menu entries without removing them.
    		(Monish Shah)

    :windo		Execute a command in all windows.
    :bufdo		Execute a command in all buffers.

    :wincmd		Window (CTRL-W) command.  Useful when a Normal mode command
    		can't be used (e.g., for a CursorHold autocommand).  See
    		|CursorHold-example| for a nice application with it.

    :lcd and :lchdir
    		Set local directory for a window. (Benjie Chen)

    :hide {command}
    		Execute {command} with 'hidden' set.

    :emenu		in Visual mode to execute a ":vmenu" entry.

    :popup		Pop up a popup menu.

    :redraw		Redraw the screen even when busy with a script or function.

    :hardcopy	Print to paper.

    :compiler	Load a Vim script to do settings for a specific compiler.

    :z#		List numbered lines. (Bohdan Vlasyuk)

    New marks:

    '( and ')	Begin or end of current sentence.  Useful in Ex commands.
    '{ and '}	Begin or end of current paragraph.  Useful in Ex commands.
    '.		Position of the last change in the current buffer.
    '^		Position where Insert mode was stopped.

    Store the ^ and . marks in the viminfo file.  Makes it possible to jump to the
    last insert position or changed text.

    New functions:
    argidx()	Current index in argument list.
    buflisted()	Checks if the buffer exists and has 'buflisted' set.
    cindent()	Get indent according to 'cindent'.
    eventhandler()	Returns 1 when inside an event handler and interactive
    		commands can't be used.
    executable()	Checks if a program or batch script can be executed.
    filewritable()	Checks if a file can be written. (Ron Aaron)
    foldclosed()	Find out if there is a closed fold. (Johannes Zellner).
    foldcloseend()	Find the end of a closed fold.
    foldlevel()	Find out the foldlevel. (Johannes Zellner)
    foreground()	Move the GUI window to the foreground.
    getchar()	Get one character from the user.  Can be used to define a
    		mapping that takes an argument.
    getcharmod()	Get last used key modifier.
    getbufvar()	gets the value of an option or local variable in a buffer (Ron
    		Aaron)
    getfsize()	Return the size of a file.
    getwinvar()	gets the value of an option or local variable in a window (Ron
    		Aaron)
    globpath()	Find matching files in a list of directories.
    hasmapto()	Detect if a mapping to a string is already present.
    iconv()		Convert a string from one encoding to another.
    indent()	gets the indent of a line (Ron Aaron)
    inputdialog()	Like input() but use a GUI dialog when possible.  Currently
    		only works for Win32, Motif, Athena and GTK.
    		Use inputdialog() for the Edit/Settings/Text Width menu.  Also
    		for the Help/Find.. and Toolbar FindHelp items.
    		(Win32 support by Thore B. Karlsen)
    		(Win16 support by Vince Negri)
    inputsecret()	Ask the user to type a string without showing the typed keys.
    		(Charles Campbell)
    libcall()	for Unix (Neil Bird, Johannes Zellner, Stephen Wall)
    libcallnr()	for Win32 and Unix
    lispindent()	Get indent according to 'lisp'.
    mode()		Return a string that indicates the current mode.
    nextnonblank()	Skip blank lines forwards.
    prevnonblank()	Skip blank lines backwards.  Useful to for indent scripts.
    resolve()	MS-Windows: resolve a shortcut to the file it points to.
    		Unix: resolve a symbolic link.
    search()	Search for a pattern.
    searchpair()	Search for matching pair.  Can be used in indent files to find
    		the "if" matching an endif.
    setbufvar()	sets an option or variable local to a buffer (Ron Aaron)
    setwinvar()	sets an option or variable local to a window (Ron Aaron)
    stridx()	Search for first occurrence of one string in another.
    strridx()	Search for last occurrence of one string in another.
    tolower()	Convert string to all-lowercase.
    toupper()	Convert string to all-uppercase.
    type()		Check the type of an expression.
    wincol()	window column of the cursor
    winwidth()	Width of a window. (Johannes Zellner)
    winline()	window line of the cursor

    Added expansion of curly braces in variable and function names.  This can be
    used for variable names that include the value of an option.  Or a primitive
    form of arrays. (Vince Negri)

    New autocommand events:
    BufWinEnter	Triggered when a buffer is displayed in a window, after using
    		the modelines.  Can be used to load a view.
    BufWinLeave	Triggered when a buffer is no longer in a window.  Also
    		triggered when exiting Vim.  Can be used to save views.
    FileChangedRO	Triggered before making the first change to a read-only file.
    		Can be used to check-out the file. (Scott Graham)
    TermResponse	Triggered when the terminal replies to the version-request.
    		The v:termresponse internal variable holds the result.  Can be
    		used to react to the version of the terminal.  (Ronald Schild)
    FileReadCmd	Triggered before reading a file.
    BufReadCmd	Triggered before reading a file into a buffer.
    FileWriteCmd	Triggered before writing a file.
    BufWriteCmd	Triggered before writing a buffer into a file.
    FileAppendCmd	Triggered before appending to a file.
    FuncUndefined	Triggered when a user function is not defined. (Ron Aaron)

    The autocommands for the *Cmd events read or write the file instead of normal
    file read/write.  Use this in netrw.vim to be able to edit files on a remote
    system. (Charles Campbell)

    New Syntax files:

    bdf		BDF font definition (Nikolai Weibull)
    catalog		SGML catalog (Johannes Zellner)
    debchangelog	Debian Changelog (Wichert Akkerman)
    debcontrol	Debian Control (Wichert Akkerman)
    dot		dot (Markus Mottl)
    dsl		DSSSL syntax (Johannes Zellner)
    eterm		Eterm configuration (Nikolai Weibull)
    indent		Indent profile (Nikolai Weibull)
    lftp	    	LFTP (Nikolai Weibull)
    lynx		Lynx config (Doug Kearns)
    mush	    	mush sourcecode (Bek Oberin)
    natural		Natural (Marko Leipert)
    pilrc		Pal resource compiler (Brian Schau)
    plm		PL/M (Philippe Coulonges)
    povini		Povray configuration (David Necas)
    ratpoison	Ratpoison config/command (Doug Kearns)
    readline    	readline config (Nikolai Weibull)
    screen		Screen RC (Nikolai Weibull)
    specman		Specman (Or Freund)
    sqlforms    	SQL*Forms (Austin Ziegler)
    terminfo	terminfo (Nikolai Weibull)
    tidy		Tidy configuration (Doug Kearns)
    wget	    	Wget configuration (Doug Kearns)

    Updated many syntax files to work both with Vim 5.7 and 6.0.

    Interface to Ruby. (Shugo Maeda)
    Support dynamic loading of the Ruby interface on MS-Windows. (Muraoka Taro)
    Support this for Mingw too. (Benoit Cerrina)

    Win32: Added possibility to load TCL dynamically. (Muraoka Taro)
    Also for Borland 5.5. (Dan Sharp)

    Win32: When editing a file that is a shortcut (*.lnk file), edit the file it
    links to.  Unless 'binary' is set, then edit the shortcut file itself.
    (Yasuhiro Matsumoto)

    The ":command" command now accepts a "-bar" argument.  This allows the user
    command to be followed by "| command".

    The preview window is now also used by these commands:
    - |:pedit| edits the specified file in the preview window
    - |:psearch| searches for a word in included files, like |:ijump|, and
      displays the found text in the preview window.
    Added the CTRL-W P command: go to preview window.

    MS-DOS and MS-Windows also read the system-wide vimrc file $VIM/vimrc.  Mostly
    for NT systems with multiple users.

    A double-click of the mouse on a character that has a "%" match selects from
    that character to the match.  Similar to "v%".

    "-S session.vim" argument: Source a script file when starting up.  Convenient
    way to start Vim with a session file.

    Added "--cmd {command}" Vim argument to execute a command before a vimrc file
    is loaded. (Vince Negri)

    Added the "-M" Vim argument: reset 'modifiable' and 'write', thus disallow
    making changes and writing files.

    Added runtime/delmenu.vim.  Source this to remove all menus and prepare for
    loading new menus.  Useful when changing 'langmenu'.

    Perl script to filter Perl error messages to quickfix usable format. (Joerg
    Ziefle)

    Added runtime/macros/less.vim: Vim script to simulate less, but with syntax
    highlighting.

    MS-Windows install program: (Jon Merz)
    - The Win32 program can now create shortcuts on the desktop and install Vim in
      the Start menu.
    - Possibly remove old "Edit with Vim" entries.
    - The Vim executable is never moved or $PATH changed.  A small batch file is
      created in a directory in $PATH.  Less choices to be made.
    - Detect already installed Vim versions and offer to uninstall them first.

    Improved the MS-Windows uninstal program.  It now also deletes the entries in
    the Start menu, icons from the desktop and the created batch files. (Jon Merz)
    Also made it possible to delete only some of these.  Also unregister gvim for
    OLE.

    Generate a self-installing Vim package for MS-Windows.  This uses NSIS. (Jon
    Merz et al.)

    Added ":filetype detect".  Try detecting the filetype again.  Helps when
    writing a new shell script, after adding "#!/bin/csh".

    Added ":augroup! name" to delete an autocommand group.  Needed for the
    client-server "--remote-wait".

    Add the Vim version number to the viminfo file, useful for debugging.

    ==============================================================================

    IMPROVEMENTS						*improvements-6*

    Added the 'n' flag in 'cpoptions': When omitted text of wrapped lines is not
    put between line numbers from 'number' option.  Makes it a lot easier to read
    wrapped lines.

    When there is a format error in a tags file, the byte position is reported so
    that the error can be located.

    "gf" works in Visual mode: Use the selected text as the file name. (Chase
    Tingley)

    Allow ambiguous mappings.  Thus "aa" and "aaa" can both be mapped, the longest
    matching one is used.  Especially useful for ":lmap" and 'keymap'.

    Encryption: Ask the key to be typed twice when crypting the first time.
    Otherwise a typo might cause the text to be lost forever. (Chase Tingley)

    The window title now has "VIM" on the end.  The file name comes first, useful
    in the taskbar.  A "+" is added when the file is modified.  "=" is added for
    a read-only file.  "-" is added for a file with 'modifiable' off.

    In Visual mode, mention the size of the selected area in the 'showcmd'
    position.

    Added the "b:changedtick" variable.  Incremented at each change, also for
    undo.  Can be used to take action only if the buffer has been changed.

    In the replacement string of a ":s" command "\=" can be used to replace with
    the result of an expression.  From this expression the submatch() function can
    be used to access submatches.

    When doing ":qall" and there is a change in a buffer that is being edited in
    another window, jump to that window, instead of editing that buffer in the
    current window.

    Added the "++enc=" and "++ff=" arguments to file read/write commands to force
    using the given 'encoding' or 'fileformat'.  And added the "v:cmdarg"
    variable, to be used for FileReadCmd autocommands that read/write the file
    themselves.

    When reading stdin, first read the text in binary mode and then re-read it
    with automatic selection of 'fileformat' and 'fileencoding'.  This avoids
    problems with not being able to rewind the file (e.g., when a line near the
    end of the file ends in LF instead of CR-LF).
    When reading text from stdin and the buffer is empty, don't mark it changed.
    Allows exiting without trouble.

    Added an ID to many error messages.  This will make it easier to find help for
    a message.

    Insert mode:
    - "CTRL-G j" and "CTRL-G k" can be used to insert in another line in the same
      column.  Useful for editing a table.
    - Added Thesaurus completion with CTRL-X CTRL-T. (Vince Negri)
    - Added the 'thesaurus' option, to use instead of 'dictionary' for thesaurus
      completion.  Added the 's' flag in 'complete'.
    - Made CTRL-X CTRL-L in Insert mode use the 'complete' option.  It now also
      scans other loaded buffers for matching lines.
    - CTRL-R now also works in Insert mode while doing completion with CTRL-X or
      CTRL-N. (Neil Bird)
    - When doing Insert mode completion, when completion is finished check for a
      match with words from 'cinkeys' or 'indentkeys'.

    Performance:
    - Made display updating more efficient.  Insert/delete lines may be used for
      all changes, also for undo/redo.
    - The display is not redrawn when there is typeahead in Insert mode.  Speeds
      up CTRL-R a lot.
    - Improved speed of screen output for 32 bit DOS version. (Vince Negri)
    - When dragging with the mouse, there is a lookahead to skip mouse codes when
      there is another one next.  Makes dragging with the mouse a lot faster.
    - Also a memory usage improvement: When calling u_save with a single line,
      don't save it if the line was recently saved for the same undo already.
    - When using a script that appends one character at a time, the amount of
      allocated memory was growing steadily.  Also when 'undolevels' is -1.
      Caused by the line saved for "U" never to be freed.  Now free an undo block
      when it becomes empty.
    - GUI and Dos32: Use a vertical scroll region, to make scrolling in a
      vertically split window faster.  No need to redraw the whole window.
    - When scrolling isn't possible with terminal codes (e.g., for a vertically
      split window) redraw from ScreenLines[].  That should be faster than going
      through the lines with win_line(), especially when using syntax
      highlighting.
    - The Syntax menu is now pre-generated by a separate script.  Makes loading
      the menu 70% faster.  This can halve the startup time of gvim.
    - When doing ":help tag", don't open help.txt first, jump directly to the help
      tag.  It's faster and avoids an extra message.
    - Win32: When a file name doesn't end in ".lnk" don't try resolving a
      shortcut, it takes quite a bit of time.
    - Don't update the mouse pointer shape while there are typeahead characters.
    - Change META[] from a string into an array, avoids using strchr() on it.
    - Don't clear the command line when adding characters, avoids that screen_fill
      is called but doesn't do anything.

    Robustness:
    - Unix: Check for running out of stack space when executing a regexp.  Avoids
      a nasty crash.  Only works when the system supports running the signal
      function on another stack.
    - Disallow ":source <dirname>".  On unix it's possible to read a directory,
      does not make sense to use it as Vim commands.

    Security:
    - When reading from or writing to a temporary file, check that it isn't a
      symbolic link.  Gives some protection against symlink attacks.
    - When creating a backup file copy or a swap file, check for it already
      existing to avoid a symlink attack. (Colin Phipps)
    - Evaluating options which are an expression is done in a |sandbox|.  If the
      option was set by a modeline, it cannot cause damage.
    - Use a secure way to generate temp file names: Create a private directory for
      temp files.  Used for Unix, MS-DOS and OS/2.
    - 'makeef' can be empty, which means that an internally generated file name is
      used.  The old default was "/tmp/file", which is a security risk.
      Writing 'makeef' in the current directory fails in a read-only directory and
      causes trouble when using ":grep" on all files.  Made the default empty for
      all systems, so that a temp file is used.
    - The command from a tags file is executed in the sandbox for better security.
    - The Ruby, Tcl and Python interfaces cannot be used from the sandbox.  They
      might do dangerous things.  Perl is still possible, but limited to the Safe
      environment. (Donnie Smith)

    Syntax highlighting:
    - Optimized the speed by caching the state stack all over the file, not just
      the part being displayed.  Required for folding.
    - Added ":syntax sync fromstart": Always parse from the start of the file.
    - Added the "display" argument for syntax items: use the item only when
      displaying the result.  Can make parsing faster for text that isn't going to
      be displayed.
    - When using CTRL-L, the cached states are deleted, to force parsing the text
      again.
    - Use elfhash algorithm for table of keywords.  This should give a better
      distribution and speedup keyword lookup. (Campbell)
    - Also allow the "lc" leading context for skip and end patterns. (Scott
      Bigham)
    - Syntax items can have the "extend" argument to undo the effect of a
      "keepend" argument of an item it is contained in.  Makes it possible to have
      some contained items extend a region while others don't.
    - ":syntax clear" now deletes the b:current_syntax variable.  That's logical,
      since no syntax is defined after this command.
    - Added ":syntax enable": switch on syntax highlighting without changing the
      colors.  This allows specifying the colors in the .vimrc file without the
      need for a mysyntaxfile.
    - Added ":syntax reset": reset the colors to their defaults.
    - Added the "contains=TOP" and "contains=CONTAINED" arguments.  Makes it
      possible to define a transparent item that doesn't contain itself.
    - Added a "containedin" argument to syntax items.  Allows adding a contained
      item to an existing item (e.g., to highlight a name in a comment).

    Modeless selection:
    - When in the command-line window, use modeless selection in the other
      windows.  Makes it possible to copy visible text to the command-line window.
    - Support modeless selection on the cmdline in a terminal.  Previously it was
      only possible for the GUI.
    - Make double-right-click in modeless selection select a whole word.  Single
      right click doesn't use the word selection started by a double-left-click.
      Makes it work like in Visual mode.
    - The modeless selection no longer has an implied automatic copy to the
      clipboard.  It now obeys the 'a' and 'A' flags in 'guioptions' or
      "autoselect" and "autoselectml" in 'clipboard'.
    - Added the CTRL-Y command in Cmdline-mode to copy the modeless selection to
      the clipboard.  Also works at the hit-enter prompt and the more prompt.
      Removed the mappings in runtime/mswin.vim for CTRL-Y and CTRL-Z in
      cmdline-mode to be able to use CTRL-Y in the new way.

    Reduced the amount of stack space used by regmatch() to allow it to handle
    complicated patterns on a longer text.

    'isfname' now includes '%' and '#'.  Makes "vim dir\#file" work for MS-DOS.

    Added keypad special keys <kEnter>, <k0> - <k9>.  When not mapped they behave
    like the ASCII equivalent. (Ivan Wellesz and Vince Negri)
    Recognize a few more xterm keys: <C-Right>, <C-Left>, <C-End>, <C-Home>

    Also trigger the BufUnload event when Vim is going to exit.  Perhaps a script
    needs to do some cleaning up.

    Expand expression in backticks: `={expr}`.  Can be used where backtick
    expansion is done. (Vince Negri)

    GUI:
    - Added 'L' and 'R' flags in 'guioptions': Add a left or right scrollbar only
      when there is a vertically split window.
    - X11: When a color can't be allocated, use the nearest match from the
      colormap.  This avoids that black is used for many things. (Monish Shah)
      Also do this for the menu and scrollbar, to avoid that they become black.
    - Win32 and X11: Added 'mouseshape' option: Adjust the mouse pointer shape to
      the current mode. (Vince Negri)
    - Added the 'linespace' option: Insert a pixel line between lines. (Nam)
    - Allow modeless selection (without moving the cursor) by keeping CTRL and
      SHIFT pressed. (Ivan Wellesz)
    - Motif: added toolbar. (Gordon Prieur)  Also added tooltips.
    - Athena: added toolbar and tooltips. (David Harrison -- based on Gordon
      Prieur's work)
    - Made the 'toolbar' option work for Athena and Motif.  Can now switch between
      text and icons on the fly.  (David Harrison)
    - Support menu separator lines for Athena.  (David Harrison)
    - Athena: Adjust the arrow pixmap used in a pullright menu to the size of the
      font. (David Harrison)
    - Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem
      Khodush)
    - When no --enable-xim argument is given, automatically enable it when a X GUI
      is used.  Required for dead key support (and multi-byte input).
    - After a file selection dialog, check that the edited files were not changed
      or deleted.  The Win32 dialog allows deleting and renaming files.
    - Motif and Athena: Added support for "editres". (Martin Dalecki)
    - Motif and Athena: Added "menuFont" to be able to specify a font or fontset
      for the menus.  Can also be set with the "Menu" highlight group.  Useful
      when the locale is different from 'encoding'. (David Harrison)
      When FONTSET_ALWAYS is defined, always use a fontset for the menus.  Should
      avoid trouble with changing from a font to a fontset.  (David Harrison)
    - Highlighting and font for the tooltips can be specified with the "Tooltip"
      highlight group. (David Harrison)
    - The Cmdline-mode menus can be used at the more-prompt.  This mostly works
      fine, because they start with a CTRL-C.  The "Copy" menu works to copy the
      modeless selection.  Allows copying the output of ":set all" or ":intro"
      without auto-selection.
    - When starting the GUI when there is no terminal connected to stdout and
      stderr, display error messages in a dialog.  Previously they wouldn't be
      displayed at all.
    - Allow setting 'browsedir' to the name of a directory, to be used for the
      file dialog. (Dan Sharp)
    - b:browsefilter and g:browsefilter can be set to the filters used for the
      file dialog.  Supported for Win32 and Motif GUI. (Dan Sharp)

    X11:
    - Support for the clipboard selection as register "+.  When exiting or
      suspending copy the selection to cut buffer 0.  Should allow copy/paste with
      more applications in a X11-standard way.  (Neil Bird)
    - Use the X clipboard in any terminal, not just in an xterm.
      Added "exclude:" in 'clipboard': Specify a pattern to match against terminal
      names for which no connection should be made to the X server.  The default
      currently work for FreeBSD and Linux consoles.
    - Added a few messages for when 'verbose' is non-zero to show what happens
      when trying to connect to the X server.  Should help when trying to find out
      why startup is slow.

    GTK GUI: (partly by Marcin Dalecki)
    - With some fonts the characters can be taller than ascent + descent.  E.g.,
      "-misc-fixed-*-*-*-*-18-*-*-*-*-*-iso10646-1".  Add one to the character
      cell height.
    - Implement "no" value for 'winaltkeys': don't use Alt-Key as a menu shortcut,
      when 'wak' changed after creating the menus.
    - Setting 'wak' after the GUI started works.
    - recycle text GC's to reduce communication.
    - Adjust icon size to window manager.
    - Cleanup in font handling.
    - Replace XQueryColor with GDK calls.
    - Gnome support.  Detects Gnome in configure and uses different widgets.
      Otherwise it's much like GTK. (Andy Kahn)
      It is disabled by default, because it causes a few problems.
    - Removed the special code to fork first and then start the GUI.  Now use
      _exit() instead of exit(), this works fine without special tricks.
    - Dialogs sometimes appeared a bit far away.  Position the dialogs inside
      the gvim window. (Brent Verner)
    - When dropping a file on Vim, remove extra slashes from the start of the
      path.  Also shorten the file name if possible.

    Motif: (Martin Dalecki)
    - Made the dialog layout better.
    - Added find and find/replace dialogs.
    - For the menus, change "iso-8859" to "iso_8859", Linux appears to need this.
    - Added icon to dialogs, like for GTK.
    - Use XPM bitmaps for the icon when possible.  Use the Solaris XpmP.h include
      file when it's available.
    - Change the shadow of the toolbar items to get a visual feedback of it being
      pressed on non-LessTiff.
    - Use gadgets instead of windows for some items for speed.

    Command line completion:
    - Complete environment variable names. (Mike Steed)
    - For ":command", added a few completion methods: "mapping", "function",
      "expression" and "environment".
    - When a function doesn't take arguments, let completion add () instead of (.

    For MS-DOS, MS-Windows and OS/2: Expand %VAR% environment variables like $VAR.
    (Walter Briscoe)

    Redirect messages to the clipboard ":redir @*" and to the unnamed register
    ":redir @"". (Wall)

    ":let @/ = ''"' clears the search pattern, instead of setting it to an empty
    string.

    Expression evaluation:
    - "? :" can be used like in C.
    - col("$") returns the length of the cursor line plus one. (Stephen P. Wall)
    - Optional extra argument for match(), matchend() and matchstr(): Offset to
      start looking for a match.
    - Made third argument to strpart() optional.  (Paul Moore, Zdenek Sekera)
    - exists() can also be used to check for Ex commands and defined autocommands.
    - Added extra argument to input(): Default text.
    - Also set "v:errmsg" when using ":silent! cmd".
    - Added the v:prevcount variable: v:count for the previous command.
    - Added "v:progname", name with which Vim was started. (Vince Negri)
    - In the verbose message about returning from a function, also show the return
      value.

    Cscope:
    - Added the cscope_connection() function. (Andy Kahn)
    - ":cscope kill -1" kills all cscope connections. (Andy Kahn)
    - Added the 'cscopepathcomp' option. (Scott Hauck)
    - Added ":scscope" command, split window and execute Cscope command. (Jason
      Duell)

    VMS:
    - Command line arguments are always uppercase.  Interpret a "-X" argument as
      "-x" and "-/X" as "-X".
    - Set 'makeprg' and 'grepprg' to meaningful defaults. (Zoltan Arpadffy)
    - Use the X-clipboard feature and the X command server. (Zoltan Arpadffy)

    Macintosh: (Dany St-Amant)
    - Allow a tags file to have CR, CR-LF or LF line separator.
    - Carbonized (while keeping non Carbon code)
      (Some work "stolen" from Ammon Skidmore)
    - Improved the menu item index handling (should be faster)
    - Runtime commands now handle / in file name (MacOS 9 version)
    - Added ":winpos" support.
    - Also accept tags files in DOS format. (Axel Kielhorn)
    - Support using "~" in file names for home directory.

    Options:
    - When using set += or ^= , check for items used twice.  Duplicates are
      removed.  (Vince Negri)
    - When setting an option that is a list of flags, remove duplicate flags.
    - If possible, use getrlimit() to set 'maxmemtot' and 'maxmem'. (Pina)
    - Added "alpha" to 'nrformats': increment or decrement an alphabetic character
      with CTRL-A and CTRL-X.
    - ":set opt&vi" sets an option to its Vi default, ":set opt&vim" to its Vim
      default.  Useful to set 'cpo' to its Vim default without knowing what flags
      that includes.
    - 'scrolloff' now also applies to a long, wrapped line that doesn't fit in the
      window.
    - Added more option settings to the default menus.
    - Updated the option window with new options.  Made it a bit easier to read.

    Internal changes:
    - Split line pointers in text part and attributes part.  Allows for future
      change to make attribute more than one byte.
    - Provide a qsort() function for systems that don't have it.
    - Changed the big switch for Normal mode commands into a table.  This cleans
      up the code considerably and avoids trouble for some optimizing compilers.
    - Assigned a negative value to special keys, to avoid them being mixed up with
      Unicode characters.
    - Global variables expand_context and expand_pattern were not supposed to be
      global.  Pass them to ExpandOne() and all functions called by it.
    - No longer use the global reg_ic flag.  It caused trouble and in a few places
      it was not set.
    - Removed the use of the stuff buffer for "*", "K", CTRL-], etc.  Avoids
      problem with autocommands.
    - Moved some code from ex_docmd.c to ex_cmds2.c.  The file was getting too
      big.  Also moved some code from screen.c to move.c.
    - Don't include the CRC table for encryption, generate it.  Saves quite a bit
      of space in the source code. (Matthias Kramm)
    - Renamed multibyte.c to mbyte.c to avoid a problem with 8.3 filesystems.
    - Removed the GTK implementation of ":findhelp", it now uses the
      ToolBar.FindHelp  menu entry.
    - Renamed mch_windexit() to mch_exit(), mch_init() to mch_early_init() and
      mch_shellinit() to mch_init().

    Highlighting:
    - In a ":highlight" listing, show "xxx" with the highlight color.
    - Added support for xterm with 88 or 256 colors.  The right color numbers will
      be used for the name used in a ":highlight" command. (Steve Wall)
    - Added "default" argument for ":highlight".  When included, the command is
      ignored if highlighting for the group was already defined.
      All syntax files now use ":hi default ..." to allow the user to specify
      colors in his vimrc file.  Also, the "if did_xxx_syntax_inits" is not needed
      anymore.  This greatly simplifies using non-default colors for a specific
      language.
    - Adjusted colortest.vim: Included colors on normal background and reduced the
      size by using a while loop. (Rafael Garcia-Suarez)
    - Added the "DarkYellow" color name.  Just to make the list of standard colors
      consistent, it's not really a nice color to use.

    When an xterm is in 8-bit mode this is detected by the code returned for
    |t_RV|.  All key codes are automatically converted to their 8-bit versions.

    The OPT_TCAP_QUERY in xterm patch level 141 and later is used to obtain the
    actual key codes used and the number of colors for t_Co.  Only when |t_RV| is
    also used.

    ":browse set" now also works in the console mode.  ":browse edit" will give an
    error message.

    ":bdelete" and ":bunload" only report the number of deleted/unloaded buffers
    when more than 'report'.  The message was annoying when deleting a buffer in a
    script.

    Jump list:
    - The number of marks kept in the jumplist has been increased from 50 to 100.
    - The jumplist is now stored in the viminfo file.  CTRL-O can be used to jump
      to positions from a previous edit session.
    - When doing ":split" copy the jumplist to the new window.

    Also set the '[ and '] marks for the "~" and "r" commands.  These marks are
    now always set when making a change with a Normal mode command.

    Python interface: Allow setting the width of a vertically split window. (John
    Cook)

    Added "=word" and "=~word" to 'cinkeys' (also used in 'indentkeys').

    Added "j1" argument in 'cinoptions': indent {} inside () for Java. (Johannes
    Zellner)
    Added the "l" flag in 'cinoptions'. (Anduin Withers)
    Added 'C', 'U', 'w' and 'm' flags to 'cinoptions'. (Servatius Brandt)

    When doing ":wall" or ":wqall" and a modified buffer doesn't have a name,
    mention its buffer number in the error message.

    ":function Name" lists the function with line numbers.  Makes it easier to
    find out where an error happened.

    In non-blockwise Visual mode, "r" replaces all selected characters with the
    typed one, like in blockwise Visual mode.

    When editing the last file in the argument list in any way, allow exiting.
    Previously this was only possible when getting to that file with ":next" or
    ":last".

    Added the '1' flag to 'formatoptions'. (Vit Stradal)
    Added 'n' flag in 'formatoptions': format a numbered list.

    Swap file:
    - When a swap file already exists, and the user selects "Delete" at the
      ATTENTION prompt, use the same ".swp" swapfile, to avoid creating a ".swo"
      file which won't always be found.
    - When giving the ATTENTION message and the date of the file is newer than the
      date of swap file, give a warning about this.
    - Made the info for an existing swap file a bit shorter, so that it still fits
      on a 24 line screen.
    - It was possible to make a symlink with the name of a swap file, linking to a
      file that doesn't exist.  Vim would then silently use another file (if open
      with O_EXCL refuses a symlink).  Now check for a symlink to exist.  Also do
      another check for an existing swap file just before creating it to catch a
      symlink attack.

    The g CTRL-G command also works in Visual mode and counts the number of words.
    (Chase Tingley)

    Give an error message when using 'shell' and it's empty.

    Added the possibility to include "%s" in 'shellpipe'.

    Added "uhex" value for 'display': show non-printable characters as <xx>.
    Show unprintable characters with NonText highlighting, also in the command
    line.

    When asked to display the value of a hidden option, tell it's not supported.

    Win32:
    - When dropping a shortcut on gvim (.lnk file) edit the target, not the
      shortcut itself.  (Yasuhiro Matsumoto)
    - Added C versions of the OpenWithVim and SendToVim programs. (Walter Briscoe)
    - When 'shell' is "cmd" or "cmd.exe", set 'shellredir' to redirect stderr too.
      Also check for the Unix shell names.
    - When $HOMEDRIVE and $HOMEPATH are defined, use them to define $HOME.  (Craig
      Barkhouse)

    Win32 console version:
    - Includes the user and system name in the ":version" message, when available.
      It generates a pathdef.c file for this.  (Jon Miner)
    - Set the window icon to Vim's icon (only for Windows 2000).  While executing
      a shell command, modify the window title to show this.  When exiting,
      restore the cursor position too.  (Craig Barkhouse)
    - The Win32 console version can be compiled with OLE support.  It can only
      function as a client, not as an OLE server.

    Errorformat:
    - Let "%p" in 'errorformat' (column of error indicated by a row of characters)
      also accept a line of dots.
    - Added "%v" item in 'errorformat': Virtual column number. (Dan Sharp)
    - Added a default 'errorformat' value for VMS. (Jim Bush)

    The "p" command can now be used in Visual mode.  It overwrites the selected
    text with the contents of a register.

    Highlight the <> items in the intro message to make clear they are special.

    When using the "c" flag for ":substitute", allow typing "l" for replacing this
    item and then stop: "last".

    When printing a verbose message about sourcing another file, print the line
    number.

    When resizing the Vim window, don't use 'equalalways'.  Avoids that making the
    Vim window smaller makes split windows bigger.  And it's what the docs say.

    When typing CTRL-D in Insert mode, just after an autoindent, then hitting CR
    kept the remaining white space.  Now made it work like BS: delete the
    autoindent to avoid a blank non-empty line results.

    Added a GetHwnd() call to the OLE interface.  (Vince Negri)

    Made ":normal" work in an event handler.  Useful when dropping a file on Vim
    and for CursorHold autocommands.

    For the MS-Windows version, don't change to the directory of the file when a
    slash is used instead of a backslash.  Explorer should always use a backslash,
    the user can use a slash when typing the command.

    Timestamps:
    - When a buffer was changed outside of Vim and regaining focus, give a dialog
      to allow the user to reload the file.  Now also for other GUIs than
      MS-Windows.  And also used in the console, when compiled with dialog
      support.
    - Inspect the file contents to find out if it really changed, ignore
      situations where only the time stamp changed (e.g., checking the file out
      from CVS).
    - When checking the timestamp, first check if the file size changed, to avoid
      a file compare then.  Makes it quicker for large (log) files that are
      appended to.
    - Don't give a warning for a changed or deleted file when 'buftype' is set.
    - No longer warn for a changed directory.  This avoids that the file explorer
      produces warnings.
    - Checking timestamps is only done for buffers that are not hidden.  These
      will be checked when they become unhidden.
    - When checking for a file being changed outside of Vim, also check if the
      file permissions changed.  When the file contents didn't change but the
      permissions did, give a warning.
    - Avoid checking too often, otherwise the dialog keeps popping up for a log
      file that steadily grows.

    Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to
    "utf-8" causes the first byte of a multi-byte to be mapped.  Can cause very
    hard to find problems.  Disallow mapping part of a multi-byte character.

    For ":python" and ":tcl" accept an in-line script. (Johannes Zellner)
    Also for ":ruby" and ":perl". (Benoit Cerrina)

    Made ":syn include" use 'runtimepath' when the file name is not a full path.

    When 'switchbuf' contains "split" and the current window is empty, don't split
    the window.

    Unix: Catch SIGPWR to preserve files when the power is about to go down.

    Sniff interface: (Anton Leherbauer)
    - fixed windows code, esp. the event handling stuff
    - adaptations for sniff 4.x ($SNIFF_DIR4)
    - support for adding sniff requests at runtime

    Support the notation <A-x> as an alias for <M-x>.  This logical, since the Alt
    key is used.

    ":find" accepts a count, which means that the count'th match in 'path' is
    used.

    ":ls" and ":buffers" output shows modified/readonly/modifiable flag.  When a
    buffer is active show "a" instead of nothing.  When a buffer isn't loaded
    show nothing instead of "-".

    Unix install:
    - When installing the tools, set absolute paths in tools scripts efm_perl.pl
      and mve.awk.  Avoids that the user has to edit these files.
    - Install Icons for KDE when the directories exist and the icons do not exist
      yet.

    Added has("win95"), to be able to distinguish between MS-Windows 95/98/ME and
    NT/2000/XP in a Vim script.

    When a ":cd" command was typed, echo the new current directory. (Dan Sharp)

    When using ":winpos" before the GUI window has been opened, remember the
    values until it is opened.

    In the ":version" output, add "/dyn" for features that are dynamically loaded.
    This indicates the feature may not always work.

    On Windows NT it is possible that a directory is read-only, but a file can be
    deleted.  When making a backup by renaming the file and 'backupdir' doesn't
    use the current directory, this causes the original file to be deleted,
    without the possibility to create a new file.  Give an extra error message
    then to warn to user about this.

    Made CTRL-R CTRL-O at the command line work like CTRL-R CTRL-R, so that it's
    consistent with Insert mode.

    ==============================================================================

    COMPILE TIME CHANGES					*compile-changes-6*

    All generated files have been moved out of the "src" directory.  This makes it
    easy to see which files are not edited by hand.  The files generated by
    configure are now in the "src/auto" directory.  For Unix, compiled object
    files go in the objects directory.

    The source archive was over the 1.4M floppy limit.  The archives are now split
    up into two runtime and two source archives.  Also provide a bzip2 compressed
    archive that contains all the sources and runtime files.

    Added "reconfig" as a target for make.  Useful when changing some of the
    arguments that require flushing the cache, such as switching from GTK to
    Motif.  Adjusted the meaning of GUI_INC_LOC and GUI_LIB_LOC to be consistent
    over different GUIs.

    Added src/README.txt to give an overview of the main parts of the source code.

    The Unix Makefile now fully supports using $(DESTDIR) to install to a specific
    location.  Replaces the manual setting of *ENDLOC variables.

    Added the possibility for a maintainer of a binary version to include his
    e-mail address with the --with-compiledby configure argument.

    Included features are now grouped in "tiny", "small", "normal", "big" and
    "huge".  This replaces "min-features" and "max-features".  Using "tiny"
    disables multiple windows for a really small Vim.

    For the tiny version or when FEAT_WINDOWS is not defined: Firstwin and lastwin
    are equal to curwin and don't use w_next and w_prev.

    Added the +listcmds feature.  Can be used to compile without the Vim commands
    that manipulate the buffer list and argument list (the buffer list itself is
    still there, can't do without it).

    Added the +vreplace feature.  It is disabled in the "small" version to avoid
    that the 16 bit DOS version runs out of memory.

    Removed GTK+ support for versions older than 1.1.16.

    The configure checks for using PTYs have been improved.  Code taken from a
    recent version of screen.

    Added configure options to install Vim, Ex and View under another name (e.g.,
    vim6, ex6 and view6).

    Added "--with-global-runtime" configure argument.  Allows specifying the
    global directory used in the 'runtimepath' default.

    Made enabling the SNiFF+ interface possible with a configure argument.

    Configure now always checks /usr/local/lib for libraries and
    /usr/local/include for include files.  Helps finding the stuff for iconv() and
    gettext().

    Moved the command line history stuff into the +cmdline_hist feature, to
    exclude the command line history from the tiny version.

    MS-Windows: Moved common functions from Win16 and Win32 to os_mswin.c.  Avoids
    having to change two files for one problem.  (Vince Negri)

    Moved common code from gui_w16.c and gui_w32.c to gui_w48.c (Vince Negri)

    The jumplist is now a separate feature.  It is disabled for the "small"
    version (16 bit MS-DOS).

    Renamed all types ending in _t to end in _T.  Avoids potential problems with
    system types.

    Added a configure check for X11 header files that implicitly define the return
    type to int. (Steve Wall)

    "make doslang" in the top directory makes an archive with the menu and .mo
    files for Windows.  This uses the files generated on Unix, these should work
    on MS-Windows as well.

    Merged a large part of os_vms.c with os_unix.c.  The code was duplicated in
    the past which made maintenance more work.  (Zoltan Arpadffy)

    Updated the Borland C version 5 Makefile: (Dan Sharp)
    - Fixed the Perl build
    - Added python and tcl builds
    - Added dynamic perl and dynamic python builds
    - Added uninstal.exe build
    - Use "yes" and "no" for the options, like in Make_mvc.mak.

    Win32: Merged Make_gvc.mak and Make_ovc.mak into one file: Make_ivc.mak.  It's
    much smaller, many unecessary text has been removed. (Walter Briscoe)
    Added Make_dvc.mak to be able to debug exe generated with Make_mvc.mak in
    MS-Devstudio. (Walter Briscoe)

    MS-Windows: The big gvim.exe, which includes OLE, now also includes
    dynamically loaded Tcl, Perl and Python.  This uses ActivePerl 5.6.1,
    ActivePython 2.1.1 and ActiveTCL 8.3.3

    Added AC_EXEEXT to configure.in, to check if the executable needs ".exe" for
    Cygwin or MingW.  Renamed SUFFIX to EXEEXT in Makefile.

    Win32: Load comdlg32.dll delayed for faster startup.  Only when using VC 6.
    (Vipin Aravind)

    Win32: When compiling with Borland, allow using IME. (Yasuhiro Matsumoto)

    Win32: Added Makefile for Borland 5 to compile gvimext.dll. (Yasuhiro
    Matsumoto)

    ==============================================================================

    BUG FIXES						*bug-fixes-6*

    When checking the command name for "gvim", "ex", etc. ignore case.  Required
    for systems where case is ignored in command names.

    Search pattern "[a-c-e]" also matched a 'd' and didn't match a '-'.

    When double-clicking in another window, wasn't recognized as double click,
    because topline is different.  Added set_mouse_topline().

    The BROKEN_LOCALE check was broken.  (Marcin Dalecki)

    When "t_Co" is set, the default colors remain the same, thus wrong.  Reset the
    colors after changing "t_Co". (Steve Wall)

    When exiting with ":wqall" the messages about writing files could overwrite
    each other and be lost forever.

    When starting Vim with an extremely long file name (around 1024 characters) it
    would crash.  Added a few checks to avoid buffer overflows.

    CTRL-E could get stuck in a file with very long lines.

    ":au syntax<Tab>" expanded event names while it should expand groups starting
    with "syntax".

    When expanding a file name caused an error (e.g., for <amatch>) it was
    produced even when inside an "if 0".

    'cindent' formatted C comments differently from what the 'comments' option
    specified. (Steve Wall)

    Default for 'grepprg' didn't include the file name when only grepping in one
    file.  Now /dev/null has been added for Unix.

    Opening the option window twice caused trouble.  Now the cursor goes to the
    existing option window.

    ":sview" and ":view" didn't set 'readonly' for an existing buffer.  Now do set
    'readonly', unless the buffer is also edited in another window.

    GTK GUI: When 'guioptions' excluded 'g', the more prompt caused the toolbar
    and menubar to disappear and resize the window (which clears the text).
    Now always grey-out the toplevel menus to avoid that the menubar changes size
    or disappears.

    When re-using the current buffer for a new buffer, buffer-local variables were
    not deleted.

    GUI: when 'scrolloff' is 0 dragging the mouse above the window didn't cause a
    down scroll.  Now pass on a mouse event with mouse_row set to -1.

    Win32: Console version didn't work on telnet, because of switching between two
    console screens.  Now use one console screen and save/restore the contents
    when needed.  (Craig Barkhouse)

    When reading a file the magic number for encryption was included in the file
    length. (Antonio Colombo)

    The quickfix window contained leading whitespace and NULs for multi-line
    messages. (David Harrison)

    When using cscope, redundant tags were removed.  This caused a numbering
    problem, because they were all listed.  Don't remove redundant cscope tags.
    (David Bustos).

    Cscope: Test for which matches are in the current buffer sometimes failed,
    causing a jump to another match than selected. (David Bustos)

    Win32: Buffer overflow when adding a charset name in a font.

    'titlestring' and 'iconstring' were evaluating an expression in the current
    context, which could be a user function, which is a problem for local
    variables vs global variables.

    Win32 GUI: Mapping <M-F> didn't work.  Now handle SHIFT and CTRL in
    _OnSysChar().

    Win32 GUI: (on no file), :vs<CR>:q<CR> left a trail of pixels down the middle.
    Could also happen for the ruler.  screen_puts() didn't clear the right char in
    ScreenLines[] for the bold trick.

    Win32: ":%!sort|uniq" didn't work, because the input file name touches the
    "|".  Insert a space before the "|".

    OS/2: Expanding wildcards included non-existing files.  Caused ":runtime" to
    fail, which caused syntax highlighting to fail.

    Pasting a register containing CTRL-R on the command line could cause an
    endless loop that can't be interrupted.  Now it can be stopped with CTRL-C.

    When 'verbose' is set, a message for file read/write could overwrite the
    previous message.
    When 'verbose' is set, the header from ":select" was put after the last
    message.  Now start a new line.

    The hit-enter prompt reacted to the response of the t_RV string, causing
    messages at startup to disappear.

    When t_Co was set to 1, colors were still used.  Now only use color when t_Co
    > 1.

    Listing functions with ":function" didn't quit when 'q' or ':' was typed at
    the more prompt.

    Use mkstemp() instead of mktemp() when it's available, avoids a warning for
    linking on FreeBSD.

    When doing Insert mode completion it's possible that b_sfname is NULL.  Don't
    give it to printf() for the "Scanning" message.

    ":set runtimepath-=$VIMRUNTIME" didn't work, because expansion of wildcards
    was done after trying to remove the string.  Now for ":set opt+=val" and ":set
    opt-=val" the expansion of wildcards is done before adding or removing "val".

    Using CTRL-V with the "r" command with a blockwise Visual selection inserted a
    CTRL-V instead of getting a special character.

    Unix: Changed the order of libraries: Put -lXdmcp after -lX11 and -lSM -lICE
    after -lXdmcp.  Should fix link problem on HP-UX 10.20.

    Don't remove the last "-lm" from the link line.  Vim may link but fail later
    when the GUI starts.

    When the shell returns with an error when trying to expand wildcards, do
    include the pattern when the "EW_NOTFOUND" flag was set.
    When expanding wildcards with the shell fails, give a clear error message
    instead of just "1 returned".

    Selecting a Visual block, with the start partly on a Tab, deleting it leaves
    the cursor too far to the left.  Causes "s" to work in the wrong position.

    Pound sign in normal.c caused trouble on some compilers.  Use 0xA3 instead.

    Warning for changing a read-only file wasn't given when 'insertmode' was set.

    Win32: When 'shellxquote' is set to a double quote (e.g., using csh), ":!start
    notepad file" doesn't work.  Remove the double quotes added by 'shellxquote'
    when using ":!start". (Pavol Juhas)

    The "<f-args>" argument of ":command" didn't accept Tabs for white space.
    Also, don't add an empty argument when there are trailing blanks.

    ":e test\\je" edited "test\je", but ":next test\\je" edited "testje".
    Backslashes were removed one time too many for ":next".

    VMS: "gf" didn't work properly.  Use vms_fixfilename() to translate the file
    name. (Zoltan Arpadffy)

    After ":hi Normal ctermbg=black ctermfg=white" and suspending Vim not all
    characters are redrawn with the right background.

    When doing "make test" without +eval or +windows feature, many tests failed.
    Now have test1 generate a script to copy the correct output, so that a test
    that doesn't work is skipped.

    On FreeBSD the Perl interface added "-lc" to the link command and Python added
    "-pthread".  These two don't work together, because the libc_r library should
    be used.  Removed "-lc" from Perl, it should not be needed.
    Also: Add "-pthread" to $LIBS, so that the checks for functions is done with
    libc_r.  Sigaltstack() appears to be missing from libc_r.

    The Syntax sub-menus were getting too long, reorganized them and added another
    level for some langauges.

    Visual block "r"eplace didn't work well when a Tab is partly included.
    (Matthias Kramm)

    When yanking a Visual block, where some lines end halfway the block, putting
    the text somewhere else doesn't insert a block.  Padd with spaces for missing
    characters.  Added "y_width" to struct yankreg. (Matthias Kramm)

    If a substitute string has a multibyte character after a backslash only the
    first byte of it was skipped. (Muraoka Taro)

    Win32: Numeric keypad keys were missing from the builtin termcap entry.

    When a file was read-only ":wa!" didn't force it to be written. (Vince Negri)

    Amiga: A file name starting with a colon was considered absolute but it isn't.
    Amiga: ":pwd" added a slash when in the root of a drive.

    Don't let 'ttymouse' default to "dec" when compiled with dec mouse support.
    It breaks the gpm mouse (Linux console).

    The prototypes for the Perl interface didn't work for threaded Perl.  Added a
    sed command to remove the prototypes from proto/if_perl.pro and added them
    manually to if_perl.xs.

    When ":w!" resets the 'readonly' option the title and status lines were not
    updated.

    ":args" showed the current file when the argument list was empty.  Made this
    work like Vi: display nothing.

    "99:<C-U>echo v:count" echoed "99" in Normal mode, but 0 in Visual mode.
    Don't set v:count when executing a stuffed command.

    Amiga: Got a requester for "home:" because it's in the default runtime path.
    Don't bring up a requester when searching for a file in 'path', sourcing the
    .vimrc file or using ":runtime".

    Win16 and Win32: Considered a file "\path\file" absolute.  Can cause the same
    file to appear as two different buffers.

    Win32: Renaming a file to an empty string crashed Vim.  Happened when using
    explorer.vim and hitting ESC at the rename prompt.

    Win32: strftime() crashed when called with a "-1" value for the time.

    Win32 with Borland compiler: mch_FullName() didn't work, caused tag file not
    to be found.

    Cscope sometimes jumped to the wrong tag. (David Bustos)

    OS/2: Could not find the tags file.  mch_expand_wildcards() added another
    slash to a directory name.

    When using ">>" the `] mark was not in the last column.

    When Vim was compiled without menu support, filetype.vim was still trying to
    source the menu.vim script. (Rafael Garcia-Suarez)

    ":ptag" added an item to the tag stack.

    Win32 IME: "gr" didn't use IME mode.

    In the "vim --help" message the term "options" was used for arguments.  That's
    confusing, call them "arguments".

    When there are two windows, and a BufUnload autocommand for closing window #1
    closed window #2, Vim would crash.

    When there is a preview window and only one other window, ":q" wouldn't exit.

    In Insert mode, when cancelling a digraph with ESC, the '?' wasn't removed.

    On Unix glob(".*") returned "." and "..", on Windows it didn't.  On Windows
    glob("*") also returned files starting with a dot.  Made this work like Unix
    on all systems.

    Win32: Removed old code to open a console.  Vimrun is now used and works fine.

    Compute the room needed by the intro message accurately, so that it also fits
    on a 25 line console. (Craig Barkhouse)

    ":ptnext" was broken.  Now remember the last tag used in the preview window
    separately from the tagstack.

    Didn't check for "-display" being the last argument. (Wichert Akkerman)

    GTK GUI: When starting "gvim" under some conditions there would be an X error.
    Don't replace the error handler when creating the xterm clipboard. (Wichert
    Akkerman)

    Adding a space after a help tag caused the tag not to be found.  E.g., ":he
    autoindent ".

    Was trying to expand a URL into a full path name.  On Windows this resulted in
    the current directory to be prepended to the URL.  Added vim_isAbsName() and
    vim_FullName() to avoid that various machine specific functions do it
    differently.

    ":n *.c" ":cd .." ":n" didn't use the original directory of the file.  Vi only
    does it for the current file (looks like a bug).  Now remember the buffer used
    for the entry in the argument list and use it's name (adjusted when doing
    ":cd"), unless it's deleted.

    When inserting a special key as its name ("<F8>" as four characters) after
    moving around in Insert mode, undo didn't work properly.

    Motif GUI: When using the right mouse button, for some people gvim freezed for
    a couple of seconds (Motif 1.2?).  This doesn't happen when there is no Popup
    menu.  Solved by only creating a popup menu when 'mousemodel' is "popup" or
    "popup_setpos". (David Harrison)

    Motif: When adding many menu items, the "Help" menu disappeared but the
    menubar didn't wrap.  Now manually set the menubar height.

    When using <BS> in Insert mode to remove a line break, or using "J" to join
    lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro)

    Removed defining SVR4 in configure.  It causes problems for some X header
    files and doesn't appear to be used anywhere.

    When 'wildignore' is used, 'ignorecase' for a tag match was not working.

    When 'wildignore' contains "*~" it was impossible to edit a file ending in a
    "~".  Now don't recognize a file ending in "~" as containing wildcards.

    Disabled the mouse code for OS/2.  It was not really used.

    ":mksession" always used the full path name for a buffer, also when the short
    name could be used.
    ":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a
    way that they would be restored.  Now use the key name if possible, this is
    portable.

    After recovering a file and abandoning it, an ":edit" command didn't give the
    ATTENTION prompt again.  Would be useful to be able to delete the file in an
    easy way.  Reset the BF_RECOVERED flag when unloading the buffer.

    histdel() could match or ignore case, depending on what happened before it.
    Now always match case.

    When a window size was specified when splitting a window, it would still get
    the size from 'winheight' or 'winwidth' if it's larger.

    When using "append" or "insert" inside a function definition, a line starting
    with "function" or "endfunction" caused confusion.  Now recognize the commands
    and skip lines until a ".".

    At the end of any function or sourced file need_wait_return could be reset,
    causing messages to disappear when redrawing.

    When in a while loop the line number for error messages stayed fixed.  Now the
    line number is remembered in the while loop.

    "cd c:/" didn't work on MS-DOS.  mch_isdir() removed a trailing slash.

    MS-Windows: getftime() didn't work when a directory had a trailing slash or
    backslash.  Didn't show the time in the explorer because of this.

    When doing wildcard completion, a directory "a/" sorted after "a-b".  Now
    recognize path separators when sorting files.

    Non-Unix systems: When editing "c:/dir/../file" and "c:/file" they were
    created as different buffers, although it's the same file.  Expand to a full
    file name also when an absolute name contains "..".

    "g&" didn't repeat the last substitute properly.

    When 'clipboard' was set to "unnamed", a "Y" command would not write to "0.
    Now make a copy of register 0 to the clipboard register.

    When the search pattern matches in many ways, it could not always be
    interrupted with a CTRL-C.  And CTRL-C would have to be hit once for every
    line when 'hlsearch' is on.
    When 'incsearch' is on and interrupting the search for a match, don't abandon
    the command line.

    When turning a directory name into a full path, e.g., with fnamemodify(),
    sometimes a slash was added.  Make this consistent: Don't add a slash.

    When a file name contains a "!", using it in a shell command will cause
    trouble: ":!cat %".  Escape the "!" to avoid that.  Escape it another time
    when 'shell' contains "sh".

    Completing a file name that has a tail that starts with a "~" didn't work:
    ":e view/~<Tab>".

    Using a ":command" argument that contains < and > but not for a special
    argument was not skipped properly.

    The DOS install program: On Win2000 the check for a vim.exe or gvim.exe in
    $PATH didn't work, it always found it in the current directory.
    Rename the vim.exe in the current dir to avoid this. (Walter Briscoe)

    In the MS-DOS/Windows install program, use %VIM% instead of an absolute path,
    so that moving Vim requires only one change in the batch file.

    Mac: mch_FullName() changed the "fname" argument and didn't always initialize
    the buffer.

    MS-DOS: mch_FullName() didn't fix forward/backward slashes in an absolute file
    name.

    "echo expand("%:p:h")" with an empty file name removed one directory name on
    MS-DOS.  For Unix, when the file name is a directory, the directory name was
    removed.  Now make it consistent: "%:p" adds a path separator for all systems,
    but no path separator is added in other situations.

    Unix: When checking for a CTRL-C (could happen any time) and there is an X
    event (e.g., clipboard updated) and there is typeahead, Vim would hang until a
    character was typed.

    MS-DOS, MS-Windows and Amiga: expanding "$ENV/foo" when $ENV ends in a colon,
    had the slash removed.

    ":he \^=" gave an error for using \_.  ":he ^=" didn't find tag :set^=.  Even
    "he :set^=" didn't find it.

    A tags file name "D:/tags" was used as file "tags" in "D:".  That doesn't work
    when the current path for D: isn't the root of the drive.

    Removed calls to XtInitializeWidgetClass(), they shouldn't be necessary.

    When using a dtterm or various other color terminals, and the Normal group has
    been set to use a different background color, the background wouldn't always
    be displayed with that color.  Added check for "ut" termcap entry: If it's
    missing, clearing the screen won't give us the current background color.  Need
    to draw each character instead.  Vim now also works when the "cl" (clear
    screen) termcap entry is missing.

    When repeating a "/" search command with a line offset, the "n" did use the
    offset but didn't make the motion linewise.  Made "d/pat/+2" and "dn" do the
    same.

    Win32: Trying to use ":tearoff" for a menu that doesn't exist caused a crash.

    OpenPTY() didn't work on Sequent.  Add a configure check for getpseudotty().

    C-indenting: Indented a line starting with ")" with the matching "(", but not
    a line starting with "x)" looks strange.  Also compute the indent for aligning
    with items inside the () and use the lowest indent.

    MS-DOS and Windows: ":n *.vim" also matched files ending in "~".
    Moved mch_expandpath() from os_win16.c and os_msdos.c to misc1.c, they are
    equal.

    Macintosh: (Dany St-Amant)
    - In Vi-compatible mode didn't read files with CR line separators.
    - Fixed a bug in the handling of Activate/Deactivate Event
    - Fixed a bug in gui_mch_dialog (using wrong pointer)

    Multibyte GDK XIM: While composing a multibyte-word, if user presses a
    mouse button, then the word is removed.  It should remain and composing end.
    (Sung-Hyun Nam)

    MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF
    conversion by the C library got in the way of detecting a "dos" 'fileformat'.

    When 'smartcase' is set, patterns with "\S" would also make 'ignorecase'
    reset.

    When clicking the mouse in a column larger than 222, it moved to the first
    column.  Can't encode a larger number in a character.  Now limit the number to
    222, don't jump back to the first column.

    GUI: In some versions CSI would cause trouble, either when typed directly or
    when part of a multi-byte sequence.

    When using multibyte characters in a ":normal" command, a trailing byte that
    is CSI or K_SPECIAL caused problems.

    Wildmenu didn't handle multi-byte characters.

    ":sleep 10" could not be interrupted on Windows, while "gs" could.  Made them
    both work the same.

    Unix: When waiting for a character is interrupted by an X-windows event (e.g.,
    to obtain the contents of the selection), the wait time would not be honored.
    A message could be overwritten quickly.  Now compute the remaining waiting
    time.

    Windows: Completing "\\share\c$\S" inserted a backslash before the $ and then
    the name is invalid.  Don't insert the backslash.

    When doing an auto-write before ":make", IObuff was overwritten and the wrong
    text displayed later.

    On the Mac the directories "c:/tmp" and "c:/temp" were used in the defaults
    for 'backupdir' and 'directory, they don't exist.

    The check for a new file not to be on an MS-DOS filesystem created the file
    temporarily, which can be slow.  Don't do this if there is another check for
    the swap file being on an MS-DOS filesystem.

    Don't give the "Changing a readonly file" warning when reading from stdin.

    When using the "Save As" menu entry and not entering a file name, would get an
    error message for the trailing ":edit #".  Now only do that when the
    alternate file name was changed.

    When Vim owns the X11 selection and is being suspended, an application that
    tries to use the selection hangs.  When Vim continues it could no longer
    obtain the selection.  Now give up the selection when suspending.

    option.h and globals.h were included in some files, while they were already
    included in vim.h.  Moved the definition of EXTERN to vim.h to avoid doing it
    twice.

    When repeating an operator that used a search pattern and the search pattern
    contained characters that have a special meaning on the cmdline (e.g., CTRL-U)
    it didn't work.

    Fixed various problems with using K_SPECIAL (0x80) and CSI (0x9b) as a byte in
    a (multibyte) character.  For example, the "r" command could not be repeated.

    The DOS/Windows install program didn't always work from a directory with a
    long filename, because $VIM and the executable name would not have the same
    path.

    Multi-byte:
    - Using an any-but character range [^x] in a regexp didn't work for UTF-8.
      (Muraoka Taro)
    - When backspacing over inserted characters in Replace mode multi-byte
      characters were not handled correctly. (Muraoka Taro)
    - Search commands "#" and "*" didn't work with multibyte characters. (Muraoka
      Taro)
    - Word completion in Insert mode didn't work with multibyte characters.
      (Muraoka Taro)
    - Athena/Motif GUI: when 'linespace' is non-zero the cursor would be drawn too
      wide (number of bytes instead of cell width).
    - When changing 'encoding' to "euc-jp" and inserting a character Vim would
      crash.
    - For euc-jp characters positioning the cursor would sometimes be wrong.
      Also, with two characters with 0x8e leading byte only the first one would be
      displayed.
    - When using DYNAMIC_ICONV on Win32 conversion might fail because of using the
      wrong error number. (Muraoka Taro)
    - Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce
      the right character.
    - When using Visual block selection and only the left halve of a double-wide
      character is selected, the highlighting continued to the end of the line.
    - Visual-block delete didn't work properly when deleting the right halve of a
      double-wide character.
    - Overstrike mode for the cmdline replaced only the first byte of a multibyte
      character.
    - The cursor in Replace mode (also in the cmdline) was to small on a
      double-wide character.
    - When a multibyte character contained a 0x80 byte, it didn't work (was using
      a CSI byte instead). (Muraoka Taro)
    - Wordwise selection with the mouse didn't work.
    - Yanking a modeless selection of multi-byte characters didn't work.
    - When 'selection' is "exclusive", selecting a word that ends in a multi-byte
      character used wrong highlighting for the following character.

    Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse)

    Win32 GUI: When "vimrun.exe" is used to execute an external command, don't
    give a message box with the return value, it was already printed by vimrun.
    Also avoid printing the return value of the shell when ":silent!" is used.

    Win32: selecting a lot of text and using the "find/replace" dialog caused a
    crash.

    X11 GUI: When typing a character with the 8th bit set and the Meta/Alt
    modifier, the modifier was removed without changing the character.

    Truncating a message to make it fit on the command line, using "..." for the
    middle, didn't always compute the space correctly.

    Could not imap <C-@>.  Now it works like <Nul>.

    VMS:
    - Fixed a few things for VAXC.  os_vms_fix.com had some strange CTRL-M
      characters. (Zoltan Arpadffy and John W. Hamill)
    - Added VMS-specific defaults for the 'isfname' and 'isprint' options.
      (Zoltan Arpadffy)
    - Removed os_vms_osdef.h, it's no longer used.

    The gzip plugin used a ":normal" command, this doesn't work when dropping a
    compressed file on Vim.

    In very rare situations a binary search for a tag would fail, because an
    uninitialzed value happens to be half the size of the tag file. (Narendran)

    When using BufEnter and BufLeave autocommands to enable/disable a menu, it
    wasn't updated right away.

    When doing a replace with the "c"onfirm flag, the cursor was positioned after
    the ruler, instead of after the question.  With a long replacement string the
    screen could scroll up and cause a "more" prompt.  Now the message is
    truncated to make it fit.

    Motif: The autoconf check for the Xp library didn't work.

    When 'verbose' is set to list lines of a sourced file, defining a function
    would reset the counter used for the "more" prompt.

    In the Win32 find/replace dialog, a '/' character caused problems.  Escape it
    with a backslash.

    Starting a shell with ":sh" was different from starting a shell for CTRL-Z
    when suspending doesn't work.  They now work the same way.

    Jumping to a file mark while in a changed buffer gave a "mark not set" error.

    ":execute histget("cmd")" causes an endless loop and crashed Vim.  Now catch
    all commands that cause too much recursiveness.

    Removed "Failed to open input method" error message, too many people got this
    when they didn't want to use a XIM.

    GUI: When compiled without the +windows feature, the scrollbar would start
    below line one.

    Removed the trick with redefining character class functions from regexp.c.

    Win32 GUI: Find dialog gives focus back to main window, when typing a
    character mouse pointer is blanked, it didn't reappear when moving it in the
    dialog window. (Vince Negri)

    When recording and typing a CTRL-C, no character was recorded.  When in Insert
    mode or cancelling half a command, playing back the recorded sequence wouldn't
    work.  Now record the CTRL-C.

    When the GUI was started, mouse codes for DEC and netterm were still checked
    for.

    GUI: When scrolling and 'writedelay' is non-zero, the character under the
    cursor was displayed in the wrong position (one line above/below with
    CTRL-E/CTRL-Y).

    A ":normal" command would reset the 'scrollbind' info.  Causes problems when
    using a ":normal" command in an autocommand for opening a file.

    Windows GUI: a point size with a dot, like "7.5", wasn't recognized. (Muraoka
    Taro)

    When 'scrollbind' wasn't set would still remember the current position,
    wasting time.

    GTK: Crash when 'shell' doesn't exist and doing":!ls".  Use _exit() instead of
    exit() when the child couldn't execute the shell.

    Multi-byte:
    - GUI with double-byte encoding: a mouse click in left halve of double-wide
      character put the cursor in previous char.
    - Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey"
      included the character after the word.
    - When using a double-byte encoding and there is a lead byte at the end of the
      line, the preceding line would be displayed.  "ga" also showed wrong info.
    - "gf" didn't include multi-byte characters before the cursor properly.
      (Muraoka Taro)

    GUI: The cursor was sometimes not removed when scrolling.  Changed the policy
    from redrawing the cursor after each call to gui_write() to only update it at
    the end of update_screen() or when setting the cursor position.  Also only
    update the scrollbars at the end of update_screen(), that's the only place
    where the window text may have been scrolled.

    Formatting "/*<Tab>long text", produced "* <Tab>" in the next line.  Now
    remove the space before the Tab.
    Formatting "/*<Tab>  long text", produced "* <Tab> long text" in the next
    line.  Now keep the space after the Tab.

    In some places non-ASCII alphabetical characters were accepted, which could
    cause problems.  For example, ":X" (X being such a character).

    When a pattern matches the end of the line, the last character in the line was
    highlighted for 'hlsearch'.  That looks wrong for "/\%3c".  Now highlight the
    character just after the line.

    Motif: If a dialog was closed by clicking on the "X" of the window frame Vim
    would no longer respond.

    When using CTRL-X or CTRL-A on a number with many leading zeros, Vim would
    crash. (Matsumoto)

    When 'insertmode' is set, the mapping in mswin.vim for CTRL-V didn't work in
    Select mode.  Insert mode wasn't restarted after overwriting the text.
    Now allow nesting Insert mode with insert and change commands.  CTRL-O
    cwfoo<Esc> now also works.

    Clicking with the right mouse button in another window started Visual mode,
    but used the start position of the current window.  Caused ml_get errors when
    the line number was invalid.  Now stay in the same window.

    When 'selection' is "exclusive", "gv" sometimes selected one character less.

    When 'comments' contains more than one start/middle/end triplet, the optional
    flags could be mixed up.  Also didn't align the end with the middle part.

    Double-right-click in Visual mode didn't update the shown mode.

    When the Normal group has a font name, it was never used when starting up.
    Now use it when 'guifont' and 'guifontset' are empty.
    Setting a font name to a highlight group before the GUI was started didn't
    work.

    "make test" didn't use the name of the generated Vim executable.

    'cindent' problems:
    - Aligned with an "else" inside a do-while loop for a line below that loop.
      (Meikel Brandmeyer)
    - A line before a function would be indented even when terminated with a
      semicolon. (Meikel Brandmeyer)
    - 'cindent' gave too much indent to a line after a "};" that ends an array
      init.
    - Support declaration lines ending in "," and "\".  (Meikel Brandmeyer)
    - A case statement inside a do-while loop was used for indenting a line after
      the do-while loop. (Meikel Brandmeyer)
    - When skipping a string in a line with one double quote it could continue in
      the previous line. (Meikel Brandmeyer)

    When 'list' is set, 'hlsearch' didn't highlight a match at the end of the
    line.  Now highlight the '$'.

    The Paste menu item in the menu bar, the popup menu and the toolbar were all
    different.  Now made them all equal to how it was done in mswin.vim.

    st_dev can be smaller than "unsigned".  The compiler may give an overflow
    warning.  Added a configure check for dev_t.

    Athena: closing a confirm() dialog killed Vim.

    Various typos in the documentation. (Matt Dunford)

    Python interface: The definition of _DEBUG could cause trouble, undefine it.
    The error message for not being able to load the shared library wasn't
    translated.  (Muraoka Taro)

    Mac: (Dany St-Amant and Axel Kielhorn)
    - Several fixes.
    - Vim was eating 80% of the CPU time.
    - The project os_mac.pbxproj didn't work,  Moved it to a subdirectory.
    - Made the menu priority work for the menubar.
    - Fixed a problem with dragging the scrollbar.
    - Cleaned up the various #ifdefs.

    Unix: When catching a deadly signal and we keep getting one use _exit() to
    exit in a quick and dirty way.

    Athena menu ordering didn't work correctly. (David Harrison)

    A ":make" or ":grep" command with a long argument could cause a crash.

    Doing ":new file" and using "Quit" for the ATTENTION dialog still opened a new
    window.

    GTK: When starting the GUI and there is an error in the .vimrc file, don't
    present the wait-return prompt, since the message was given in the terminal.

    When there was an error in a .vimrc file the terminal where gvim was started
    could be cleared.  Set msg_row in main.c before writing any messages.

    GTK and X11 GUI: When trying to read characters from the user (e.g. with
    input()) before the Vim window was opened caused Vim to hang when it was
    started from the desktop.

    OS/390 uses 31 bit pointers.  That broke some computations with MAX_COL.
    Reduce MAX_COL by one bit for OS/390. (Ralf Schandl)

    When defining a function and it already exists, Vim didn't say it existed
    until after typing it.  Now do this right away when typing it.

    The message remembered for displaying later (keep_msg) was sometimes pointing
    into a generic buffer, which might be changed by the time the message is
    displayed.  Now make a copy of the message.

    When using multi-byte characters in a menu and a trailing byte is a backslash,
    the menu would not be created correctly.  (Muraoka Taro)
    Using a multibyte character in the substitute string where a trail byte is a
    backslash didn't work.  (Muraoka Taro)

    When setting "t_Co" in a vimrc file, then setting it automatically from an
    xterm termresponse and then setting it again manually caused a crash.

    When getting the value of a string option that is not supported, the number
    zero was returned.  This breaks a check like "&enc == "asdf".  Now an empty
    string is returned for string options.

    Crashed when starting the GTK GUI while using 'notitle' in the vimrc, setting
    'title' in the gvimrc and starting the GUI with ":gui".  Closed the connection
    to the X server accidentally.

    Had to hit return after selecting an entry for ":ts".

    The message from ":cn" message was sometimes cleared.  Now display it after
    redrawing if it doesn't cause a scroll (truncated when necessary).

    hangulin.c didn't compile when the GUI was disabled.  Disable it when it won't
    work.

    When setting a termcap option like "t_CO", the value could be displayed as
    being for a normal key with a modifier, like "<M-=>".

    When expanding the argument list, entries which are a directory name did not
    get included.  This stopped "vim c:/" from opening the file explorer.

    ":syn match sd "^" nextgroup=asdf" skipped the first column and matched the
    nextgroup in the second column.

    GUI: When 'lazyredraw' is set, 'showmatch' didn't work.  Required flushing
    the output.

    Don't define the <NetMouse> termcode in an xterm, reduces the problem when
    someone types <Esc> } in Insert mode.

    Made slash_adjust() work correctly for multi-byte characters. (Yasuhiro
    Matsumoto)
    Using a filename in Big5 encoding for autocommands didn't work (backslash in
    trailbyte).  (Yasuhiro Matsumoto)

    DOS and Windows: Expanding *.vim also matched file.vimfoo.  Expand path like
    Unix to avoid problems with Windows dir functions.  Merged the DOS and Win32
    functions.

    Win32: Gvimext could not edit more than a few files at once, the length of the
    argument was fixed.

    "ls -1 * | xargs vim" worked, but the input was in cooked mode.  Now switch to
    raw mode when needed.  Use dup() to copy the stderr file descriptor to stdin
    to make shell commands work.  No longer requires an external program to do
    this.

    When using ":filetype off", ftplugin and indent usage would be switched off at
    the same time.  Don't do this, setting 'filetype' manually can still use them.

    GUI: When writing a double-byte character, it could be split up in two calls
    to gui_write(), which doesn't work.  Now flush before the output buffer
    becomes full.

    When 'laststatus' is set and 'cmdheight' is two or bigger, the intro message
    would be written over the status line.
    The ":intro" command didn't work when there wasn't enough room.

    Configuring for Ruby failed with a recent version of Ruby. (Akinori Musha)

    Athena: When deleting the directory in which Vim was started, using the file
    browser made Vim exit.  Removed the use of XtAppError().

    When using autoconf 2.50, UNIX was not defined.  Moved the comment for "#undef
    UNIX" to a separate line.

    Win32: Disabled _OnWindowPosChanging() to make maximize work better.

    Win32: Compiling with VC 4.0 didn't work. (Walter Briscoe)

    Athena:
    - Finally fixed the problems with deleting a menu. (David Harrison)
    - Athena: When closing the confirm() dialog, worked like OK was pressed,
      instead of Cancel.

    The file explorer didn't work in compatible mode, because of line
    continuation.

    Didn't give an error message for ":digraph a".

    When using Ex mode in the GUI and typing a special key, <BS> didn't delete it
    correctly.  Now display '?' for a special key.

    When an operator is pending, clicking in another window made it apply to that
    window, even though the line numbers could be beyond the end of the buffer.

    When a function call doesn't have a terminating ")" Vim could crash.

    Perl interface: could crash on exit with perl 5.6.1. (Anduin Withers)

    Using %P in 'errorformat' wasn't handled correctly. (Tomas Zellerin)

    Using a syntax cluster that includes itself made Vim crash.

    GUI: With 'ls' set to 2, dragging the status line all the way up, then making
    the Vim window smaller: Could not the drag status line anymore.

    "vim -c startinsert! file" placed cursor on last char of a line, instead of
    after it.  A ":set" command in the buffer menu set w_set_curswant.  Now don't
    do this when w_curswant is MAXCOL.

    Win32: When the gvim window was maximized and selecting another font, the
    window would no longer fill the screen.

    The line with 'pastetoggle' in ":options" didn't show the right value when it
    is a special key.  Hitting <CR> didn't work either.

    Formatting text, resulting in a % landing in the first line, repeated the % in
    the following lines, like it's the start of a comment.

    GTK: When adding a toolbar item while gvim is already running, it wasn't
    possible to use the tooltip.  Now it works by adding the tooltip first.

    The output of "g CTRL-G" mentioned "Char" but it's actually bytes.

    Searching for the end of a oneline region didn't work correctly when there is
    an offset for the highlighting.

    Syntax highlighting: When synchronizing on C-comments, //*/ was seen as the
    start of a comment.

    Win32: Without scrollbars present, the MS mouse scroll wheel didn't work.
    Also handle the scrollbars when they are not visible.

    Motif: When there is no right scrollbar, the bottom scrollbar would still
    leave room for it.  (Martin Dalecki)

    When changing 'guicursor' and the value is invalid, some of the effects would
    still take place.  Now first check for errors and only make the new value
    effective when it's OK.

    Using "A" In Visual block mode, appending to lines that don't extend into the
    block, padding was wrong.

    When pasting a block of text, a character that occupies more than one screen
    column could be deleted and spaces inserted instead.  Now only do that with a
    tab.

    Fixed conversion of documentation to HTML using Perl. (Dan Sharp)

    Give an error message when a menu name starts with a dot.

    Avoid a hang when executing a shell from the GUI on HP-UX by pushing "ptem"
    even when sys/ptem.h isn't present.

    When creating the temp directory, make sure umask is 077, otherwise the
    directory is not accessible when it was set to 0177.

    Unix: When resizing the window and a redraw is a bit slow, could get a window
    resize event while redrawing, resulting in a messed up window.  Any input
    (e.g., a mouse click) would redraw.

    The "%B" item in the status line became zero in Insert mode (that's normal)
    for another than the current window.

    The menu entries to convert to xxd and back didn't work in Insert mode.

    When ":vglobal" didn't find a line where the pattern doesn't match, the error
    message would be the wrong way around.

    When ignoring a multi-line error message with "%-A", the continuation lines
    would be used anyway. (Servatius Brandt)

    "grx" on a double-wide character inserted "x", instead of replacing the
    character with "x ".  "gR" on <xx> ('display' set the "uhex") didn't replace
    at all.  When doing "gRxx" on a control character the first "x" would be
    inserted, breaking the alignment.

    Added "0)" to 'cinkeys', so that when typing a ) it is put in the same place
    as where "==" would put it.

    Win32: When maximized, adding/removing toolbar didn't resize the text area.

    When using <C-RightMouse> a count was discarded.

    When typing CTRL-V and <RightMouse> in the command line, would insert
    <LeftMouse>.

    Using "vis" or "vas" when 'selection' is exclusive didn't include the last
    character.

    When adding to an option like 'grepprg', leading space would be lost.  Don't
    expand environment variables when there is no comma separating the items.

    GUI: When using a bold-italic font, would still use the bold trick and
    underlining.

    Motif: The default button didn't work in dialogs, the first one was always
    used.  Had to give input focus to the default button.

    When using CTRL-T to jump within the same file, the '' mark wasn't set.

    Undo wasn't Vi compatible when using the 'c' flag for ":s".  Now it undoes the
    whole ":s" command instead of each confirmed replacement.

    The Buffers menu, when torn-off, disappeared when being refreshed.  Add a
    dummy item to avoid this.

    Removed calling msg_start() in main(), it should not be needed.

    vim_strpbrk() did not support multibyte characters. (Muraoka Taro)

    The Amiga version didn't compile, the code was too big for relative jumps.
    Moved a few files from ex_docmd.c to ex_cmds2.c

    When evaluating the "= register resulted in the "= register being changed, Vim
    would crash.

    When doing ":view file" and it fails, the current buffer was made read-only.

    Motif: For some people the separators in the toolbar disappeared when resizing
    the Vim window. (Martin Dalecki)

    Win32 GUI: when setting 'lines' to a huge number, would not compute the
    available space correctly.  Was counting the menu height twice.

    Conversion of the docs to HTML didn't handle the line with the +quickfix tag
    correctly. (Antonio Colombo)

    Win32: fname_case() didn't handle multi-byte characters correctly. (Yasuhiro
    Matsumoto)

    The Cygwin version had trouble with fchdir().  Don't use that function for
    Cygwin.

    The generic check in scripts.vim for "conf" syntax was done before some checks
    in filetype.vim, resulting in "conf" syntax too often.

    Dos32: Typing lagged behind.  Would wait for one biostick when checking if a
    character is available.

    GTK: When setting 'columns' while starting up "gvim", would set the width of
    the terminal it was started in.

    When using ESC in Insert mode, an autoindent that wraps to the next line
    caused the cursor to move to the end of the line temporarily.  When the
    character before the cursor was a double-wide multi-byte character the cursor
    would be on the right halve, which causes problems with some terminals.

    Didn't handle multi-byte characters correctly when expanding a file name.
    (Yasuhiro Matsumoto)

    Win32 GUI: Errors generated before the GUI is decided to start were not
    reported.

    globpath() didn't reserve enough room for concatenated results. (Anduin
    Withers)

    When expanding an option that is very long already, don't do the expansion, it
    would be truncated to MAXPATHL. (Anduin Withers)

    When 'selection' is "exclusive", using "Fx" in Visual mode only moved until
    just after the character.

    When using IME on the console to enter a file name, the screen may scroll up.
    Redraw the screen then. (Yasuhiro Matsumoto)

    Motif: In the find/replace dialog the "Replace" button didn't work first time,
    second time it replaced all matches.  Removed the use of ":s///c".
    GTK: Similar problems with the find/replace dialog, moved the code to a common
    function.

    X11: Use shared GC's for text. (Martin Dalecki)

    "]i" found the match under the cursor, instead of the first one below it.
    Same for "]I", "] CTRL-I", "]d", "]D" and "] CTRL-D".

    Win16: When maximized and the font is changed, don't change the window size.
    (Vince Negri)

    When 'lbr' is set, deleting a block of text could leave the cursor in the
    wrong position.

    Win32: When opening a file with the "Edit with Vim" popup menu entry,
    wildcards would cause trouble.  Added the "--literal" argument to avoid
    expanding file names.

    When using "gv", it didn't restore that "$" was used in Visual block mode.

    Win32 GUI: While waiting for a shell command to finish, the window wasn't
    redrawn at all. (Yasuhiro Matsumoto)

    Syntax highlighting: A match that continues on a next line because of a
    contained region didn't end when that region ended.

    The ":s" command didn't allow flags like 'e' and 'i' right after it.

    When using ":s" to split a line, marks were moved to the next line.  Vi keeps
    them in the first line.

    When using ":n" ":rew", the previous context mark was at the top of the file,
    while Vi puts it in the same place as the cursor.  Made it Vi compatible.

    Fixed Vi incompatibility: Text was not put in register 1 when using "c" and
    "d" with a motion character, when deleting within one line with one of the
    commands: % ( ) `<character> / ? N n { }

    Win32 GUI: The tooltip for tear-off items remained when the tear-off item was
    no longer selected.

    GUI: When typing ":" at the more prompt, would return to Normal mode and not
    redraw the screen.

    When starting Vim with an argument "-c g/at/p" the printed lines would
    overwrite each other.

    BeOS: Didn't compile.  Configure didn't add the os_beos files, the QNX check
    removed them.  Various changes to os_beos.cc. (Joshua Haberman)
    Removed the check for the hardware platform, the BeBox has not been produced
    for a long time now.

    Win32 GUI: don't use a message box when the shell returns an error code,
    display the message in the Vim window.

    Make_mvc.mak always included "/debug" for linking.  "GUI=no" argument didn't
    work.  Use "DEBUG=yes" instead of "DEBUG=1" to make it consistent. (Dan Sharp)

    When a line in the tags file ended in ;" (no TAB following) the command would
    not be recognized as a search command.

    X11: The inputMethod resource never worked.  Don't use the "none" input method
    for SGI, it apparently makes the first character in Input method dropped.

    Fixed incorrect tests in os_mac.h. (Axel Kielhorn)

    Win32 console: When the console where Vim runs in is closed, Vim could hang in
    trying to restore the window icon. (Yasuhiro Matsumoto)

    When using ":3call func()" or ":3,3call func() the line number was ignored.

    When 'showbreak' and 'linebreak' were both set, Visual highlighting sometimes
    continued until the end of the line.

    GTK GUI: Tearoff items were added even when 'guioptions' didn't contain 't'
    when starting up.

    MS-Windows: When the current directory includes a "~", searching files with
    "gf" or ":find" didn't work.  A "$" in the directory had the same problem.
    Added mch_has_exp_wildcard() functions.

    When reducing the Vim window height while starting up, would get an
    out-of-memory error message.

    When editing a very long search pattern, 'incsearch' caused the redraw of the
    command line to fail.

    Motif GUI: On some systems the "Help" menu would not be on the far right, as
    it should be.  On some other systems (esp. IRIX) the command line would not
    completely show.  Solution is to only resize the menubar for Lesstif.

    Using "%" in a line that contains "\\" twice didn't take care of the quotes
    properly.  Now make a difference between \" and \\".

    For non-Unix systems a dummy file is created when finding a swap name to
    detect a 8.3 filesystem.  When there is an existing swap file, would get a
    warning for the file being created outside of Vim.  Also, when closing the Vim
    window the file would remain.

    Motif: The menu height was always computed, using a "-menuheight" argument
    was setting the room for the command line.  Now make clear the argument is not
    supported.

    For some (EBCDIC) systems, POUND was equal to '#'.  Added an #if for that to
    avoid a duplicate case in a switch.

    The GUI may have problems when forking.  Always call _exit() instead of exit()
    in the parent, the child will call exit().

    Win32 GUI: Accented characters were often wrong in dialogs and tearoff menus.
    Now use CP_ACP instead of CP_OEMCP. (Vince Negri)

    When displaying text with syntax highlighting causes an error (e.g., running
    out of stack) the syntax highlighting is disabled to avoid further messages.

    When a command in a .vimrc or .gvimrc causes an ATTENTION prompt, and Vim was
    started from the desktop (no place to display messages) it would hang.  Now
    open the GUI window early to be able to display the messages and pop up the
    dialog.

    "r<CR>" on a multi-byte character deleted only the first byte of the
    character. "3r<CR>" deleted three bytes instead of three characters.

    When interrupting reading a file, Vi considers the buffer modified.  Added the
    'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to
    do ":q").

    When using an item in 'guicursor' that starts with a colon, Vim would get
    stuck or crash.

    When putting a file mark in a help file and later jumping back to it, the
    options would not be set.  Extended the modeline in all help files to make
    this work better.

    When a modeline contained "::" the local option values would be printed.  Now
    ignore it.

    Some help files did not use a 8.3 names, which causes problems when using
    MS-DOS unzip.  Renamed "multibyte.txt" to "mbyte.txt", "rightleft.txt" to
    "rileft.txt", "tagsearch.txt" to "tagsrch.txt", "os_riscos.txt" to
    "os_risc.txt".

    When Visual mode is blockwise, using "iw" or "aw" made it characterwise.  That
    doesn't seem right, only do this when in linewise mode.  But then do it
    always, not only when start and end of Visual mode are equal.

    When using "viw" on a single-letter word and 'selection' is exclusive, would
    not include the word.

    When formatting text from Insert mode, using CTRL-O, could mess up undo
    information.

    While writing a file (also for the backup file) there was no check for an
    interrupt (hitting CTRL-C).  Vim could hang when writing a large file over a
    slow network, and moving the mouse didn't make it appear (when 'mousehide' is
    set) and the screen wasn't updated in the GUI.  Also allow interrupting when
    syncing the swap file, it can take a long time.

    When using ":mksession" while there is help window, it would later be restored
    to the right file but not marked as a help buffer.  ":help" would then open
    another window.  Now use the value "help" for 'buftype' to mark a help buffer.

    The session file contained absolute path names in option values, that doesn't
    work when the home directory depends on the situation.  Replace the home
    directory with ~/ when possible.

    When using 'showbreak' a TAB just after the shown break would not be counted
    correctly, the cursor would be positioned wrong.

    With 'showbreak' set to "--->" or "------->" and 'sts' set to 4, inserting
    tabs did not work right.  Could cause a crash.  Backspacing was also wrong,
    could get stuck at a line break.

    Win32: crashed when tearing off a menu with over 300 items.

    GUI: A menu or toolbar item would appear when only a tooltip was defined for
    it.

    When 'scrolloff' is non-zero and "$" is in 'cpoptions', using "s" while the
    last line of the file is the first line on screen, the text wasn't displayed.

    When running "autoconf", delete the configure cache to force starting cleanly
    when configure is run again.

    When changing the Normal colors for cterm, the value of 'background' was
    changed even when the GUI was used.

    The warning for a missing vimrun.exe was always given on startup, but some
    people just editing a file don't need to be bothered by it.  Only show it when
    vimrun would be used.

    When using "%" in a multibyte text it could get confused by trailbytes that
    match. (Muraoka Taro)

    Termcap entry for RiscOS was wrong, using 7 and 8 in octal codes.

    Athena: The title of a dialog window and the file selector window were not
    set. (David Harrison)

    The "htmlLink" highlight group specified colors, which gives problems when
    using a color scheme.  Added the "Underlined" highlight group for this.

    After using ":insert" or ":change" the '[ mark would be one line too low.

    When looking for the file name after a match with 'include' one character was
    skipped.  Same for 'define'.

    Win32 and DJGPP: When editing a file with a short name in a directory, and
    editing the same file but using the long name, would end up with two buffers
    on the same file.

    "gf" on a filename that starts with "../" only worked when the file being
    edited is in the current directory.  An include file search didn't work
    properly for files starting with "../" or ".".  Now search both relative to
    the file and to the current directory.

    When 'printheader', 'titlestring', 'iconstring', 'rulerformat' or 'statusline'
    contained "%{" but no following "}" memory was corrupted and a crash could
    happen.

    ":0append" and then inserting two lines did not redraw the blank lines that
    were scrolled back down.

    When using insert mode completion in a narrow window, the message caused a
    scroll up.  Now shorten the message if it doesn't fit and avoid writing the
    ruler over the message.

    XIM still didn't work correctly on some systems, especially SGI/IRIX.  Added
    the 'imdisable' option, which is set by default for that system.

    Patch 6.0aw.008
    Problem:    When the first character of a file name is over 127, the Buffers
    	    menu entry would get a negative priority and cause problems.
    Solution:   Reduce the multiplier for the first character when computing
    	    the hash value for a Buffers menu entry.
    Files:	    runtime/menu.vim

    Patch 6.0aw.010
    Problem:    Win32: ":browse edit dir/dir" didn't work. (Vikas)
    Solution:   Change slashes to backslashes in the directory passed to the file
    	    browser.
    Files:	    src/gui_w48.c

    Athena file browser: On some systems wcstombs() can't be used to get the
    length of a multi-byte string.  Use the maximum length then. (Yasuhiro
    Matsumoto)

    Patch 6.0ax.001
    Problem:    When 'patchmode' is set, appending to a file gives an empty
    	    original file. (Ed Ralston)
    Solution:   Also make a backup copy when appending and 'patchmode' is set.
    Files:	    src/fileio.c

    Patch 6.0ax.002
    Problem:    When 'patchmode' is set, appending to a compressed file gives an
    	    uncompressed original file. (Ed Ralston)
    Solution:   Create the original file before decompressing.
    Files:	    runtime/plugin/gzip.vim

    Patch 6.0ax.005
    Problem:    Athena file selector keeps the title of the first invocation.
    Solution:   Set the title each time the file selector is opened. (David
    	    Harrison)
    Files:	    src/gui_at_fs.c

    Patch 6.0ax.007
    Problem:    When using GPM (mouse driver in a Linux console) a double click is
    	    interpreted as a scroll wheel click.
    Solution:   Check if GPM is being used when deciding if a mouse event is for
    	    the scroll wheel.
    Files:	    src/term.c

    Patch 6.0ax.010
    Problem:    The Edit.Save menu and the Save toolbar button didn't work when
    	    the buffer has no file name.
    Solution:   Use a file browser to ask for a file name.  Also fix the toolbar
    	    Find item in Visual mode.
    Files:	    runtime/menu.vim

    Patch 6.0ax.012
    Problem:    When 'cpoptions' contains "$", breaking a line for 'textwidth'
    	    doesn't redraw properly. (Stefan Schulze)
    Solution:   Remove the dollar before breaking the line.
    Files:	    src/edit.c

    Patch 6.0ax.014
    Problem:    Win32: On Windows 98 ":make -f file" doesn't work when 'shell' is
    	    "command.com" and 'makeprg' is "nmake".  The environment isn't
    	    passed on to "nmake".
    Solution:   Also use vimrun.exe when redirecting the output of a command.
    Files:	    src/os_win32.c

    Patch 6.0ax.016
    Problem:    The version number was reported wrong in the intro screen.
    Solution:   Check for a version number with two additional letters.
    Files:	    src/version.c

    Patch 6.0ax.019
    Problem:    When scrolling a window with folds upwards, switching to another
    	    vertically split window and back may not update the scrollbar.
    Solution:   Limit w_botline to the number of lines in the buffer plus one.
    Files:	    src/move.c

    top - main help file