*version7.txt*  For Vim version 7.2.  Last change: 2009 Dec 02


		  VIM REFERENCE MANUAL    by Bram Moolenaar

									*vim7*
Welcome to Vim 7!  A large number of features has been added.  This file
mentions all the new items, changes to existing features and bug fixes
since Vim 6.x.  Use this command to see the version you are using: >
	:version

See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0.
See |version4.txt| for differences between Vim 3.x and Vim 4.x.
See |version5.txt| for differences between Vim 4.x and Vim 5.x.
See |version6.txt| for differences between Vim 5.x and Vim 6.x.

INCOMPATIBLE CHANGES			|incompatible-7|

NEW FEATURES				|new-7|

Vim script enhancements			|new-vim-script|
Spell checking				|new-spell|
Omni completion				|new-omni-completion|
MzScheme interface			|new-MzScheme|
Printing multi-byte text		|new-print-multi-byte|
Tab pages				|new-tab-pages|
Undo branches				|new-undo-branches|
Extended Unicode support		|new-more-unicode|
More highlighting			|new-more-highlighting|
Translated manual pages			|new-manpage-trans|
Internal grep				|new-vimgrep|
Scroll back in messages			|new-scroll-back|
Cursor past end of the line		|new-onemore|
POSIX compatibility			|new-posix|
Debugger support			|new-debug-support|
Remote file explorer			|new-netrw-explore|
Define an operator			|new-define-operator|
Mapping to an expression		|new-map-expression|
Visual and Select mode mappings		|new-map-select|
Location list				|new-location-list|
Various new items			|new-items-7|

IMPROVEMENTS				|improvements-7|

COMPILE TIME CHANGES			|compile-changes-7|

BUG FIXES				|bug-fixes-7|

VERSION 7.1			|version-7.1|
Changed					|changed-7.1|
Added					|added-7.1|
Fixed					|fixed-7.1|

VERSION 7.2			|version-7.2|
Changed					|changed-7.2|
Added					|added-7.2|
Fixed					|fixed-7.2|

==============================================================================
INCOMPATIBLE CHANGES				*incompatible-7*

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

A ":write file" command no longer resets the 'modified' flag of the buffer,
unless the '+' flag is in 'cpoptions' |cpo-+|.  This was illogical, since the
buffer is still modified compared to the original file.  And when undoing
all changes the file would actually be marked modified.  It does mean that
":quit" fails now.

":helpgrep" now uses a help window to display a match.

In an argument list double quotes could be used to include spaces in a file
name.  This caused a difference between ":edit" and ":next" for escaping
double quotes and it is incompatible with some versions of Vi.
	Command			Vim 6.x	file name	Vim 7.x file name ~
	:edit foo\"888		foo"888			foo"888
	:next foo\"888		foo888			foo"888
	:next a\"b c\"d		ab cd			a"b  and  c"d

In a |literal-string| a single quote can be doubled to get one.
":echo 'a''b'" would result in "a b", but now that two quotes stand for one it
results in "a'b".

When overwriting a file with ":w! fname" there was no warning for when "fname"
was being edited by another Vim.  Vim now gives an error message |E768|.

The support for Mac OS 9 has been removed.

Files ending in .tex now have 'filetype' set to "context", "plaintex", or
"tex".  |ft-tex-plugin|


Minor incompatibilities:

For filetype detection: For many types, use */.dir/filename instead of
~/.dir/filename, so that it also works for other user's files.

For quite a few filetypes the indent settings have been moved from the
filetype plugin to the indent plugin.  If you used: >
	:filetype plugin on
Then some indent settings may be missing.  You need to use: >
	:filetype plugin indent on

":0verbose" now sets 'verbose' to zero instead of one.

Removed the old and incomplete "VimBuddy" code.

Buffers without a name report "No Name" instead of "No File".  It was
confusing for buffers with a name and 'buftype' set to "nofile".

When ":file xxx" is used in a buffer without a name, the alternate file name
isn't set.  This avoids creating buffers without a name, they are not useful.

The "2html.vim" script now converts closed folds to HTML.  This means the HTML
looks like it's displayed, with the same folds open and closed.  Use "zR", or
"let html_ignore_folding=1", if no folds should appear in the HTML. (partly by
Carl Osterwisch)
Diff mode is now also converted to HTML as it is displayed.

Win32: The effect of the <F10> key depended on 'winaltkeys'.  Now it depends
on whether <F10> has been mapped or not.  This allows mapping <F10> without
changing 'winaltkeys'.

When 'octal' is in 'nrformats' and using CTRL-A on "08" it became "018", which
is illogical.  Now it becomes "9".  The leading zero(s) is(are) removed to
avoid the number becoming octal after incrementing "009" to "010".

When 'encoding' is set to a Unicode encoding, the value for 'fileencodings'
now includes "default" before "latin1".  This means that for files with 8-bit
encodings the default is to use the encoding specified by the environment, if
possible.  Previously latin1 would always be used, which is wrong in a
non-latin1 environment, such as Russian.

Previously Vim would exit when there are two windows, both of them displaying
a help file, and using ":quit".  Now only the window is closed.

"-w {scriptout}" only works when {scriptout} doesn't start with a digit.
Otherwise it's used to set the 'window' option.

Previously <Home> and <xHome> could be mapped separately.  This had the
disadvantage that all mappings (with modifiers) had to be duplicated, since
you can't be sure what the keyboard generates.  Now all <xHome> are internally
translated to <Home>, both for the keys and for mappings.  Also for <xEnd>,
<xF1>, etc.

":put" now leaves the cursor on the last inserted line.

When a .gvimrc file exists then 'compatible' is off, just like when a ".vimrc"
file exists.

When making a string upper-case with "vlllU" or similar then the German sharp
s is replaced with "SS".  This does not happen with "~" to avoid backwards
compatibility problems and because "SS" can't be changed back to a sharp s.

"gd" previously found the very first occurrence of a variable in a function,
that could be the function argument without type.  Now it finds the position
where the type is given.

The line continuation in functions was not taken into account, line numbers in
errors were logical lines, not lines in the sourced file.  That made it
difficult to locate errors.  Now the line number in the sourced file is
reported, relative to the function start.  This also means that line numbers
for ":breakadd func" are different.

When defining a user command with |:command| the special items could be
abbreviated.  This caused unexpected behavior, such as <li> being recognized
as <line1>.  The items can no longer be abbreviated.

When executing a FileChangedRO autocommand it is no longer allowed to switch
to another buffer or edit another file.  This is to prevent crashes (the event
is triggered deep down in the code where changing buffers is not anticipated).
It is still possible to reload the buffer.

At the |more-prompt| and the |hit-enter-prompt|, when the 'more' option is
set, the 'k', 'u', 'g' and 'b' keys are now used to scroll back to previous
messages.  Thus they are no longer used as typeahead.

==============================================================================
NEW FEATURES						*new-7*

Vim script enhancements					*new-vim-script*
-----------------------

In Vim scripts the following types have been added:

	|List|		ordered list of items
	|Dictionary|	associative array of items
	|Funcref|	reference to a function

Many functions and commands have been added to support the new types.

The |string()| function can be used to get a string representation of a
variable.  Works for Numbers, Strings and composites of them.  Then |eval()|
can be used to turn the string back into the variable value.

The |:let| command can now use "+=", "-=" and ".=": >
	:let var += expr	" works like :let var = var + expr
	:let var -= expr	" works like :let var = var - expr
	:let var .= string	" works like :let var = var . string

With the |:profile| command you can find out where your function or script
is wasting time.

In the Python interface vim.eval() also handles Dictionaries and Lists.
|python-eval| (G. Sumner Hayes)

The |getscript| plugin was added as a convenient way to update scripts from
www.vim.org automatically. (Charles Campbell)

The |vimball| plugin was added as a convenient way to distribute a set of
files for a plugin (plugin file, autoload script, documentation). (Charles
Campbell)


Spell checking						*new-spell*
--------------

Spell checking has been integrated in Vim.  There were a few implementations
with scripts, but they were slow and/or required an external program.

The 'spell'	   option is used to switch spell checking on or off
The 'spelllang'    option is used to specify the accepted language(s)
The 'spellfile'    option specifies where new words are added
The 'spellsuggest' option specifies the methods used for making suggestions

The |]s| and |[s| commands can be used to move to the next or previous error
The |zg| and |zw| commands can be used to add good and wrong words
The |z=|	  command can be used to list suggestions and correct the word
The |:mkspell|    command is used to generate a Vim spell file from word lists

The "undercurl" highlighting attribute was added to nicely point out spelling
mistakes in the GUI (based on patch from Marcin Dalecki).
The "guisp" color can be used to give it a color different from foreground and
background.
The number of possible different highlight attributes was raised from about
220 to over 30000.  This allows for the attributes of spelling to be combined
with syntax highlighting attributes.  This is also used for syntax
highlighting and marking the Visual area.

Much more info here: |spell|.


Omni completion					*new-omni-completion*
---------------

This could also be called "intellisense", but that is a trademark.  It is a
smart kind of completion.  The text in front of the cursor is inspected to
figure out what could be following.  This may suggest struct and class
members, system functions, etc.

Use CTRL-X CTRL-O in Insert mode to start the completion.  |i_CTRL-X_CTRL-O|

The 'omnifunc' option is set by filetype plugins to define the function that
figures out the completion.

Currently supported languages:
	C					|ft-c-omni|
	(X)HTML with CSS			|ft-html-omni|
	JavaScript				|ft-javascript-omni|
	PHP					|ft-php-omni|
	Python
	Ruby					|ft-ruby-omni|
	SQL					|ft-sql-omni|
	XML					|ft-xml-omni|
	any language with syntax highlighting	|ft-syntax-omni|

You can add your own omni completion scripts.

When the 'completeopt' option contains "menu" then matches for Insert mode
completion are displayed in a (rather primitive) popup menu.


MzScheme interface					*new-MzScheme*
------------------

The MzScheme interpreter is supported. |MzScheme|

The |:mzscheme| command can be used to execute MzScheme commands
The |:mzfile|   command can be used to execute an MzScheme script file

This depends on Vim being compiled with the |+mzscheme| feature.


Printing multi-byte text				*new-print-multi-byte*
------------------------

The |:hardcopy| command now supports printing multi-byte characters when using
PostScript.

The 'printmbcharset' and 'printmbfont' options are used for this.
Also see |postscript-cjk-printing|.  (Mike Williams)


Tab pages						*new-tab-pages*
---------

A tab page is page with one or more windows with a label (aka tab) at the top.
By clicking on the label you can quickly switch between the tab pages.  And
with the keyboard, using the |gt| (Goto Tab) command.  This is a convenient
way to work with many windows.

To start Vim with each file argument in a separate tab page use the |-p|
argument.  The maximum number of pages can be set with 'tabpagemax'.

The line with tab labels is either made with plain text and highlighting or
with a GUI mechanism.  The GUI labels look better but are only available on a
few systems.  The line can be customized with 'tabline', 'guitablabel' and
'guitabtooltip'.  Whether it is displayed is set with 'showtabline'.  Whether
to use the GUI labels is set with the "e" flag in 'guioptions'.

The |:tab| command modifier can be used to have most commands that open a new
window open a new tab page instead.

The |--remote-tab| argument can be used to edit a file in a new tab page in an
already running Vim server.

Variables starting with "t:" are local to a tab page.

More info here: |tabpage|
Most of the GUI stuff was implemented by Yegappan Lakshmanan.


Undo branches						*new-undo-branches*
-------------

Previously there was only one line of undo-redo.  If, after undoing a number
of changes, a new change was made all the undone changes were lost.  This
could lead to accidentally losing work.

Vim now makes an undo branch in this situation.  Thus you can go back to the
text after any change, even if they were undone.  So long as you do not run
into 'undolevels', when undo information is freed up to limit the memory used.

To be able to navigate the undo branches each change is numbered sequentially.
The commands |g-| and |:earlier| go back in time, to older changes.  The
commands |g+| and |:later| go forward in time, to newer changes.

The changes are also timestamped.  Use ":earlier 10m" to go to the text as it
was about ten minutes earlier.

The |:undolist| command can be used to get an idea of which undo branches
exist.  The |:undo| command now takes an argument to directly jump to a
specific position in this list.  The |changenr()| function can be used to
obtain the change number.

There is no graphical display of the tree with changes, navigation can be
quite confusing.


Extended Unicode support				*new-more-unicode*
------------------------

Previously only two combining characters were displayed.  The limit is now
raised to 6.  This can be set with the 'maxcombine' option.  The default is
still 2.

|ga| now shows all combining characters, not just the first two.

Previously only 16 bit Unicode characters were supported for displaying.  Now
the full 32 bit character set can be used.  Unless manually disabled at
compile time to save a bit of memory.

For pattern matching it is now possible to search for individual composing
characters. |patterns-composing|

The |8g8| command searches for an illegal UTF-8 byte sequence.


More highlighting				*new-more-highlighting*
-----------------

Highlighting matching parens:

When moving the cursor through the text and it is on a paren, then the
matching paren can be highlighted.  This uses the new |CursorMoved|
autocommand event.

This means some commands are executed every time you move the cursor.  If this
slows you down too much switch it off with: >
	:NoMatchParen

See |matchparen| for more information.

The plugin uses the |:match| command.  It now supports three match patterns.
The plugin uses the third one.  The first one is for the user and the second
one can be used by another plugin.

Highlighting the cursor line and column:

The 'cursorline' and 'cursorcolumn' options have been added.  These highlight
the screen line and screen column of the cursor.  This makes the cursor
position easier to spot.  'cursorcolumn' is also useful to align text.  This
may make screen updating quite slow.  The CursorColumn and CursorLine
highlight groups allow changing the colors used.  |hl-CursorColumn|
|hl-CursorLine|

The number of possible different highlight attributes was raised from about
220 to over 30000.  This allows for the attributes of spelling to be combined
with syntax highlighting attributes.  This is also used for syntax
highlighting, marking the Visual area, CursorColumn, etc.


Translated manual pages					*new-manpage-trans*
-----------------------

The manual page of Vim and associated programs is now also available in
several other languages.

French  - translated by David Blanchet
Italian - translated by Antonio Colombo
Russian - translated by Vassily Ragosin
Polish  - translated by Mikolaj Machowski

The Unix Makefile installs the Italian manual pages in .../man/it/man1/,
.../man/it.ISO8859-1/man1/ and .../man/it.UTF-8/man1/.  There appears to be no
standard for what encoding goes in the "it" directory, the 8-bit encoded file
is used there as a best guess.
Other languages are installed in similar places.
The translated pages are not automatically installed when Vim was configured
with "--disable-nls", but "make install-languages install-tool-languages" will
do it anyway.


Internal grep						*new-vimgrep*
-------------

The ":vimgrep" command can be used to search for a pattern in a list of files.
This is like the ":grep" command, but no external program is used.  Besides
better portability, handling of different file encodings and using multi-line
patterns, this also allows grepping in compressed and remote files.
|:vimgrep|.

If you want to use the search results in a script you can use the
|getqflist()| function.

To grep files in various directories the "**" pattern can be used.  It expands
into an arbitrary depth of directories.  "**" can be used in all places where
file names are expanded, thus also with |:next| and |:args|.


Scroll back in messages					*new-scroll-back*
-----------------------

When displaying messages, at the |more-prompt| and the |hit-enter-prompt|, The
'k', 'u', 'g' and 'b' keys can be used to scroll back to previous messages.
This is especially useful for commands such as ":syntax", ":autocommand" and
":highlight".  This is implemented in a generic way thus it works for all
commands and highlighting is kept.  Only works when the 'more' option is set.
Previously it only partly worked for ":clist".

The |g<| command can be used to see the last page of messages after you have
hit <Enter> at the |hit-enter-prompt|.  Then you can scroll further back.


Cursor past end of the line				*new-onemore*
---------------------------

When the 'virtualedit' option contains "onemore" the cursor can move just past
the end of the line.  As if it's on top of the line break.

This makes some commands more consistent.  Previously the cursor was always
past the end of the line if the line was empty.  But it is far from Vi
compatible.  It may also break some plugins or Vim scripts.  Use with care!

The patch was provided by Mattias Flodin.


POSIX compatibility					*new-posix*
-------------------

The POSIX test suite was used to verify POSIX compatibility.  A number of
problems have been fixed to make Vim more POSIX compatible.  Some of them
conflict with traditional Vi or expected behavior.  The $VIM_POSIX environment
variable can be set to get POSIX compatibility.  See |posix|.

Items that were fixed for both Vi and POSIX compatibility:
- repeating "R" with a count only overwrites text once; added the 'X' flag to
  'cpoptions' |cpo-X|
- a vertical movement command that moves to a non-existing line fails; added
  the '-' flag to 'cpoptions' |cpo--|
- when preserving a file and doing ":q!" the file can be recovered; added the
  '&' flag to 'cpoptions' |cpo-&|
- The 'window' option is partly implemented.  It specifies how much CTRL-F and
  CTRL-B scroll when there is one window.  The "-w {number}" argument is now
  accepted.  "-w {scriptout}" only works when {scriptout} doesn't start with a
  digit.
- Allow "-c{command}" argument, no space between "-c" and {command}.
- When writing a file with ":w!" don't reset 'readonly' when 'Z' is present in
  'cpoptions'.
- Allow 'l' and '#' flags for ":list", ":print" and ":number".
- Added the '.' flag to 'cpoptions': ":cd" fails when the buffer is modified.
- In Ex mode with an empty buffer ":read file" doesn't keep an empty line
  above or below the new lines.
- Remove a backslash before a NL for the ":global" command.
- When ":append", ":insert" or ":change" is used with ":global", get the
  inserted lines from the command.  Can use backslash-NL to separate lines.
- Can use ":global /pat/ visual" to execute Normal mode commands at each
  matched line.  Use "Q" to continue and go to the next line.
- The |:open| command has been partially implemented.  It stops Ex mode, but
  redraws the whole screen, not just one line as open mode is supposed to do.
- Support using a pipe to read the output from and write input to an external
  command.  Added the 'shelltemp' option and has("filterpipe").
- In ex silent mode the ":set" command output is displayed.
- The ":@@" and ":**" give an error message when no register was used before.
- The search pattern "[]-`]" matches ']', '^', '_' and '`'.
- Autoindent for ":insert" is using the line below the insert.
- Autoindent for ":change" is using the first changed line.
- Editing Ex command lines is not done in cooked mode, because CTRL-D and
  CTRL-T cannot be handled then.
- In Ex mode, "1,3" prints three lines.  "%" prints all lines.
- In Ex mode "undo" would undo all changes since Ex mode was started.
- Implemented the 'prompt' option.


Debugger support					*new-debug-support*
----------------

The 'balloonexpr' option has been added.  This is a generic way to implement
balloon functionality.  You can use it to show info for the word under the
mouse pointer.


Remote file explorer					*new-netrw-explore*
--------------------

The netrw plugin now also supports viewing a directory, when "scp://" is used.
Deleting and renaming files is possible.

To avoid duplicating a lot of code, the previous file explorer plugin has been
integrated in the netrw plugin.  This means browsing local and remote files
works the same way.

":browse edit" and ":browse split" use the netrw plugin when it's available
and a GUI dialog is not possible.

The netrw plugin is maintained by Charles Campbell.


Define an operator					*new-define-operator*
------------------

Previously it was not possible to define your own operator; a command that is
followed by a {motion}.  Vim 7 introduces the 'operatorfunc' option and the
|g@| operator.  This makes it possible to define a mapping that works like an
operator.  The actual work is then done by a function, which is invoked
through the |g@| operator.

See |:map-operator| for the explanation and an example.


Mapping to an expression				*new-map-expression*
------------------------

The {rhs} argument of a mapping can be an expression.  That means the
resulting characters can depend on the context.  Example: >
	:inoremap <expr> . InsertDot()
Here the dot will be mapped to whatever InsertDot() returns.

This also works for abbreviations.  See |:map-<expr>| for the details.


Visual and Select mode mappings				*new-map-select*
-------------------------------

Previously Visual mode mappings applied both to Visual and Select mode.  With
a trick to have the mappings work in Select mode like they would in Visual
mode.

Commands have been added to define mappings for Visual and Select mode
separately: |:xmap| and |:smap|.  With the associated "noremap" and "unmap"
commands.

The same is done for menus: |:xmenu|, |:smenu|, etc.


Location list						*new-location-list*
-------------

The support for a per-window quickfix list (location list) is added. The
location list can be displayed in a location window (similar to the quickfix
window).  You can open more than one location list window.  A set of commands
similar to the quickfix commands are added to browse the location list.
(Yegappan Lakshmanan)


Various new items					*new-items-7*
-----------------

Normal mode commands: ~

a", a' and a`		New text objects to select quoted strings. |a'|
i", i' and i`		(Taro Muraoka)

CTRL-W <Enter>		In the quickfix window: opens a new window to show the
			location of the error under the cursor.

|at| and |it| text objects select a block of text between HTML or XML tags.

<A-LeftMouse> ('mousemodel' "popup" or "popup-setpos")
<A-RightMouse> ('mousemodel' "extend")
			Make a blockwise selection. |<A-LeftMouse>|

gF			Start editing the filename under the cursor and jump
			to the line number following the file name.
			(Yegappan Lakshmanan)

CTRL-W F		Start editing the filename under the cursor in a new
			window and jump to the line number following the file
			name.  (Yegappan Lakshmanan)

Insert mode commands: ~

CTRL-\ CTRL-O		Execute a Normal mode command.  Like CTRL-O but
			without moving the cursor. |i_CTRL-\_CTRL-O|

Options: ~

'balloonexpr'		expression for text to show in evaluation balloon
'completefunc'		The name of the function used for user-specified
			Insert mode completion.  CTRL-X CTRL-U can be used in
			Insert mode to do any kind of completion.  (Taro
			Muraoka)
'completeopt'		Enable popup menu and other settings for Insert mode
			completion.
'cursorcolumn'		highlight column of the cursor
'cursorline'		highlight line of the cursor
'formatexpr'		expression for formatting text with |gq| and when text
			goes over 'textwidth' in Insert mode.
'formatlistpat'		pattern to recognize a numbered list for formatting.
			(idea by Hugo Haas)
'fsync'			Whether fsync() is called after writing a file.
			(Ciaran McCreesh)
'guitablabel'		expression for text to display in GUI tab page label
'guitabtooltip'		expression for text to display in GUI tab page tooltip
'macatsui'		Mac: use ATSUI text display functions
'maxcombine'		maximum number of combining characters displayed
'maxmempattern'		maximum amount of memory to use for pattern matching
'mkspellmem'		parameters for |:mkspell| memory use
'mzquantum'		Time in msec to schedule MzScheme threads.
'numberwidth'		Minimal width of the space used for the 'number'
			option. (Emmanuel Renieris)
'omnifunc'		The name of the function used for omni completion.
'operatorfunc'		function to be called for |g@| operator
'printmbcharset'	CJK character set to be used for :hardcopy
'printmbfont'		font names to be used for CJK output of :hardcopy
'pumheight'		maximum number of items to show in the popup menu
'quoteescape'		Characters used to escape quotes inside a string.
			Used for the a", a' and a` text objects. |a'|
'shelltemp'		whether to use a temp file or pipes for shell commands
'showtabline'		whether to show the tab pages line
'spell'			switch spell checking on/off
'spellcapcheck'		pattern to locate the end of a sentence
'spellfile'		file where good and wrong words are added
'spelllang'		languages to check spelling for
'spellsuggest'		methods for spell suggestions
'synmaxcol'		maximum column to look for syntax items; avoids very
			slow redrawing when there are very long lines
'tabline'		expression for text to display in the tab pages line
'tabpagemax'		maximum number of tab pages to open for |-p|
'verbosefile'		Log messages in a file.
'wildoptions'		"tagfile" value enables listing the file name of
			matching tags for CTRL-D command line completion.
			(based on an idea from Yegappan Lakshmanan)
'winfixwidth'		window with fixed width, similar to 'winfixheight'


Ex commands: ~

Win32: The ":winpos" command now also works in the console. (Vipin Aravind)

|:startreplace|		Start Replace mode. (Charles Campbell)
|:startgreplace|	Start Virtual Replace mode.

|:0file|		Removes the name of the buffer. (Charles Campbell)

|:diffoff|		Switch off diff mode in the current window or in all
			windows.

|:delmarks|		Delete marks.

|:exusage|		Help for Ex commands (Nvi command).
|:viusage|		Help for Vi commands (Nvi command).

|:sort|			Sort lines in the buffer without depending on an
			external command. (partly by Bryce Wagner)

|:vimgrep|		Internal grep command, search for a pattern in files.
|:vimgrepadd|		Like |:vimgrep| but don't make a new list.

|:caddfile|		Add error messages to an existing quickfix list
			(Yegappan Lakshmanan).
|:cbuffer|		Read error lines from a buffer. (partly by Yegappan
			Lakshmanan)
|:cgetbuffer|		Create a quickfix list from a buffer but don't jump to
			the first error.
|:caddbuffer|		Add errors from the current buffer to the quickfix
			list.
|:cexpr|		Read error messages from a Vim expression (Yegappan
			Lakshmanan).
|:caddexpr|		Add error messages from a Vim expression to an
			existing quickfix list. (Yegappan Lakshmanan).
|:cgetexpr|		Create a quickfix list from a Vim expression, but
			don't jump to the first error. (Yegappan Lakshmanan).

|:lfile|		Like |:cfile| but use the location list.
|:lgetfile|		Like |:cgetfile| but use the location list.
|:laddfile|		Like |:caddfile| but use the location list.
|:lbuffer|		Like |:cbuffer| but use the location list.
|:lgetbuffer|		Like |:cgetbuffer| but use the location list.
|:laddbuffer|		Like |:caddbuffer| but use the location list.
|:lexpr|		Like |:cexpr| but use the location list.
|:lgetexpr|		Like |:cgetexpr| but use the location list.
|:laddexpr|		Like |:caddexpr| but use the location list.
|:ll|			Like |:cc| but use the location list.
|:llist|		Like |:clist| but use the location list.
|:lnext|		Like |:cnext| but use the location list.
|:lprevious|		Like |:cprevious| but use the location list.
|:lNext|		Like |:cNext| but use the location list.
|:lfirst|		Like |:cfirst| but use the location list.
|:lrewind|		Like |:crewind| but use the location list.
|:llast|		Like |:clast| but use the location list.
|:lnfile|		Like |:cnfile| but use the location list.
|:lpfile|		Like |:cpfile| but use the location list.
|:lNfile|		Like |:cNfile| but use the location list.
|:lolder|		Like |:colder| but use the location list.
|:lnewer|		Like |:cnewer| but use the location list.
|:lwindow|		Like |:cwindow| but use the location list.
|:lopen|		Like |:copen| but use the location list.
|:lclose|		Like |:cclose| but use the location list.
|:lmake|		Like |:make| but use the location list.
|:lgrep|		Like |:grep| but use the location list.
|:lgrepadd|		Like |:grepadd| but use the location list.
|:lvimgrep|		Like |:vimgrep| but use the location list.
|:lvimgrepadd|		Like |:vimgrepadd| but use the location list.
|:lhelpgrep|		Like |:helpgrep| but use the location list.
|:lcscope|		Like |:cscope| but use the location list.
|:ltag|			Jump to a tag and add matching tags to a location list.

|:undojoin|		Join a change with the previous undo block.
|:undolist|		List the leafs of the undo tree.

|:earlier|		Go back in time for changes in the text.
|:later|		Go forward in time for changes in the text.

|:for|			Loop over a |List|.
|:endfor|

|:lockvar|		Lock a variable, prevents it from being changed.
|:unlockvar|		Unlock a locked variable.

|:mkspell|		Create a Vim spell file.
|:spellgood|		Add a word to the list of good words.
|:spellwrong|		Add a word to the list of bad words
|:spelldump|		Dump list of good words.
|:spellinfo|		Show information about the spell files used.
|:spellrepall|		Repeat a spelling correction for the whole buffer.
|:spellundo|		Remove a word from list of good and bad words.

|:mzscheme|		Execute MzScheme commands.
|:mzfile|		Execute an MzScheme script file.

|:nbkey|		Pass a key to NetBeans for processing.

|:profile|		Commands for Vim script profiling.
|:profdel|		Stop profiling for specified items.

|:smap|			Select mode mapping.
|:smapclear|
|:snoremap|
|:sunmap|

|:xmap|			Visual mode mapping, not used for Select mode.
|:xmapclear|
|:xnoremap|
|:xunmap|

|:smenu|		Select mode menu.
|:snoremenu|
|:sunmenu|

|:xmenu|		Visual mode menu, not used for Select mode.
|:xnoremenu|
|:xunmenu|

|:tabclose|		Close the current tab page.
|:tabdo|		Perform a command in every tab page.
|:tabedit|		Edit a file in a new tab page.
|:tabnew|		Open a new tab page.
|:tabfind|		Search for a file and open it in a new tab page.
|:tabnext|		Go to the next tab page.
|:tabprevious|		Go to the previous tab page.
|:tabNext|		Go to the previous tab page.
|:tabfirst|		Go to the first tab page.
|:tabrewind|		Go to the first tab page.
|:tablast|		Go to the last tab page.
|:tabmove|		Move the current tab page elsewhere.
|:tabonly|		Close all other tab pages.
|:tabs|			List the tab pages and the windows they contain.

Ex command modifiers: ~

|:keepalt|		Do not change the alternate file.

|:noautocmd|		Do not trigger autocommand events.

|:sandbox|		Execute a command in the sandbox.

|:tab|			When opening a new window create a new tab page.


Ex command arguments: ~

|++bad|			Specify what happens with characters that can't be
			converted and illegal bytes. (code example by Yasuhiro
			Matsumoto)
			Also, when a conversion error occurs or illegal bytes
			are found include the line number in the error
			message.


New and extended functions: ~

|add()|			append an item to a List
|append()|		append List of lines to the buffer
|argv()|		without an argument return the whole argument list
|browsedir()|		dialog to select a directory
|bufnr()|		takes an extra argument: create buffer
|byteidx()|		index of a character (Ilya Sher)
|call()|		call a function with List as arguments
|changenr()|		number of current change
|complete()|		set matches for Insert mode completion
|complete_add()|	add match for 'completefunc'
|complete_check()|	check for key pressed, for 'completefunc'
|copy()|		make a shallow copy of a List or Dictionary
|count()|		count nr of times a value is in a List or Dictionary
|cursor()|		also accepts an offset for 'virtualedit', and
			the first argument can be a list: [lnum, col, off]
|deepcopy()|		make a full copy of a List or Dictionary
|diff_filler()|		returns number of filler lines above line {lnum}.
|diff_hlID()|		returns the highlight ID for diff mode
|empty()|		check if List or Dictionary is empty
|eval()|		evaluate {string} and return the result
|extend()|		append one List to another or add items from one
			Dictionary to another
|feedkeys()|		put characters in the typeahead buffer
|filter()|		remove selected items from a List or Dictionary
|finddir()|		find a directory in 'path'
|findfile()|		find a file in 'path' (Johannes Zellner)
|foldtextresult()|	the text displayed for a closed fold at line "lnum"
|function()|		make a Funcref out of a function name
|garbagecollect()|	cleanup unused |Lists| and |Dictionaries| with circular
			references
|get()|			get an item from a List or Dictionary
|getbufline()|		get a list of lines from a specified buffer
			(Yegappan Lakshmanan)
|getcmdtype()|		return the current command-line type
			(Yegappan Lakshmanan)
|getfontname()|		get actual font name being used
|getfperm()|		get file permission string (Nikolai Weibull)
|getftype()|		get type of file (Nikolai Weibull)
|getline()|		with second argument: get List with buffer lines
|getloclist()|		list of location list items (Yegappan Lakshmanan)
|getpos()|		return a list with the position of cursor, mark, etc.
|getqflist()|		list of quickfix errors (Yegappan Lakshmanan)
|getreg()|		get contents of a register
|gettabwinvar()|	get variable from window in specified tab page.
|has_key()|		check whether a key appears in a Dictionary
|haslocaldir()|		check if current window used |:lcd|
|hasmapto()|		check for a mapping to a string
|index()|		index of item in List
|inputlist()|		prompt the user to make a selection from a list
|insert()|		insert an item somewhere in a List
|islocked()|		check if a variable is locked
|items()|		get List of Dictionary key-value pairs
|join()|		join List items into a String
|keys()|		get List of Dictionary keys
|len()|			number of items in a List or Dictionary
|map()|			change each List or Dictionary item
|maparg()|		extra argument: use abbreviation
|mapcheck()|		extra argument: use abbreviation
|match()|		extra argument: count
|matcharg()|		return arguments of |:match| command
|matchend()|		extra argument: count
|matchlist()|		list with match and submatches of a pattern in a string
|matchstr()|		extra argument: count
|max()|			maximum value in a List or Dictionary
|min()|			minimum value in a List or Dictionary
|mkdir()|		create a directory
|pathshorten()|		reduce directory names to a single character
|printf()|		format text
|pumvisible()|		check whether the popup menu is displayed
|range()|		generate a List with numbers
|readfile()|		read a file into a list of lines
|reltime()|		get time value, possibly relative
|reltimestr()|		turn a time value into a string
|remove()|		remove one or more items from a List or Dictionary
|repeat()|		repeat "expr" "count" times (Christophe Poucet)
|reverse()|		reverse the order of a List
|search()|		extra argument:
|searchdecl()|		search for declaration of variable
|searchpair()|		extra argument: line to stop searching
|searchpairpos()|	return a List with the position of the match
|searchpos()|		return a List with the position of the match
|setloclist()|		modify a location list (Yegappan Lakshmanan)
|setpos()|		set cursor or mark to a position
|setqflist()|		modify a quickfix list (Yegappan Lakshmanan)
|settabwinvar()|	set variable in window of specified tab page
|sort()|		sort a List
|soundfold()|		get the sound-a-like equivalent of a word
|spellbadword()|	get a badly spelled word
|spellsuggest()|	get suggestions for correct spelling
|split()|		split a String into a List
|str2nr()|		convert a string to a number, base 8, 10 or 16
|stridx()|		extra argument: start position
|strridx()|		extra argument: start position
|string()|		string representation of a List or Dictionary
|system()|		extra argument: filters {input} through a shell command
|tabpagebuflist()|	List of buffers in a tab page
|tabpagenr()|		number of current or last tab page
|tabpagewinnr()|	window number in a tab page
|tagfiles()|		List with tags file names
|taglist()|		get list of matching tags (Yegappan Lakshmanan)
|tr()|			translate characters (Ron Aaron)
|values()|		get List of Dictionary values
|winnr()|		takes an argument: what window to use
|winrestview()|		restore the view of the current window
|winsaveview()|		save the view of the current window
|writefile()|		write a list of lines into a file

User defined functions can now be loaded automatically from the "autoload"
directory in 'runtimepath'.  See |autoload-functions|.


New Vim variables: ~

|v:insertmode|		used for |InsertEnter| and |InsertChange| autocommands
|v:val|			item value in a |map()| or |filter()| function
|v:key|			item key in a |map()| or |filter()| function
|v:profiling|		non-zero after a ":profile start" command
|v:fcs_reason|		the reason why |FileChangedShell| was triggered
|v:fcs_choice|		what should happen after |FileChangedShell|
|v:beval_bufnr|		buffer number for 'balloonexpr'
|v:beval_winnr|		window number for 'balloonexpr'
|v:beval_lnum|		line number for 'balloonexpr'
|v:beval_col|		column number for 'balloonexpr'
|v:beval_text|		text under the mouse pointer for 'balloonexpr'
|v:scrollstart|		what caused the screen to be scrolled up
|v:swapname|		name of the swap file for the |SwapExists| event
|v:swapchoice|		what to do for an existing swap file
|v:swapcommand|		command to be executed after handling |SwapExists|
|v:char|		argument for evaluating 'formatexpr'


New autocommand events: ~

|ColorScheme|		after loading a color scheme

|CursorHoldI|		the user doesn't press a key for a while in Insert mode
|CursorMoved|		the cursor was moved in Normal mode
|CursorMovedI|		the cursor was moved in Insert mode

|FileChangedShellPost|	after handling a file changed outside of Vim

|InsertEnter|		starting Insert or Replace mode
|InsertChange|		going from Insert to Replace mode or back
|InsertLeave|		leaving Insert or Replace mode

|MenuPopup|		just before showing popup menu

|QuickFixCmdPre|	before :make, :grep et al. (Ciaran McCreesh)
|QuickFixCmdPost|	after :make, :grep et al. (Ciaran McCreesh)

|SessionLoadPost|	after loading a session file. (Yegappan Lakshmanan)

|ShellCmdPost|		after executing a shell command
|ShellFilterPost|	after filtering with a shell command

|SourcePre|		before sourcing a Vim script

|SpellFileMissing|	when a spell file can't be found

|SwapExists|		found existing swap file when editing a file

|TabEnter|		just after entering a tab page
|TabLeave|		just before leaving a tab page

|VimResized|		after the Vim window size changed (Yakov Lerner)


New highlight groups: ~

Pmenu                   Popup menu: normal item |hl-Pmenu|
PmenuSel                Popup menu: selected item |hl-PmenuSel|
PmenuThumb              Popup menu: scrollbar |hl-PmenuThumb|
PmenuSbar               Popup menu: Thumb of the scrollbar |hl-PmenuSbar|

TabLine                 tab pages line, inactive label |hl-TabLine|
TabLineSel              tab pages line, selected label |hl-TabLineSel|
TabLineFill             tab pages line, filler |hl-TabLineFill|

SpellBad                badly spelled word |hl-SpellBad|
SpellCap                word with wrong caps |hl-SpellCap|
SpellRare               rare word |hl-SpellRare|
SpellLocal              word only exists in other region |hl-SpellLocal|

CursorColumn            'cursorcolumn' |hl-CursorColumn|
CursorLine              'cursorline' |hl-CursorLine|

MatchParen              matching parens |pi_paren.txt| |hl-MatchParen|


New items in search patterns: ~
|/\%d| \%d123		search for character with decimal number
|/\]|  [\d123]		idem, in a collection
|/\%o| \%o103		search for character with octal number
|/\]|  [\o1o3]		idem, in a collection
|/\%x| \%x1a		search for character with 2 pos. hex number
|/\]|  [\x1a]		idem, in a collection
|/\%u| \%u12ab		search for character with 4 pos. hex number
|/\]|  [\u12ab]		idem, in a collection
|/\%U| \%U1234abcd	search for character with 8 pos. hex number
|/\]|  [\U1234abcd]	idem, in a collection
			    (The above partly by Ciaran McCreesh)

|/[[=| [[=a=]]		an equivalence class (only for latin1 characters)
|/[[.| [[.a.]]		a collation element (only works with single char)

|/\%'m|  \%'m		match at mark m
|/\%<'m| \%<'m		match before mark m
|/\%>'m| \%>'m		match after mark m
|/\%V|   \%V		match in Visual area

Nesting |/multi| items no longer is an error when an empty match is possible.

It is now possible to use \{0}, it matches the preceding atom zero times.  Not
useful, just for compatibility.


New Syntax/Indent/FTplugin files: ~

Moved all the indent settings from the filetype plugin to the indent file.
Implemented b:undo_indent to undo indent settings when setting 'filetype' to a
different value.

a2ps syntax and ftplugin file. (Nikolai Weibull)
ABAB/4 syntax file. (Marius van Wyk)
alsaconf ftplugin file. (Nikolai Weibull)
AppendMatchGroup ftplugin file. (Dave Silvia)
arch ftplugin file. (Nikolai Weibull)
asterisk and asteriskvm syntax file. (Tilghman Lesher)
BDF ftplugin file. (Nikolai Weibull)
BibTeX indent file. (Dorai Sitaram)
BibTeX Bibliography Style syntax file. (Tim Pope)
BTM ftplugin file. (Bram Moolenaar)
calendar ftplugin file. (Nikolai Weibull)
Changelog indent file. (Nikolai Weibull)
ChordPro syntax file. (Niels Bo Andersen)
Cmake indent and syntax file. (Andy Cedilnik)
conf ftplugin file. (Nikolai Weibull)
context syntax and ftplugin file. (Nikolai Weibull)
CRM114 ftplugin file. (Nikolai Weibull)
cvs RC ftplugin file. (Nikolai Weibull)
D indent file. (Jason Mills)
Debian Sources.list syntax file. (Matthijs Mohlmann)
dictconf and dictdconf syntax, indent and ftplugin files. (Nikolai Weibull)
diff ftplugin file. (Bram Moolenaar)
dircolors ftplugin file. (Nikolai Weibull)
django and htmldjango syntax file. (Dave Hodder)
doxygen syntax file. (Michael Geddes)
elinks ftplugin file. (Nikolai Weibull)
eterm ftplugin file. (Nikolai Weibull)
eviews syntax file. (Vaidotas Zemlys)
fetchmail RC ftplugin file. (Nikolai Weibull)
FlexWiki syntax and ftplugin file. (George Reilly)
Generic indent file. (Dave Silvia)
gpg ftplugin file. (Nikolai Weibull)
gretl syntax file. (Vaidotas Zemlys)
groovy syntax file. (Alessio Pace)
group syntax and ftplugin file. (Nikolai Weibull)
grub ftplugin file. (Nikolai Weibull)
Haskell ftplugin file. (Nikolai Weibull)
help ftplugin file. (Nikolai Weibull)
indent ftplugin file. (Nikolai Weibull)
Javascript ftplugin file. (Bram Moolenaar)
Kconfig ftplugin and syntax file. (Nikolai Weibull)
ld syntax, indent and ftplugin file. (Nikolai Weibull)
lftp ftplugin file. (Nikolai Weibull)
libao config ftplugin file. (Nikolai Weibull)
limits syntax and ftplugin file. (Nikolai Weibull)
Lisp indent file. (Sergey Khorev)
loginaccess and logindefs syntax and ftplugin file. (Nikolai Weibull)
m4 ftplugin file. (Nikolai Weibull)
mailaliases syntax file. (Nikolai Weibull)
mailcap ftplugin file. (Nikolai Weibull)
manconf syntax and ftplugin file. (Nikolai Weibull)
matlab ftplugin file. (Jake Wasserman)
Maxima syntax file. (Robert Dodier)
MGL syntax file. (Gero Kuhlmann)
modconf ftplugin file. (Nikolai Weibull)
mplayer config ftplugin file. (Nikolai Weibull)
Mrxvtrc syntax and ftplugin file. (Gautam Iyer)
MuPAD source syntax, indent and ftplugin. (Dave Silvia)
mutt RC ftplugin file. (Nikolai Weibull)
nanorc syntax and ftplugin file. (Nikolai Weibull)
netrc ftplugin file. (Nikolai Weibull)
pamconf syntax and ftplugin file. (Nikolai Weibull)
Pascal indent file. (Neil Carter)
passwd syntax and ftplugin file. (Nikolai Weibull)
PHP compiler plugin. (Doug Kearns)
pinfo ftplugin file. (Nikolai Weibull)
plaintex syntax and ftplugin files. (Nikolai Weibull, Benji Fisher)
procmail ftplugin file. (Nikolai Weibull)
prolog ftplugin file. (Nikolai Weibull)
protocols syntax and ftplugin file. (Nikolai Weibull)
quake ftplugin file. (Nikolai Weibull)
racc syntax and ftplugin file. (Nikolai Weibull)
readline ftplugin file. (Nikolai Weibull)
rhelp syntax file. (Johannes Ranke)
rnoweb syntax file. (Johannes Ranke)
Relax NG compact ftplugin file. (Nikolai Weibull)
Scheme indent file. (Sergey Khorev)
screen ftplugin file. (Nikolai Weibull)
sensors syntax and ftplugin file. (Nikolai Weibull)
services syntax and ftplugin file. (Nikolai Weibull)
setserial syntax and ftplugin file. (Nikolai Weibull)
sieve syntax and ftplugin file. (Nikolai Weibull)
SiSU syntax file (Ralph Amissah)
Sive syntax file. (Nikolai Weibull)
slp config, reg and spi syntax and ftplugin files. (Nikolai Weibull)
SML indent file. (Saikat Guha)
SQL anywhere syntax and indent file. (David Fishburn)
SQL indent file.
SQL-Informix syntax file. (Dean L Hill)
SQL: Handling of various variants. (David Fishburn)
sshconfig ftplugin file. (Nikolai Weibull)
Stata and SMCL syntax files. (Jeff Pitblado)
sudoers ftplugin file. (Nikolai Weibull)
sysctl syntax and ftplugin file. (Nikolai Weibull)
terminfo ftplugin file. (Nikolai Weibull)
trustees syntax file. (Nima Talebi)
Vera syntax file. (David Eggum)
udev config, permissions and rules syntax and ftplugin files. (Nikolai Weibull)
updatedb syntax and ftplugin file. (Nikolai Weibull)
VHDL indent file (Gerald Lai)
WSML syntax file. (Thomas Haselwanter)
Xdefaults ftplugin file. (Nikolai Weibull)
XFree86 config ftplugin file. (Nikolai Weibull)
xinetd syntax, indent and ftplugin file. (Nikolai Weibull)
xmodmap ftplugin file. (Nikolai Weibull)
Xquery syntax file. (Jean-Marc Vanel)
xsd (XML schema) indent file.
YAML ftplugin file. (Nikolai Weibull)
Zsh ftplugin file. (Nikolai Weibull)


New Keymaps: ~

Sinhala (Sri Lanka) (Harshula Jayasuriya)
Tamil in TSCII encoding (Yegappan Lakshmanan)
Greek in cp737 (Panagiotis Louridas)
Polish-slash (HS6_06)
Ukrainian-jcuken (Anatoli Sakhnik)
Kana (Edward L. Fox)


New message translations: ~

The Ukrainian messages are now also available in cp1251.
Vietnamese message translations and menu. (Phan Vinh Thinh)


Others: ~

The |:read| command has the |++edit| argument.  This means it will use the
detected 'fileformat', 'fileencoding' and other options for the buffer.  This
also fixes the problem that editing a compressed file didn't set these
options.

The Netbeans interface was updated for Sun Studio 10.  The protocol number
goes from 2.2 to 2.3. (Gordon Prieur)

Mac: When starting up Vim will load the $VIMRUNTIME/macmap.vim script to
define default command-key mappings. (mostly by Benji Fisher)

Mac: Add the selection type to the clipboard, so that Block, line and
character selections can be used between two Vims. (Eckehard Berns)
Also fixes the problem that setting 'clipboard' to "unnamed" breaks using
"yyp".

Mac: GUI font selector. (Peter Cucka)

Mac: support for multi-byte characters. (Da Woon Jung)
This doesn't always work properly.  If you see text drawing problems try
switching the 'macatsui' option off.

Mac: Support the xterm mouse in the non-GUI version.

Mac: better integration with Xcode.  Post a fake mouse-up event after the odoc
event and the drag receive handler to work around a stall after Vim loads a
file.  Fixed an off-by-one line number error. (Da Woon Jung)

Mac: When started from Finder change directory to the file being edited or the
user home directory.

Added the t_SI and t_EI escape sequences for starting and ending Insert mode.
To be used to set the cursor shape to a bar or a block.  No default values,
they are not supported by termcap/terminfo.

GUI font selector for Motif. (Marcin Dalecki)

Nicer toolbar buttons for Motif. (Marcin Dalecki)

Mnemonics for the Motif find/replace dialog. (Marcin Dalecki)

Included a few improvements for Motif from Marcin Dalecki.  Draw label
contents ourselves to make them handle fonts in a way configurable by Vim and
a bit less dependent on the X11 font management.

Autocommands can be defined local to a buffer.  This means they will also work
when the buffer does not have a name or no specific name.  See
|autocmd-buflocal|.  (Yakov Lerner)

For xterm most combinations of modifiers with function keys are recognized.
|xterm-modifier-keys|

When 'verbose' is set the output of ":highlight" will show where a highlight
item was last set.
When 'verbose' is set the output of the ":map", ":abbreviate", ":command",
":function" and ":autocmd" commands will show where it was last defined.
(Yegappan Lakshmanan)

":function /pattern" lists functions matching the pattern.

"1gd" can be used like "gd" but ignores matches in a {} block that ends before
the cursor position.  Likewise for "1gD" and "gD".

'scrolljump' can be set to a negative number to scroll a percentage of the
window height.

The |v:scrollstart| variable has been added to help finding the location in
your script that causes the hit-enter prompt.

To make it possible to handle the situation that a file is being edited that
is already being edited by another Vim instance, the |SwapExists| event has
been added.  The |v:swapname|, |v:swapchoice| and |v:swapcommand| variables
can be used, for example to use the |client-server| functionality to bring the
other Vim to the foreground.
When starting Vim with a "-t tag" argument, there is an existing swapfile and
the user selects "quit" or "abort" then exit Vim.

Undo now also restores the '< and '> marks.  "gv" selects the same area as
before the change and undo.

When editing a search pattern for a "/" or "?" command and 'incsearch' is set
CTRL-L can be used to add a character from the current match.  CTRL-R CTRL-W
will add a word, but exclude the part of the word that was already typed.

Ruby interface: add line number methods. (Ryan Paul)

The $MYVIMRC environment variable is set to the first found vimrc file.
The $MYGVIMRC environment variable is set to the first found gvimrc file.

==============================================================================
IMPROVEMENTS						*improvements-7*

":helpgrep" accepts a language specifier after the pattern: "pat@it".

Moved the help for printing to a separate help file.  It's quite a lot now.

When doing completion for ":!cmd", ":r !cmd" or ":w !cmd" executable files are
found in $PATH instead of looking for ordinary files in the current directory.

When ":silent" is used and a backwards range is given for an Ex command the
range is swapped automatically instead of asking if that is OK.

The pattern matching code was changed from a recursive function to an
iterative mechanism.  This avoids out-of-stack errors.  State is stored in
allocated memory, running out of memory can always be detected.  Allows
matching more complex things, but Vim may seem to hang while doing that.

Previously some options were always evaluated in the |sandbox|.  Now that only
happens when the option was set from a modeline or in secure mode.  Applies to
'balloonexpr', 'foldexpr', 'foldtext' and 'includeexpr'. (Sumner Hayes)

Some commands and expressions could have nasty side effects, such as using
CTRL-R = while editing a search pattern and the expression invokes a function
that jumps to another window.  The |textlock| has been added to prevent this
from happening.

":breakadd here" and ":breakdel here" can be used to set or delete a
breakpoint at the cursor.

It is now possible to define a function with: >
	:exe "func Test()\n ...\n endfunc"

The tutor was updated to make it simpler to use and text was added to explain
a few more important commands.  Used ideas from Gabriel Zachmann.

Unix: When libcall() fails obtain an error message with dlerror() and display
it. (Johannes Zellner)

Mac and Cygwin: When editing an existing file make the file name the same case
of the edited file.  Thus when typing ":e os_UNIX.c" the file name becomes
"os_unix.c".

Added "nbsp" in 'listchars'. (David Blanchet)

Added the "acwrite" value for the 'buftype' option.  This is for a buffer that
does not have a name that refers to a file and is written with BufWriteCmd
autocommands.

For lisp indenting and matching parenthesis: (Sergey Khorev)
- square brackets are recognized properly
- #\(, #\), #\[ and #\] are recognized as character literals
- Lisp line comments (delimited by semicolon) are recognized

Added the "count" argument to match(), matchend() and matchstr(). (Ilya Sher)

winnr() takes an optional "$" or "#" argument.  (Nikolai Weibull, Yegappan
Lakshmanan)

Added 's' flag to search(): set ' mark if cursor moved. (Yegappan Lakshmanan)
Added 'n' flag to search(): don't move the cursor. (Nikolai Weibull)
Added 'c' flag to search(): accept match at the cursor.
Added 'e' flag to search(): move to end of the match. (Benji Fisher)
Added 'p' flag to search(): return number of sub-pattern. (Benji Fisher)
These also apply to searchpos(), searchpair() and searchpairpos().

The search() and searchpair() functions have an extra argument to specify
where to stop searching.  Speeds up searches that should not continue too far.

When uncompressing fails in the gzip plugin, give an error message but don't
delete the raw text.  Helps if the file has a .gz extension but is not
actually compressed. (Andrew Pimlott)

When C, C++ or IDL syntax is used, may additionally load doxygen syntax.
(Michael Geddes)

Support setting 'filetype' and 'syntax' to "aaa.bbb" for "aaa" plus "bbb"
filetype or syntax.

The ":registers" command now displays multi-byte characters properly.

VMS: In the usage message mention that a slash can be used to make a flag
upper case.  Add color support to the builtin vt320 terminal codes.
(Zoltan Arpadffy)

For the '%' item in 'viminfo', allow a number to set a maximum for the number
of buffers.

For recognizing the file type: When a file looks like a shell script, check
for an "exec" command that starts the tcl interpreter. (suggested by Alexios
Zavras)

Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that
digraphs still work when iconv is not available.

When a session file is loaded while editing an unnamed, empty buffer that
buffer is wiped out.  Avoids that there is an unused buffer in the buffer
list.

Win32: When libintl.dll supports bind_textdomain_codeset(), use it.
(NAKADAIRA Yukihiro)

Win32: Vim was not aware of hard links on NTFS file systems.  These are
detected now for when 'backupcopy' is "auto".  Also fixed a bogus "file has
been changed since reading it" error for links.

When foldtext() finds no text after removing the comment leader, use the
second line of the fold.  Helps for C-style /* */ comments where the first
line is just "/*".

When editing the same file from two systems (e.g., Unix and MS-Windows) there
mostly was no warning for an existing swap file, because the name of the
edited file differs (e.g., y:\dir\file vs /home/me/dir/file).  Added a flag to
the swap file to indicate it is in the same directory as the edited file.  The
used path then doesn't matter and the check for editing the same file is much
more reliable.

Unix: When editing a file through a symlink the swap file would use the name
of the symlink.  Now use the name of the actual file, so that editing the same
file twice is detected. (suggestions by Stefano Zacchiroli and James Vega)

Client-server communication now supports 'encoding'.  When setting 'encoding'
in a Vim server to "utf-8", and using "vim --remote fname" in a console,
"fname" is converted from the console encoding to utf-8.  Also allows Vims
with different 'encoding' settings to exchange messages.

Internal: Changed ga_room into ga_maxlen, so that it doesn't need to be
incremented/decremented each time.

When a register is empty it is not stored in the viminfo file.

Removed the tcltags script, it's obsolete.

":redir @*>>" and ":redir @+>>" append to the clipboard.  Better check for
invalid characters after the register name. |:redir|

":redir => variable" and ":redir =>> variable" write or append to a variable.
(Yegappan Lakshmanan) |:redir|

":redir @{a-z}>>" appends to register a to z. (Yegappan Lakshmanan)

The 'verbosefile' option can be used to log messages in a file.  Verbose
messages are not displayed then.  The "-V{filename}" argument can be used to
log startup messages.

":let g:" lists global variables.
":let b:" lists buffer-local variables.
":let w:" lists window-local variables.
":let v:" lists Vim variables.

The stridx() and strridx() functions take a third argument, where to start
searching.  (Yegappan Lakshmanan)

The getreg() function takes an extra argument to be able to get the expression
for the '=' register instead of the result of evaluating it.

The setline() function can take a List argument to set multiple lines.  When
the line number is just below the last line the line is appended.

g CTRL-G also shows the number of characters if it differs from the number of
bytes.

Completion for ":debug" and entering an expression for the '=' register.  Skip
":" between range and command name. (Peter winters)

CTRL-Q in Insert mode now works like CTRL-V by default.  Previously it was
ignored.

When "beep" is included in 'debug' a function or script that causes a beep
will result in a message with the source of the error.

When completing buffer names, match with "\(^\|[\/]\)" instead of "^", so that
":buf stor<Tab>" finds both "include/storage.h" and "storage/main.c".

To count items (pattern matches) without changing the buffer the 'n' flag has
been added to |:substitute|.  See |count-items|.

In a |:substitute| command the \u, \U, \l and \L items now also work for
multi-byte characters.

The "screen.linux" $TERM name is recognized to set the default for
'background' to "dark". (Ciaran McCreesh)  Also for "cygwin" and "putty".

The |FileChangedShell| autocommand event can now use the |v:fcs_reason|
variable that specifies what triggered the event.  |v:fcs_choice| can be used
to reload the buffer or ask the user what to do.

Not all modifiers were recognized for xterm function keys.  Added the
possibility in term codes to end in ";*X" or "O*X", where X is any character
and the * stands for the modifier code.
Added the <xUp>, <xDown>, <xLeft> and <xRight> keys, to be able to recognize
the two forms that xterm can send their codes in and still handle all possible
modifiers.

getwinvar() now also works to obtain a buffer-local option from the specified
window.

Added the "%s" item to 'errorformat'. (Yegappan Lakshmanan)
Added the "%>" item to 'errorformat'.

For 'errorformat' it was not possible to have a file name that contains the
character that follows after "%f".  For example, in "%f:%l:%m" the file name
could not contain ":".  Now include the first ":" where the rest of the
pattern matches.  In the example a ":" not followed by a line number is
included in the file name. (suggested by Emanuele Giaquinta)

GTK GUI: use the GTK file dialog when it's available.  Mix from patches by
Grahame Bowland and Evan Webb.

Added ":scriptnames" to bugreport.vim, so that we can see what plugins were
used.

Win32: If the user changes the setting for the number of lines a scroll wheel
click scrolls it is now used immediately.  Previously Vim would need to be
restarted.

When using @= in an expression the value is expression @= contains.  ":let @=
= value" can be used to set the register contents.

A ! can be added to ":popup" to have the popup menu appear at the mouse
pointer position instead of the text cursor.

The table with encodings has been expanded with many MS-Windows codepages,
such as cp1250 and cp737, so that these can also be used on Unix without
prepending "8bit-".
When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part.

Added the "customlist" completion argument to a user-defined command.  The
user-defined completion function should return the completion candidates as a
Vim List and the returned results are not filtered by Vim. (Yegappan
Lakshmanan)

Win32: Balloons can have multiple lines if common controls supports it.
(Sergey Khorev)

For command-line completion the matches for various types of arguments are now
sorted: user commands, variables, syntax names, etc.

When no locale is set, thus using the "C" locale, Vim will work with latin1
characters, using its own isupper()/toupper()/etc. functions.

When using an rxvt terminal emulator guess the value of 'background' using the
COLORFGBG environment variable. (Ciaran McCreesh)

Also support t_SI and t_EI on Unix with normal features. (Ciaran McCreesh)

When 'foldcolumn' is one then put as much info in it as possible.  This allows
closing a fold with the mouse by clicking on the '-'.

input() takes an optional completion argument to specify the type of
completion supported for the input. (Yegappan Lakshmanan)

"dp" works with more than two buffers in diff mode if there is only one where
'modifiable' is set.

The 'diffopt' option has three new values: "horizontal", "vertical" and
"foldcolumn".

When the 'include' option contains \zs the file name found is what is being
matched from \zs to the end or \ze.  Useful to pass more to 'includeexpr'.

Loading plugins on startup now supports subdirectories in the plugin
directory. |load-plugins|

In the foldcolumn always show the '+' for a closed fold, so that it can be
opened easily.  It may overwrite another character, esp. if 'foldcolumn' is 1.

It is now possible to get the W10 message again by setting 'readonly'.  Useful
in the FileChangedRO autocommand when checking out the file fails.

Unix: When open() returns EFBIG give an appropriate message.

":mksession" sets the SessionLoad variable to notify plugins.  A modeline is
added to the session file to set 'filetype' to "vim".

In the ATTENTION prompt put the "Delete it" choice before "Quit" to make it
more logical.  (Robert Webb)

When appending to a file while the buffer has no name the name of the appended
file would be used for the current buffer.  But the buffer contents is
actually different from the file content.  Don't set the file name, unless the
'P' flag is present in 'cpoptions'.

When starting to edit a new file and the directory for the file doesn't exist
then Vim will report "[New DIRECTORY]" instead of "[New File] to give the user
a hint that something might be wrong.

Win32: Preserve the hidden attribute of the viminfo file.

In Insert mode CTRL-A didn't keep the last inserted text when using CTRL-O and
then a cursor key.  Now keep the previously inserted text if nothing is
inserted after the CTRL-O.  Allows using CTRL-O commands to move the cursor
without losing the last inserted text.

The exists() function now supports checking for autocmd group definition
and for supported autocommand events. (Yegappan Lakshmanan)

Allow using ":global" in the sandbox, it doesn't do anything harmful by
itself.

":saveas asdf.c" will set 'filetype' to c when it's empty.  Also for ":w
asdf.c" when it sets the filename for the buffer.

Insert mode completion for whole lines now also searches unloaded buffers.

The colortest.vim script can now be invoked directly with ":source" or
":runtime syntax/colortest.vim".

The 'statusline' option can be local to the window, so that each window can
have a different value.  (partly by Yegappan Lakshmanan)

The 'statusline' option and other options that support the same format can now
use these new features:
- When it starts with "%!" the value is first evaluated as an expression
  before parsing the value.
- "%#HLname#" can be used to start highlighting with HLname.

When 'statusline' is set to something that causes an error message then it is
made empty to avoid an endless redraw loop.  Also for other options, such at
'tabline' and 'titlestring'.  ":verbose set statusline" will mention that it
was set in an error handler.

When there are several matching tags, the ":tag <name>" and CTRL-] commands
jump to the [count] matching tag. (Yegappan Lakshmanan)

Win32: In the batch files generated by the install program, use $VIMRUNTIME or
$VIM if it's set.  Example provided by Mathias Michaelis.
Also create a vimtutor.bat batch file.

The 'balloonexpr' option is now |global-local|.

The system() function now runs in cooked mode, thus can be interrupted by
CTRL-C.

==============================================================================
COMPILE TIME CHANGES					*compile-changes-7*

Dropped the support for the BeOS and Amiga GUI.  They were not maintained and
probably didn't work.  If you want to work on this: get the Vim 6.x version
and merge it back in.

When running the tests and one of them fails to produce "test.out" the
following tests are still executed.  This helps when running out of memory.

When compiling with EXITFREE defined and the ccmalloc library it is possible
to detect memory leaks.  Some memory will always reported as leaked, such as
allocated by X11 library functions and the memory allocated in alloc_cmdbuff()
to store the ":quit" command.

Moved the code for printing to src/hardcopy.c.

Moved some code from main() to separate functions to make it easier to see
what is being done.  Using a structure to avoid a lot of arguments to the
functions.

Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c
without copying the code.

--- Mac ---

"make" now creates the Vim.app directory and "make install" copies it to its
final destination. (Raf)

Put the runtime directory not directly in Vim.app but in
Vim.app/Contents/Resources/vim, so that it's according to Mac specs.

Made it possible to compile with Motif, Athena or GTK without tricks and still
being able to use the MacRoman conversion.  Added the os_mac_conv.c file.

When running "make install" the runtime files are installed as for Unix.
Avoids that too many files are copied.  When running "make" a link to the
runtime files is created to avoid a recursive copy that takes much time.

Configure will attempt to build Vim for both Intel and PowerPC.  The
--with-mac-arch configure argument can change it.

--- Win32 ---

The Make_mvc.mak file was adjusted to work with the latest MS compilers,
including the free version of Visual Studio 2005. (George Reilly)

INSTALLpc.txt was updated for the recent changes. (George Reilly)

The distributed executable is now produced with the free Visual C++ Toolkit
2003 and other free SDK chunks.  msvcsetup.bat was added to support this.

Also generate the .pdb file that can be used to generate a useful crash report
on MS-Windows. (George Reilly)

==============================================================================
BUG FIXES						*bug-fixes-7*

When using PostScript printing on MS-DOS the default 'printexpr' used "lpr"
instead of "copy".  When 'printdevice' was empty the copy command did not
work.  Use "LPT1" then.

The GTK font dialog uses a font size zero when the font name doesn't include a
size.  Use a default size of 10.

This example in the documentation didn't work:
    :e `=foo . ".c" `
Skip over the expression in `=expr` when looking for comments, |, % and #.

When ":helpgrep" doesn't find anything there is no error message.

"L" and "H" did not take closed folds into account.

Win32: The "-P title" argument stopped at the first title that matched, even
when it doesn't support MDI.

Mac GUI: CTRL-^ and CTRL-@ did not work.

"2daw" on "word." at the end of a line didn't include the preceding white
space.

Win32: Using FindExecutable() doesn't work to find a program.  Use
SearchPath() instead.  For executable() use $PATHEXT when the program searched
for doesn't have an extension.

When 'virtualedit' is set, moving the cursor up after appending a character
may move it to a different column.  Was caused by auto-formatting moving the
cursor and not putting it back where it was.

When indent was added automatically and then moving the cursor, the indent was
not deleted (like when pressing ESC).  The "I" flag in 'cpoptions' can be used
to make it work the old way.

When opening a command-line window, 'textwidth' gets set to 78 by the Vim
filetype plugin.  Reset 'textwidth' to 0 to avoid lines are broken.

After using cursor(line, col) moving up/down doesn't keep the same column.

Win32: Borland C before 5.5 requires using ".u." for LowPart and HighPart
fields. (Walter Briscoe)

On Sinix SYS_NMLN isn't always defined.  Define it ourselves. (Cristiano De
Michele)

Printing with PostScript may keep the printer waiting for more.  Append a
CTRL-D to the printer output. (Mike Williams)

When converting a string with a hex or octal number the leading '-' was
ignored.  ":echo '-05' + 0" resulted in 5 instead of -5.

Using "@:" to repeat a command line didn't work when it contains control
characters.  Also remove "'<,'>" when in Visual mode to avoid that it appears
twice.

When using file completion for a user command, it would not expand environment
variables like for a regular command with a file argument.

'cindent': When the argument of a #define looks like a C++ class the next line
is indented too much.

When 'comments' includes multi-byte characters inserting the middle part and
alignment may go wrong.  'cindent' also suffers from this for right-aligned
items.

Win32: when 'encoding' is set to "utf-8" getenv() still returns strings in the
active codepage.  Convert to utf-8.  Also for $HOME.

The default for 'helplang' was "zh" for both "zh_cn" and "zh_tw".  Now use
"cn" or "tw" as intended.

When 'bin' is set and 'eol' is not set then line2byte() added the line break
after the last line while it's not there.

Using foldlevel() in a WinEnter autocommand may not work.  Noticed when
resizing the GUI shell upon startup.

Python: Using buffer.append(f.readlines()) didn't work.  Allow appending a
string with a trailing newline.  The newline is ignored.

When using the ":saveas f2" command for buffer "f1", the Buffers menu would
contain "f2" twice, one of them leading to "f1".  Also trigger the BufFilePre
and BufFilePost events for the alternate buffer that gets the old name.

strridx() did not work well when the needle is empty. (Ciaran McCreesh)

GTK: Avoid a potential hang in gui_mch_wait_for_chars() when input arrives
just before it is invoked

VMS: Occasionally CR characters were inserted in the file.  Expansion of
environment variables was not correct. (Zoltan Arpadffy)

UTF-8: When 'delcombine' is set "dw" only deleted the last combining character
from the first character of the word.

When using ":sball" in an autocommand only the filetype in one buffer was
detected.  Reset did_filetype in enter_buffer().

When using ":argdo" and the window already was at the first argument index,
but not actually editing it, the current buffer would be used instead.

When ":next dir/*" includes many matches, adding the names to the argument
list may take an awful lot of time and can't be interrupted.  Allow
interrupting this.

When editing a file that was already loaded in a buffer, modelines were not
used.  Now window-local options in the modeline are set.  Buffer-local options
and global options remain unmodified.

Win32: When 'encoding' is set to "utf-8" in the vimrc file, files from the
command line with non-ASCII characters are not used correctly.  Recode the
file names when 'encoding' is set, using the Unicode command line.

Win32 console: When the default for 'encoding' ends up to be "latin1", the
default value of 'isprint' was wrong.

When an error message is given while waiting for a character (e.g., when an
xterm reports the number of colors), the hit-enter prompt overwrote the last
line.  Don't reset msg_didout in normal_cmd() for K_IGNORE.

Mac GUI: Shift-Tab didn't work.

When defining tooltip text, don't translate terminal codes, since it's not
going to be used like a command.

GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a
GTK error.  Invalid characters may appear when 'encoding' is changed.

GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango.

Win32: When 'encoding' is changed while starting up, use the Unicode command
line to convert the file arguments to 'encoding'.  Both for the GUI and the
console version.

Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because
there is no codepage for latin9.  Do our own conversion from latin9 to UCS2.

When two versions of GTK+ 2 are installed it was possible to use the header
files from one and the library from the other.  Use GTK_LIBDIR to put the
directory for the library early in the link flags.

With the GUI find/replace dialog a replace only worked if the pattern was
literal text.  Now it works for any pattern.

When 'equalalways' is set and 'eadirection' is "hor", ":quit" would still
cause equalizing window heights in the vertical direction.

When ":emenu" is used in a startup script the command was put in the typeahead
buffer, causing a prompt for the crypt key to be messed up.

Mac OS/X: The default for 'isprint' included characters 128-160, causes
problems for Terminal.app.

When a syntax item with "containedin" is used, it may match in the start or
end of a region with a matchgroup, while this doesn't happen for a "contains"
argument.

When a transparent syntax items matches in another item where the highlighting
has already stopped (because of a he= argument), the highlighting would come
back.

When cscope is used to set the quickfix error list, it didn't get set if there
was only one match. (Sergey Khorev)

When 'confirm' is set and using ":bdel" in a modified buffer, then selecting
"cancel", would still give an error message.

The PopUp menu items that started Visual mode didn't work when not in Normal
mode.  Switching between selecting a word and a line was not possible.

Win32: The keypad decimal point always resulted in a '.', while on some
keyboards it's a ','.  Use MapVirtualKey(VK_DECIMAL, 2).

Removed unused function DisplayCompStringOpaque() from gui_w32.c

In Visual mode there is not always an indication whether the line break is
selected or not.  Highlight the character after the line when the line break
is included, e.g., after "v$o".

GTK: The <F10> key can't be mapped, it selects the menu.  Disable that with a
GTK setting and do select the menu when <F10> isn't mapped. (David Necas)

After "Y" '[ and '] were not at start/end of the yanked text.

When a telnet connection is dropped Vim preserves files and exits.  While
doing that a SIGHUP may arrive and disturb us, thus ignore it. (Scott
Anderson)  Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to
handle.  Added handle_signal().

When completing a file name on the command line backslashes are required for
white space.  Was only done for a space, not for a Tab.

When configure could not find a terminal library, compiling continued for a
long time before reporting the problem.  Added a configure check for tgetent()
being found in a library.

When the cursor is on the first char of the last line a ":g/pat/s///" command
may cause the cursor to be displayed below the text.

Win32: Editing a file with non-ASCII characters doesn't work when 'encoding'
is "utf-8".  use _wfullpath() instead of _fullpath(). (Yu-sung Moon)

When recovering the 'fileformat' and 'fileencoding' were taken from the
original file instead of from the swapfile.  When the file didn't exist, was
empty or the option was changed (e.g., with ":e ++fenc=cp123 file") it could
be wrong.  Now store 'fileformat' and 'fileencoding' in the swapfile and use
the values when recovering.

":bufdo g/something/p" overwrites each last printed text line with the file
message for the next buffer.  Temporarily clear 'shortmess' to avoid that.

Win32: Cannot edit a file starting with # with --remote.  Do escape % and #
when building the ":drop" command.

A comment or | just after an expression-backtick argument was not recognized.
E.g. in :e `="foo"`"comment.

"(" does not stop at an empty sentence (single dot and white space) while ")"
does.  Also breaks "das" on that dot.

When doing "yy" with the cursor on a TAB the ruler could be wrong and "k"
moved the cursor to another column.

When 'commentstring' is '"%s' and there is a double quote in the line a double
quote before the fold marker isn't removed in the text displayed for a  closed
fold.

In Visual mode, when 'bin' and 'eol' set, g CTRL-G counted the last line
break, resulting in "selected 202 of 201 bytes".

Motif: fonts were not used for dialog components. (Marcin Dalecki)

Motif: After using a toolbar button the keyboard focus would be on the toolbar
(Lesstif problem). (Marcin Dalecki)

When using "y<C-V>`x" where mark x is in the first column, the last line was
not included.

Not all test scripts work properly on MS-Windows when checked out from CVS.
Use a Vim command to fix all fileformats to dos before executing the tests.

When using ":new" and the file fits in the window, lines could still be above
the window.  Now remove empty lines instead of keeping the relative position.

Cmdline completion didn't work after ":let var1 var<Tab>".

When using ":startinsert" or ":startreplace" when already in Insert mode
(possible when using CTRL-R =), pressing Esc would directly restart Insert
mode. (Peter Winters)

"2daw" didn't work at end of file if the last word is a single character.

Completion for ":next a'<Tab>" put a backslash before single quote, but it was
not removed when editing a file.  Now halve backslashes in save_patterns().
Also fix expanding a file name with the shell that contains "\'".

When doing "1,6d|put" only "fewer lines" was reported.  Now a following "more
lines" overwrites the message.

Configure could not handle "-Dfoo=long\ long" in the TCL config output.

When searching backwards, using a pattern that matches a newline and uses \zs
after that, didn't find a match.  Could also get a hang or end up in the right
column in the wrong line.

When $LANG is "sl" for slovenian, the slovak menu was used, since "slovak"
starts with "sl".

When 'paste' is set in the GUI the Paste toolbar button doesn't work.  Clear
'paste' when starting the GUI.

A message about a wrong viminfo line included the trailing NL.

When 'paste' is set in the GUI the toolbar button doesn't work in Insert mode.
Use ":exe" in menu.vim to avoid duplicating the commands, instead of using a
mapping.

Treat "mlterm" as an xterm-like terminal. (Seiichi Sato)

":z.4" and ":z=4" didn't work Vi compatible.

When sourcing a file, editing it and sourcing it again, it could appear twice
in ":scriptnames" and get a new <SID>, because the inode has changed.

When $SHELL is set but empty the 'shell' option would be empty.  Don't use an
empty $SHELL value.

A command "w! file" in .vimrc or $EXINIT didn't work.  Now it writes an empty
file.

When a CTRL-F command at the end of the file failed, the cursor was still
moved to the start of the line.  Now it remains where it is.

When using ":s" or "&" to repeat the last substitute and "$" was used to put
the cursor in the last column, put the cursor in the last column again.  This
is Vi compatible.

Vim is not fully POSIX compliant but sticks with traditional Vi behavior.
Added a few flags in 'cpoptions' to behave the POSIX way when wanted.  The
$VIM_POSIX environment variable is checked to set the default.

Appending to a register didn't insert a line break like Vi.  Added the '>'
flag to 'cpoptions' for this.

Using "I" in a line with only blanks appended to the line.  This is not Vi
compatible.  Added the 'H' flag in 'coptions' for this.

When joining multiple lines the cursor would be at the last joint, but Vi
leaves it at the position where "J" would put it.  Added the 'q' flag in
'cpoptions' for this.

Autoindent didn't work for ":insert" and ":append".

Using ":append" in an empty buffer kept the dummy line.  Now it's deleted to
be Vi compatible.

When reading commands from a file and stdout goes to a terminal, would still
request the xterm version.  Vim can't read it, thus the output went to the
shell and caused trouble there.

When redirecting to a register with an invalid name the redirection would
still be done (after an error message).  Now reset "redir_reg". (Yegappan
Lakshmanan)

It was not possible to use a NL after a backslash in Ex mode.  This is
sometimes used to feed multiple lines to a shell command.

When 'cmdheight' is set to 2 in .vimrc and the GUI uses the number of lines
from the terminal we actually get 3 lines for the cmdline in gvim.

When setting $HOME allocated memory would leak.

Win32: bold characters may sometimes write in another character cell.  Use
unicodepdy[] as for UTF-8. (Taro Muraoka)

":w fname" didn't work for files with 'buftype' set to "nofile".

The method used to locate user commands for completion differed from when they
are executed.  Ambiguous command names were not completed properly.

Incremental search may cause a crash when there is a custom statusline that
indirectly invokes ":normal".

Diff mode failed when $DIFF_OPTIONS was set in the environment.  Unset it
before invoking "diff".

Completion didn't work after ":argdo", ":windo" and ":bufdo".  Also for ":set
&l:opt" and ":set &g:opt". (Peter Winters)

When setting 'ttymouse' to "dec" in an xterm that supports the DEC mouse
locator it doesn't work.  Now switch off the mouse before selecting another
mouse model.

When the CursorHold event is triggered and the commands peek for typed
characters the typeahead buffer may be messed up, e.g., when a mouse-up event
is received.  Avoid invoking the autocommands from the function waiting for a
character, let it put K_CURSORHOLD in the input buffer.

Removed the "COUNT" flag from ":argadd", to avoid ":argadd 1*" to be used like
":1argadd *".  Same for ":argdelete" and ":argedit".

Avoid that $LANG is used for the menus when LC_MESSAGES is "en_US".

Added backslashes before dashes in the vim.1 manual page to make the appear as
real dashes. (Pierr Habouzit)

Where "gq" left the cursor depended on the value of 'formatprg'.  Now "gq"
always leaves the cursor at the last line of the formatted text.

When editing a compressed file, such as "changelog.Debian.gz" file, filetype
detection may try to check the contents of the file while it's still
compressed.  Skip setting 'filetype' for compressed files until they have been
decompressed.  Required for patterns that end in a "*".

Starting with an argument "+cmd" or "-S script" causes the cursor the be moved
to the first line.  That breaks a BufReadPost autocommand that uses g`".
Don't move the cursor if it's somewhere past the first line.

"gg=G" while 'modifiable' is off was uninterruptible.

When 'encoding' is "sjis" inserting CTRL-V u d800 a few times causes a crash.
Don't insert a DBCS character with a NUL second byte.

In Insert mode CTRL-O <Home> didn't move the cursor.  Made "ins_at_eol" global
and reset it in nv_home().

Wildcard expansion failed: ":w /tmp/$$.`echo test`".  Don't put quotes around
spaces inside backticks.

After this sequence of commands: Y V p gv: the wrong line is selected.  Now
let "gv" select the text that was put, since the original text is deleted.
This should be the most useful thing to do.

":sleep 100u" sleeps for 100 seconds, not 100 usec as one might expect.  Give
an error message when the argument isn't recognized.

In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in
reallocating the buffer every time. (Alexei Alexandrov)

When using a Python "atexit" function it was not invoked when Vim exits.  Now
call Py_Finalize() for that. (Ugo Di Girolamo)
This breaks the thread stuff though, fixed by Ugo.

GTK GUI: using a .vimrc with "set cmdheight=2 lines=43" and ":split" right
after startup, the window layout is messed up. (Michael Schaap)  Added
win_new_shellsize() call in gui_init() to fix the topframe size.

Trick to get ...MOUSE_NM not used when there are vertical splits.  Now pass
column -1 for the left most window and add MOUSE_COLOFF for others.  Limits
mouse column to 10000.

searchpair() may hang when the end pattern has "\zs" at the end.  Check that
we find the same position again and advance one character.

When in diff mode and making a change that causes the "changed" highlighting
to disappear or reappear, it was still highlighted in another window.

When a ":next" command fails because the user selects "Abort" at the ATTENTION
prompt the argument index was advanced anyway.

When "~" is in 'iskeyword' the "gd" doesn't work, it's used for the previous
substitute pattern.  Put "\V" in the pattern to avoid that.

Use of sprintf() sometimes didn't check properly for buffer overflow.  Also
when using smsg().  Included code for snprintf() to avoid having to do size
checks where invoking them

":help \=<Tab>" didn't find "sub-replace-\=".  Wild menu for help tags didn't
show backslashes.  ":he :s\=" didn't work.

When reading an errorfile "~/" in a file name was not expanded.

GTK GUI: When adding a scrollbar (e.g. when using ":vsplit") in a script or
removing it the window size may change.  GTK sends us resize events when we
change the window size ourselves, but they may come at an unexpected moment.
Peek for a character to get any window resize events and fix 'columns' and
'lines' to undo this.

When using the GTK plug mechanism, resizing and focus was not working
properly. (Neil Bird)

After deleting files from the argument list a session file generated with
":mksession" may contain invalid ":next" commands.

When 'shortmess' is empty and 'keymap' set to accents, in Insert mode CTRL-N
may cause the hit-enter prompt.  Typing 'a then didn't result in the accented
character.  Put the character typed at the prompt back in the typeahead buffer
so that mapping is done in the right mode.

setbufvar() and setwinvar() did not give error messages.

It was possible to set a variable with an illegal name, e.g. with setbufvar().
It was possible to define a function with illegal name, e.t. ":func F{-1}()"

CTRL-W F and "gf" didn't use the same method to get the file name.

When reporting a conversion error the line number of the last error could be
given.  Now report the first encountered error.

When using ":e ++enc=name file" and iconv() was used for conversion an error
caused a fall-back to no conversion.  Now replace a character with '?' and
continue.

When opening a new buffer the local value of 'bomb' was not initialized from
the global value.

Win32: When using the "Edit with Vim" entry the file name was limited to about
200 characters.

When using command line completion for ":e *foo" and the file "+foo" exists
the resulting command ":e +foo" doesn't work.  Now insert a backslash: ":e
\+foo".

When the translation of "-- More --" was not 10 characters long the following
message would be in the wrong position.

At the more-prompt the last character in the last line wasn't drawn.

When deleting non-existing text while 'virtualedit' is set the '[ and '] marks
were not set.

Win32: Could not use "**/" in 'path', it had to be "**\".

The search pattern "\n" did not match at the end of the last line.

Searching for a pattern backwards, starting on the NUL at the end of the line
and 'encoding' is "utf-8" would match the pattern just before it incorrectly.
Affected searchpair('/\*', '', '\*/').

For the Find/Replace dialog it was possible that not finding the text resulted
in an error message while redrawing, which cleared the syntax highlighting
while it was being used, resulting in a crash.  Now don't clear syntax
highlighting, disable it with b_syn_error.

Win32: Combining UTF-8 characters were drawn on the previous character.
Could be noticed with a Thai font.

Output of ":function" could leave some of the typed text behind. (Yegappan
Lakshmanan)

When the command line history has only a few lines the command line window
would be opened with these lines above the first window line.

When using a command line window for search strings ":qa" would result in
searching for "qa" instead of quitting all windows.

GUI: When scrolling with the scrollbar and there is a line that doesn't fit
redrawing may fail.  Make sure w_skipcol is valid before redrawing.

Limit the values of 'columns' and 'lines' to avoid an overflow in Rows *
Columns.  Fixed bad effects when running out of memory (command line would be
reversed, ":qa!" resulted in ":!aq").

Motif: "gvim -iconic" opened the window anyway.  (David Harrison)

There is a tiny chance that a symlink gets created between checking for an
existing file and creating a file.  Use the O_NOFOLLOW for open() if it's
available.

In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of
sticking to the first column.

When using ":wq" and a BufWriteCmd autocmd uses inputsecret() the text was
echoed anyway.  Set terminal to raw mode in getcmdline().

Unix: ":w a;b~c" caused an error in expanding wildcards.

When appending to a file with ":w >>fname" in a buffer without a name, causing
the buffer to use "fname", the modified flag was reset.

When appending to the current file the "not edited" flag would be reset.
":w" would overwrite the file accidentally.

Unix: When filtering text with an external command Vim would still read input,
causing text typed for the command (e.g., a password) to be eaten and echoed.
Don't read input when the terminal is in cooked mode.

The Cygwin version of xxd used CR/LF line separators. (Corinna Vinschen)

Unix: When filtering text through a shell command some resulting text may be
dropped.  Now after detecting that the child has exited try reading some more
of its output.

When inside input(), using "CTRL-R =" and the expression throws an exception
the command line was not abandoned but it wasn't used either.  Now abandon
typing the command line.

'delcombine' was also used in Visual and Select mode and for commands like
"cl".  That was illogical and has been disabled.

When recording while a CursorHold autocommand was defined special keys would
appear in the register.  Now the CursorHold event is not triggered while
recording.

Unix: the src/configure script used ${srcdir-.}, not all shells understand
that.  Use ${srcdir:-.} instead.

When editing file "a" which is a symlink to file "b" that doesn't exist,
writing file "a" to create "b" and then ":split b" resulted in two buffers on
the same file with two different swapfile names.  Now set the inode in the
buffer when creating a new file.

When 'esckeys' is not set don't send the xterm code to request the version
string, because it may cause trouble in Insert mode.

When evaluating an expression for CTRL-R = on the command line it was possible
to call a function that opens a new window, resulting in errors for
incremental search, and many other nasty things were possible.  Now use the
|textlock| to disallow changing the buffer or jumping to another window
to protect from unexpected behavior.  Same for CTRL-\ e.

"d(" deleted the character under the cursor, while the documentation specified
an exclusive motion.  Vi also doesn't delete the character under the cursor.

Shift-Insert in Insert mode could put the cursor before the last character
when it just fits in the window.  In coladvance() don't stop at the window
edge when filling with spaces and when in Insert mode.  In mswin.vim avoid
getting a beep from the "l" command.

Win32 GUI: When Alt-F4 is used to close the window and Cancel is selected in
the dialog then Vim would insert <M-F4> in the text.  Now it's ignored.

When ":silent! {cmd}" caused the swap file dialog, which isn't displayed,
there would still be a hit-enter prompt.

Requesting the termresponse (|t_RV|) early may cause problems with "-c"
arguments that invoke an external command or even "-c quit".  Postpone it
until after executing "-c" arguments.

When typing in Insert mode so that a new line is started, using CTRL-G u to
break undo and start a new change, then joining the lines with <BS> caused
undo info to be missing.  Now reset the insertion start point.

Syntax HL: When a region start match has a matchgroup and an offset that
happens to be after the end of the line then it continued in the next line and
stopped at the region end match, making the region continue after that.
Now check for the column being past the end of the line in syn_add_end_off().

When changing a file, setting 'swapfile' off and then on again, making another
change and killing Vim, then some blocks may be missing from the swapfile.
When 'swapfile' is switched back on mark all blocks in the swapfile as dirty.
Added mf_set_dirty().

Expanding wildcards in a command like ":e aap;<>!" didn't work.  Put
backslashes before characters that are special to the shell. (Adri Verhoef)

A CursorHold autocommand would cause a message to be cleared.  Don't show the
special key for the event for 'showcmd'.

When expanding a file name for a shell command, as in "!cmd foo<Tab>" or ":r
!cmd foo<Tab>" also escape characters that are special for the shell:
"!;&()<>".

When the name of the buffer was set by a ":r fname" command |cpo-f| no
autocommands were triggered to notify about the change in the buffer list.

In the quickfix buffer 'bufhidden' was set to "delete", which caused closing
the quickfix window to leave an unlisted "No Name" buffer behind every time.

Win32: when using two screens of different size, setting 'lines' to a large
value didn't fill the whole screen. (SungHyun Nam)

Win32 installer: The generated _vimrc contained an absolute path to diff.exe.
After upgrading it becomes invalid.  Now use $VIMRUNTIME instead.

The command line was cleared to often when 'showmode' was set and ":silent
normal vy" was used.  Don't clear the command line unless the mode was
actually displayed.  Added the "mode_displayed" variable.

The "load session" toolbar item could not handle a space or other special
characters in v:this_session.

":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2.

In a multi-byte file the foldmarker could be recognized in the trail byte.
(Taro Muraoka)

Pasting with CTRL-V and menu didn't work properly when some commands are
mapped.  Use ":normal!" instead of ":normal". (Tony Apuzzo)

Crashed when expanding a file name argument in backticks.

In some situations the menu and scrollbar didn't work, when the value contains
a CSI byte. (Yukihiro Nakadaira)

GTK GUI: When drawing the balloon focus changes and we might get a key release
event that removed the balloon again.  Ignore the key release event.

'titleold' was included in ":mkexrc" and ":mksession" files.

":set background&" didn't use the same logic as was used when starting up.

When "umask" is set such that nothing is writable then the viminfo file would
be written without write permission. (Julian Bridle)

Motif: In diff mode dragging one scrollbar didn't update the scrollbar of the
other diff'ed window.

When editing in an xterm with a different number of colors than expected the
screen would be cleared and redrawn, causing the message about the edited file
to be cleared.  Now set "keep_msg" to redraw the last message.

For a color terminal: When the Normal HL uses bold, possibly to make the color
lighter, and another HL group specifies a color it might become light as well.
Now reset bold if a HL group doesn't specify bold itself.

When using 256 color xterm the color 255 would show up as color 0.  Use a
short instead of a char to store the color number.

ml_get errors when searching for "\n\zs" in an empty file.

When selecting a block and using "$" to select until the end of every line and
not highlighting the character under the cursor the first character of the
block could be unhighlighted.

When counting words for the Visual block area and using "$" to select until
the end of every line only up to the length of the last line was counted.

"dip" in trailing empty lines left one empty line behind.

The script ID was only remembered globally for each option. When a buffer- or
window-local option was set the same "last set" location was changed for all
buffers and windows.  Now remember the script ID for each local option
separately.

GUI: The "Replace All" button didn't handle backslashes in the replacement in
the same way as "Replace".  Escape backslashes so that they are taken
literally.

When using Select mode from Insert mode and typing a key, causing lines to be
deleted and a message displayed, delayed the effect of inserting the key.
Now overwrite the message without delay.

When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line
worked differently.  Now recognize all operators when using "l" at the end of
a line.

GTK GUI: when the font selector returned a font name with a comma in it then
it would be handled like two font names.  Now put a backslash before the
comma.

MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for
'iskeyword' was still for CPxxx.  And when 'nocompatible' was set 'isprint'
would also be the wrong value.

When a command was defined not to take arguments and no '|' no warning message
would be given for using a '|'.  Also with ":loadkeymap".

Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) !=
sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira)

":all" always set the current window to the first window, even when it
contains a buffer that is not in the argument list (can't be closed because it
is modified).  Now go to the window that has the first item of the argument
list.

GUI: To avoid left-over pixels from bold text all characters after a character
with special attributes were redrawn.  Now only do this for characters that
actually are bold.  Speeds up displaying considerably.

When only highlighting changes and the text is scrolled at the same time
everything is redraw instead of using a scroll and updating the changed text.
E.g., when using ":match" to highlight a paren that the cursor landed on.
Added SOME_VALID: Redraw the whole window but also try to scroll to minimize
redrawing.

Win32: When using Korean IME making it active didn't work properly. (Moon,
Yu-sung, 2005 March 21)

Ruby interface: when inserting/deleting lines display wasn't updated. (Ryan
Paul)

--- fixes since Vim 7.0b ---

Getting the GCC version in configure didn't work with Solaris sed.  First
strip any "darwin." and then get the version number.

The "autoload" directory was missing from the self-installing executable for
MS-Windows.

The MS-Windows install program would find "vimtutor.bat" in the install
directory.  After changing to "c:" also change to "\" to avoid looking in the
install directory.

To make the 16 bit DOS version compile exclude not used highlight
initializations and build a tiny instead of small version.

finddir() and findfile() accept a negative count and return a List then.

The Python indent file contained a few debugging statements, removed.

Expanding {} for a function name, resulting in a name starting with "s:" was
not handled correctly.

Spelling: renamed COMPOUNDMAX to COMPOUNDWORDMAX.  Added several items to be
able to handle the new Hungarian dictionary.

Mac: Default to building for the current platform only, that is much faster
than building a universal binary.  Also, using Perl/Python/etc. only works for
the current platform.

The time on undo messages disappeared for someone.  Using %T for strftime()
apparently doesn't work everywhere.  Use %H:%M:%S instead.

Typing BS at the "z=" prompt removed the prompt.

--- fixes and changes since Vim 7.0c ---

When jumping to another tab page the Vim window size was always set, even when
nothing in the layout changed.

Win32 GUI tab pages line wasn't always enabled.  Do a proper check for the
compiler version.

Win32: When switching between tab pages the Vim window was moved when part of
it was outside of the screen.  Now only do that in the direction of a size
change.

Win32: added menu to GUI tab pages line. (Yegappan Lakshmanan)

Mac: Added document icons. (Benji Fisher)

Insert mode completion: Using Enter to accept the current match causes
confusion.  Use CTRL-Y instead.  Also, use CTRL-E to go back to the typed
text.

GUI: When there are left and right scrollbars, ":tabedit" kept them instead of
using the one that isn't needed.

Using "gP" to replace al the text could leave the cursor below the last line,
causing ml_get errors.

When 'cursorline' is set don't use the highlighting when Visual mode is
active, otherwise it's difficult to see the selected area.

The matchparen plugin restricts the search to 100 lines, to avoid a long delay
when there are closed folds.

Sometimes using CTRL-X s to list spelling suggestions used text from another
line.

Win32: Set the default for 'isprint' back to the wrong default "@,~-255",
because many people use Windows-1252 while 'encoding' is "latin1".

GTK: Added a workaround for gvim crashing when used over an untrusted ssh
link, caused by GTK doing something nasty. (Ed Catmur)

Win32: The font used for the tab page labels is too big.  Use the system menu
font. (George Reilly)

Win32: Adjusting the window position and size to keep it on the screen didn't
work properly when the taskbar is on the left or top of the screen.

The installman.sh and installml.sh scripts use ${10}, that didn't work with
old shells.  And use "test -f" instead of "test -e".

Win32: When 'encoding' was set in the vimrc then a directory argument for diff
mode didn't work.

GUI: at the inputlist() prompt the cursorshape was adjusted as if the windows
were still at their old position.

The parenmatch plugin didn't remember the highlighting per window.

Using ":bd" for a buffer that's the current window in another tab page caused
a crash.

For a new tab page the 'scroll' option wasn't set to a good default.

Using an end offset for a search "/pat/e" didn't work properly for multi-byte
text. (Yukihiro Nakadaira)

":s/\n/,/" doubled the text when used on the last line.

When "search" is in 'foldopen' "[s" and "]s" now open folds.

When using a numbered function "dict" can be omitted, but "self" didn't work
then.  Always add FC_DICT to the function flags when it's part of a
dictionary.

When "--remote-tab" executes locally it left an empty tab page.

"gvim -u NONE", ":set cursorcolumn", "C" in the second line didn't update
text.  Do update further lines even though the "$" is displayed.

VMS: Support GTK better, also enable +clientserver. (Zoltan Arpadffy)

When highlighting of statusline or tabline is changed there was no redraw to
show the effect.

Mac: Added "CFBundleIdentifier" to infplist.xml.

Added tabpage-local variables t:var.

Win32: Added double-click in tab pages line creates new tab. (Yegappan
Lakshmanan)

Motif: Added GUI tab pages line. (Yegappan Lakshmanan)

Fixed crash when 'lines' was set to 1000 in a modeline.

When init_spellfile() finds a writable directory in 'runtimepath' but it
doesn't contain a "spell" directory, create one.

Win32: executable() also finds "xxd" in the directory where Vim was started,
but "!xxd" doesn't work.  Append the Vim starting directory to $PATH.

The tab page labels are shortened, directory names are reduced to a single
letter by default.  Added the pathshorten() function to allow a user to do the
same.

":saveas" now resets 'readonly' if the file was successfully written.

Set $MYVIMRC file to the first found .vimrc file.
Set $MYGVIMRC file to the first found .gvimrc file.
Added menu item "Startup Settings" that edits the $MYVIMRC file

Added matcharg().

Error message E745 appeared twice.  Renamed one to E786.

Fixed crash when using "au BufRead * Sexplore" and doing ":help".  Was wiping
out a buffer that's still in a window.

":hardcopy" resulted in an error message when 'encoding' is "utf-8" and
'printencoding' is empty.  Now it assumes latin1. (Mike Williams)

The check for the toolbar feature for Motif, depending on certain included
files, wasn't detailed enough, causing building to fail in gui_xmebw.c.

Using CTRL-E in Insert mode completion after CTRL-P inserted the first match
instead of the original text.

When displaying a UTF-8 character with a zero lower byte Vim might think the
previous character is double-wide.

The "nbsp" item of 'listchars' didn't work when 'encoding' was utf-8.

Motif: when Xm/xpm.h is missing gui_xmebw.c would not compile.
HAVE_XM_UNHIGHLIGHTT_H was missing a T.

Mac: Moved the .icns files into src/os_mac_rsrc, so that they can all be
copied at once.  Adjusted the Info.plist file for three icons.

When Visual mode is active while switching to another tabpage could get ml_get
errors.

When 'list' is set, 'nowrap' the $ in the first column caused 'cursorcolumn'
to move to the right.

When a line wraps, 'cursorcolumn' was never displayed past the end of the
line.

'autochdir' was only available when compiled with NetBeans and GUI.  Now it's
a separate feature, also available in the "big" version.

Added CTRL-W gf: open file under cursor in new tab page.

When using the menu in the tab pages line, "New Tab" opens the new tab before
where the click was.  Beyond the labels the new tab appears at the end instead
of after the current tab page.

Inside a mapping with an expression getchar() could not be used.

When vgetc is used recursively vgetc_busy protects it from being used
recursively.  But after a ":normal" command the protection was reset.

":s/a/b/n" didn't work when 'modifiable' was off.

When $VIMRUNTIME includes a multi-byte character then rgb.txt could not be
found. (Yukihiro Nakadaira)

":mkspell" didn't work correctly for non-ASCII affix flags when conversion is
needed on the spell file.

glob('/dir/\$ABC/*') didn't work.

When using several tab pages and changing 'cmdheight' the display could become
messed up.  Now store the value of 'cmdheight' separately for each tab page.

The user of the Enter key while the popup menu is visible was still confusing.
Now use Enter to select the match after using a cursor key.

Added "usetab" to 'switchbuf'.


--- fixes and changes since Vim 7.0d ---

Added CTRL-W T: move a window to a new tab page.

Using CTRL-X s in Insert mode to complete spelling suggestions and using BS
deleted characters before the bad word.

A few small fixes for the VMS makefile. (Zoltan Arpadffy)

With a window of 91 lines 45 cols, ":vsp" scrolled the window.  Copy w_wrow
when splitting a window and skip setting the height when it's already at the
right value.

Using <silent> in a mapping with a shell command and the GUI caused redraw
to use wrong attributes.

Win32: Using MSVC 4.1 for install.exe resulted in the start menu items to be
created in the administrator directory instead of "All Users".  Define the
CSIDL_ items if they are missing.

Motif: The GUI tabline did not use the space above the right scrollbar.  Work
around a bug in the Motif library. (Yegappan Lakshmanan)

The extra files for XML Omni completion are now also installed.
|xml-omni-datafile|

GTK GUI: when 'm' is missing from 'guioptions' during startup and pressing
<F10> GTK produced error messages.  Now do create the menu but disable it just
after the first gui_mch_update().

":mkspell" doesn't work well with the Hungarian dictionary from the Hunspell
project.  Back to the Myspell dictionary.

In help files hide the | used around tags.

Renamed pycomplete to pythoncomplete.

Added "tabpages" to 'sessionoptions'.

When 'guitablabel' is set the effect wasn't visible right away.

Fixed a few 'cindent' errors.

When completing menu names, e.g., after ":emenu", don't sort the entries but
keep them in the original order.

Fixed a crash when editing a directory in diff mode.  Don't trigger
autocommands when executing the diff command.

Getting a keystroke could get stuck if 'encoding' is a multi-byte encoding and
typing a special key.

When 'foldignore' is set the folds were not updated right away.

When a list is indexed with [a : b] and b was greater than the length an error
message was given.  Now silently truncate the result.

When using BS during Insert mode completion go back to the original text, so
that CTRL-N selects the first matching entry.

Added the 'M' flag to 'cinoptions'.

Win32: Make the "gvim --help" window appear in the middle of the screen
instead of at an arbitrary position. (Randall W. Morris)

Added gettabwinvar() and settabwinvar().

Command line completion: pressing <Tab> after ":e /usr/*" expands the whole
tree, because it becomes ":e /usr/**".  Don't add a star if there already is
one.

Added grey10 to grey90 to all GUIs, so that they can all be used for
initializing highlighting.  Use grey40 for CursorColumn and CursorLine when
'background' is "dark".

When reading a file and using iconv for conversion, an incomplete byte
sequence at the end caused problems. (Yukihiro Nakadaira)


--- fixes and changes since Vim 7.0e ---

Default color for MatchParen when 'background' is "dark" is now DarkCyan.

":syn off" had to be used twice in a file that sets 'syntax' in a modeline.
(Michael Geddes)

When using ":vsp" or ":sp" the available space wasn't used equally between
windows. (Servatius Brandt)

Expanding <cWORD> on a trailing blank resulted in the first word in the line
if 'encoding' is a multi-byte encoding.

Spell checking: spellbadword() didn't see a missing capital in the first word
of a line.  Popup menu now only suggest the capitalized word when appropriate.

When using whole line completion CTRL-L moves through the matches but it
didn't work when at the original text.

When completion finds the longest match, don't go to the first match but stick
at the original text, so that CTRL-N selects the first one.

Recognize "zsh-beta" like "zsh" for setting the 'shellpipe' default. (James
Vega)

When using ":map <expr>" and the expression results in something with a
special byte (NUL or CSI) then it didn't work properly.  Now escape special
bytes.

The default Visual highlighting for a color xterm with 8 colors was a magenta
background, which made magenta text disappear.  Now use reverse in this
specific situation.

After completing the longest match "." didn't insert the same text.  Repeating
also didn't work correctly for multi-byte text.

When using Insert mode completion and BS the whole word that was completed
would result in all possible matches.  Now stop completion.  Also fixes that
for spell completion the previous word was deleted.

GTK: When 'encoding' is "latin1" and using non-ASCII characters in a file name
the tab page label was wrong and an error message would be given.

The taglist() function could hang on a tags line with a non-ASCII character.

Win32: When 'encoding' differs from the system encoding tab page labels with
non-ASCII characters looked wrong. (Yegappan Lakshmanan)

Motif: building failed when Xm/Notebook.h doesn't exist.  Added a configure
check, disable GUI tabline when it's missing.

Mac: When compiled without multi-byte feature the clipboard didn't work.

It was possible to switch to another tab page when the cmdline window is open.

Completion could hang when 'lines' is 6 and a preview window was opened.

Added CTRL-W gF: open file under cursor in new tab page and jump to the line
number following the file name.
Added 'guitabtooltip'.  Implemented for Win32 (Yegappan Lakshmanan).

Added "throw" to 'debug' option: throw an exception for error messages even
whey they would otherwise be ignored.

When 'keymap' is set and a line contains an invalid entry could get a "No
mapping found" warning instead of a proper error message.

Motif: default to using XpmAttributes instead of XpmAttributes_21.

A few more changes for 64 bit MS-Windows. (George Reilly)

Got ml_get errors when doing "o" and selecting in other window where there are
less line shorter than the cursor position in the other window.  ins_mouse()
was using position in wrong window.

Win32 GUI: Crash when giving a lot of messages during startup.  Allocate twice
as much memory for the dialog template.

Fixed a few leaks and wrong pointer use reported by coverity.

When showing menus the mode character was sometimes wrong.

Added feedkeys(). (Yakov Lerner)

Made matchlist() always return all submatches.

Moved triggering QuickFixCmdPost to before jumping to the first location.

Mac: Added the 'macatsui' option as a temporary work around for text drawing
problems.

Line completion on "/**" gave error messages when scanning an unloaded buffer.

--- fixes and changes since Vim 7.0f ---

Win32: The height of the tab page labels is now adjusted to the font height.
(Yegappan Lakshmanan)

Win32: selecting the tab label was off by one. (Yegappan Lakshmanan)

Added tooltips for Motif and GTK tab page labels. (Yegappan Lakshmanan)

When 'encoding' is "utf-8" then ":help spell" would report an illegal byte and
the file was not converted from latin1 to utf-8.  Now retry with latin1 if
reading the file as utf-8 results in illegal bytes.

Escape the argument of feedkeys() before putting it in the typeahead buffer.
(Yukihiro Nakadaira)

Added the v:char variable for evaluating 'formatexpr'. (Yukihiro Nakadaira)

With 8 colors Search highlighting combined with Statement highlighted text
made the text disappear.

VMS: avoid warnings for redefining MAX and MIN. (Zoltan Arpadffy)

When 'virtualedit' includes "onemore", stopping Visual selection would still
move the cursor left.

Prevent that using CTRL-R = in Insert mode can start Visual mode.

Fixed a crash that occurred when in Insert mode with completion active and a
mapping caused edit() to be called recursively.

When using CTRL-O in Insert mode just after the last character while
'virtualedit' is "all", then typing CR moved the last character to the next
line.  Call coladvance() before starting the new line.

When using |:shell| ignore clicks on the tab page labels.  Also when using the
command line window.

When 'eventignore' is "all" then adding more to ignoring some events, e.g.,
for ":vimgrep", would actually trigger more events.

Win32: When a running Vim uses server name GVIM1 then "gvim --remote fname"
didn't find it.  When looking for a server name that doesn't end in a digit
and it is not found then use another server with that name and a number (just
like on Unix).

When using "double" in 'spellsuggest' when the language doesn't support sound
folding resulted in too many suggestions.

Win32: Dropping a shortcut on the Vim icon didn't edit the referred file like
editing it in another way would.  Use fname_expand() in buf_set_name() instead
of simply make the file name a full path.

Using feedkeys() could cause Vim to hang.

When closing another tab page from the tabline menu in Insert mode the tabline
was not updated right away.

The syntax menu didn't work in compatible mode.

After using ":tag id" twice with the same "id", ":ts" and then ":pop" a ":ts"
reported no matching tag.  Clear the cached tag name.

In Insert mode the matchparen plugin highlighted the wrong paren when there is
a string just next to a paren.

GTK: After opening a new tab page the text was sometimes not drawn correctly.
Flush output and catch up with events when updating the tab page labels.

In the GUI, using CTRL-W q to close the last window of a tab page could cause
a crash.

GTK: The tab pages line menu was not converted from 'encoding' to utf-8.

Typing a multi-byte character or a special key at the hit-enter prompt did not
work.

When 'virtualedit' contains "onemore" CTRL-O in Insert mode still moved the
cursor left when it was after the end of the line, even though it's allowed to
be there.

Added test for using tab pages.

towupper() and towlower() were not used, because of checking for
__STDC__ISO_10646__ instead of __STDC_ISO_10646__. (sertacyildiz)

For ":map <expr>" forbid changing the text, jumping to another buffer and
using ":normal" to avoid nasty side effects.

--- fixes and changes since Vim 7.0g ---

Compilation error on HP-UX, use of "dlerr" must be inside a #ifdef.
(Gary Johnson)

Report +reltime feature in ":version" output.

The tar and zip plugins detect failure to get the contents of the archive and
edit the file as-is.

When the result of 'guitablabel' is empty fall back to the default label.

Fixed crash when using ":insert" in a while loop and missing "endwhile".

"gt" and other commands could move to another window when |textlock| active
and when the command line window was open.

Spell checking a file with syntax highlighting and a bad word at the end of
the line is ignored could make "]s" hang.

Mac: inputdialog() didn't work when compiled with big features.

Interrupting ":vimgrep" while it is busy loading a file left a modified and
hidden buffer behind.  Use enter_cleanup() and leave_cleanup() around
wipe_buffer().

When making 'keymap' empty the b:keymap_name variable wasn't deleted.

Using CTRL-N that searches a long time, pressing space to interrupt the
searching and accept the first match, the popup menu was still displayed
briefly.

When setting the Vim window height with -geometry the 'window' option could be
at a value that makes CTRL-F behave differently.

When opening a quickfix window in two tabs they used different buffers,
causing redrawing problems later.  Now use the same buffer for all quickfix
windows. (Yegappan Lakshmanan)

When 'mousefocus' is set moving the mouse to the text tab pages line would
move focus to the first window.  Also, the mouse pointer would jump to the
active window.

In a session file, when an empty buffer is wiped out, do this silently.

When one window has the cursor on the last line and another window is resized
to make that window smaller, the cursor line could go below the displayed
lines.  In win_new_height() subtract one from the available space.
Also avoid that using "~" lines makes the window scroll down.

Mac: When sourcing the "macmap.vim" script and then finding a .vimrc file the
'cpo' option isn't set properly, because it was already set and restored.
Added the <special> argument to ":map", so that 'cpo' doesn't need to be
changed to be able to use <> notation.  Also do this for ":menu" for
consistency.

When using "/encoding=abc" in a spell word list, only "bc" was used.

When 'encoding' and 'printencoding' were both "utf-8" then ":hardcopy" didn't
work. (Mike Williams)

Mac: When building with "--disable-gui" the install directory would still be
"/Applications" and Vim.app would be installed.  Now install in /usr/local as
usual for a console application.

GUI: when doing completion and there is one match and still searching for
another, the cursor was displayed at the end of the line instead of after the
match.  Now show the cursor after the match while still searching for matches.

GUI: The mouse shape changed on the statusline even when 'mouse' was empty and
they can't be dragged..

GTK2: Selecting a button in the confirm() dialog with Tab or cursor keys and
hitting Enter didn't select that button.  Removed GTK 1 specific code. (Neil
Bird)

When evaluating 'balloonexpr' takes a long time it could be called
recursively, which could cause a crash.

exists() could not be used to detect whether ":2match" is supported.  Added a
check for it specifically.

GTK1: Tab page labels didn't work. (Yegappan Lakshmanan)

Insert mode completion: When finding matches use 'ignorecase', but when adding
matches to the list don't use it, so that all words with different case are
added, "word", "Word" and "WORD".

When 'cursorline' and 'hlsearch' are set and the search pattern is "x\n"
the rest of the line was highlighted as a match.

Cursor moved while evaluating 'balloonexpr' that invokes ":isearch" and
redirects the output.  Don't move the cursor to the command line if msg_silent
is set.

exists() ignored text after a function name and option name, which could
result in false positives.

exists() ignored characters after the recognized word, which can be wrong when
using a name with non-keyword characters.  Specifically, these calls no longer
allow characters after the name: exists('*funcname') exists('*funcname(...')
exists('&option') exists(':cmd') exists('g:name') exists('g:name[n]')
exists('g:name.n')

Trigger the TabEnter autocommand only after entering the current window of the
tab page, otherwise the commands are executed with an invalid current window.

Win32: When using two monitors and Vim is on the second monitor, changing the
width of the Vim window could make it jump to the first monitor.

When scrolling back at the more prompt and the quitting a line of text would
be left behind when 'cmdheight' is 2 or more.

Fixed a few things for Insert mode completion, especially when typing BS,
CTRL-N or a printable character while still searching for matches.


==============================================================================
VERSION 7.1						*version-7.1*

This section is about improvements made between version 7.0 and 7.1.

This is a bug-fix release, there are no fancy new features.


Changed							*changed-7.1*
-------

Added setting 'mouse' in vimrc_example.vim.

When building with MZscheme also look for include files in the "plt"
subdirectory.  That's where they are for FreeBSD.

The Ruby interface module is now called "Vim" instead of "VIM".  But "VIM" is
an alias, so it's backwards compatible. (Tim Pope)


Added							*added-7.1*
-----

New syntax files:
	/var/log/messages (Yakov Lerner)
	Autohotkey (Nikolai Weibull)
	AutoIt v3 (Jared Breland)
	Bazaar commit file "bzr". (Dmitry Vasiliev)
	Cdrdao TOC (Nikolai Weibull)
	Cmusrc (Nikolai Weibull)
	Conary recipe (rPath Inc)
	Framescript (Nikolai Weibull)
	FreeBasic (Mark Manning)
	Hamster (David Fishburn)
	IBasic (Mark Manning)
	Initng (Elan Ruusamae)
	Ldapconf (Nikolai Weibull)
	Litestep (Nikolai Weibull)
	Privoxy actions file (Doug Kearns)
	Streaming Descriptors "sd" (Puria Nafisi Azizi)

New tutor files:
	Czech (Lubos Turek)
	Hungarian (Arpad Horvath)
	Turkish (Serkan kkk)
	utf-8 version of Greek tutor.
	utf-8 version of Russian tutor.
	utf-8 version of Slowak tutor.

New filetype plugins:
	Bst (Tim Pope)
	Cobol (Tim Pope)
	Fvwm (Gautam Iyer)
	Hamster (David Fishburn)
	Django HTML template (Dave Hodder)

New indent files:
	Bst (Tim Pope)
	Cobol (Tim Pope)
	Hamster (David Fishburn)
	Django HTML template (Dave Hodder)
	Javascript
	JSP (David Fishburn)

New keymap files:
	Bulgarian (Boyko Bantchev)
	Mongolian (Natsagdorj Shagdar)
	Thaana (Ibrahim Fayaz)
	Vietnamese (Samuel Thibault)

Other new runtime files:
	Ada support files. (Neil Bird, Martin Krischik)
	Slovenian menu translations (Mojca Miklavec)
	Mono C# compiler plugin (Jarek Sobiecki)


Fixed							*fixed-7.1*
-----

Could not build the Win32s version.  Added a few structure definitions in
src/gui_w32.c


Patch 7.0.001
Problem:    ":set spellsuggest+=10" does not work. (Suresh Govindachar)
Solution:   Add P_COMMA to the 'spellsuggest' flags.
Files:	    src/option.c

Patch 7.0.002
Problem:    C omni completion has a problem with tags files with a path
	    containing "#" or "%".
Solution:   Escape these characters. (Sebastian Baberowski)
Files:	    runtime/autoload/ccomplete.vim

Patch 7.0.003
Problem:    GUI: clicking in the lower part of a label in the tab pages line
	    while 'mousefocus' is set may warp the mouse pointer. (Robert
	    Webb)
Solution:   Check for a negative mouse position.
Files:	    src/gui.c

Patch 7.0.004
Problem:    Compiler warning for debug_saved used before set. (Todd Blumer)
Solution:   Remove the "else" for calling save_dbg_stuff().
Files:	    src/ex_docmd.c

Patch 7.0.005 (extra)
Problem:    Win32: The installer doesn't remove the "autoload" and "spell"
	    directories. (David Fishburn)
Solution:   Add the directories to the list to be removed.
Files:	    nsis/gvim.nsi

Patch 7.0.006
Problem:    Mac: "make shadow" doesn't make a link for infplist.xml. (Axel
	    Kielhorn)
Solution:   Make the link.
Files:	    src/Makefile

Patch 7.0.007
Problem:    AIX: compiling fails for message.c. (Ruediger Hornig)
Solution:   Move the #if outside of memchr().
Files:	    src/message.c

Patch 7.0.008
Problem:    Can't call a function that uses both <SID> and {expr}. (Thomas)
Solution:   Check both the expanded and unexpanded name for <SID>.
Files:	    src/eval.c

Patch 7.0.009
Problem:    ml_get errors with both 'sidescroll' and 'spell' set.
Solution:   Use ml_get_buf() instead of ml_get(), get the line from the right
	    buffer, not the current one.
Files:	    src/spell.c

Patch 7.0.010
Problem:    The spellfile plugin required typing login name and password.
Solution:   Use "anonymous" and "vim7user" by default.  No need to setup a
	    .netrc file.
Files:	    runtime/autoload/spellfile.vim

Patch 7.0.011
Problem:    Can't compile without the folding and with the eval feature.
Solution:   Add an #ifdef. (Vallimar)
Files:	    src/option.c

Patch 7.0.012
Problem:    Using the matchparen plugin, moving the cursor in Insert mode to a
	    shorter line that ends in a brace, changes the preferred column
Solution:   Use winsaveview()/winrestview() instead of getpos()/setpos().
Files:	    runtime/plugin/matchparen.vim

Patch 7.0.013
Problem:    Insert mode completion: using CTRL-L to add an extra character
	    also deselects the current match, making it impossible to use
	    CTRL-L a second time.
Solution:   Keep the current match.  Also make CTRL-L work at the original
	    text, using the first displayed match.
Files:	    src/edit.c

Patch 7.0.014
Problem:    Compiling gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
Solution:   Disable some code for Motif 1.2 and older.
Files:	    src/gui_xmebw.c

Patch 7.0.015
Problem:    Athena: compilation problems with modern compiler.
Solution:   Avoid type casts for lvalue. (Alexey Froloff)
Files:	    src/gui_at_fs.c

Patch 7.0.016
Problem:    Printing doesn't work for "dec-mcs" encoding.
Solution:   Add "dec-mcs", "mac-roman" and "hp-roman8" to the list of
	    recognized 8-bit encodings. (Mike Williams)
Files:	    src/mbyte.c

Patch 7.0.017 (after 7.0.014)
Problem:    Linking gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
Solution:   Adjust defines for Motif 1.2 and older.
Files:	    src/gui_xmebw.c

Patch 7.0.018
Problem:    VMS: plugins are not loaded on startup.
Solution:   Remove "**" from the path. (Zoltan Arpadffy)
Files:	    src/main.c

Patch 7.0.019
Problem:    Repeating "VjA789" may cause a crash. (James Vega)
Solution:   Check the cursor column after moving it to another line.
Files:	    src/ops.c

Patch 7.0.020
Problem:    Crash when using 'mousefocus'. (William Fulton)
Solution:   Make buffer for mouse coordinates 2 bytes longer. (Juergen Weigert)
Files:	    src/gui.c

Patch 7.0.021
Problem:    Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber)
Solution:   Check for valid submatches after matching the pattern.
Files:	    src/quickfix.c

Patch 7.0.022
Problem:    Using buffer.append() in Ruby may append the line to the wrong
	    buffer. (Alex Norman)
Solution:   Properly switch to the buffer to do the appending.  Also for
	    buffer.delete() and setting a buffer line.
Files:	    src/if_ruby.c

Patch 7.0.023
Problem:    Crash when doing spell completion in an empty line and pressing
	    CTRL-E.
Solution:   Check for a zero pointer. (James Vega)
	    Also handle a situation without a matching pattern better, report
	    "No matches" instead of remaining in undefined CTRL-X mode.  And
	    get out of CTRL-X mode when typing a letter.
Files:	    src/edit.c

Patch 7.0.024
Problem:    It is possible to set arbitrary "v:" variables.
Solution:   Disallow setting "v:" variables that are not predefined.
Files:	    src/eval.c

Patch 7.0.025
Problem:    Crash when removing an element of a:000.  (Nikolai Weibull)
Solution:   Mark the a:000 list with VAR_FIXED.
Files:	    src/eval.c

Patch 7.0.026
Problem:    Using libcall() may show an old error.
Solution:   Invoke dlerror() to clear a previous error. (Yukihiro Nakadaira)
Files:	    src/os_unix.c

Patch 7.0.027 (extra)
Problem:    Win32: When compiled with SNIFF gvim may hang on exit.
Solution:   Translate and dispatch the WM_USER message. (Mathias Michaelis)
Files:	    src/gui_w48.c

Patch 7.0.028 (extra)
Problem:    OS/2: Vim doesn't compile with gcc 3.2.1.
Solution:   Add argument to after_pathsep(), don't define vim_handle_signal(),
	    define HAVE_STDARG_H. (David Sanders)
Files:	    src/os_unix.c, src/vim.h, src/os_os2_cfg.h

Patch 7.0.029
Problem:    getchar() may not position the cursor after a space.
Solution:   Position the cursor explicitly.
Files:	    src/eval.c

Patch 7.0.030
Problem:    The ":compiler" command can't be used in a FileChangedRO event.
	    (Hari Krishna Dara)
Solution:   Add the CMDWIN flag to the ":compiler" command.
Files:	    src/ex_cmds.h

Patch 7.0.031
Problem:    When deleting a buffer the buffer-local mappings for Select mode
	    remain.
Solution:   Add the Select mode bit to MAP_ALL_MODES. (Edwin Steiner)
Files:	    src/vim.h

Patch 7.0.032 (extra, after 7.0.027)
Problem:    Missing semicolon.
Solution:   Add the semicolon.
Files:	    src/gui_w48.c

Patch 7.0.033
Problem:    When pasting text, with the menu or CTRL-V, autoindent is removed.
Solution:   Use "x<BS>" to avoid indent to be removed. (Benji Fisher)
Files:	    runtime/autoload/paste.vim

Patch 7.0.034
Problem:    After doing completion and typing more characters or using BS
	    repeating with "." didn't work properly. (Martin Stubenschrott)
Solution:   Don't put BS and other characters in the redo buffer right away,
	    do this when finishing completion.
Files:	    src/edit.c

Patch 7.0.035
Problem:    Insert mode completion works when typed but not when replayed from
	    a register. (Hari Krishna Dara)
	    Also: Mappings for Insert mode completion don't always work.
Solution:   When finding a non-completion key in the input don't interrupt
	    completion when it wasn't typed.
	    Do use mappings when checking for typeahead while still finding
	    completions.  Avoids that completion is interrupted too soon.
	    Use "compl_pending" in a different way.
Files:	    src/edit.c

Patch 7.0.036
Problem:    Can't compile with small features and syntax highlighting or the
	    diff feature.
Solution:   Define LINE_ATTR whenever syntax highlighting or the diff feature
	    is enabled.
Files:	    src/screen.c

Patch 7.0.037
Problem:    Crash when resizing the GUI window vertically when there is a line
	    that doesn't fit.
Solution:   Don't redraw while the screen data is invalid.
Files:	    src/screen.c

Patch 7.0.038
Problem:    When calling complete() from an Insert mode expression mapping
	    text could be inserted in an improper way.
Solution:   Make undo_allowed() global and use it in complete().
Files:	    src/undo.c, src/proto/undo.pro, src/eval.c

Patch 7.0.039
Problem:    Calling inputdialog() with a third argument in the console doesn't
	    work.
Solution:   Make a separate function for input() and inputdialog(). (Yegappan
	    Lakshmanan)
Files:	    src/eval.c

Patch 7.0.040
Problem:    When 'cmdheight' is larger than 1 using inputlist() or selecting
	    a spell suggestion with the mouse gets the wrong entry.
Solution:   Start listing the first alternative on the last line of the screen.
Files:	    src/eval.c, src/spell.c

Patch 7.0.041
Problem:    cursor([1, 1]) doesn't work. (Peter Hodge)
Solution:   Allow leaving out the third item of the list and use zero for the
	    virtual column offset.
Files:	    src/eval.c

Patch 7.0.042
Problem:    When pasting a block of text in Insert mode Vim hangs or crashes.
	    (Noam Halevy)
Solution:   Avoid that the cursor is positioned past the NUL of a line.
Files:	    src/ops.c

Patch 7.0.043
Problem:    Using "%!" at the start of 'statusline' doesn't work.
Solution:   Recognize the special item when the option is being set.
Files:	    src/option.c

Patch 7.0.044
Problem:    Perl: setting a buffer line in another buffer may result in
	    changing the current buffer.
Solution:   Properly change to the buffer to be changed.
Files:	    src/if_perl.xs

Patch 7.0.045 (extra)
Problem:    Win32: Warnings when compiling OLE version with MSVC 2005.
Solution:   Move including vim.h to before windows.h. (Ilya Bobir)
Files:	    src/if_ole.cpp

Patch 7.0.046
Problem:    The matchparen plugin ignores parens in strings, but not in single
	    quotes, often marked with "character".
Solution:   Also ignore parens in syntax items matching "character".
Files:	    runtime/plugin/matchparen.vim

Patch 7.0.047
Problem:    When running configure the exit status is wrong.
Solution:   Handle the exit status properly. (Matthew Woehlke)
Files:	    configure, src/configure

Patch 7.0.048
Problem:    Writing a compressed file fails when there are parens in the name.
	    (Wang Jian)
Solution:   Put quotes around the temp file name.
Files:	    runtime/autoload/gzip.vim

Patch 7.0.049
Problem:    Some TCL scripts are not recognized. (Steven Atkinson)
Solution:   Check for "exec wish" in the file.
Files:	    runtime/scripts.vim

Patch 7.0.050
Problem:    After using the netbeans interface close command a stale pointer
	    may be used.
Solution:   Clear the pointer to the closed buffer. (Xaview de Gaye)
Files:	    src/netbeans.c

Patch 7.0.051 (after 7.0.44)
Problem:    The Perl interface doesn't compile or doesn't work properly.
Solution:   Remove the spaces before #ifdef and avoid an empty line above it.
Files:	    src/if_perl.xs

Patch 7.0.052
Problem:    The user may not be aware that the Vim server allows others more
	    functionality than desired.
Solution:   When running Vim as root don't become a Vim server without an
	    explicit --servername argument.
Files:	    src/main.c

Patch 7.0.053
Problem:    Shortening a directory name may fail when there are multi-byte
	    characters.
Solution:   Copy the correct bytes. (Titov Anatoly)
Files:	    src/misc1.c

Patch 7.0.054
Problem:    Mac: Using a menu name that only has a mnemonic or accelerator
	    causes a crash.  (Elliot Shank)
Solution:   Check for an empty menu name.  Also delete empty submenus that
	    were created before detecting the error.
Files:	    src/menu.c

Patch 7.0.055
Problem:    ":startinsert" in a CmdwinEnter autocommand doesn't take immediate
	    effect. (Bradley White)
Solution:   Put a NOP key in the typeahead buffer.  Also avoid that using
	    CTRL-C to go back to the command line moves the cursor left.
Files:	    src/edit.c, src/ex_getln.c

Patch 7.0.056
Problem:    "#!something" gives an error message.
Solution:   Ignore this line, so that it can be used in an executable Vim
	    script.
Files:	    src/ex_docmd.c

Patch 7.0.057 (extra, after 7.0.45)
Problem:    Win32: Compilation problem with Borland C 5.5.
Solution:   Include vim.h as before. (Mark S. Williams)
Files:	    src/if_ole.cpp

Patch 7.0.058
Problem:    The gbk and gb18030 encodings are not recognized.
Solution:   Add aliases to cp936. (Edward L. Fox)
Files:	    src/mbyte.c

Patch 7.0.059
Problem:    The Perl interface doesn't compile with ActiveState Perl 5.8.8.
Solution:   Remove the __attribute__() items. (Liu Yubao)
Files:	    src/if_perl.xs

Patch 7.0.060 (after 7.0.51)
Problem:    Code for temporarily switching to another buffer is duplicated in
	    quite a few places.
Solution:   Use aucmd_prepbuf() and aucmd_restbuf() also when FEAT_AUTOCMD is
	    not defined.
Files:	    src/buffer.c, src/eval.c, src/fileio.c, src/if_ruby.c,
	    src/if_perl.xs, src/quickfix.c, src/structs.h

Patch 7.0.061
Problem:    Insert mode completion for Vim commands may crash if there is
	    nothing to complete.
Solution:   Instead of freeing the pattern make it empty, so that a "not
	    found" error is given. (Yukihiro Nakadaira)
Files:	    src/edit.c

Patch 7.0.062
Problem:    Mac: Crash when using the popup menu for spell correction.  The
	    popup menu appears twice when letting go of the right mouse button
	    early.
Solution:   Don't show the popup menu on the release of the right mouse
	    button.  Also check that a menu pointer is actually valid.
Files:	    src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c

Patch 7.0.063
Problem:    Tiny chance for a memory leak. (coverity)
Solution:   Free pointer when next memory allocation fails.
Files:	    src/eval.c

Patch 7.0.064
Problem:    Using uninitialized variable. (Tony Mechelynck)
Solution:   When not used set "temp" to zero.  Also avoid a warning for
	    "files" in ins_compl_dictionaries().
Files:	    src/edit.c

Patch 7.0.065 (extra)
Problem:    Mac: left-right movement of the scrollwheel causes up-down
	    scrolling.
Solution:   Ignore mouse wheel events that are not up-down. (Nicolas Weber)
Files:	    src/gui_mac.c

Patch 7.0.066
Problem:    After the popup menu for Insert mode completion overlaps the tab
	    pages line it is not completely removed.
Solution:   Redraw the tab pages line after removing the popup menu. (Ori
	    Avtalion)
Files:	    src/popupmnu.c

Patch 7.0.067
Problem:    Undo doesn't always work properly when using "scim" input method.
	    Undo is split up when using preediting.
Solution:   Reset xim_has_preediting also when preedit_start_col is not
	    MAXCOL.  Don't split undo when <Left> is used while preediting.
	    (Yukihiro Nakadaira)
Files:	    src/edit.c, src/mbyte.c

Patch 7.0.068
Problem:    When 'ignorecase' is set and using Insert mode completion,
	    typing characters to change the list of matches, case is not
	    ignored. (Hugo Ahlenius)
Solution:   Store the 'ignorecase' flag with the matches where needed.
Files:	    src/edit.c, src/search.c, src/spell.c

Patch 7.0.069
Problem:    Setting 'guitablabel' to %!expand(\%)  causes Vim to free an
	    invalid pointer. (Kim Schulz)
Solution:   Don't try freeing a constant string pointer.
Files:	    src/buffer.c

Patch 7.0.070
Problem:    Compiler warnings for shadowed variables and uninitialized
	    variables.
Solution:   Rename variables such as "index", "msg" and "dup".  Initialize
	    variables.
Files:	    src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c,
	    src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c,
	    src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c,
	    src/memline.c, src/netbeans.c, src/normal.c, src/option.c,
	    src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c,
	    src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c,
	    src/version.c

Patch 7.0.071
Problem:    Using an empty search pattern may cause a crash.
Solution:   Avoid using a NULL pointer.
Files:	    src/search.c

Patch 7.0.072
Problem:    When starting the GUI fails there is no way to adjust settings or
	    do something else.
Solution:   Add the GUIFailed autocommand event.
Files:	    src/fileio.c, src/gui.c, src/vim.h

Patch 7.0.073
Problem:    Insert mode completion: Typing <CR> sometimes selects the original
	    text instead of keeping what was typed.  (Justin Constantino)
Solution:   Don't let <CR> select the original text if there is no popup menu.
Files:	    src/edit.c

Patch 7.0.074 (extra)
Problem:    Win32: tooltips were not converted from 'encoding' to Unicode.
Solution:   Set the tooltip to use Unicode and do the conversion.  Also
	    cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira)
Files:	    src/gui_w32.c, src/gui_w48.c

Patch 7.0.075
Problem:    winsaveview() did not store the actual value of the desired cursor
	    column.  This could move the cursor in the matchparen plugin.
Solution:   Call update_curswant() before using the value w_curswant.
Files:	    src/eval.c

Patch 7.0.076 (after 7.0.010)
Problem:    Automatic downloading of spell files only works for ftp.
Solution:   Don't add login and password for non-ftp URLs. (Alexander Patrakov)
Files:	    runtime/autoload/spellfile.vim

Patch 7.0.077
Problem:    ":unlet v:this_session" causes a crash. (Marius Roets)
Solution:   When trying to unlet a fixed variable give an error message.
Files:	    src/eval.c

Patch 7.0.078
Problem:    There are two error messages E46.
Solution:   Change the number for the sandbox message to E794.
Files:	    src/globals.h

Patch 7.0.079
Problem:    Russian tutor doesn't work when 'encoding' is "utf-8".
Solution:   Use tutor.ru.utf-8 as the master, and generate the other encodings
	    from it.  Select the right tutor depending on 'encoding'. (Alexey
	    Froloff)
Files:	    runtime/tutor/Makefile, runtime/tutor/tutor.vim,
	    runtime/tutor/tutor.ru.utf-8

Patch 7.0.080
Problem:    Generating auto/pathdef.c fails for CFLAGS with a backslash.
Solution:   Double backslashes in the string. (Alexey Froloff)
Files:	    src/Makefile

Patch 7.0.081
Problem:    Command line completion doesn't work for a shell command with an
	    absolute path.
Solution:   Don't use $PATH when there is an absolute path.
Files:	    src/ex_getln.c

Patch 7.0.082
Problem:    Calling a function that waits for input may cause List and
	    Dictionary arguments to be freed by the garbage collector.
Solution:   Keep a list of all arguments to internal functions.
Files:	    src/eval.c

Patch 7.0.083
Problem:    Clicking with the mouse on an item for inputlist() doesn't work
	    when 'compatible' is set and/or when 'cmdheight' is more than one.
	    (Christian J.  Robinson)
Solution:   Also decrement "lines_left" when 'more' isn't set.  Set
	    "cmdline_row" to zero to get all mouse events.
Files:	    src/message.c, src/misc1.c

Patch 7.0.084
Problem:    The garbage collector may do its work while some Lists or
	    Dictionaries are used internally, e.g., by ":echo" that runs into
	    the more-prompt or ":echo [garbagecollect()]".
Solution:   Only do garbage collection when waiting for a character at the
	    toplevel.  Let garbagecollect() set a flag that is handled at the
	    toplevel before waiting for a character.
Files:	    src/eval.c, src/getchar.c, src/globals.h, src/main.c

Patch 7.0.085
Problem:    When doing "make test" the viminfo file is modified.
Solution:   Use another viminfo file after setting 'compatible.
Files:	    src/testdir/test56.in

Patch 7.0.086
Problem:    getqflist() returns entries for pattern and text with the number
	    zero.  Passing these to setqflist() results in the string "0".
Solution:   Use an empty string instead of the number zero.
Files:	    src/quickfix.c

Patch 7.0.087
Problem:    After ":file fname" and ":saveas fname" the 'autochdir' option
	    does not take effect. (Yakov Lerner)
	    Commands for handling 'autochdir' are repeated many times.
Solution:   Add the DO_AUTOCHDIR macro and do_autochdir().  Use it for
	    ":file fname" and ":saveas fname".
Files:	    src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h,
	    src/netbeans.c, src/option.c, src/window.c

Patch 7.0.088
Problem:    When compiled with Perl the generated prototypes have "extern"
	    unnecessarily added.
Solution:   Remove the "-pipe" argument from PERL_CFLAGS.
Files:	    src/auto/configure, src/configure.in

Patch 7.0.089
Problem:    "ga" does not work properly for a non-Unicode multi-byte encoding.
Solution:   Only check for composing chars for utf-8. (Taro Muraoka)
Files:	    src/ex_cmds.c

Patch 7.0.090
Problem:    Cancelling the conform() dialog on the console with Esc requires
	    typing it twice. (Benji Fisher)
Solution:   When the start of an escape sequence is found use 'timeoutlen' or
	    'ttimeoutlen'.
Files:	    src/misc1.c

Patch 7.0.091
Problem:    Using winrestview() while 'showcmd' is set causes the cursor to be
	    displayed in the wrong position. (Yakov Lerner)
Solution:   Set the window topline properly.
Files:	    src/eval.c

Patch 7.0.092 (after 7.0.082 and 7.0.084)
Problem:    The list of internal function arguments is obsolete now that
	    garbage collection is only done at the toplevel.
Solution:   Remove the list of all arguments to internal functions.
Files:	    src/eval.c

Patch 7.0.093
Problem:    The matchparen plugin can't handle a 'matchpairs' value where a
	    colon is matched.
Solution:   Change the split() that is used to change 'matchpairs' into a
	    List.
Files:	    runtime/plugin/matchparen.vim

Patch 7.0.094
Problem:    When a hidden buffer is made the current buffer and another file
	    edited later, the file message will still be given.  Using
	    ":silent" also doesn't prevent the file message. (Marvin Renich)
Solution:   Reset the need_fileinfo flag when reading a file.  Don't set
	    need_fileinfo when msg_silent is set.
Files:	    src/buffer.c, src/fileio.c

Patch 7.0.095
Problem:    The Greek tutor is not available in utf-8.  "el" is used for the
	    language, only "gr" for the country is recognized.
Solution:   Add the utf-8 Greek tutor.  Use it for conversion to iso-8859-7
	    and cp737.  (Lefteris Dimitroulakis)
Files:	    runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8,
	    runtime/tutor/tutor.vim

Patch 7.0.096
Problem:    taglist() returns the filename relative to the tags file, while
	    the directory of the tags file is unknown. (Hari Krishna Dara)
Solution:   Expand the file name. (Yegappan Lakshmanan)
Files:	    src/tag.c

Patch 7.0.097
Problem:    ":tabclose N" that closes another tab page does not remove the tab
	    pages line.  Same problem when using the mouse.
Solution:   Adjust the tab pages line when needed in tabpage_close_other().
Files:	    src/ex_docmd.c

Patch 7.0.098
Problem:    Redirecting command output in a cmdline completion function
	    doesn't work. (Hari Krishna Dara)
Solution:   Enable redirection when redirection is started.
Files:	    src/ex_docmd.c, src/ex_getln.c

Patch 7.0.099
Problem:    GUI: When the popup menu is visible using the scrollbar messes up
	    the display.
Solution:   Disallow scrolling the current window.  Redraw the popup menu
	    after scrolling another window.
Files:	    src/gui.c

Patch 7.0.100
Problem:    "zug" may report the wrong filename. (Lawrence Kesteloot)
Solution:   Call home_replace() to fill NameBuff[].
Files:	    src/spell.c

Patch 7.0.101
Problem:    When the "~/.vim/spell" directory does not exist "zg" may create
	    a wrong directory.  "zw" doesn't work.
Solution:   Use the directory of the file name instead of NameBuff.  For "zw"
	    not only remove a good word but also add the word with "!".
Files:	    src/spell.c

Patch 7.0.102
Problem:    Redrawing cmdline is not correct when using SCIM.
Solution:   Don't call im_get_status(). (Yukihiro Nakadaira)
Files:	    src/ex_getln.c

Patch 7.0.103 (after 7.0.101)
Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
Solution:   Init variable.
Files:	    src/spell.c

Patch 7.0.104
Problem:    The CursorHoldI event only triggers once in Insert mode.  It also
	    triggers after CTRL-V and other two-key commands.
Solution:   Set "did_cursorhold" before getting a second key.  Reset
	    "did_cursorhold" after handling a command.
Files:	    src/edit.c, src/fileio.c

Patch 7.0.105
Problem:    When using incremental search the statusline ruler isn't updated.
	    (Christoph Koegl)
Solution:   Update the statusline when it contains the ruler.
Files:	    src/ex_getln.c

Patch 7.0.106
Problem:    The spell popup menu uses ":amenu", triggering mappings.  Other
	    PopupMenu autocommands are removed. (John Little)
Solution:   Use ":anoremenu" and use an autocmd group.
Files:	    runtime/menu.vim

Patch 7.0.107
Problem:    Incremental search doesn't redraw the text tabline. (Ilya Bobir)
	    Also happens in other situations with one window in a tab page.
Solution:   Redraw the tabline after clearing the screen.
Files:	    src/screen.c

Patch 7.0.108 (extra)
Problem:    Amiga: Compilation problem.
Solution:   Have mch_mkdir() return a failure flag. (Willy Catteau)
Files:	    src/os_amiga.c, src/proto/os_amiga.pro

Patch 7.0.109
Problem:    Lisp indenting is confused by escaped quotes in strings. (Dorai
	    Sitaram)
Solution:   Check for backslash inside strings. (Sergey Khorev)
Files:	    src/misc1.c

Patch 7.0.110
Problem:    Amiga: Compilation problems when not using libnix.
Solution:   Change a few #ifdefs. (Willy Catteau)
Files:	    src/memfile.c

Patch 7.0.111
Problem:    The gzip plugin can't handle filenames with single quotes.
Solution:   Add and use the shellescape() function. (partly by Alexey Froloff)
Files:	    runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c,
	    src/mbyte.c, src/misc2.c, src/proto/misc2.pro

Patch 7.0.112
Problem:    Python interface does not work with Python 2.5.
Solution:   Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes)
Files:	    src/if_python.c

Patch 7.0.113
Problem:    Using CTRL-L in Insert completion when there is no current match
	    may cause a crash. (Yukihiro Nakadaira)
Solution:   Check for compl_leader to be NULL
Files:	    src/edit.c

Patch 7.0.114
Problem:    When aborting an insert with CTRL-C an extra undo point is
	    created in the GUI. (Yukihiro Nakadaira)
Solution:   Call gotchars() only when advancing.
Files:	    src/getchar.c

Patch 7.0.115
Problem:    When 'ignorecase' is set, Insert mode completion only adds "foo"
	    and not "Foo" when both are found.
	    A found match isn't displayed right away when 'completeopt' does
	    not have "menu" or "menuone".
Solution:   Do not ignore case when checking if a completion match already
	    exists.  call ins_compl_check_keys() also when not using a popup
	    menu. (Yukihiro Nakadaira)
Files:	    src/edit.c

Patch 7.0.116
Problem:    64 bit Windows version reports "32 bit" in the ":version" output.
	    (M. Veerman)
Solution:   Change the text for Win64.
Files:	    src/version.c

Patch 7.0.117
Problem:    Using "extend" on a syntax item inside a region with "keepend", an
	    intermediate item may be truncated.
	    When applying the "keepend" and there is an offset to the end
	    pattern the highlighting of a contained item isn't adjusted.
Solution:   Use the seen_keepend flag to remember when to apply the "keepend"
	    flag.  Adjust the keepend highlighting properly. (Ilya Bobir)
Files:	    src/syntax.c

Patch 7.0.118
Problem:    printf() does not do zero padding for strings.
Solution:   Do allow zero padding for strings.
Files:	    src/message.c

Patch 7.0.119
Problem:    When going back from Insert to Normal mode the CursorHold event
	    doesn't trigger. (Yakov Lerner)
Solution:   Reset "did_cursorhold" when leaving Insert mode.
Files:	    src/edit.c

Patch 7.0.120
Problem:    Crash when using CTRL-R = at the command line and entering
	    "getreg('=')". (James Vega)
Solution:   Avoid recursiveness of evaluating the = register.
Files:	    src/ops.c

Patch 7.0.121
Problem:    GUI: Dragging the last status line doesn't work when there is a
	    text tabline.  (Markus Wolf)
Solution:   Take the text tabline into account when deciding to start modeless
	    selection.
Files:	    src/gui.c

Patch 7.0.122
Problem:    GUI: When clearing after a bold, double-wide character half a
	    character may be drawn.
Solution:   Check for double-wide character and redraw it. (Yukihiro Nakadaira)
Files:	    src/screen.c

Patch 7.0.123
Problem:    On SCO Openserver configure selects the wrong terminal library.
Solution:   Put terminfo before the other libraries. (Roger Cornelius)
	    Also fix a small problem compiling on Mac without Darwin.
Files:	    src/configure.in, src/auto/configure

Patch 7.0.124
Problem:    getwinvar() obtains a dictionary with window-local variables, but
	    it's always for the current window.
Solution:   Get the variables of the specified window. (Geoff Reedy)
Files:	    src/eval.c

Patch 7.0.125
Problem:    When "autoselect" is in the 'clipboard' option then the '< and '>
	    marks are set while Visual mode is still active.
Solution:   Don't set the '< and '> marks when yanking the selected area for
	    the clipboard.
Files:	    src/normal.c

Patch 7.0.126
Problem:    When 'formatexpr' uses setline() and later internal formatting is
	    used undo information is not correct. (Jiri Cerny, Benji Fisher)
Solution:   Set ins_need_undo after using 'formatexpr'.
Files:	    src/edit.c

Patch 7.0.127
Problem:    Crash when swap files has invalid timestamp.
Solution:   Check return value of ctime() for being NULL.
Files:	    src/memline.c

Patch 7.0.128
Problem:    GUI: when closing gvim is cancelled because there is a changed
	    buffer the screen isn't updated to show the changed buffer in the
	    current window.  (Krzysztof Kacprzak)
Solution:   Redraw when closing gvim is cancelled.
Files:	    src/gui.c

Patch 7.0.129
Problem:    GTK GUI: the GTK file dialog can't handle a relative path.
Solution:   Make the initial directory a full path before passing it to GTK.
	    (James Vega)  Also postpone adding the default file name until
	    after setting the directory.
Files:	    src/gui_gtk.c

Patch 7.0.130 (extra)
Problem:    Win32: Trying to edit or write devices may cause Vim to get stuck.
Solution:   Add the 'opendevice' option, default off.  Disallow
	    reading/writing from/to devices when it's off.
	    Also detect more devices by the full name starting with "\\.\".
Files:	    runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h,
	    src/os_win32.c

Patch 7.0.131
Problem:    Win32: "vim -r" does not list all the swap files.
Solution:   Also check for swap files starting with a dot.
Files:	    src/memline.c

Patch 7.0.132 (after 7.0.130)
Problem:    Win32: Crash when Vim reads from stdin.
Solution:   Only use mch_nodetype() when there is a file name.
Files:	    src/fileio.c

Patch 7.0.133
Problem:    When searching included files messages are added to the history.
Solution:   Set msg_hist_off for messages about scanning included files.
            Set msg_silent to avoid message about wrapping around.
Files:	    src/edit.c, src/globals.h, src/message.c, src/search.c

Patch 7.0.134
Problem:    Crash when comparing a recursively looped List or Dictionary.
Solution:   Limit recursiveness for comparing to 1000.
Files:	    src/eval.c

Patch 7.0.135
Problem:    Crash when garbage collecting list or dict with loop.
Solution:   Don't use DEL_REFCOUNT but don't recurse into Lists and
	    Dictionaries when freeing them in the garbage collector.
	    Also add allocated Dictionaries to the list of Dictionaries to
	    avoid leaking memory.
Files:	    src/eval.c, src/proto/eval.pro, src/tag.c

Patch 7.0.136
Problem:    Using "O" while matching parens are highlighted may not remove the
	    highlighting. (Ilya Bobir)
Solution:   Also trigger CursorMoved when a line is inserted under the cursor.
Files:	    src/misc1.c

Patch 7.0.137
Problem:    Configure check for big features is wrong.
Solution:   Change "==" to "=". (Martti Kuparinen)
Files:	    src/auto/configure, src/configure.in

Patch 7.0.138 (extra)
Problem:    Mac: modifiers don't work with function keys.
Solution:   Use GetEventParameter() to obtain modifiers. (Nicolas Weber)
Files:	    src/gui_mac.c

Patch 7.0.139
Problem:    Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another
	    tab page does not prepare for undo properly. (Stefano Zacchiroli)
Solution:   Call start_arrow() before switching tab page.
Files:	    src/edit.c

Patch 7.0.140 (after 7.0.134)
Problem:    Comparing recursively looped List or Dictionary doesn't work well.
Solution:   Detect comparing a List or Dictionary with itself.
Files:	    src/eval.c

Patch 7.0.141
Problem:    When pasting a while line on the command line an extra CR is added
	    literally.
Solution:   Don't add the trailing CR when pasting with the mouse.
Files:	    src/ex_getln.c, src/proto/ops.pro, src/ops.c

Patch 7.0.142
Problem:    Using the middle mouse button in Select mode to paste text results
	    in an extra "y". (Kriton Kyrimis)
Solution:   Let the middle mouse button replace the selected text with the
	    contents of the clipboard.
Files:	    src/normal.c

Patch 7.0.143
Problem:    Setting 'scroll' to its default value was not handled correctly.
Solution:   Compare the right field to PV_SCROLL.
Files:	    src/option.c

Patch 7.0.144
Problem:    May compare two unrelated pointers when matching a pattern against
	    a string.  (Dominique Pelle)
Solution:   Avoid calling reg_getline() when REG_MULTI is false.
Files:	    src/regexp.c

Patch 7.0.145 (after 7.0.142)
Problem:    Compiler warning.
Solution:   Add type cast.
Files:	    src/normal.c

Patch 7.0.146
Problem:    When 'switchbuf' is set to "usetab" and the current tab has only a
	    quickfix window, jumping to an error always opens a new window.
	    Also, when the buffer is open in another tab page it's not found.
Solution:   Check for the "split" value of 'switchbuf' properly.  Search in
	    other tab pages for the desired buffer. (Yegappan Lakshmanan)
Files:	    src/buffer.c, src/quickfix.c

Patch 7.0.147
Problem:    When creating a session file and there are several tab pages and
	    some windows have a local directory a short file name may be used
	    when it's not valid. (Marius Roets)
	    A session with multiple tab pages may result in "No Name" buffers.
	    (Bill McCarthy)
Solution:   Don't enter tab pages when going through the list, only use a
	    pointer to the first window in each tab page.
            Use "tabedit" instead of "tabnew | edit" when possible.
Files:	    src/ex_docmd.c

Patch 7.0.148
Problem:    When doing "call a.xyz()" and "xyz" does not exist in dictionary
	    "a" there is no error message. (Yegappan Lakshmanan)
Solution:   Add the error message.
Files:	    src/eval.c

Patch 7.0.149
Problem:    When resizing a window that shows "~" lines the text sometimes
	    jumps down.
Solution:   Remove code that uses "~" lines in some situations.  Fix the
            computation of the screen line of the cursor.  Also set w_skipcol
	    to handle very long lines.
Files:	    src/misc1.c, src/window.c

Patch 7.0.150
Problem:    When resizing the Vim window scrollbinding doesn't work. (Yakov
	    Lerner)
Solution:   Do scrollbinding in set_shellsize().
Files:	    src/term.c

Patch 7.0.151
Problem:    Buttons in file dialog are not according to Gnome guidelines.
Solution:   Swap Cancel and Open buttons. (Stefano Zacchiroli)
Files:	    src/gui_gtk.c

Patch 7.0.152
Problem:    Crash when using lesstif 2.
Solution:   Fill in the extension field. (Ben Hutchings)
Files:	    src/gui_xmebw.c

Patch 7.0.153
Problem:    When using cscope and opening the temp file fails Vim crashes.
	    (Kaya Bekiroglu)
Solution:   Check for NULL pointer returned from mch_open().
Files:	    src/if_cscope.c

Patch 7.0.154
Problem:    When 'foldnextmax' is negative Vim can hang. (James Vega)
Solution:   Avoid the fold level becoming negative.
Files:	    src/fold.c, src/syntax.c

Patch 7.0.155
Problem:    When getchar() returns a mouse button click there is no way to get
	    the mouse coordinates.
Solution:   Add v:mouse_win, v:mouse_lnum and v:mouse_col.
Files:	    runtime/doc/eval.txt, src/eval.c, src/vim.h

Patch 7.0.156 (extra)
Problem:    Vim doesn't compile for Amiga OS 4.
Solution:   Various changes for Amiga OS4. (Peter Bengtsson)
Files:	    src/feature.h, src/mbyte.c, src/memfile.c, src/memline.c,
	    src/os_amiga.c, src/os_amiga.h, src/pty.c

Patch 7.0.157
Problem:    When a function is used recursively the profiling information is
	    invalid. (Mikolaj Machowski)
Solution:   Put the start time on the stack instead of in the function.
Files:	    src/eval.c

Patch 7.0.158
Problem:    In a C file with ":set foldmethod=syntax", typing {<CR> on the
	    last line results in the cursor being in a closed fold. (Gautam
	    Iyer)
Solution:   Open fold after inserting a new line.
Files:	    src/edit.c

Patch 7.0.159
Problem:    When there is an I/O error in the swap file the cause of the error
	    cannot be seen.
Solution:   Use PERROR() instead of EMSG() where possible.
Files:	    src/memfile.c

Patch 7.0.160
Problem:    ":@a" echoes the command, Vi doesn't do that.
Solution:   Set the silent flag in the typeahead buffer to avoid echoing the
	    command.
Files:	    src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro

Patch 7.0.161
Problem:    Win32: Tab pages line popup menu isn't using the right encoding.
            (Yongwei Wu)
Solution:   Convert the text when necessary.  Also fixes the Find/Replace
	    dialog title. (Yegappan Lakshmanan)
Files:	    src/gui_w48.c

Patch 7.0.162
Problem:    "vim -o a b" when file "a" triggers the ATTENTION dialog,
	    selecting "Quit" exits Vim instead of editing "b" only.
	    When file "b" triggers the ATTENTION dialog selecting "Quit" or
	    "Abort" results in editing file "a" in that window.
Solution:   When selecting "Abort" exit Vim.  When selecting "Quit" close the
	    window.  Also avoid hit-enter prompt when selecting Abort.
Files:	    src/buffer.c, src/main.c

Patch 7.0.163
Problem:    Can't retrieve the position of a sign after it was set.
Solution:   Add the netbeans interface getAnno command. (Xavier de Gaye)
Files:	    runtime/doc/netbeans.txt, src/netbeans.c

Patch 7.0.164
Problem:    ":redir @+" doesn't work.
Solution:   Accept "@+" just like "@*". (Yegappan Lakshmanan)
Files:	    src/ex_docmd.c

Patch 7.0.165
Problem:    Using CTRL-L at the search prompt adds a "/" and other characters
	    without escaping, causing the pattern not to match.
Solution:   Escape special characters with a backslash.
Files:	    src/ex_getln.c

Patch 7.0.166
Problem:    Crash in cscope code when connection could not be opened.
	    (Kaya Bekiroglu)
Solution:   Check for the file descriptor to be NULL.
Files:	    src/if_cscope.c

Patch 7.0.167
Problem:    ":function" redefining a dict function doesn't work properly.
	    (Richard Emberson)
Solution:   Allow a function name to be a number when it's a function
	    reference.
Files:	    src/eval.c

Patch 7.0.168
Problem:    Using uninitialized memory and memory leak. (Dominique Pelle)
Solution:   Use alloc_clear() instead of alloc() for w_lines.  Free
	    b_ml.ml_stack after recovery.
Files:	    src/memline.c, src/window.c

Patch 7.0.169
Problem:    With a Visual block selection, with the cursor in the left upper
	    corner, pressing "I" doesn't remove the highlighting. (Guopeng
	    Wen)
Solution:   When checking if redrawing is needed also check if Visual
	    selection is still active.
Files:	    src/screen.c

Patch 7.0.170 (extra)
Problem:    Win32: Using "gvim --remote-tab foo" when gvim is minimized while
	    it previously was maximized, un-maximizing doesn't work properly.
	    And the labels are not displayed properly when 'encoding' is
	    utf-8.
Solution:   When minimized check for SW_SHOWMINIMIZED.  When updating the tab
	    pages line use TCM_SETITEMW instead of TCM_INSERTITEMW. (Liu
	    Yubao)
Files:	    src/gui_w48.c

Patch 7.0.171 (extra)
Problem:    VMS: A file name with multiple paths is written in the wrong file.
Solution:   Get the actually used file name. (Zoltan Arpadffy)
	    Also add info to the :version command about compilation.
Files:	    src/Make_vms.mms, src/buffer.c, src/os_unix.c, src/version.c

Patch 7.0.172
Problem:    Crash when recovering and quitting at the "press-enter" prompt.
Solution:   Check for "msg_list" to be NULL. (Liu Yubao)
Files:	    src/ex_eval.c

Patch 7.0.173
Problem:    ":call f().TT()" doesn't work.  (Richard Emberson)
Solution:   When a function returns a Dictionary or another composite continue
	    evaluating what follows.
Files:	    src/eval.c    

Patch 7.0.174
Problem:    ":mksession" doesn't restore window layout correctly in tab pages
	    other than the current one. (Zhibin He)
Solution:   Use the correct topframe for producing the window layout commands.
Files:	    src/ex_docmd.c

Patch 7.0.175
Problem:    The result of tr() is missing the terminating NUL. (Ingo Karkat)
Solution:   Add the NUL.
Files:	    src/eval.c

Patch 7.0.176
Problem:    ":emenu" isn't executed directly, causing the encryption key
	    prompt to fail. (Life Jazzer)
Solution:   Fix wrong #ifdef.
Files:	    src/menu.c

Patch 7.0.177
Problem:    When the press-enter prompt gets a character from a non-remappable
	    mapping, it's put back in the typeahead buffer as remappable,
	    which may cause an endless loop.
Solution:   Restore the non-remappable flag and the silent flag when putting a
	    char back in the typeahead buffer.
Files:	    src/getchar.c, src/message.c, src/normal.c

Patch 7.0.178
Problem:    When 'enc' is "utf-8" and 'ignorecase' is set the result of ":echo
	    ("\xe4" == "\xe4")" varies.
Solution:   In mb_strnicmp() avoid looking past NUL bytes.
Files:	    src/mbyte.c

Patch 7.0.179
Problem:    Using ":recover" or "vim -r" without a swapfile crashes Vim.
Solution:   Check for "buf" to be unequal NULL. (Yukihiro Nakadaira)
Files:	    src/memline.c

Patch 7.0.180 (extra, after 7.0.171)
Problem:    VMS: build failed.  Problem with swapfiles.
Solution:   Add "compiled_arch".  Always expand path and pass it to
	    buf_modname().  (Zoltan Arpadffy)
Files:	    src/globals.h, src/memline.c, src/os_unix.c, runtime/menu.vim

Patch 7.0.181
Problem:    When reloading a file that starts with an empty line, the reloaded
	    buffer has an extra empty line at the end. (Motty Lentzitzky)
Solution:   Delete all lines, don't use bufempty().
Files:	    src/fileio.c

Patch 7.0.182
Problem:    When using a mix of undo and "g-" it may no longer be possible to
	    go to every point in the undo tree.  (Andy Wokula)
Solution:   Correctly update pointers in the undo tree.
Files:	    src/undo.c

Patch 7.0.183
Problem:    Crash in ":let" when redirecting to a variable that's being
	    displayed. (Thomas Link)
Solution:   When redirecting to a variable only do the assignment when
	    stopping redirection to avoid that setting the variable causes a
	    freed string to be accessed.
Files:	    src/eval.c

Patch 7.0.184
Problem:    When the cscope program is called "mlcscope" the Cscope interface
	    doesn't work.
Solution:   Accept "\S*cscope:" instead of "cscope:". (Frodak D. Baksik)
Files:	    src/if_cscope.c

Patch 7.0.185
Problem:    Multi-byte characters in a message are displayed with attributes
	    from what comes before it.
Solution:   Don't use the attributes for a multi-byte character.  Do use
	    attributes for special characters. (Yukihiro Nakadaira)
Files:	    src/message.c

Patch 7.0.186
Problem:    Get an ml_get error when 'encoding' is "utf-8" and searching for
	    "/\_s*/e" in an empty buffer.  (Andrew Maykov)
Solution:   Don't try getting the line just below the last line.
Files:	    src/search.c

Patch 7.0.187
Problem:    Can't source a remote script properly.
Solution:   Add the SourceCmd event. (Charles Campbell)
Files:	    runtime/doc/autocmd.txt, src/ex_cmds2.c, src/fileio.c, src/vim.h

Patch 7.0.188 (after 7.0.186)
Problem:    Warning for wrong pointer type.
Solution:   Add a type cast.
Files:	    src/search.c

Patch 7.0.189
Problem:    Translated message about finding matches is truncated. (Yukihiro
	    Nakadaira)
Solution:   Enlarge the buffer.  Also use vim_snprintf().
Files:	    src/edit.c

Patch 7.0.190
Problem:    "syntax spell default" results in an error message.
Solution:   Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado)
Files:	    src/syntax.c

Patch 7.0.191
Problem:    The items used by getqflist() and setqflist() don't match.
Solution:   Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan)
Files:	    runtime/doc/eval.txt, src/quickfix.c

Patch 7.0.192
Problem:    When 'swapfile' is switched off in an empty file it is possible
	    that not all blocks are loaded into memory, causing ml_get errors
	    later.
Solution:   Rename "dont_release" to "mf_dont_release" and also use it to
	    avoid using the cached line and locked block. 
Files:	    src/globals.h, src/memfile.c, src/memline.c

Patch 7.0.193
Problem:    Using --remote or --remote-tab with an argument that matches
	    'wildignore' causes a crash.
Solution:   Check the argument count before using ARGLIST[0].
Files:	    src/ex_cmds.c

Patch 7.0.194
Problem:    Once an ml_get error is given redrawing part of the screen may
	    cause it again, resulting in an endless loop.
Solution:   Don't give the error message for a recursive call.
Files:	    src/memline.c

Patch 7.0.195
Problem:    When a buffer is modified and 'autowriteall' is set, ":quit"
	    results in an endless loop when there is a conversion error while
	    writing. (Nikolai Weibull)
Solution:   Make autowrite() return FAIL if the buffer is still changed after
	    writing it.
	    /* put the cursor on the last char, for 'tw' formatting */
Files:	    src/ex_cmds2.c

Patch 7.0.196
Problem:    When using ":vert ball" the computation of the mouse pointer
	    position may be off by one column. (Stefan Karlsson)
Solution:   Recompute the frame width when moving the vertical separator from
	    one window to another.
Files:	    src/window.c

Patch 7.0.197 (extra)
Problem:    Win32: Compiling with EXITFREE doesn't work.
Solution:   Adjust a few #ifdefs. (Alexei Alexandrof)
Files:	    src/misc2.c, src/os_mswin.c

Patch 7.0.198 (extra)
Problem:    Win32: Compiler warnings.  No need to generate gvim.exe.mnf.
Solution:   Add type casts.  Use "*" for processorArchitecture. (George Reilly)
Files:	    src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c

Patch 7.0.199
Problem:    When using multi-byte characters the combination of completion and
	    formatting may result in a wrong cursor position.
Solution:   Don't decrement the cursor column, use dec_cursor(). (Yukihiro
	    Nakadaira)  Also check for the column to be zero.
Files:	    src/edit.c

Patch 7.0.200
Problem:    Memory leaks when out of memory.
Solution:   Free the memory.
Files:	    src/edit.c, src/diff.c

Patch 7.0.201
Problem:    Message for ":diffput" about buffer not being in diff mode may be
	    wrong.
Solution:   Check for buffer in diff mode but not modifiable.
Files:	    src/diff.c

Patch 7.0.202
Problem:    Problems on Tandem systems while compiling and at runtime.
Solution:   Recognize root uid is 65535.  Check select() return value for it
	    not being supported.  Avoid wrong function prototypes.  Mention
	    use of -lfloss.  (Matthew Woehlke)
Files:	    src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c,
	    src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c,
	    src/vim.h

Patch 7.0.203
Problem:    0x80 characters in a register are not handled correctly for the
	    "@" command.
Solution:   Escape CSI and 0x80 characters. (Yukihiro Nakadaira)
Files:	    src/ops.c

Patch 7.0.204
Problem:    Cscope: Parsing matches for listing isn't done properly.
Solution:   Check for line number being found. (Yu Zhao)
Files:	    src/if_cscope.c

Patch 7.0.205 (after 7.0.203)
Problem:    Can't compile.
Solution:   Always include the vim_strsave_escape_csi function.
Files:	    src/getchar.c

Patch 7.0.206 (after 7.0.058)
Problem:    Some characters of the "gb18030" encoding are not handled
	    properly.
Solution:   Do not use "cp936" as an alias for "gb18030" encoding.  Instead
	    initialize 'encoding' to "cp936".
Files:	    src/mbyte.c, src/option.c

Patch 7.0.207
Problem:    After patch 2.0.203 CSI and K_SPECIAL characters are escaped when
	    recorded and then again when the register is executed.
Solution:   Remove escaping before putting the recorded characters in a
	    register.  (Yukihiro Nakadaira)
Files:	    src/getchar.c, src/ops.c, src/proto/getchar.pro

Patch 7.0.208 (after 7.0.171 and 7.0.180)
Problem:    VMS: changes to path handling cause more trouble than they solve.
Solution:   Revert changes.
Files:	    src/buffer.c, src/memline.c, src/os_unix.c

Patch 7.0.209
Problem:    When replacing a line through Python the cursor may end up beyond
	    the end of the line.
Solution:   Check the cursor column after replacing the line.
Files:	    src/if_python.c

Patch 7.0.210
Problem:    ":cbuffer" and ":lbuffer" always fail when the buffer is modified.
	    (Gary Johnson)
Solution:   Support adding a !. (Yegappan Lakshmanan)
Files:	    runtime/doc/quickfix.txt, src/ex_cmds.h

Patch 7.0.211
Problem:    With ":set cindent noai bs=0" using CTRL-U in Insert mode will
	    delete auto-indent.  After ":set ai" it doesn't.
Solution:   Also check 'cindent' being set. (Ryan Lortie)
Files:	    src/edit.c

Patch 7.0.212
Problem:    The GUI can't be terminated with SIGTERM. (Mark Logan)
Solution:   Use the signal protection in the GUI as in the console, allow
	    signals when waiting for 100 msec or longer.
Files:	    src/ui.c

Patch 7.0.213
Problem:    When 'spellfile' has two regions that use the same sound folding
	    using "z=" will cause memory to be freed twice. (Mark Woodward)
Solution:   Clear the hashtable properly so that the items are only freed once.
Files:	    src/spell.c

Patch 7.0.214
Problem:    When using <f-args> in a user command it's not possible to have an
	    argument end in '\ '.
Solution:   Change the handling of backslashes. (Yakov Lerner)
Files:	    runtime/doc/map.txt, src/ex_docmd.c

Patch 7.0.215 (extra)
Problem:    Mac: Scrollbar size isn't set.  Context menu has disabled useless
	    Help entry.  Call to MoreMasterPointers() is ignored.
Solution:   Call SetControlViewSize() in gui_mch_set_scrollbar_thumb().  Use
	    kCMHelpItemRemoveHelp for ContextualMenuSelect().  Remove call to
	    MoreMasterPointers(). (Nicolas Weber)
Files:	    src/gui_mac.c

Patch 7.0.216
Problem:    ":tab wincmd ]" does not open a tab page. (Tony Mechelynck)
Solution:   Copy the cmdmod.tab value to postponed_split_tab and use it.
Files:	    src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c

Patch 7.0.217
Problem:    This hangs when pressing "n": ":%s/\n/,\r/gc". (Ori Avtalion)
Solution:   Set "skip_match" to advance to the next line.
Files:	    src/ex_cmds.c

Patch 7.0.218
Problem:    "%B" in 'statusline' always shows zero in Insert mode. (DervishD)
Solution:   Remove the exception for Insert mode, check the column for being
	    valid instead.
Files:	    src/buffer.c

Patch 7.0.219
Problem:    When using the 'editexisting.vim' script and a file is being
	    edited in another tab page the window is split.  The "+123"
	    argument is not used.
Solution:   Make the tab page with the file the current tab page.  Set
	    v:swapcommand when starting up to the first "+123" or "-c" command
	    line argument.
Files:	    runtime/macros/editexisting.vim, src/main.c

Patch 7.0.220
Problem:    Crash when using winnr('#') in a new tab page. (Andy Wokula)
Solution:   Check for not finding the window.
Files:	    src/eval.c

Patch 7.0.221
Problem:    finddir() uses 'path' by default, where "." means relative to the
	    current file.  But it works relative to the current directory.
	    (Tye Zdrojewski)
Solution:   Add the current buffer name to find_file_in_path_option() for the
	    relative file name.
Files:	    runtime/doc/eval.txt, src/eval.c

Patch 7.0.222
Problem:    Perl indenting using 'cindent' works almost right.
Solution:   Recognize '#' to start a comment. (Alex Manoussakis)  Added '#'
	    flag in 'cinoptions'.
Files:	    runtime/doc/indent.txt, src/misc1.c

Patch 7.0.223
Problem:    Unprintable characters in completion text mess up the popup menu.
	    (Gombault Damien)
Solution:   Use strtrans() to make the text printable.
Files:	    src/charset.c, src/popupmnu.c

Patch 7.0.224
Problem:    When expanding "##" spaces are escaped twice.  (Pavol Juhas)
Solution:   Don't escape the spaces that separate arguments.
Files:	    src/eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro

Patch 7.0.225
Problem:    When using setline() in an InsertEnter autocommand and doing "A"
	    the cursor ends up on the last byte in the line. (Yukihiro
	    Nakadaira)
Solution:   Only adjust the column when using setline() for the cursor line.
	    Move it back to the head byte if necessary.
Files:	    src/eval.c, src/misc2.c

Patch 7.0.226
Problem:    Display flickering when updating signs through the netbeans
	    interface. (Xavier de Gaye)
Solution:   Remove the redraw_later(CLEAR) call.
Files:	    src/netbeans.c

Patch 7.0.227
Problem:    Crash when closing a window in the GUI. (Charles Campbell)
Solution:   Don't call out_flush() from win_free().
Files:	    src/window.c

Patch 7.0.228
Problem:    Cygwin: problem with symlink to DOS style path.
Solution:   Invoke cygwin_conv_to_posix_path(). (Luca Masini)
Files:	    src/os_unix.c

Patch 7.0.229
Problem:    When 'pastetoggle' starts with Esc then pressing Esc in Insert
	    mode will not time out. (Jeffery Small)
Solution:   Use KL_PART_KEY instead of KL_PART_MAP, so that 'ttimeout' applies
	    to the 'pastetoggle' key.
Files:	    src/getchar.c

Patch 7.0.230
Problem:    After using ":lcd" a script doesn't know how to restore the
	    current directory.
Solution:   Add the haslocaldir() function. (Bob Hiestand)
Files:	    runtime/doc/usr_41.txt, runtime/doc/eval.txt, src/eval.c

Patch 7.0.231
Problem:    When recovering from a swap file the page size is likely to be
	    different from the minimum.  The block used for the first page
	    then has a buffer of the wrong size, causing a crash when it's
	    reused later.  (Zephaniah Hull)
Solution:   Reallocate the buffer when the page size changes.  Also check that
	    the page size is at least the minimum value.
Files:	    src/memline.c

Patch 7.0.232 (extra)
Problem:    Mac: doesn't support GUI tab page labels.
Solution:   Add GUI tab page labels. (Nicolas Weber)
Files:	    src/feature.h, src/gui.c, src/gui.h, src/gui_mac.c,
	    src/proto/gui_mac.pro

Patch 7.0.233 (extra)
Problem:    Mac: code formatted badly.
Solution:   Fix code formatting
Files:	    src/gui_mac.c

Patch 7.0.234
Problem:    It's possible to use feedkeys() from a modeline.  That is a
	    security issue, can be used for a trojan horse.
Solution:   Disallow using feedkeys() in the sandbox.
Files:	    src/eval.c

Patch 7.0.235
Problem:    It is possible to use writefile() in the sandbox.
Solution:   Add a few more checks for the sandbox.
Files:	    src/eval.c

Patch 7.0.236
Problem:    Linux 2.4 uses sysinfo() with a mem_unit field, which is not
	    backwards compatible.
Solution:   Add an autoconf check for sysinfo.mem_unit.  Let mch_total_mem()
	    return Kbyte to avoid overflow.
Files:	    src/auto/configure, src/configure.in, src/config.h.in,
	    src/option.c, src/os_unix.c

Patch 7.0.237
Problem:    For root it is recommended to not use 'modeline', but in
	    not-compatible mode the default is on.
Solution:   Let 'modeline' default to off for root.
Files:	    runtime/doc/options.txt, src/option.c

Patch 7.0.238
Problem:    Crash when ":match" pattern runs into 'maxmempattern'. (Yakov
	    Lerner)
Solution:   Don't free the regexp program of match_hl.
Files:	    src/screen.c

Patch 7.0.239
Problem:    When using local directories and tab pages ":mksession" uses a
	    short file name when it shouldn't.  Window-local options from a
	    modeline may be applied to the wrong window. (Teemu Likonen)
Solution:   Add the did_lcd flag, use the full path when it's set.  Don't use
	    window-local options from the modeline when using the current
	    window for another buffer in ":doautoall".
Files:	    src/fileio.c,  src/ex_docmd.c

Patch 7.0.240
Problem:    Crash when splitting a window in the GUI. (opposite of 7.0.227)
Solution:   Don't call out_flush() from win_alloc().  Also avoid this for
	    win_delete().  Also block autocommands while the window structure
	    is invalid.
Files:	    src/window.c

Patch 7.0.241
Problem:    ":windo throw 'foo'" loops forever. (Andy Wokula)
Solution:   Detect that win_goto() doesn't work.
Files:	    src/ex_cmds2.c

Patch 7.0.242 (extra)
Problem:    Win32: Using "-register" in a Vim that does not support OLE causes
	    a crash.
Solution:   Don't use EMSG() but mch_errmsg().  Check p_go for being NULL.
	    (partly by Michael Wookey)
Files:	    src/gui_w32.c

Patch 7.0.243 (extra)
Problem:    Win32: When GvimExt is built with MSVC 2005 or later, the "Edit
	    with vim" context menu doesn't appear in the Windows Explorer.
Solution:   Embed the linker manifest file into the resources of GvimExt.dll.
	    (Mathias Michaelis)
Files:	    src/GvimExt/Makefile


Fixes after Vim 7.1a BETA:

The extra archive had CVS directories included below "farsi" and
"runtime/icons".  CVS was missing the farsi icon files.

Fix compiling with Gnome 2.18, undefine bind_textdomain_codeset. (Daniel
Drake)

Mac: "make install" didn't copy rgb.txt.

When editing a compressed file while there are folds caused "ml_get" errors
and some lines could be missing.  When decompressing failed option values were
not restored.


Patch 7.1a.001
Problem:    Crash when downloading a spell file.  (Szabolcs Horvat)
Solution:   Avoid that did_set_spelllang() is used recursively when a new
	    window is opened for the download.
	    Also avoid wiping out the wrong buffer.
Files:	    runtime/autoload/spellfile.vim, src/buffer.c, src/ex_cmds.c,
            src/spell.c

Patch 7.1a.002 (extra)
Problem:    Compilation error with MingW.
Solution:   Check for LPTOOLTIPTEXT to be defined.
Files:	    src/gui_w32.c


Fixes after Vim 7.1b BETA:

Made the Mzscheme interface build both with old and new versions of Mzscheme,
using an #ifdef. (Sergey Khorev)
Mzscheme interface didn't link, missing function.  Changed order of libraries
in the configure script.

Ruby interface didn't compile on Mac.  Changed #ifdef. (Kevin Ballard)

Patch 7.1b.001 (extra)
Problem:    Random text in a source file.  No idea how it got there.
Solution:   Delete the text.
Files:	    src/gui_w32.c

Patch 7.1b.002
Problem:    When 'maxmem' is large there can be an overflow in computations.
	    (Thomas Wiegner)
Solution:   Use the same mechanism as in mch_total_mem(): first reduce the
	    multiplier as much as possible.
Files:	    src/memfile.c

==============================================================================
VERSION 7.2						*version-7.2*

This section is about improvements made between version 7.1 and 7.2.

This is mostly a bug-fix release.  The main new feature is floating point
support. |Float|


Changed							*changed-7.2*
-------

Changed the command line buffer name from "command-line" to "[Command Line]".

Removed optional ! for ":caddexpr", ":cgetexpr", ":cgetfile", ":laddexpr",
":lgetexpr" and ":lgetfile".  They are not needed.  (Yegappan Lakshmanan)

An offset for syntax matches worked on bytes instead of characters.  That is
inconsistent and can easily be done wrong.  Use character offsets now.
(Yukihiro Nakadaira)

The FileChangedShellPost event was also given when a file didn't change.
(John Little)

When the current line is long (doesn't fit) the popup menu can't be seen.
Display it below the screen line instead of below the text line.
(Francois Ingelrest)

Switched to autoconf version 2.62.

Moved including fcntl.h to vim.h and removed it from all .c files.

Introduce macro STRMOVE(d, s), like STRCPY() for overlapping strings.
Use it instead of mch_memmove(p, p + x, STRLEN(p + x) + 1).

Removed the bulgarian.vim keymap file, two more standard ones replace it.
(Boyko Bantchev)

Increased the maximum number of tag matches for command line completion from
200 to 300.

Renamed help file sql.txt to ft_sql.txt and ada.txt to ft_ada.txt.


Added							*added-7.2*
-----

New syntax files:
	CUDA (Timothy B. Terriberry)
	Cdrdao config (Nikolai Weibull)
	Coco/R (Ashish Shukla)
	Denyhosts config (Nikolai Weibull)
	Dtrace script (Nicolas Weber)
	Git output, commit, config, rebase, send-email (Tim Pope)
	HASTE and HastePreProc (M. Tranchero)
	Haml (Tim Pope)
	Host conf (Nikolai Weibull)
	Linden script (Timo Frenay)
	MS messages (Kevin Locke)
	PDF (Tim Pope)
	ProMeLa (Maurizio Tranchero)
	Reva Foth (Ron Aaron)
	Sass (Tim Pope)
	Symbian meta-makefile, MMP (Ron Aaron)
	VOS CM macro (Andrew McGill)
	XBL (Doug Kearns)

New tutor files:
	Made UTF-8 versions of all the tutor files.
	Greek renamed from ".gr" to ".el" (Greek vs Greece).
	Esperanto (Dominique Pelle)
	Croatian (Paul B. Mahol)

New filetype plugins:
	Cdrdao config (Nikolai Weibull)
	Debian control files (Debian Vim maintainers)
	Denyhosts (Nikolai Weibull)
	Dos .ini file (Nikolai Weibull)
	Dtrace script (Nicolas Weber)
	FnameScript (Nikolai Weibull)
	Git, Git config, Git commit, Git rebase, Git send-email (Tim Pope)
	Haml (Tim Pope)
	Host conf (Nikolai Weibull)
	Host access (Nikolai Weibull)
	Logtalk (Paulo Moura)
	MS messages (Kevin Locke)
	NSIS script (Nikolai Weibull)
	PDF (Tim Pope)
	Reva Forth (Ron Aaron)
	Sass (Tim Pope)

New indent files:
	DTD (Nikolai Weibull)
	Dtrace script (Nicolas Weber)
	Erlang (Csaba Hoch)
	FrameScript (Nikolai Weibull)
	Git config (Tim Pope)
	Haml (Tim Pope)
	Logtalk (Paulo Moura)
	Sass (Tim Pope)
	Tiny Fugue (Christian J. Robinson)

New compiler plugins:
	RSpec (Tim Pope)

New keymap files:
	Croatian (Paul B. Mahol)
	Russian Dvorak (Serhiy Boiko)
	Ukrainian Dvorak (Serhiy Boiko)
	Removed plain Bulgarian, "bds" and phonetic are sufficient.

Other new runtime files:
	Esperanto menu and message translations. (Dominique Pelle)
	Finnish menu and message translations. (Flammie Pirinen)
	Brazilian Portugese message translations. (Eduardo Dobay)

Added floating point support. |Float|

Added argument to mode() to return a bit more detail about the current mode.
(Ben Schmidt)

Added support for BSD console mouse: |sysmouse|.  (Paul B. Mahol)

Added the "newtab" value for the 'switchbuf' option.  (partly by Yegappan
Lakshmanan)

Improved error messages for the netbeans interface. (Philippe Fremy)

Added support for using xterm mouse codes for screen. (Micah Cowan)

Added support for cross compiling:
Adjusted configure.in and added INSTALLcross.txt. (Marc Haisenko)  Fixed
mistakes in configure.in after that.
Don't use /usr/local/include and /usr/local/lib in configure. (Philip
Prindeville)
For cross compiling the Cygwin version on Unix, change VIM.TLB to vim.tlb in
src/vim.rc. (Tsuneo Nakagawa)

Added v:searchforward variable: What direction we're searching in.  (Yakov
Lerner)


Fixed							*fixed-7.2*
-----

Patch 7.1.001
Problem:    Still can't build with Gnome libraries.
Solution:   Fix typo in bind_textdomain_codeset. (Mike Kelly)
Files:	    src/gui_gtk.c, src/gui_gtk_x11.c

Patch 7.1.002
Problem:    Oracle Pro*C/C++ files are not detected.
Solution:   Add the missing star. (Micah J. Cowan)
Files:	    runtime/filetype.vim

Patch 7.1.003 (extra)
Problem:    The "Tear off this menu" message appears in the message history
	    when using a menu. (Yongwei Wu)
Solution:   Disable message history when displaying the menu tip.
Files:	    src/gui_w32.c

Patch 7.1.004
Problem:    Crash when doing ":next directory". (Raphael Finkel)
Solution:   Do not use "buf", it may be invalid after autocommands.
Files:	    src/ex_cmds.c

Patch 7.1.005
Problem:    "cit" used on <foo></foo> deletes <foo>.  Should not delete
	    anything and start insertion, like "ci'" does on "". (Michal
	    Bozon)
Solution:   Handle an empty object specifically.  Made it work consistent for
	    various text objects.
Files:	    src/search.c

Patch 7.1.006
Problem:    Resetting 'modified' in a StdinReadPost autocommand doesn't work.
Solution:   Set 'modified' before the autocommands instead of after it.
Files:	    src/buffer.c

Patch 7.1.007 (extra)
Problem:    Mac: Context menu doesn't work on Intel Macs.
	    Scrollbars are not dimmed when Vim is not the active application.
Solution:   Remove the test whether context menus are supported.  They are
	    always there in OS/X.  Handle the dimming. (Nicolas Weber)
Files:	    src/gui_mac.c, src/gui.h

Patch 7.1.008
Problem:    getfsize() returns a negative number for very big files.
Solution:   Check for overflow and return -2.
Files:	    runtime/doc/eval.txt, src/eval.c

Patch 7.1.009
Problem:    In diff mode, displaying the difference between a tab and spaces
	    is not highlighted correctly.
Solution:   Only change highlighting at the end of displaying a tab.
Files:	    src/screen.c

Patch 7.1.010
Problem:    The Gnome session file doesn't restore tab pages.
Solution:   Add SSOP_TABPAGES to the session flags. (Matias D'Ambrosio)
Files:	    src/gui_gtk_x11.c

Patch 7.1.011
Problem:    Possible buffer overflow when $VIMRUNTIME is very long. (Victor
	    Stinner)
Solution:   Use vim_snprintf().
Files:	    src/main.c

Patch 7.1.012
Problem:    ":let &shiftwidth = 'asdf'" doesn't produce an error message.
Solution:   Check for a string argument. (Chris Lubinski)
Files:	    src/option.c

Patch 7.1.013
Problem:    ":syn include" only loads the first file, while it is documented
	    as doing the equivalent of ":runtime!".
Solution:   Change the argument to source_runtime(). (James Vega)
Files:	    src/syntax.c

Patch 7.1.014
Problem:    Crash when doing C indenting. (Chris Monson)
Solution:   Obtain the current line again after invoking cin_islabel().
Files:	    src/edit.c

Patch 7.1.015
Problem:    MzScheme interface: current-library-collection-paths produces no
	    list.  Interface doesn't build on a Mac.
Solution:   Use a list instead of a pair. (Bernhard Fisseni)  Use "-framework"
	    argument for MZSCHEME_LIBS in configure.
Files:	    src/configure.in, src/if_mzsch.c, src/auto/configure

Patch 7.1.016 (after patch 7.1.012)
Problem:    Error message about setting 'diff' to a string.
Solution:   Don't pass an empty string to set_option_value() when setting
	    'diff'.
Files:	    src/quickfix.c, src/popupmnu.c

Patch 7.1.017
Problem:    ":confirm w" does give a prompt when 'readonly' is set, but not
	    when the file permissions are read-only.  (Michael Schaap)
Solution:   Provide a dialog in both situations.  (Chris Lubinski)
Files:	    src/ex_cmds.c, src/fileio.c, src/proto/fileio.pro

Patch 7.1.018
Problem:    When 'virtualedit' is set a "p" of a block just past the end of
	    the line inserts before the cursor. (Engelke)
Solution:   Check for the cursor being just after the line (Chris Lubinski)
Files:	    src/ops.c

Patch 7.1.019
Problem:    ":py" asks for an argument, ":py asd" then gives the error that
	    ":py" isn't implemented.  Should already happen for ":py".
Solution:   Compare with ex_script_ni. (Chris Lubinski)
Files:	    src/ex_docmd.c

Patch 7.1.020
Problem:    Reading from uninitialized memory when using a dialog. (Dominique
	    Pelle)
Solution:   In msg_show_console_dialog() append a NUL after every appended
	    character.
Files:	    src/message.c

Patch 7.1.021 (after 7.1.015)
Problem:    Mzscheme interface doesn't compile on Win32.
Solution:   Fix the problem that 7.1.015 fixed in a better way. (Sergey Khorev)
Files:	    src/if_mzsch.c

Patch 7.1.022
Problem:    When setting 'keymap' twice the b:keymap_name variable isn't set.
	    (Milan Berta)
Solution:   Don't unlet b:keymap_name for ":loadkeymap". (Martin Toft)
Files:	    src/digraph.c

Patch 7.1.023
Problem:    "dw" in a line with one character deletes the line.  Vi and nvi
	    don't do this.  (Kjell Arne Rekaa)
Solution:   Check for one-character words especially.
Files:	    src/search.c

Patch 7.1.024
Problem:    Using a pointer that has become invalid. (Chris Monson)
Solution:   Obtain the line pointer again after we looked at another line.
Files:	    src/search.c

Patch 7.1.025
Problem:    search() and searchpos() don't use match under cursor at start of
	    line when using 'bc' flags. (Viktor Kojouharov)
Solution:   Don't go to the previous line when the 'c' flag is present.
	    Also fix that "j" doesn't move the cursor to the right column.
Files:	    src/eval.c, src/search.c

Patch 7.1.026
Problem:    "[p" doesn't work in Visual mode. (David Brown)
Solution:   Use checkclearop() instead of checkclearopq().
Files:	    src/normal.c

Patch 7.1.027
Problem:    On Sun systems opening /dev/fd/N doesn't work, and they are used
	    by process substitutions.
Solution:   Allow opening specific character special files for Sun systems.
	    (Gary Johnson)
Files:	    src/fileio.c, src/os_unix.h

Patch 7.1.028
Problem:    Can't use last search pattern for ":sort". (Brian McKee)
Solution:   When the pattern is emtpy use the last search pattern. (Martin
	    Toft)
Files:	    runtime/doc/change.txt, src/ex_cmds.c

Patch 7.1.029 (after 7.1.019)
Problem:    Can't compile when all interfaces are used. (Taylor Venable)
Solution:   Only check for ex_script_ni when it's defined.
Files:	    src/ex_docmd.c

Patch 7.1.030
Problem:    The "vimtutor" shell script checks for "vim6" but not for "vim7".
	    (Christian Robinson)
Solution:   Check for more versions, but prefer using "vim".
Files:	    src/vimtutor

Patch 7.1.031
Problem:    virtcol([123, '$']) doesn't work. (Michael Schaap)
Solution:   When '$' is used for the column number get the last column.
Files:	    runtime/doc/eval.txt, src/eval.c

Patch 7.1.032
Problem:    Potential crash when editing a command line. (Chris Monson)
Solution:   Check the position to avoid access before the start of an array.
Files:	    src/ex_getln.c

Patch 7.1.033
Problem:    A buffer is marked modified when it was first deleted and then
	    added again using a ":next" command. (John Mullin)
Solution:   When checking if a buffer is modified use the BF_NEVERLOADED flag.
Files:	    src/option.c

Patch 7.1.034
Problem:    Win64: A few compiler warnings.  Problems with optimizer.
Solution:   Use int instead of size_t.  Disable the optimizer in one function.
	    (George V.  Reilly)
Files:	    src/eval.c, src/spell.c

Patch 7.1.035
Problem:    After ":s/./&/#" all listed lines have a line number. (Yakov
	    Lerner)
Solution:   Reset the line number flag when not using the "&" flag.
Files:	    src/ex_cmds.c

Patch 7.1.036
Problem:    Completing ":echohl" argument should include "None". (Ori
	    Avtalion)  ":match" should have "none" too.
Solution:   Add flags to use expand_highlight().  Also fix that when disabling
	    FEAT_CMDL_COMPL compilation fails.  (Chris Lubinski)
Files:	    src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/syntax.pro
	    src/syntax.c

Patch 7.1.037
Problem:    strcpy() used for overlapping strings. (Chris Monson)
Solution:   Use mch_memmove() instead.
Files:	    src/option.c

Patch 7.1.038
Problem:    When 'expandtab' is set then a Tab copied for 'copyindent' is
	    expanded to spaces, even when 'preserveindent' is set. (Alexei
	    Alexandrov)
Solution:   Remove the check for 'expandtab'.  Also fix that ">>" doesn't obey
	    'preserveindent'. (Chris Lubinski)
Files:	    src/misc1.c

Patch 7.1.039
Problem:    A tag in a help file that starts with "help-tags" and contains a
	    percent sign may make Vim crash. (Ulf Harnhammar)
Solution:   Use puts() instead of fprintf().
Files:	    src/ex_cmds.c

Patch 7.1.040
Problem:    ":match" only supports three matches.
Solution:   Add functions clearmatches(), getmatches(), matchadd(),
	    matchdelete() and setmatches().  Changed the data structures for
	    this.  A small bug in syntax.c is fixed, so newly created
	    highlight groups can have their name resolved correctly from their
	    ID.  (Martin Toft)
Files:	    runtime/doc/eval.txt, runtime/doc/pattern.txt,
	    runtime/doc/usr_41.txt, src/eval.c, src/ex_docmd.c,
	    src/proto/window.pro, src/screen.c, src/structs.h, src/syntax.c,
	    src/testdir/Makefile, src/testdir/test63.in,
	    src/testdir/test63.ok, src/window.c

Patch 7.1.041 (extra, after 7.1.040)
Problem:    Some changes for patch 7.1.040 are in extra files.
Solution:   Update the extra files.
Files:	    src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
	    src/testdir/Make_os2.mak, src/testdir/Make_vms.mms

Patch 7.1.042 (after 7.1.040)
Problem:    Internal error when using matchadd(). (David Larson)
Solution:   Check the third argument to be present before using the fourth
	    argument. (Martin Toft)
Files:	    src/eval.c

Patch 7.1.043
Problem:    In Ex mode using CTRL-D twice may cause a crash.  Cursor isn't
	    positioned properly after CTRL-D.
Solution:   Set prev_char properly.  Position the cursor correctly. (Antony
	    Scriven)
Files:	    src/ex_getln.c

Patch 7.1.044
Problem:    In Insert mode 0 CTRL-T deletes all indent, it should add indent.
	    (Gautam Iyer)
Solution:   Check for CTRL-D typed.
Files:	    src/edit.c

Patch 7.1.045
Problem:    Unnecessary screen redrawing. (Jjgod Jiang)
Solution:   Reset "must_redraw" after clearing the screen.
Files:	    src/screen.c

Patch 7.1.046
Problem:    ":s" command removes combining characters. (Ron Aaron)
Solution:   Copy composing characters individually. (Chris Lubinski)
Files:	    src/regexp.c

Patch 7.1.047
Problem:    vim_regcomp() called with invalid argument. (Xiaozhou Liu)
Solution:   Change TRUE to RE_MAGIC + RE_STRING.
Files:	    src/ex_eval.c

Patch 7.1.048
Problem:    The matchparen plugin doesn't update the match when scrolling with
	    the mouse wheel. (Ilya Bobir)
Solution:   Set the match highlighting for text that can be scrolled into the
	    viewable area without moving the cursor. (Chris Lubinski)
Files:	    runtime/plugin/matchparen.vim

Patch 7.1.049
Problem:    Cannot compile GTK2 version with Hangul input feature.
Solution:   Don't define FEAT_XFONTSET when using GTK2.
Files:	    src/feature.h

Patch 7.1.050
Problem:    Possible crash when using C++ indenting. (Chris Monson)
Solution:   Keep the line pointer to the line to compare with.  Avoid going
	    past the end of line.
Files:	    src/misc1.c

Patch 7.1.051
Problem:    Accessing uninitialized memory when finding spell suggestions.
Solution:   Don't try swapping characters at the end of a word.
Files:	    src/spell.c

Patch 7.1.052
Problem:    When creating a new match not all fields are initialized, which
	    may lead to unpredictable results.
Solution:   Initialise rmm_ic and rmm_maxcol.
Files:	    src/window.c

Patch 7.1.053
Problem:    Accessing uninitialized memory when giving a message.
Solution:   Check going the length before checking for a NUL byte.
Files:	    src/message.c

Patch 7.1.054
Problem:    Accessing uninitialized memory when displaying the fold column.
Solution:   Add a NUL to the extra array. (Dominique Pelle).  Also do this in
	    a couple of other situations.
Files:	    src/screen.c

Patch 7.1.055
Problem:    Using strcpy() with arguments that overlap.
Solution:   Use mch_memmove() instead.
Files:	    src/buffer.c, src/charset.c, src/eval.c, src/ex_getln.c,
	    src/misc1.c, src/regexp.c, src/termlib.c

Patch 7.1.056
Problem:    More prompt does not behave correctly after scrolling back.
	    (Randall W. Morris)
Solution:   Avoid lines_left becomes negative. (Chris Lubinski)  Don't check
	    mp_last when deciding to show the more prompt. (Martin Toft)
Files:	    src/message.c

Patch 7.1.057
Problem:    Problem with CursorHoldI when using "r" in Visual mode (Max
	    Dyckhoff)
Solution:   Ignore CursorHold(I) when getting a second character for a Normal
	    mode command.  Also abort the "r" command in Visual when a special
	    key is typed.
Files:	    src/normal.c

Patch 7.1.058
Problem:    When 'rightleft' is set the completion menu is positioned wrong.
	    (Baha-Eddine MOKADEM)
Solution:   Fix the completion menu. (Martin Toft)
Files:	    src/popupmnu.c, src/proto/search.pro, src/search.c

Patch 7.1.059
Problem:    When in Ex mode and doing "g/^/vi" and then pressing CTRL-C Vim
	    hangs and beeps. (Antony Scriven)
Solution:   Clear "got_int" in the main loop to avoid the hang.  When typing
	    CTRL-C twice in a row abort the ":g" command.  This is Vi
	    compatible.
Files:	    src/main.c

Patch 7.1.060
Problem:    Splitting quickfix window messes up window layout. (Marius
	    Gedminas)
Solution:   Compute the window size in a smarter way. (Martin Toft)
Files:	    src/window.c

Patch 7.1.061
Problem:    Win32: When 'encoding' is "latin1" 'ignorecase' doesn't work for
	    characters with umlaut. (Joachim Hofmann)
Solution:   Do not use islower()/isupper()/tolower()/toupper() but our own
	    functions. (Chris Lubinski)
Files:	    src/mbyte.c, src/regexp.c, src/vim.h

Patch 7.1.062 (after 7.1.038)
Problem:    Indents of C comments can be wrong. (John Mullin)
Solution:   Adjust ind_len. (Chris Lubinski)
Files:	    src/misc1.c

Patch 7.1.063 (after 7.1.040)
Problem:    Warning for uninitialized variable.
Solution:   Initialise it to NULL.
Files:	    src/ex_docmd.c

Patch 7.1.064
Problem:    On Interix some files appear not to exist.
Solution:   Remove the top bit from st_mode. (Ligesh)
Files:	    src/os_unix.c

Patch 7.1.065 (extra)
Problem:    Win32: Compilation problem for newer version of w32api.
Solution:   Only define __IID_DEFINED__ when needed. (Chris Sutcliffe)
Files:	    src/Make_ming.mak, src/iid_ole.c

Patch 7.1.066
Problem:    When 'bomb' is set or reset the file should be considered
	    modified.  (Tony Mechelynck)
Solution:   Handle like 'endofline'. (Martin Toft)
Files:	    src/buffer.c, src/fileio.c, src/option.c, src/structs.h

Patch 7.1.067
Problem:    'thesaurus' doesn't work when 'infercase' is set. (Mohsin)
Solution:   Don't copy the characters being completed but check the case and
	    apply it to the suggested word.  Also fix that the first word in
	    the thesaurus line is not used.  (Martin Toft)
Files:	    src/edit.c

Patch 7.1.068
Problem:    When 'equalalways' is set and splitting a window, it's possible
	    that another small window gets bigger.
Solution:   Only equalize window sizes when after a split the windows are
	    smaller than another window. (Martin Toft)
Files:	    runtime/doc/options.txt, runtime/doc/windows.txt, src/window.c

Patch 7.1.069
Problem:    GTK GUI: When using confirm() without a default button there still
	    is a default choice.
Solution:   Ignore Enter and Space when there is no default button. (Chris
	    Lubinski)
Files:	    src/gui_gtk.c

Patch 7.1.070 (extra)
Problem:    Win32 GUI: When using confirm() without a default button there
	    still is a default choice.
Solution:   Set focus on something else than a button. (Chris Lubinski)
Files:	    src/gui_w32.c

Patch 7.1.071 (after 7.1.040)
Problem:    Regexp patterns are not tested.
Solution:   Add a basic test, to be expanded later.
	    Also add (commented-out) support for valgrind.
Files:	    src/testdir/Makefile, src/testdir/test64.in, src/testdir/test64.ok

Patch 7.1.072 (extra, after 7.1.041 and 7.1.071)
Problem:    Some changes for patch 7.1.071 are in extra files.
Solution:   Update the extra files.  Also fix a few warnings from the DOS test
	    makefile.
Files:	    src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
	    src/testdir/Make_os2.mak, src/testdir/Make_vms.mms

Patch 7.1.073 (after 7.1.062)
Problem:    Wrong cursor position and crash when 'preserveindent' is set.
	    (Charles Campbell)
Solution:   Handle the situation that we start without indent. (Chris
	    Lubinski)
Files:	    src/misc1.c

Patch 7.1.074
Problem:    Crash when calling string() on a recursively nested List.
Solution:   Check result value for being NULL. (Yukihiro Nakadaira)
Files:	    src/eval.c

Patch 7.1.075
Problem:    ":let v:statusmsg" reads memory already freed.
Solution:   Don't set v:statusmsg when listing it.
Files:	    src/eval.c

Patch 7.1.076
Problem:    Another strcpy() with overlapping arguments.
Solution:   Use mch_memmove(). (Dominique Pelle)  And another one.
Files:	    src/ex_docmd.c, src/normal.c

Patch 7.1.077
Problem:    Using "can_spell" without initializing it. (Dominique Pelle)
Solution:   Set a default for get_syntax_attr().
Files:	    src/syntax.c

Patch 7.1.078
Problem:    Dropping a file name on gvim that contains a CSI byte doesn't work
	    when editing the command line.
Solution:   Escape the CSI byte when inserting in the input buffer. (Yukihiro
	    Nakadaira)
Files:	    src/gui.c, src/ui.c

Patch 7.1.079
Problem:    When the locale is "C" and 'encoding' is "latin1" then the "@"
	    character in 'isfname', 'isprint', etc. doesn't pick up accented
	    characters.
Solution:   Instead of isalpha() use MB_ISLOWER() and MB_ISUPPER().
Files:	    src/charset.c, src/macros.h

Patch 7.1.080 (extra)
Problem:    Compiler warnings for using "const char *" for "char *".
Solution:   Add type casts. (Chris Sutcliffe)
Files:	    src/GvimExt/gvimext.cpp

Patch 7.1.081
Problem:    Command line completion for a shell command: "cat </tmp/file<Tab>"
	    doesn't work.
Solution:   Start the file name at any character that can't be in a file name.
	    (Martin Toft)
Files:	    src/ex_docmd.c

Patch 7.1.082
Problem:    After a ":split" the matchparen highlighting isn't there.
Solution:   Install a WinEnter autocommand.  Also fixes that after
	    ":NoMatchParen" only the current window is updated. (Martin Toft)
Files:	    runtime/doc/pi_paren.txt, runtime/plugin/matchparen.vim

Patch 7.1.083 (after 7.1.081)
Problem:    Command line completion doesn't work with wildcards.
Solution:   Add vim_isfilec_or_wc() and use it. (Martin Toft)
Files:	    src/charset.c, src/proto/charset.pro, src/ex_docmd.c

Patch 7.1.084
Problem:    Using the "-nb" argument twice causes netbeans not to get
	    fileOpened events.
Solution:   Change "&" to "&&". (Xavier de Gaye)
Files:	    src/ex_cmds.c

Patch 7.1.085
Problem:    ":e fold.c" then ":sp fold.c" results in folds of original window
	    to disappear. (Akita Noek)
Solution:   Invoke foldUpdateAll() for all windows of the changed buffer.
	    (Martin Toft)
Files:	    src/ex_cmds.c

Patch 7.1.086
Problem:    Crash when using specific Python syntax highlighting.  (Quirk)
Solution:   Check for a negative index, coming from a keyword match at the
	    start of a line from a saved state.
Files:	    src/syntax.c

Patch 7.1.087
Problem:    Reading past ":cscope find" command.  Writing past end of a buffer.
Solution:   Check length of the argument before using the pattern.  Use
	    vim_strncpy().  (Dominique Pelle)
Files:	    if_cscope.c

Patch 7.1.088 (extra)
Problem:    The coordinates used by ":winpos" differ from what getwinposx()
	    and getwinposy() return.
Solution:   Use MoveWindowStructure() instead of MoveWindow(). (Michael Henry)
Files:	    src/gui_mac.c

Patch 7.1.089
Problem:    ":let loaded_getscriptPlugin" doesn't clear to eol, result is
	    "#1in".
Solution:   Clear to the end of the screen after displaying the first variable
	    value.
Files:	    src/eval.c

Patch 7.1.090
Problem:    Compiler warning on Mac OS X 10.5.
Solution:   Don't redeclare sigaltstack(). (Hisashi T Fujinaka)
Files:	    src/os_unix.c

Patch 7.1.091 (extra)
Problem:    Win32: Can't embed Vim inside another application.
Solution:   Add the --windowid argument. (Nageshwar)
Files:	    runtime/doc/gui_w32.txt, runtime/doc/starting.txt,
	    runtime/doc/vi_diff.txt, src/globals.h, src/gui_w32.c, src/main.c

Patch 7.1.092 (extra, after 7.1.088)
Problem:    Wrong arguments for MoveWindowStructure().
Solution:   Remove "TRUE". (Michael Henry)
Files:	    src/gui_mac.c

Patch 7.1.093
Problem:    Reading past end of a screen line when determining cell width.
	    (Dominique Pelle)
Solution:   Add an argument to mb_off2cells() for the maximum offset.
Files:	    src/globals.h, src/gui.c, src/mbyte.c, src/proto/mbyte.pro,
	    src/screen.c

Patch 7.1.094
Problem:    When checking if syntax highlighting is present, looking in the
	    current buffer instead of the specified one.
Solution:   Use "buf" instead of "curbuf".
Files:	    src/syntax.c

Patch 7.1.095
Problem:    The FocusLost and FocusGained autocommands are triggered
	    asynchronously in the GUI.  This may cause arbitrary problems.
Solution:   Put the focus event in the input buffer and handle it when ready
	    for it.
Files:	    src/eval.c, src/getchar.c, src/gui.c, src/gui_gtk_x11.c,
	    src/keymap.h

Patch 7.1.096
Problem:    Reading past end of a string when resizing Vim. (Dominique Pelle)
Solution:   Check the string pointer before getting the char it points to.
Files:	    src/message.c

Patch 7.1.097
Problem:    ":setlocal stl=%!1+1" does not work.
Solution:   Adjust check for pointer. (Politz)
Files:	    src/option.c

Patch 7.1.098
Problem:    ":call s:var()" doesn't work if "s:var" is a Funcref. (Andy Wokula)
Solution:   Before converting "s:" into a script ID, check if it is a Funcref.
Files:	    src/eval.c

Patch 7.1.099
Problem:    When the 'keymap' and 'paste' options have a non-default value,
	    ":mkexrc" and ":mksession" do not correctly set the options.
Solution:   Set the options with side effects before other options.
Files:	    src/option.c

Patch 7.1.100
Problem:    Win32: Executing cscope doesn't always work properly.
Solution:   Use another way to invoke cscope. (Mike Williams)
Files:	    src/if_cscope.c, src/if_cscope.h, src/main.c,
	    src/proto/if_cscope.pro

Patch 7.1.101
Problem:    Ruby: The Buffer.line= method does not work.
Solution:   Add the "self" argument to set_current_line(). (Jonathan Hankins)
Files:	    src/if_ruby.c

Patch 7.1.102
Problem:    Perl interface doesn't compile with new version of Perl.
Solution:   Add two variables to the dynamic library loading. (Suresh
	    Govindachar)
Files:	    src/if_perl.xs

Patch 7.1.103
Problem:    Using "dw" with the cursor past the end of the last line (using
	    CTRL-\ CTRL-O from Insert mode) deletes a character. (Tim Chase)
Solution:   Don't move the cursor back when the movement failed.
Files:	    src/normal.c

Patch 7.1.104 (after 7.1.095)
Problem:    When 'lazyredraw' is set a focus event causes redraw to be
	    postponed until a key is pressed.
Solution:   Instead of not returning from vgetc() when a focus event is
	    encountered return K_IGNORE.  Add plain_vgetc() for when the
	    caller doesn't want to get K_IGNORE.
Files:	    src/digraph.c, src/edit.c, src/ex_cmds.c, src/ex_getln.c,
	    src/getchar.c, src/normal.c, src/proto/getchar.pro, src/window.c

Patch 7.1.105
Problem:    Internal error when using "0 ? {'a': 1} : {}". (A.Politz)
Solution:   When parsing a dictionary value without using the value, don't try
	    obtaining the key name.
Files:	    src/eval.c

Patch 7.1.106
Problem:    ":messages" doesn't quit listing on ":".
Solution:   Break the loop when "got_int" is set.
Files:	    src/message.c

Patch 7.1.107
Problem:    When doing a block selection and using "s" to change the text,
	    while triggering auto-indenting, causes the wrong text to be
	    repeated in other lines. (Adri Verhoef)
Solution:   Compute the change of indent and compensate for that.
Files:	    src/ops.c

Patch 7.1.108 (after 7.1.100)
Problem:    Win32: Compilation problems in Cscope code. (Jeff Lanzarotta)
Solution:   Use (long) instead of (intptr_t) when it's not defined.
Files:	    src/if_cscope.c

Patch 7.1.109
Problem:    GTK: when there are many tab pages, clicking on the arrow left of
	    the labels moves to the next tab page on the right. (Simeon Bird)
Solution:   Check the X coordinate of the click and pass -1 as value for the
	    left arrow.
Files:	    src/gui_gtk_x11.c, src/term.c

Patch 7.1.110 (after 7.1.102)
Problem:    Win32: Still compilation problems with Perl.
Solution:   Change the #ifdefs. (Suresh Govindachar)
Files:	    src/if_perl.xs

Patch 7.1.111
Problem:    When using ":vimgrep" with the "j" flag folds from another buffer
	    may be displayed. (A.Politz)
Solution:   When not jumping to another buffer update the folds.
Files:	    src/quickfix.c

Patch 7.1.112
Problem:    Using input() with a wrong argument may crash Vim. (A.Politz)
Solution:   Init the input() return value to NULL.
Files:	    src/eval.c

Patch 7.1.113
Problem:    Using map() to go over an empty list causes memory to be freed
	    twice. (A.Politz)
Solution:   Don't clear the typeval in restore_vimvar().
Files:	    src/eval.c

Patch 7.1.114
Problem:    Memory leak in getmatches().
Solution:   Don't increment the refcount twice.
Files:	    src/eval.c

Patch 7.1.115 (after 7.1.105)
Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
Solution:   Init variable to NULL.
Files:	    src/eval.c

Patch 7.1.116
Problem:    Cannot display Unicode characters above 0x10000.
Solution:   Remove the replacement with a question mark when UNICODE16 is not
	    defined. (partly by Nicolas Weber)
Files:	    src/screen.c

Patch 7.1.117
Problem:    Can't check wether Vim was compiled with Gnome. (Tony Mechelynck)
Solution:   Add gui_gnome to the has() list.
Files:	    src/eval.c

Patch 7.1.118 (after 7.1.107)
Problem:    Compiler warning for Visual C compiler.
Solution:   Add typecast. (Mike Williams)
Files:	    src/ops.c

Patch 7.1.119
Problem:    Crash when 'cmdheight' set to very large value. (A.Politz)
Solution:   Limit 'cmdheight' to 'lines' minus one.  Store right value of
	    'cmdheight' when running out of room.
Files:	    src/option.c, src/window.c

Patch 7.1.120
Problem:    Can't properly check memory leaks while running tests.
Solution:   Add an argument to garbagecollect().  Delete functions and
	    variables in the test scripts.
Files:	    runtime/doc/eval.txt src/eval.c, src/globals.h, src/main.c,
	    src/testdir/Makefile, src/testdir/test14.in,
	    src/testdir/test26.in, src/testdir/test34.in,
	    src/testdir/test45.in, src/testdir/test47.in,
	    src/testdir/test49.in, src/testdir/test55.in,
	    src/testdir/test56.in, src/testdir/test58.in,
	    src/testdir/test59.in, src/testdir/test60.in,
	    src/testdir/test60.vim, src/testdir/test62.in,
	    src/testdir/test63.in, src/testdir/test64.in,

Patch 7.1.121
Problem:    Using ":cd %:h" when editing a file in the current directory
	    results in an error message for using an empty string.
Solution:   When "%:h" results in an empty string use ".".
Files:	    src/eval.c

Patch 7.1.122
Problem:    Mac: building Vim.app fails.  Using wrong architecture.
Solution:   Use line continuation for the gui_bundle dependency.  Detect the
	    system architecture with "uname -a".
Files:	    src/main.aap

Patch 7.1.123
Problem:    Win32: ":edit foo ~ foo" expands "~".
Solution:   Change the call to expand_env().
Files:	    src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/option.c

Patch 7.1.124 (extra)
Problem:    Mac: When dropping a file on Vim.app that is already in the buffer
	    list (from .viminfo) results in editing an empty, unnamed buffer.
	    (Axel Kielhorn)  Also: warning for unused variable.
Solution:   Move to the buffer of the first argument.  Delete unused variable.
Files:	    src/gui_mac.c

Patch 7.1.125
Problem:    The TermResponse autocommand event is not always triggered. (Aron
	    Griffix)
Solution:   When unblocking autocommands check if v:termresponse changed and
	    trigger the event then.
Files:	    src/buffer.c, src/diff.c, src/ex_getln.c, src/fileio.c,
	    src/globals.h, src/misc2.c, src/proto/fileio.pro, src/window.c

Patch 7.1.126 (extra)
Problem:    ":vimgrep */*" fails when a BufRead autocommand changes directory.
	    (Bernhard Kuhn)
Solution:   Change back to the original directory after loading a file.
	    Also: use shorten_fname1() to avoid duplicating code.
Files:	    src/buffer.c, src/ex_docmd.c, src/fileio.c, src/gui_gtk.c,
	    src/gui_w48.c, src/proto/ex_docmd.pro, src/proto/fileio.pro,
	    src/quickfix.c

Patch 7.1.127
Problem:    Memory leak when doing cmdline completion. (Dominique Pelle)
Solution:   Free "orig" argument of ExpandOne() when it's not used.
Files:	    src/ex_getln.c

Patch 7.1.128 (extra)
Problem:    Build problems with new version of Cygwin.
Solution:   Remove -D__IID_DEFINED__, like with MingW. (Guopeng Wen)
Files:	    src/Make_cyg.mak

Patch 7.1.129 (extra)
Problem:    Win32: Can't get the user name when it is longer than 15
	    characters.
Solution:   Use UNLEN instead of MAX_COMPUTERNAME_LENGTH. (Alexei Alexandrov)
Files:	    src/os_win32.c

Patch 7.1.130
Problem:    Crash with specific order of undo and redo. (A.Politz)
Solution:   Clear and adjust pointers properly.  Add u_check() for debugging.
Files:	    src/undo.c, src/structs.h

Patch 7.1.131
Problem:    ":mksession" always adds ":setlocal autoread". (Christian J.
	    Robinson)
Solution:   Skip boolean global/local option using global value.
Files:	    src/option.c

Patch 7.1.132
Problem:    getpos("'>") may return a negative column number for a Linewise
	    selection. (A.Politz)
Solution:   Don't add one to MAXCOL.
Files:	    src/eval.c

Patch 7.1.133 (after 7.1.126)
Problem:    shorten_fname1() linked when it's not needed.
Solution:   Add #ifdef.
Files:	    src/fileio.c

Patch 7.1.134 (extra)
Problem:    Win32: Can't build with VC8
Solution:   Detect the MSVC version instead of using NMAKE_VER.
	    (Mike Williams)
Files:	    src/Make_mvc.mak

Patch 7.1.135
Problem:    Win32: When editing a file c:\tmp\foo and c:\tmp\\foo we have two
	    buffers for the same file. (Suresh Govindachar)
Solution:   Invoke FullName_save() when a path contains "//" or "\\".
Files:	    src/buffer.c

Patch 7.1.136
Problem:    Memory leak when using Ruby syntax highlighting. (Dominique Pelle)
Solution:   Free the contained-in list.
Files:	    src/syntax.c

Patch 7.1.137
Problem:    Build failure when using EXITFREE. (Dominique Pelle)
Solution:   Add an #ifdef around using clip_exclude_prog.
Files:	    src/misc2.c

Patch 7.1.138
Problem:    The Perl Msg() function doesn't stop when "q" is typed at the more
	    prompt. (Hari Krishna Dara)
Solution:   Check got_int.
Files:	    src/if_perl.xs

Patch 7.1.139
Problem:    When using marker folding and ending Insert mode with CTRL-C the
	    current fold is truncated. (Fred Kater)
Solution:   Ignore got_int while updating folds.
Files:	    src/fold.c

Patch 7.1.140
Problem:    v:count is set only after typing a non-digit, that makes it
	    difficult to make a nice mapping.
Solution:   Set v:count while still typing the count.
Files:	    src/normal.c

Patch 7.1.141
Problem:    GTK: -geom argument doesn't support a negative offset.
Solution:   Compute position from the right/lower corner.
Files:	    src/gui_gtk_x11.c

Patch 7.1.142
Problem:    ":redir @A>" doesn't work.
Solution:   Ignore the extra ">" also when appending. (James Vega)
Files:	    src/ex_docmd.c

Patch 7.1.143
Problem:    Uninitialized memory read when diffing three files. (Dominique
	    Pelle)
Solution:   Remove "+ !notset" so that we don't use fields that were not
	    computed.
Files:	    src/diff.c

Patch 7.1.144
Problem:    After ":diffup" cursor can be in the wrong position.
Solution:   Force recomputing the cursor position.
Files:	    src/diff.c

Patch 7.1.145
Problem:    Insert mode completion: When using the popup menu, after
	    completing a word and typing a non-word character Vim is still
	    completing the same word, following CTRL-N doesn't work.
	    Insert mode Completion: When using CTRL-X O and there is only
	    "struct." before the cursor, typing one char to reduce the
	    matches, then BS completion stops.
Solution:   When typing a character that is not part of the item being
	    completed, stop complete mode.  For whole line completion also
	    accept a space.  For file name completion stop at a path
	    separator.
	    For omni completion stay in completion mode even if completing
	    with empty string.
Files:	    src/edit.c

Patch 7.1.146 (extra)
Problem:    VMS: Files with a very rare record organization (VFC) cannot be
	    properly written by Vim.
	    On older VAX systems mms runs into a syntax error.
Solution:   Check for this special situation.  Do not wrap a comment, make it
	    one long line.  (Zoltan Arpadffy)
Files:	    src/fileio.c, src/Make_vms.mms

Patch 7.1.147 (after 7.1.127)
Problem:    Freeing memory already freed when completing user name. (Meino
	    Cramer)
Solution:   Use a flag to remember if "orig" needs to be freed.
Files:	    src/ex_getln.c

Patch 7.1.148
Problem:    Some types are not found by configure.
Solution:   Test for the sys/types.h header file. (Sean Boudreau)
Files:	    src/configure.in, src/auto/configure

Patch 7.1.149
Problem:    GTK GUI: When the completion popup menu is used scrolling another
	    window by the scrollbar is OK, but using the scroll wheel it
	    behaves line <Enter>.
Solution:   Ignore K_MOUSEDOWN and K_MOUSEUP.  Fix redrawing the popup menu.
Files:	    src/edit.c, src/gui.c

Patch 7.1.150
Problem:    When 'clipboard' has "unnamed" using "p" in Visual mode doesn't
	    work correctly. (Jianrong Yu)
Solution:   When 'clipboard' has "unnamed" also obtain the selection when
	    getting the default register.
Files:	    src/ops.c

Patch 7.1.151
Problem:    Using whole line completion with 'ignorecase' and 'infercase' set
	    and the line is empty get an lalloc(0) error.
Solution:   Don't try changing case for an empty match. (Matthew Wozniski)
Files:	    src/edit.c

Patch 7.1.152
Problem:    Display problem when 'hls' and 'cursorcolumn' are set and
	    searching for "$".  (John Mullin)  Also when scrolling
	    horizontally when 'wrap' is off.
Solution:   Keep track of the column where highlighting was set.  Check the
	    column offset when skipping characters.
Files:	    src/screen.c

Patch 7.1.153
Problem:    Compiler warnings on SGI.  Undefined XpmAllocColor (Charles
	    Campbell)
Solution:   Add type casts.  Init st_dev and st_ino separately.  Don't use
	    type casts for vim_snprintf() when HAVE_STDARG_H is defined.
	    Define XpmAllocColor when needed.
Files:	    src/eval.c, src/ex_cmds.c, src/fileio.c, src/misc2.c,
	    src/gui_xmebw.c

Patch 7.1.154
Problem:    Compiler warning for signed/unsigned compare.
Solution:   Add type cast.
Files:	    src/screen.c

Patch 7.1.155
Problem:    Crash when 'undolevels' is 0 and repeating "udd". (James Vega)
Solution:   When there is only one branch use u_freeheader() to delete it.
Files:	    src/undo.c

Patch 7.1.156
Problem:    Overlapping arguments for strcpy() when expanding command line
	    variables.
Solution:   Use mch_memmove() instead of STRCPY().  Also fix a few typos.
	    (Dominique Pelle)
Files:	    src/ex_docmd.c

Patch 7.1.157
Problem:    In Ex mode, :" gives an error at end-of-file. (Michael Hordijk)
Solution:   Only give an error for an empty line, not for a comment.
Files:	    src/ex_docmd.c

Patch 7.1.158 (extra)
Problem:    Win32 console: When 'encoding' is "utf-8" and typing Alt-y the
	    result is wrong.  Win32 GUI: Alt-y results in "u" when 'encoding'
	    is "cp1250" (Lukas Cerman)
Solution:   For utf-8 don't set the 7th bit in a byte, convert to the correct
	    byte sequence.  For cp1250, when conversion to 'encoding' results
	    in the 7th bit not set, set the 7th bit after conversion.
Files:	    src/os_win32.c, src/gui_w48.c

Patch 7.1.159
Problem:    strcpy() has overlapping arguments.
Solution:   Use mch_memmove() instead. (Dominique Pelle)
Files:	    src/ex_cmds.c

Patch 7.1.160
Problem:    When a focus autocommand is defined, getting or losing focus
	    causes the hit-enter prompt to be redrawn. (Bjorn Winckler)
Solution:   Overwrite the last line.
Files:	    src/message.c

Patch 7.1.161
Problem:    Compilation errors with tiny features and EXITFREE.
Solution:   Add #ifdefs. (Dominique Pelle)
Files:	    src/edit.c, src/misc2.c

Patch 7.1.162
Problem:    Crash when using a modifier before "while" or "for". (A.Politz)
Solution:   Skip modifiers when checking for a loop command.
Files:	    src/proto/ex_docmd.pro, src/ex_docmd.c, src/ex_eval.c

Patch 7.1.163
Problem:    Warning for the unknown option 'bufsecret'.
Solution:   Remove the lines .vim that use this option. (Andy Wokula)
Files:	    runtime/menu.vim

Patch 7.1.164
Problem:    Reading past end of regexp pattern. (Dominique Pelle)
Solution:   Use utf_ptr2len().
Files:	    src/regexp.c

Patch 7.1.165
Problem:    Crash related to getting X window ID. (Dominique Pelle)
Solution:   Don't trust the window ID that we got in the past, check it every
	    time.
Files:	    src/os_unix.c

Patch 7.1.166
Problem:    Memory leak for using "gp" in Visual mode.
Solution:   Free memory in put_register(). (Dominique Pelle)
Files:	    src/ops.c

Patch 7.1.167
Problem:    Xxd crashes when using "xxd -b -c 110". (Debian bug 452789)
Solution:   Allocate more memory.  Fix check for maximum number of columns.
Files:	    src/xxd/xxd.c

Patch 7.1.168 (extra)
Problem:    Win32 GUI: Since patch 7.1.095, when the Vim window does not have
	    focus, clicking in it doesn't position the cursor. (Juergen
	    Kraemer)
Solution:   Don't reset s_button_pending just after receiving focus.
Files:	    src/gui_w48.c

Patch 7.1.169
Problem:    Using uninitialized variable when system() fails. (Dominique
	    Pelle)
Solution:   Let system() return an empty string when it fails.
Files:	    src/eval.c

Patch 7.1.170
Problem:    Valgrind warning for overlapping arguments for strcpy().
Solution:   Use mch_memmove() instead. (Dominique Pelle)
Files:	    src/getchar.c

Patch 7.1.171
Problem:    Reading one byte before allocated memory.
Solution:   Check index not to become negative. (Dominique Pelle)
Files:	    src/ex_getln.c

Patch 7.1.172
Problem:    When 'buftype' is "acwrite" Vim still checks if the file or
	    directory exists before overwriting.
Solution:   Don't check for overwriting when the buffer name is not a file
	    name.
Files:	    src/ex_cmds.c

Patch 7.1.173
Problem:    Accessing freed memory. (Dominique Pelle)
Solution:   Don't call reg_getline() to check if a line is the first in the
	    file.
Files:	    src/regexp.c

Patch 7.1.174
Problem:    Writing NUL past end of a buffer.
Solution:   Copy one byte less when using strncat(). (Dominique Pelle)
Files:	    src/ex_cmds.c, src/ex_docmd.c,

Patch 7.1.175
Problem:    <BS> doesn't work with some combination of 'sts', 'linebreak' and
	    'backspace'. (Francois Ingelrest)
Solution:   When adding white space results in not moving back delete one
	    character.
Files:	    src/edit.c

Patch 7.1.176
Problem:    Building with Aap fails when the "compiledby" argument contains
	    '<' or '>' characters. (Alex Yeh)
Solution:   Change how quoting is done in the Aap recipe.
Files:	    src/main.aap

Patch 7.1.177
Problem:    Freeing memory twice when in debug mode while reading a script.
Solution:   Ignore script input while in debug mode.
Files:	    src/ex_cmds2.c, src/getchar.c, src/globals.h

Patch 7.1.178
Problem:    "%" doesn't work on "/* comment *//* comment */".
Solution:   Don't handle the "//" in "*//*" as a C++ comment. (Markus
	    Heidelberg)
Files:	    src/search.c

Patch 7.1.179
Problem:    Need to check for TCL 8.5.
Solution:   Adjust configure script. (Alexey Froloff)
Files:	    src/configure.in, src/auto/configure

Patch 7.1.180
Problem:    Regexp patterns not tested sufficiently.
Solution:   Add more checks to the regexp test.
Files:	    src/testdir/test64.in, src/testdir/test64.ok

Patch 7.1.181
Problem:    Accessing uninitialized memory in Farsi mode. (Dominique Pelle)
Solution:   Only invoke lrF_sub() when there is something to do.
Files:	    src/ex_cmds.c

Patch 7.1.182
Problem:    When using tab pages and an argument list the session file may
	    contain wrong "next" commands. (Alexander Bluem)
Solution:   Use "argu" commands and only when needed.
Files:	    src/ex_docmd.c

Patch 7.1.183
Problem:    "Internal error" for ":echo matchstr('a', 'a\%[\&]')" (Mitanu
	    Paul)
Solution:   Inside "\%[]" detect \&, \| and \) as an error.
Files:	    src/regexp.c

Patch 7.1.184
Problem:    Crash when deleting backwards over a line break in Insert mode.
Solution:   Don't advance the cursor when it's already on the NUL after a
	    line. (Matthew Wozniski)
Files:	    src/normal.c

Patch 7.1.185
Problem:    Using "gR" with a multi-byte encoding and typing a CR pushes
	    characters onto the replace stack incorrectly, resulting in BS
	    putting back the wrong characters. (Paul B. Mahol)
Solution:   Push multi-byte characters onto the replace stack in reverse byte
	    order.  Add replace_push_mb().
Files:	    src/edit.c, src/misc1.c, src/proto/edit.pro

Patch 7.1.186
Problem:    "expand('<afile>')" returns a bogus value after changing
	    directory. (Dave Fishburn)
Solution:   Copy "autocmd_fname" to allocated memory and expand to full
	    filename.  Shorten the path when expanding <afile>.
Files:	    src/ex_docmd.c, src/fileio.c

Patch 7.1.187
Problem:    Win32 GUI: Custom completion using system() no longer works
	    after patch 7.1.104. (Erik Falor)
Solution:   Loop when safe_vgetc() returns K_IGNORE.
Files:	    src/ex_getln.c

Patch 7.1.188
Problem:    When 'showmode' is off the message for changing a readonly file is
	    given in the second column instead of the first.  (Payl B. Mahol)
Solution:   Put the W10 message in the first column.
Files:	    src/edit.c

Patch 7.1.189 (after 7.1.104)
Problem:    Patch 7.1.104 was incomplete.
Solution:   Also call plain_vgetc() in ask_yesno().
Files:	    src/misc1.c

Patch 7.1.190
Problem:    Cursor after end-of-line: "iA sentence.<Esc>)"
Solution:   Move cursor back and make motion inclusive.
Files:	    src/normal.c

Patch 7.1.191
Problem:    Win32 GUI: after patch 7.1.168 there is still a problem when
	    clicking in a scrollbar. (Juergen Jottkaerr)
Solution:   Don't check the input buffer when dragging the scrollbar.
Files:	    src/gui.c

Patch 7.1.192
Problem:    With Visual block selection, "s" and typing something, CTRL-C
	    doesn't stop Vim from repeating the replacement in other lines,
	    like happens for "I".
Solution:   Check for "got_int" to be set.
Files:	    src/ops.c

Patch 7.1.193
Problem:    Some Vim 5.x digraphs are missing in Vim 7, even though the
	    character pairs are not used. (Philippe de Muyter)
Solution:   Add those Vim 5.x digraphs that don't conflict with others.
Files:	    src/digraph.c

Patch 7.1.194
Problem:    ":echo glob('~/{}')" results in /home/user//.
Solution:   Don't add a slash if there already is one.
Files:	    src/os_unix.c

Patch 7.1.195
Problem:    '0 mark doesn't work for "~/foo ~ foo".
Solution:   Don't expand the whole file name, only "~/".
Files:	    src/mark.c

Patch 7.1.196 (extra)
Problem:    Win32 GUI: "\n" in a tooltip doesn't cause a line break. (Erik
	    Falor)
Solution:   Use the TTM_SETMAXTIPWIDTH message.
Files:	    src/gui_w32.c

Patch 7.1.197
Problem:    Mac: "make install" doesn't work when prefix defined.
Solution:   Pass different arguments to "make installruntime".  (Jjgod Jiang)
Files:	    src/Makefile

Patch 7.1.198
Problem:    Hang when using ":s/\n//gn". (Burak Gorkemli)
Solution:   Set "skip_match".
Files:	    src/ex_cmds.c

Patch 7.1.199
Problem:    Can't do command line completion for a specific file name
	    extension.
Solution:   When the pattern ends in "$" don't add a star for completion and
	    remove the "$" before matching with file names.
Files:	    runtime/doc/cmdline.txt, src/ex_getln.c

Patch 7.1.200 (after 7.1.177 and 7.1.182)
Problem:    Compiler warnings for uninitialized variables.
Solution:   Init variables.
Files:	    src/ex_cmds2.c, src/ex_docmd.c

Patch 7.1.201
Problem:    When reading stdin 'fenc' and 'ff are not set.
Solution:   Set the options after reading stdin. (Ben Schmidt)
Files:	    src/fileio.c

Patch 7.1.202
Problem:    Incomplete utf-8 byte sequence is not checked for validity.
Solution:   Check the bytes that are present for being valid. (Ben Schmidt)
Files:	    src/mbyte.c

Patch 7.1.203
Problem:    When 'virtualedit' is "onemore" then "99|" works but ":normal 99|"
	    doesn't.  (Andy Wokula)
Solution:   Check for "onemore" flag in check_cursor_col().
Files:	    src/misc2.c

Patch 7.1.204 (extra)
Problem:    Win32: Using the example at 'balloonexpr' the balloon disappears
	    after four seconds and then comes back again.  Also moves the
	    mouse pointer a little bit.  (Yongwei Wu)
Solution:   Set the autopop time to 30 seconds (the max value).  (Sergey
	    Khorev)  Move the mouse two pixels forward and one back to end up
	    in the same position (really!).
Files:	    src/gui_w32.c

Patch 7.1.205
Problem:    Can't get the operator in an ":omap".
Solution:   Add the "v:operator" variable. (Ben Schmidt)
Files:	    runtime/doc/eval.txt, src/eval.c, src/normal.c, src/vim.h

Patch 7.1.206
Problem:    Compiler warnings when using MODIFIED_BY.
Solution:   Add type casts. (Ben Schmidt)
Files:	    src/version.c

Patch 7.1.207
Problem:    Netbeans: "remove" cannot delete one line. 
Solution:   Remove partial lines and whole lines properly.  Avoid a memory
	    leak.  (Xavier de Gaye)
Files:	    src/netbeans.c

Patch 7.1.208
Problem:    On Alpha get an unaligned access error.
Solution:   Store the dictitem pointer before using it. (Matthew Luckie)
Files:	    src/eval.c

Patch 7.1.209
Problem:    GTK: When using the netrw plugin and doing ":gui" Vim hangs.
Solution:   Stop getting a selection after three seconds.  This is a hack.
Files:	    src/gui_gtk_x11.c

Patch 7.1.210
Problem:    Listing mapping for 0xdb fails when 'encoding' is utf-8. (Tony
	    Mechelynck)
Solution:   Recognize K_SPECIAL KS_EXTRA KE_CSI as a CSI byte.
Files:	    src/mbyte.c

Patch 7.1.211
Problem:    The matchparen plugin may take an unexpected amount of time, so
	    that it looks like Vim hangs.
Solution:   Add a timeout to searchpair(), searchpairpos(), search() and
	    searchpos().  Use half a second timeout in the plugin.
Files:	    runtime/doc/eval.txt, runtime/plugin/matchparen.vim, src/edit.c,
	    src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/normal.c,
	    src/proto/eval.pro, src/proto/ex_cmds2.pro, src/proto/search.pro,
	    src/search.c

Patch 7.1.212
Problem:    Accessing a byte before a line.
Solution:   Check that the column is 1 or more. (Dominique Pelle)
Files:	    src/edit.c

Patch 7.1.213
Problem:    A ":tabedit" command that results in the "swap file exists" dialog
	    and selecting "abort" doesn't close the new tab. (Al Budden)
Solution:   Pass "old_curwin" to do_exedit().
Files:	    src/ex_docmd.c

Patch 7.1.214
Problem:    ":1s/g\n\zs1//" deletes characters from the first line. (A Politz)
Solution:   Start replacing in the line where the match starts.
Files:	    src/ex_cmds.c

Patch 7.1.215
Problem:    It is difficult to figure out what syntax items are nested at a
	    certain position.
Solution:   Add the synstack() function.
Files:	    runtime/doc/eval.txt, src/eval.c, src/proto/syntax.pro,
	    src/syntax.c

Patch 7.1.216
Problem:    Variants of --remote-tab are not mentioned for "vim --help".
Solution:   Display optional -wait and -silent.
Files:	    src/main.c

Patch 7.1.217
Problem:    The "help-tags" tag may be missing from runtime/doc/tags when it
	    was generated during "make install".
Solution:   Add the "++t" argument to ":helptags" to force adding the tag.
Files:	    runtime/doc/Makefile, runtime/doc/various.txt, src/ex_cmds.c,
	    src/ex_cmds.h

Patch 7.1.218
Problem:    A syntax region without a "keepend", containing a region with
	    "extend" could be truncated at the end of the containing region.
Solution:   Do not call syn_update_ends() when there are no keepend items.
Files:	    src/syntax.c

Patch 7.1.219 (after 7.1.215)
Problem:    synstack() returns situation after the current character, can't
	    see the state for a one-character region.
Solution:   Don't update ending states in the requested column.
Files:	    runtime/doc/eval.txt, src/eval.c, src/hardcopy.c,
	    src/proto/syntax.pro, src/screen.c, src/spell.c, src/syntax.c

Patch 7.1.220
Problem:    When a ")" or word movement command moves the cursor back from the
	    end of the line it may end up on the trail byte of a multi-byte
	    character.  It's also moved back when it isn't needed.
Solution:   Add the adjust_cursor() function.
Files:	    src/normal.c

Patch 7.1.221
Problem:    When inserting a "(", triggering the matchparen plugin, the
	    following highlighting may be messed up.
Solution:   Before triggering the CursorMovedI autocommands update the display
	    to update the stored syntax stacks for the change.
Files:	    src/edit.c

Patch 7.1.222 (after 7.1.217)
Problem:    Wildcards in argument of ":helptags" are not expanded.  (Marcel
	    Svitalsky)
Solution:   Expand wildcards in the directory name.
Files:	    src/ex_cmds.c

Patch 7.1.223
Problem:    glob() doesn't work properly when 'shell' is "sh" or "bash" and
	    the expanded name contains spaces, '~', single quotes and other
	    special characters.  (Adri Verhoef, Charles Campbell)
Solution:   For Posix shells define a vimglob() function to list the matches
	    instead of using "echo" directly.
Files:	    src/os_unix.c

Patch 7.1.224
Problem:    When using "vim -F -o file1 file2" only one window is
	    right-to-left.  Same for "-H".  (Ben Schmidt)
Solution:   use set_option_value() to set 'rightleft'.
Files:	    src/main.c

Patch 7.1.225
Problem:    Using uninitialized value when XGetWMNormalHints() fails.
Solution:   Check the return value. (Dominique Pelle)
Files:	    src/os_unix.c

Patch 7.1.226
Problem:    Command line completion doesn't work when a file name contains a
	    '&' character.
Solution:   Accept all characters in a file name, except ones that end a
	    command or white space.
Files:	    src/ex_docmd.c

Patch 7.1.227
Problem:    Hang in syntax HL when moving over a ")". (Dominique Pelle)
Solution:   Avoid storing a syntax state in the wrong position in the list of
	    remembered states.
Files:	    src/syntax.c

Patch 7.1.228
Problem:    When 'foldmethod' is "indent" and a fold is created with ">>" it
	    can't be closed with "zc".  (Daniel Shahaf)
Solution:   Reset the "small" flag of a fold when adding a line to it.
Files:	    src/fold.c

Patch 7.1.229
Problem:    A fold is closed when it shouldn't when 'foldmethod' is "indent"
	    and backspacing a non-white character so that the indent increases.
Solution:   Keep the fold open after backspacing a character.
Files:	    src/edit.c

Patch 7.1.230
Problem:    Memory leak when executing SourceCmd autocommands.
Solution:   Free the memory. (Dominique Pelle)
Files:	    src/ex_cmds2.c

Patch 7.1.231
Problem:    When shifting lines the change is acted upon multiple times.
Solution:   Don't have shift_line() call changed_bytes.
Files:	    src/edit.c, src/ops.c, src/proto/edit.pro, src/proto/ops.pro

Patch 7.1.232 (after 7.1.207 and 7.1.211)
Problem:    Compiler warnings with MSVC.
Solution:   Add type casts. (Mike Williams)
Files:	    src/ex_cmds2.c, src/netbeans.c

Patch 7.1.233
Problem:    Crash when doing Insert mode completion for a user defined
	    command.  (Yegappan Lakshmanan)
Solution:   Don't use the non-existing command line.
Files:	    src/ex_getln.c

Patch 7.1.234
Problem:    When diff'ing three files the third one isn't displayed correctly.
	    (Gary Johnson)
Solution:   Compute the size of diff blocks correctly when merging blocks.
	    Compute filler lines correctly when scrolling.
Files:	    src/diff.c

Patch 7.1.235
Problem:    Pattern matching is slow when using a lot of simple patterns.
Solution:   Avoid allocating memory by not freeing it when it's not so much.
	    (Alexei Alexandrov)
Files:	    src/regexp.c

Patch 7.1.236
Problem:    When using 'incsearch' and 'hlsearch' a complicated pattern may
	    make Vim hang until CTRL-C is pressed.
Solution:   Add the 'redrawtime' option.
Files:	    runtime/doc/options.txt, src/ex_cmds.c, src/ex_docmd.c,
	    src/ex_getln.c, src/gui.c, src/misc1.c, src/normal.c,
	    src/option.c, src/quickfix.c, src/regexp.c, src/proto/regexp.pro,
	    src/proto/search.pro, src/search.c, src/screen.c,
	    src/option.h, src/spell.c, src/structs.h, src/syntax.c, src/tag.c,
	    src/vim.h

Patch 7.1.237
Problem:    Compiler warning on an Alpha processor in Motif code.
Solution:   Change a typecast. (Adri Verhoef)
Files:	    src/gui_motif.c

Patch 7.1.238
Problem:    Using the 'c' flag with searchpair() may cause it to fail.  Using
	    the 'r' flag doesn't work when 'wrapscan' is set.  (A.Politz)
Solution:   Only use the 'c' flag for the first search, not for repeating.
	    When using 'r' imply 'W'. (Antony Scriven)
Files:	    src/eval.c

Patch 7.1.239 (after 7.1.233)
Problem:    Compiler warning for sprintf() argument.
Solution:   Add a typecast. (Nico Weber)
Files:	    src/ex_getln.c

Patch 7.1.240
Problem:    When "gUe" turns a German sharp s into SS the operation stops
	    before the end of the word.  Latin2 has the same sharp s but it's
	    not changed to SS there.
Solution:   Make sure all the characters are operated upon.  Detect the sharp
	    s in latin2.  Also fixes that changing case of a multi-byte
	    character that changes the byte count doesn't always work.
Files:	    src/ops.c

Patch 7.1.241
Problem:    Focus change events not always ignored.  (Erik Falor)
Solution:   Ignore K_IGNORE in Insert mode in a few more places.
Files:	    src/edit.c

Patch 7.1.242 (after 7.1.005)
Problem:    "cib" doesn't work properly on "(x)". (Tim Pope)
Solution:   Use ltoreq() instead of lt().  Also fix "ciT" on "<a>x</a>".
Files:	    src/search.c

Patch 7.1.243 (after 7.1.240)
Problem:    "U" doesn't work on all text in Visual mode. (Adri Verhoef)
Solution:   Loop over all the lines to be changed.  Add tests for this.
Files:	    src/ops.c, src/testdir/test39.in, src/testdir/test39.ok

Patch 7.1.244
Problem:    GUI may have part of the command line cut off.
Solution:   Don't round the number of lines up, always round down.
	    (Tony Houghton, Scott Dillard)
Files:	    src/gui.c

Patch 7.1.245
Problem:    Pressing CTRL-\ three times causes Vim to quit.  (Ranganath Rao).
	    Also for f CTRL-\ CTRL-\.
Solution:   When going to cooked mode in mch_delay() set a flag to ignore
	    SIGQUIT.
Files:	    src/os_unix.c

Patch 7.1.246
Problem:    Configure hangs when the man pager is something strange. (lorien)
Solution:   Set MANPAGER and PAGER to "cat". (Micah Cowan)
Files:	    src/auto/configure, src/configure.in

Patch 7.1.247
Problem:    When using Netbeans backspacing in Insert mode skips a character
	    now and then. (Ankit Jain)
Solution:   Avoid calling netbeans_removed(), it frees the line pointer.
	    (partly by Dominique Pelle).
Files:	    src/misc1.c

Patch 7.1.248
Problem:    Can't set the '" mark.  Can't know if setpos() was successful.
Solution:   Allow setting the '" mark with setpos().  Have setpos() return a
	    value indicating success/failure.
Files:	    runtime/doc/eval.txt, src/eval.c, src/mark.c

Patch 7.1.249
Problem:    After "U" the cursor can be past end of line.  (Adri Verhoef)
Solution:   Adjust the cursor position in u_undoline().
Files:	    src/undo.c

Patch 7.1.250
Problem:    ":setglobal fenc=anything" gives an error message in a buffer
	    where 'modifiable' is off.  (Ben Schmidt)
Solution:   Don't give an error if 'modifiable' doesn't matter.
Files:	    src/option.c

Patch 7.1.251
Problem:    Using freed memory when spell checking enabled.
Solution:   Obtain the current line again after calling spell_move_to().
	    (Dominique Pelle)
Files:	    src/screen.c

Patch 7.1.252 (after 7.1.243)
Problem:    Test 39 fails when the environment has a utf-8 locale. (Dominique
	    Pelle)
Solution:   Force 'encoding' to be latin1.
Files:	    src/testdir/test39.in

Patch 7.1.253
Problem:    ":sort" doesn't work in a one line file. (Patrick Texier)
Solution:   Don't sort if there is only one line. (Dominique Pelle)
Files:	    src/ex_cmds.c

Patch 7.1.254
Problem:    Tests 49 and 55 fail when the locale is French.
Solution:   Using C messages for test 49.  Filter the error message in test 55
	    such that it works when the number is halfway the message.
Files:	    src/testdir/test49.in, src/testdir/test55.in

Patch 7.1.255
Problem:    Vim doesn't support utf-32. (Yongwei Wu)
Solution:   Add aliases for utf-32, it's the same as ucs-4.
Files:	    src/mbyte.c

Patch 7.1.256
Problem:    findfile() also returns directories.
Solution:   Cleanup the code for finding files and directories in a list of
	    directories.  Remove the ugly global ff_search_ctx.
Files:	    src/eval.c, src/misc2.c, src/vim.h, src/tag.c

Patch 7.1.257
Problem:    Configure can't always find the Tcl header files.
Solution:   Also look in /usr/local/include/tcl$tclver and
	    /usr/include/tcl$tclver (James Vega)
Files:	    src/auto/configure, src/configure.in

Patch 7.1.258
Problem:    Crash when doing "d/\n/e" and 'virtualedit' is "all". (Andy Wokula)
Solution:   Avoid that the column becomes negative.  Also fixes other problems
	    with the end of a pattern match is in column zero. (A.Politz)
Files:	    src/search.c

Patch 7.1.259
Problem:    Cursor is in the wrong position when 'rightleft' is set,
	    'encoding' is "utf-8" and on an illegal byte.  (Dominique Pelle)
Solution:   Only put the cursor in the first column when actually on a
	    double-wide character.  (Yukihiro Nakadaira)
Files:	    src/screen.c

Patch 7.1.260
Problem:    Cursor positioning problem after ^@ wrapping halfway when
	    'encoding' is utf-8.
Solution:   Only count a position for printable characters.  (partly by
	    Yukihiro Nakadaira)
Files:	    src/charset.c

Patch 7.1.261
Problem:    When a 2 byte BOM is detected Vim uses UCS-2, which doesn't work
	    for UTF-16 text. (Tony Mechelynck)
Solution:   Default to UTF-16.
Files:	    src/fileio.c, src/testdir/test42.ok

Patch 7.1.262
Problem:    Can't get the process ID of Vim.
Solution:   Implement getpid().
Files:	    src/eval.c, runtime/doc/eval.txt

Patch 7.1.263
Problem:    The filetype can consist of two dot separated names.  This works
	    for syntax and ftplugin, but not for indent. (Brett Stahlman)
Solution:   Use split() and loop over each dot separated name.
Files:	    runtime/indent.vim

Patch 7.1.264
Problem:    Crash when indenting lines. (Dominique Pelle)
Solution:   Set the cursor column when changing the cursor line.
Files:	    src/ops.c, src/misc1.c

Patch 7.1.265
Problem:    When 'isfname' contains a space, cmdline completion can hang.
	    (James Vega)
Solution:   Reset the "len" variable.
Files:	    src/ex_docmd.c

Patch 7.1.266
Problem:    When the version string returned by the terminal contains
	    unexpected characters, it is used as typed input. (James Vega)
Solution:   Assume the escape sequence ends in a letter.
Files:	    src/term.c

Patch 7.1.267
Problem:    When changing folds cursor may be positioned in the wrong place.
Solution:   Call changed_window_setting_win() instead of
	    changed_window_setting().
Files:	    src/fold.c

Patch 7.1.268
Problem:    Always shows "+" at end of screen line with: ":set
	    listchars=eol:$,extends:+ nowrap list cursorline" (Gary Johnson)
Solution:   Check for lcs_eol_one instead of lcs_eol.
Files:	    src/screen.c

Patch 7.1.269
Problem:    The matchparen plugin has an arbitrary limit for the number of
	    lines to look for a match.
Solution:   Rely on the searchpair() timeout.
Files:	    runtime/plugin/matchparen.vim

Patch 7.1.270
Problem:    ":?foo?" matches in current line since patch 7.1.025. (A.Politz)
Solution:   Remove the SEARCH_START flag.
Files:	    src/ex_docmd.c, src/search.c

Patch 7.1.271
Problem:    In a Vim build without autocommands, checking a file that was
	    changed externally causes the current buffer to be changed
	    unexpectedly.  (Karsten Hopp)
Solution:   Store "curbuf" instead of "buf".
Files:	    src/fileio.c

Patch 7.1.272
Problem:    The special buffer name [Location List] is not used for a buffer
	    displayed in another tab page.
Solution:   Use FOR_ALL_TAB_WINDOWS instead of FOR_ALL_WINDOWS. (Hiroaki
	    Nishihara)
Files:	    src/buffer.c

Patch 7.1.273
Problem:    When profiling on Linux Vim exits early. (Liu Yubao)
Solution:   When profiling don't exit on SIGPROF.
Files:	    src/Makefile, src/os_unix.c

Patch 7.1.274 (after 7.1.272)
Problem:    Compiler warning for optimized build.
Solution:   Init win to NULL.
Files:	    src/buffer.c

Patch 7.1.275 (extra)
Problem:    Mac: ATSUI and 'antialias' don't work properly together.
Solution:   Fix this and the input method. (Jjgod Jiang)
Files:	    src/vim.h, src/gui_mac.c

Patch 7.1.276
Problem:    "gw" uses 'formatexpr', even though the docs say it doesn't.
Solution:   Don't use 'formatexpr' for "gw".
Files:	    src/vim.h, src/edit.c, src/ops.c, src/proto/ops.pro

Patch 7.1.277
Problem:    Default for 'paragraphs' misses some items (Colin Watson)
Solution:   Add TP, HP, Pp, Lp and It to 'paragraphs'. (James Vega)
Files:	    runtime/doc/options.txt, src/option.c

Patch 7.1.278 (extra, after 7.1.275)
Problem:    Build failure when USE_CARBONKEYHANDLER is not defined.
Solution:   Remove #ifdef.
Files:	    src/gui_mac.c

Patch 7.1.279
Problem:    When using cscope temporary files are left behind.
Solution:   Send the quit command to cscope and give it two seconds to exit
	    nicely before killing it. (partly by Dominique Pelle)
Files:	    src/if_cscope.c

Patch 7.1.280  (after 7.1.275)
Problem:    Mac: build problems when not using multibyte feature. (Nicholas
	    Stallard)
Solution:   Don't define USE_IM_CONTROL when not using multibyte.
Files:	    src/vim.h

Patch 7.1.281 (after 7.1.279)
Problem:    sa.sa_mask is not initialized.  Cscope may not exit.
Solution:   Use sigemptyset().  Use SIGKILL instead of SIGTERM. (Dominique
	    Pelle)
Files:	    src/if_cscope.c

Patch 7.1.282 (extra)
Problem:    Win64: Edit with Vim context menu isn't installed correctly.
	    Compiler warnings and a few other things.
Solution:   Add [ and ] to entry of class name.  Use UINT_PTR instead of UINT.
	    And a fixes for the other things. (George V.  Reilly)
Files:	    src/GvimExt/Makefile, src/dosinst.c, src/if_ole.cpp, src/if_ole.h,
	    src/if_ole.idl, src/INSTALLpc.txt,  src/Make_mvc.mak,
	    src/os_win32.c,

Patch 7.1.283
Problem:    Non-extra part for 7.1.282.
Solution:   Various changes.
Files:	    src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/main.c,
	    src/mark.c, src/netbeans.c, src/popupmnu.c, src/vim.h,
	    src/window.c

Patch 7.1.284
Problem:    Compiler warnings for functions without prototype.
Solution:   Add the function prototypes. (Patrick Texier)
Files:	    src/eval.c, src/quickfix.c

Patch 7.1.285 (extra)
Problem:    Mac: dialog hotkeys don't work.
Solution:   Add hotkey support. (Dan Sandler)
Files:	    src/gui_mac.c

Patch 7.1.286 (after 7.1.103)
Problem:    "w" at the end of the buffer moves the cursor past the end of the
	    line. (Markus Heidelberg)
Solution:   Move the cursor back from the NUL when it was moved forward.
Files:	    src/normal.c

Patch 7.1.287
Problem:    Crash when reversing a list after using it. (Andy Wokula)
Solution:   Update the pointer to the last used element. (Dominique Pelle)
Files:	    src/eval.c

Patch 7.1.288 (after 7.1.281)
Problem:    Cscope still leaves behind temp files when using gvim.
Solution:   When getting the ECHILD error loop for a while until cscope exits.
	    (Dominique Pelle)
Files:	    if_cscope.c

Patch 7.1.289
Problem:    When EXITFREE is defined and 'acd' is set freed memory is used.
	    (Dominique Pelle)
Solution:   Reset p_acd before freeing all buffers.
Files:	    src/misc2.c

Patch 7.1.290
Problem:    Reading bytes that were not written when spell checking and a line
	    has a very large indent.
Solution:   Don't copy the start of the next line when it only contains
	    spaces. (Dominique Pelle)
Files:	    src/spell.c

Patch 7.1.291 (after 7.1.288)
Problem:    Compiler warning.
Solution:   Change 50 to 50L.
Files:	    src/if_cscope.c

Patch 7.1.292
Problem:    When using a pattern with "\@<=" the submatches can be wrong.
	    (Brett Stahlman)
Solution:   Save the submatches when attempting a look-behind match.
Files:	    src/regexp.c

Patch 7.1.293
Problem:    Spell checking considers super- and subscript characters as word
	    characters.
Solution:   Recognize the Unicode super and subscript characters.
Files:	    src/spell.c

Patch 7.1.294
Problem:    Leaking memory when executing a shell command.
Solution:   Free memory when not able to save for undo. (Dominique Pelle)
Files:	    src/ex_cmds.c

Patch 7.1.295
Problem:    Vimtutor only works with vim, not gvim.
Solution:   Add the -g flag to vimtutor. (Dominique Pelle)  Add gvimtutor.
Files:	    src/Makefile, src/gvimtutor, src/vimtutor, runtime/doc/vimtutor.1

Patch 7.1.296
Problem:    SELinux is not supported.
Solution:   Detect the selinux library and use mch_copy_sec(). (James Vega)
Files:	    src/auto/configure, src/config.h.in, src/configure.in,
	    src/fileio.c, src/memfile.c, src/os_unix.c, src/proto/os_unix.pro

Patch 7.1.297
Problem:    When using the search/replace dialog the parenmatch highlighting
	    can be wrong. (Tim Duncan)
Solution:   In the GUI redraw function invoke the CursorMoved autocmd.
Files:	    src/gui.c

Patch 7.1.298 (after 7.1.295)
Problem:    src/gvimtutor is not distributed.
Solution:   Add it to the list of distributed files.
Files:	    Filelist

Patch 7.1.299
Problem:    Filetype detection doesn't work properly for file names ending in
	    a part that is ignored and contain a space or other special
	    characters.
Solution:   Escape the special characters using the new fnameescape function.
Files:	    runtime/doc/eval.txt, runtime/filetype.vim, src/eval.c,
	    src/ex_getln.c, src/proto/ex_getln.pro, src/vim.h

Patch 7.1.300
Problem:    Value of asmsyntax argument isn't checked for valid characters.
Solution:   Only accepts letters and digits.
Files:	    runtime/filetype.vim

Patch 7.1.301
Problem:    When the "File/Save" menu is used in Insert mode, a tab page label
	    is not updated to remove the "+".
Solution:   Call draw_tabline() from showruler(). (Bjorn Winckler)
Files:	    src/screen.c

Patch 7.1.302 (after 7.1.299)
Problem:    Compilation error on MS-Windows.
Solution:   Don't use xp_shell when it's not defined.
Files:	    src/ex_getln.c

Patch 7.1.303 (after 7.1.302)
Problem:    Compilation error on MS-Windows, again.
Solution:   Declare p.
Files:	    src/ex_getln.c

Patch 7.1.304
Problem:    Shortpath_for_invalid_fname() does not work correctly and is
	    unnecessary complex.
Solution:   Clean up shortpath_for_invalid_fname(). (mostly by Yegappan
	    Lakshmanan)
Files:	    src/eval.c

Patch 7.1.305
Problem:    Editing a compressed file with special characters in the name
	    doesn't work properly.
Solution:   Escape special characters.
Files:	    runtime/autoload/gzip.vim

Patch 7.1.306
Problem:    Some Unicode characters are handled like word characters while
	    they are symbols.
Solution:   Adjust the table for Unicode classification.
Files:	    src/mbyte.c

Patch 7.1.307
Problem:    Many warnings when compiling with Python 2.5.
Solution:   Use ssize_t instead of int for some types. (James Vega)
Files:	    src/if_python.c

Patch 7.1.308
Problem:    When in readonly mode ":options" produces an error.
Solution:   Reset 'readonly'. (Gary Johnson)
Files:	    runtime/optwin.vim

Patch 7.1.309
Problem:    Installing and testing with a shadow directory doesn't work.
	    (James Vega)
Solution:   Add "po" to the list of directories to link.  Also link the Vim
	    scripts in testdir.  And a few more small fixes.
Files:	    src/Makefile

Patch 7.1.310
Problem:    Incomplete utf-8 byte sequence at end of the file is not detected.
	    Accessing memory that wasn't written.
Solution:   Check the last bytes in the buffer for being a valid utf-8
	    character. (mostly by Ben Schmidt)
	    Also fix that the reported line number of the error was wrong.
Files:	    src/fileio.c

Patch 7.1.311
Problem:    Compiler warning for missing sentinel in X code.
Solution:   Change 0 to NULL. (Markus Heidelberg)
Files:	    src/mbyte.c

Patch 7.1.312
Problem:    The .po files have mistakes in error numbers.
Solution:   Search for these mistakes in the check script. (Dominique Pelle)
Files:	    src/po/check.vim

Patch 7.1.313
Problem:    When the netbeans interface setModified call is used the status
	    lines and window title are not updated.
Solution:   Redraw the status lines and title. (Philippe Fremy)
Files:	    src/netbeans.c

Patch 7.1.314
Problem:    The value of 'pastetoggle' is written to the session file without
	    any escaping. (Randall Hansen)
Solution:   Use put_escstr(). (Ben Schmidt)
Files:	    src/option.c

Patch 7.1.315
Problem:    Crash with specific search pattern using look-behind match.
	    (Andreas Politz)
Solution:   Also save the value of "need_clear_subexpr".
Files:	    src/regexp.c

Patch 7.1.316
Problem:    When 'cscopetag' is set ":tag" gives an error message instead of
	    going to the next tag in the tag stack.
Solution:   Don't call do_cstag() when there is no argument. (Mark Goldman)
Files:	    src/ex_docmd.c

Patch 7.1.317
Problem:    Compiler warnings in Motif calls.
Solution:   Change zero to NULL. (Dominique Pelle)
Files:	    src/gui_motif.c

Patch 7.1.318
Problem:    Memory leak when closing xsmp connection.  Crash on exit when
	    using Lesstif.
Solution:   Don't close the X display to work around a Lesstif bug.  Free
	    clientid.  Also fix a leak for Motif and Athena. (Dominique Pelle)
Files:	    src/gui_x11.c, src/os_unix.c

Patch 7.1.319
Problem:    When a register has an illegal utf-8 sequence, pasting it on the
	    command line causes an illegal memory access.
Solution:   Use mb_cptr2char_adv(). (Dominique Pelle)
Files:	    src/ex_getln.c

Patch 7.1.320 (extra)
Problem:    Win64: Warnings while compiling Python interface.
Solution:   Use PyInt in more places.  Also update version message for the
	    console. (George Reilly)
Files:	    src/if_python.c, src/version.c

Patch 7.1.321 (extra)
Problem:    Win32 / Win64: Install file is outdated.
Solution:   Update the text for recent compiler. (George Reilly)
Files:	    src/INSTALLpc.txt

Patch 7.1.322
Problem:    Can't get start of Visual area in an <expr> mapping.
Solution:   Add the 'v' argument to getpos().
Files:	    runtime/doc/eval.txt, src/eval.c

Patch 7.1.323
Problem:    Test 19 fails with some termcaps. (Dominique Pelle)
Solution:   Set the t_kb and t_kD termcap values.
Files:	    src/testdir/test19.in, src/testdir/test38.in

Patch 7.1.324
Problem:    File name path length on Unix is limited to 1024.
Solution:   Use PATH_MAX when it's more than 1000.
Files:	    src/os_unix.h

Patch 7.1.325
Problem:    When editing a command line that's longer than available space in
	    the window, the characters at the end are in reverse order.
Solution:   Increment the insert position even when the command line doesn't
	    fit.  (Ingo Karkat)
Files:	    src/ex_getln.c

Patch 7.1.326
Problem:    ":s!from!to!" works, but ":smagic!from!to!" doesn't.  It sees the
	    "!" as a flag to to the command.  Same for ":snomagic". (Johan
	    Spetz)
Solution:   When checking for a forced command also ignore ":smagic" and
	    ":snomagic". (Ian Kelling)
Files:	    src/ex_docmd.c

Patch 7.1.327
Problem:    The GUI tutor is installed when there is no GUI version.
Solution:   Only install gvimtutor when building a GUI version.
Files:	    src/Makefile

Patch 7.1.328
Problem:    Crash when using Cygwin and non-posix path name in tags file.
Solution:   Use separate buffer for posix path. (Ben Schmidt)
Files:	    src/os_unix.c

Patch 7.1.329
Problem:    When the popup menu is removed a column of cells, the right halve
	    of double-wide characters, may not be redrawn.
Solution:   Check if the right halve of a character needs to be redrawn.
	    (Yukihiro Nakadaira)
Files:	    src/screen.c

Patch 7.1.330
Problem:    Reading uninitialized memory when using Del in replace mode.
Solution:   Use utfc_ptr2len_len() instead of mb_ptr2len(). (Dominique Pelle)
Files:	    src/misc1.c


Warning for missing sentinel in gui_xmldlg.c. (Dominique Pelle)

A search offset from the end of a match didn't work properly for multi-byte
characters.  (Yukihiro Nakadaira)

When displaying the value of 'key' don't show "*****" when the value is empty.
(Ben Schmidt)

Internal error when compiled with EXITFREE and using the nerd_tree plugin.
Set last_msg_hist to NULL when history becomes empty.  Call
free_all_functions() after garbage collection.  (Dominique Pelle)

GTK with XIM: <S-Space> does not work.  (Yukihiro Nakadaira)

Some shells do not support "echo -n", which breaks glob().  Use "echo" instead
of "echo -n $1; echo".  (Gary Johnson)

"echo 22,44" printed "22" on top of the command, the error messages caused
the rest not to be cleared.  Added the need_clr_eos flag.

Netbeans events are handled while updating the screen, causing a crash.
Change the moment when events are handled.  Rename nb_parse_messages() to
netbeans_parse_messages().  (Xavier de Gaye)

Test 11 was broken after patch 7.1.186 on Win32 console. (Daniel Shahaf)
Use shellescape() on the file name.

IM was turned off in im_preedit_end_cb() for no good reason.  (Takuhiro
Nishioka)

A corrupted spell file could cause Vim to use lots of memory.  Better
detection for running into the end of the file.  (idea from James Vega)

Mac: Included a patch to make it build with GTK.  Moved language init to
mac_lang_init() function.  (Ben Schmidt)

Problem with 'wildmenu' after ":lcd", up/down arrows don't work. (Erik Falor)

Fix configure.in to avoid "implicitly declared" warnings when running
configure.

Fixed a memory leak when redefining a keymap. (Dominique Pelle)

Setting 'pastetoggle' to "jj" didn't work.

'ic' and 'smartcase' don't work properly when using \%V in a search pattern.
(Kana Natsuno)

Patch 7.2a.001
Problem:    On some systems X11/Xlib.h exists (from X11-dev package) but
	    X11/Intrinsic.h does not (in Xt-dev package).  This breaks the
	    build.  Also, on Solaris 9 sys/ptem.h isn't found.
Solution:   Have configure only accept X11 when X11/Intrinsic.h exists.
	    Check for sys/ptem.h while including sys/stream.h. (Vladimir
	    Marek)
Files:	    src/auto/configure, src/configure.in

Patch 7.2a.002
Problem:    getbufvar(N, "") gets the dictionary of the current buffer instead
	    of buffer N.
Solution:   Set curbuf before calling find_var_in_ht(). (Kana Natsuno)
Files:	    src/eval.c

Patch 7.2a.003
Problem:    Leaking memory when using ":file name" and using access control
	    lists.
Solution:   Invoke mch_free_acl() in vim_rename(). (Dominique Pelle)
Files:	    src/fileio.c

Patch 7.2a.004
Problem:    Some systems can't get spell files by ftp.
Solution:   Use http when it looks like it's possible. (James Vega)
Files:	    runtime/autoload/spellfile.vim

Patch 7.2a.005
Problem:    A few error messages use confusing names.  Misspelling.
Solution:   Change "dissallows" to "disallows". (Dominique Pelle)  Change
	    "number" to "Number".
Files:	    src/eval.c, src/fileio.c

Patch 7.2a.006
Problem:    Reading past NUL in a string.
Solution:   Check for invalid utf-8 byte sequence. (Dominique Pelle)
Files:	    src/charset.c

Patch 7.2a.007
Problem:    ":let v = 1.2.3" was OK in Vim 7.1, now it gives an error.
Solution:   Don't look for a floating point number after the "." operator.
Files:	    src/eval.c

Patch 7.2a.008
Problem:    printf("%g", 1) doesn't work.
Solution:   Convert Number to Float when needed.
Files:	    src/message.c

Patch 7.2a.009
Problem:    cygwin_conv_to_posix_path() does not specify buffer size.
Solution:   Use new Cygwin function: cygwin_conv_path(). (Corinna Vinschen)
Files:	    src/main.c, src/os_unix.c

Patch 7.2a.010
Problem:    When a file name has an illegal byte sequence Vim may read
	    uninitialised memory.
Solution:   Don't use UTF_COMPOSINGLIKE() on an illegal byte.  In
	    msg_outtrans_len_attr() use char2cells() instead of ptr2cells().
	    In utf_ptr2char() don't check second byte when first byte is
	    illegal.  (Dominique Pelle)
Files:	    src/mbyte.c, src/message.c

Patch 7.2a.011
Problem:    The Edit/Startup Settings menu doesn't work.
Solution:   Expand environment variables. (Ben Schmidt)
Files:	    runtime/menu.vim

Patch 7.2a.012
Problem:    Compiler warnings for casting int to pointer.
Solution:   Add cast to long in between. (Martin Toft)
Files:	    src/gui_gtk_x11.c

Patch 7.2a.013
Problem:    shellescape() does not escape "%" and "#" characters.
Solution:   Add find_cmdline_var() and use it when the second argument to
	    shellescape() is non-zero.
Files:	    runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c,
	    src/proto/ex_docmd.pro, src/proto/misc2.pro, src/misc2.c

Patch 7.2a.014
Problem:    Problem with % in message.
Solution:   Put % in single quotes.
Files:	    src/eval.c

Patch 7.2a.015 (after 7.2a.010)
Problem:    Misaligned messages.
Solution:   Compute length of unprintable chars correctly.
Files:	    src/message.c

Patch 7.2a.016
Problem:    Using CTRL-W v in the quickfix window results in two quickfix
	    windows, which is not allowed.  ":tab split" should be allowed to
	    open a new quickfix window in another tab.
Solution:   For CTRL-W v instead of splitting the window open a new one.
	    When using ":tab" do allow splitting the quickfix window (was
	    already included in patch 7.2a.013).
Files:	    src/window.c

Patch 7.2a.017
Problem:    ":doautoall" executes autocommands for all buffers instead of just
	    for loaded buffers.
Solution:   Change "curbuf" to "buf".
Files:	    src/fileio.c

Patch 7.2a.018
Problem:    Compiler warnings when compiling with Gnome. (Tony Mechelynck)
Solution:   Add type casts.
Files:	    src/gui_gtk_x11.c

Patch 7.2a.019
Problem:    ":let &g:tw = 44" sets the local option value. (Cyril Slobin)
Solution:   Use get_varp_scope() instead of get_varp(). (Ian Kelling)
Files:	    src/option.c

There is no way to avoid adding /usr/local/{include|lib} to the build
commands.  Add the --with-local-dir argument to configure. (Michael
Haubenwallner)

When using CTRL-D after ":help", the number of matches could be thousands.
Restrict to TAG_MANY to avoid this taking too long. (Ian Kelling)

The popup menu could be placed at a weird location.  Caused by w_wcol computed
by curs_columns().  (Dominique Pelle)

Overlapping STRCPY() arguments when using %r item in 'errorformat'.  Use
STRMOVE() instead. (Ralf Wildenhues)

Mac: On Leopard gvim, when using the mouse wheel nothing would happen until
another event occurs, such as moving the mouse.  Then the recorded scrolling
would take place all at once. (Eckehard Berns)

Solution for cursor color not reflecting IM status for GTK 2.  Add
preedit_is_active flag. (SungHyun Nam)

filereadable() can hang on a FIFO on Linux.  Use open() instead of fopen(),
with O_NONBLOCK. (suggested by Lars Kotthoff)

Included patch to support Perl 5.10. (Yasuhiro Matsumoto)

When files are dropped on gvim while the screen is being updated, ignore the
drop command to avoid freeing memory that is being used.

In a terminal, when drawing the popup menu over double-wide characters, half
characters may not be cleared properly. (Yukihiro Nakadaira)

The #ifdef for including "vimio.h" was inconsistent.  In a few files it
depended on MSWIN, which isn't defined until later.

Patch 7.2b.001
Problem:    Compilation problem: mb_fix_col() missing with multi-byte feature
	    but without GUI or clipboard.
Solution:   Remove #ifdef.
Files:	    src/mbyte.c

Patch 7.2b.002
Problem:    Compiler warnings for signed/unsigned mismatch.
Solution:   Add type casts.
Files:	    src/screen.c

Patch 7.2b.003
Problem:    Still a compilation problem, check_col() and check_row() missing.
Solution:   Add FEAT_MBYTE to the #if.
Files:	    src/ui.c

Patch 7.2b.004
Problem:    Trying to free memory for a static string when using ":helpgrep".
	    (George Reilly)
Solution:   Set 'cpo' to empty_option instead of an empty string.  Also for
	    searchpair() and substitute().
Files:	    src/quickfix.c, src/eval.c

Patch 7.2b.005
Problem:    The special character "!" isn't handled properly in shellescape().
	    (Jan Minar)
Solution:   Escape "!" when using a "csh" like shell and with
	    shellescape(s, 1).  Twice for both.  Also escape <NL>.
Files:	    src/misc2.c

Patch 7.2b.006
Problem:    Reading past end of string when reading info from tags line.
Solution:   Break the loop when encountering a NUL. (Dominique Pelle)
Files:	    src/tag.c

Patch 7.2b.007
Problem:    Part of a message cannot be translated.
Solution:   Put _() around the message.
Files:	    src/search.c

Patch 7.2b.008
Problem:    A few filetypes are not detected or not detected properly.
Solution:   Add filetype detection patterns. (Nikolai Weibull)
Files:	    runtime/filetype.vim

Patch 7.2b.009
Problem:    Reading past end of screen line. (Epicurus)
Solution:   Avoid going past the value of Columns.
Files:	    src/screen.c

Patch 7.2b.010
Problem:    ":mksession" doesn't work for ":map , foo", ":sunmap ,". (Ethan
	    Mallove)
Solution:   Check for "nxo", "nso" and other strange mapping combinations.
Files:	    src/getchar.c

Patch 7.2b.011
Problem:    Configure for TCL ends up with include file in compiler command.
	    (Richard Hogg)
Solution:   Delete items from $TCL_DEFS that do not start with a dash.
Files:	    src/auto/configure, src/configure.in

Patch 7.2b.012
Problem:    Build failure with +multi_byte but without +diff.
Solution:   Add #ifdef. (Patrick Texier)
Files:	    src/main.c

Patch 7.2b.013
Problem:    Build fails with tiny features and Perl. (Dominique Pelle)
Solution:   Define missing functions.  Also when compiling Python.
Files:	    src/if_perl.xs, src/if_python.c

Patch 7.2b.014
Problem:    Configure uses an unsafe temp file to store commands.
Solution:   Create the temp file in local directory.
Files:	    src/auto/configure, src/configure.in

Patch 7.2b.015
Problem:    Build fails on Mac when using Aap.
Solution:   Fix typo in configure script.
Files:	    src/auto/configure, src/configure.in

Patch 7.2b.016
Problem:    Build fails with normal features but without +autocmd.
Solution:   Fix #ifdefs. (Ian Kelling)
Files:	    src/eval.c, src/ex_cmds.c, src/quickfix.c, src/option.c,
	    src/ex_docmd.c

Patch 7.2b.017
Problem:    "vim -O foo foo" results in only one window.  (Zdenek Sekera)
Solution:   Handle result of ATTENTION prompt properly. (Ian Kelling)
Files:	    src/main.c

Patch 7.2b.018
Problem:    When doing command line completion on a file name for a csh-like
	    shell argument a '!' character isn't escaped properly.
Solution:   Add another backslash.
Files:	    src/ex_getln.c, src/misc2.c, src/proto/misc2.pro, src/screen.c

Patch 7.2b.019 (extra)
Problem:    Win32: Various compiler warnings.
Solution:   Use __w64 attribute.  Comment-out unused parameters.  Adjust a few
	    #ifdefs. (George Reilly)
Files:	    src/gui_w48.c, src/GvimExt/gvimext.cpp, src/Make_mvc.mak,
	    src/os_mswin.c, src/os_win32.c, src/vim.h

Patch 7.2b.020
Problem:    ":sort n" doesn't handle negative numbers. (James Vega)
Solution:   Include '-' in the number.
Files:	    src/charset.c, src/ex_cmds.c

Patch 7.2b.021
Problem:    Reloading doesn't read the BOM correctly. (Steve Gardner)
Solution:   Accept utf-8 BOM when specified file encoding is utf-8.
Files:	    src/fileio.c

Patch 7.2b.022
Problem:    When using ":normal" while updating the status line the count of
	    an operator is lost. (Dominique Pelle)
Solution:   Save and restore "opcount".
Files:	    src/ex_docmd.c, src/globals.h, src/normal.c

Patch 7.2b.023
Problem:    Crash when using the result of synstack(0,0). (Matt Wozniski)
Solution:   Check for v_list to be NULL in a few more places.
Files:	    src/eval.c

Patch 7.2b.024
Problem:    Using ":gui" while the netrw plugin is active causes a delay in
	    updating the display.
Solution:   Don't check for terminal codes when starting the GUI.
Files:	    src/term.c

Patch 7.2b.025
Problem:    When the CursorHold event triggers a pending count is lost.
	    (Juergen Kraemer)
Solution:   Save the counts and restore them.
Files:	    src/normal.c, src/structs.h

Patch 7.2b.026
Problem:    The GTK 2 file chooser causes the ~/.recently-used.xbel file to be
	    written over and over again.  This may cause a significant
	    slowdown. (Guido Berhoerster)
Solution:   Don't use the GTK 2 file chooser.
Files:	    src/gui_gtk.c

Patch 7.2b.027
Problem:    Memory leak for Python, Perl, etc. script command with end marker.
Solution:   Free the memory of the end marker. (Andy Kittner)
Files:	    src/ex_getln.c

Patch 7.2b.028
Problem:    Reading uninitialized memory when doing ":gui -f". (Dominique
	    Pelle)
Solution:   Don't position the cursor when the screen size is invalid.
Files:	    src/gui.c

Patch 7.2b.029
Problem:    ":help a" doesn't jump to "a" tag in docs. (Tony Mechelynck)
Solution:   Get all tags and throw away more than TAG_MANY after sorting.
	    When there is no argument find matches for "help" to avoid a long
	    delay.
Files:	    src/ex_cmds.c, src/ex_getln.c

Patch 7.2b.030
Problem:    When changing the value of t_Co from 8 to 16 the Visual
	    highlighting keeps both reverse and a background color.
Solution:   Remove the attribute when setting the default highlight color.
	    (Markus Heidelberg)
Files:	    src/syntax.c

Error when cancelling completion menu and auto-formatting. (fixed by Ian
Kelling)

Patch 7.2c.001
Problem:    ":let x=[''] | let x += x" causes hang. (Matt Wozniski)
Solution:   Only insert elements up to the original length of the List.
Files:	    runtime/doc/eval.txt, src/eval.c

Patch 7.2c.002
Problem:    fnameescape() doesn't handle a leading '+' or '>'. (Jan Minar)
Solution:   Escape a leading '+' and '>'.  And a single '-'.
Files:	    runtime/doc/eval.txt, src/ex_getln.c

Patch 7.2c.003
Problem:    Searching for "foo\%[bar]\+" gives a "Corrupted regexp program"
	    error. (Joachim Hofmann)
Solution:   Mark the \%[] item as not being simple.
Files:	    src/regexp.c

On Vista access to system directories is virtualized. (Michael Mutschler)
Adjusted the manifest file to avoid this. (George Reilly)

Memory leak when using CTRL-C to cancel listing the jump list. (Dominique
Pelle)

Mac: Could not build with Perl interface.


 vim:tw=78:ts=8:ft=help:norl:
