Merged from the latest developing branch.
[MacVim/KaoriYa.git] / runtime / doc / version7.txt
blob589e59aff21d234751a9968084f8f5de1a15b8a3
1 *version7.txt*  For Vim version 7.1.  Last change: 2007 May 12
4                   VIM REFERENCE MANUAL    by Bram Moolenaar
6                                                                         *vim7*
7 Welcome to Vim 7!  A large number of features has been added.  This file
8 mentions all the new items, changes to existing features and bug fixes
9 since Vim 6.x.  Use this command to see the version you are using: >
10         :version
12 See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0.
13 See |version4.txt| for differences between Vim 3.x and Vim 4.x.
14 See |version5.txt| for differences between Vim 4.x and Vim 5.x.
15 See |version6.txt| for differences between Vim 5.x and Vim 6.x.
17 INCOMPATIBLE CHANGES                    |incompatible-7|
19 NEW FEATURES                            |new-7|
21 Vim script enhancements                 |new-vim-script|
22 Spell checking                          |new-spell|
23 Omni completion                         |new-omni-completion|
24 MzScheme interface                      |new-MzScheme|
25 Printing multi-byte text                |new-print-multi-byte|
26 Tab pages                               |new-tab-pages|
27 Undo branches                           |new-undo-branches|
28 Extended Unicode support                |new-more-unicode|
29 More highlighting                       |new-more-highlighting|
30 Translated manual pages                 |new-manpage-trans|
31 Internal grep                           |new-vimgrep|
32 Scroll back in messages                 |new-scroll-back|
33 Cursor past end of the line             |new-onemore|
34 POSIX compatibility                     |new-posix|
35 Debugger support                        |new-debug-support|
36 Remote file explorer                    |new-netrw-explore|
37 Define an operator                      |new-define-operator|
38 Mapping to an expression                |new-map-expression|
39 Visual and Select mode mappings         |new-map-select|
40 Location list                           |new-location-list|
41 Various new items                       |new-items-7|
43 IMPROVEMENTS                            |improvements-7|
45 COMPILE TIME CHANGES                    |compile-changes-7|
47 BUG FIXES                               |bug-fixes-7|
49 VERSION 7.1                     |version-7.1|
50 Changed                                 |changed-7.1|
51 Added                                   |added-7.1|
52 Fixed                                   |fixed-7.1|
54 ==============================================================================
55 INCOMPATIBLE CHANGES                            *incompatible-7*
57 These changes are incompatible with previous releases.  Check this list if you
58 run into a problem when upgrading from Vim 6.x to 7.0.
60 A ":write file" command no longer resets the 'modified' flag of the buffer,
61 unless the '+' flag is in 'cpoptions' |cpo-+|.  This was illogical, since the
62 buffer is still modified compared to the original file.  And when undoing
63 all changes the file would actually be marked modified.  It does mean that
64 ":quit" fails now.
66 ":helpgrep" now uses a help window to display a match.
68 In an argument list double quotes could be used to include spaces in a file
69 name.  This caused a difference between ":edit" and ":next" for escaping
70 double quotes and it is incompatible with some versions of Vi.
71         Command                 Vim 6.x file name       Vim 7.x file name ~
72         :edit foo\"888          foo"888                 foo"888
73         :next foo\"888          foo888                  foo"888
74         :next a\"b c\"d         ab cd                   a"b  and  c"d
76 In a |literal-string| a single quote can be doubled to get one.
77 ":echo 'a''b'" would result in "a b", but now that two quotes stand for one it
78 results in "a'b".
80 When overwriting a file with ":w! fname" there was no warning for when "fname"
81 was being edited by another Vim.  Vim now gives an error message |E768|.
83 The support for Mac OS 9 has been removed.
85 Files ending in .tex now have 'filetype' set to "context", "plaintex", or
86 "tex".  |ft-tex-plugin|
89 Minor incompatibilities:
91 For filetype detection: For many types, use */.dir/filename instead of
92 ~/.dir/filename, so that it also works for other user's files.
94 For quite a few filetypes the indent settings have been moved from the
95 filetype plugin to the indent plugin.  If you used: >
96         :filetype plugin on
97 Then some indent settings may be missing.  You need to use: >
98         :filetype plugin indent on
100 ":0verbose" now sets 'verbose' to zero instead of one.
102 Removed the old and incomplete "VimBuddy" code.
104 Buffers without a name report "No Name" instead of "No File".  It was
105 confusing for buffers with a name and 'buftype' set to "nofile".
107 When ":file xxx" is used in a buffer without a name, the alternate file name
108 isn't set.  This avoids creating buffers without a name, they are not useful.
110 The "2html.vim" script now converts closed folds to HTML.  This means the HTML
111 looks like it's displayed, with the same folds open and closed.  Use "zR", or
112 "let html_ignore_folding=1", if no folds should appear in the HTML. (partly by
113 Carl Osterwisch)
114 Diff mode is now also converted to HTML as it is displayed.
116 Win32: The effect of the <F10> key depended on 'winaltkeys'.  Now it depends
117 on whether <F10> has been mapped or not.  This allows mapping <F10> without
118 changing 'winaltkeys'.
120 When 'octal' is in 'nrformats' and using CTRL-A on "08" it became "018", which
121 is illogical.  Now it becomes "9".  The leading zero(s) is(are) removed to
122 avoid the number becoming octal after incrementing "009" to "010".
124 When 'encoding' is set to a Unicode encoding, the value for 'fileencodings'
125 now includes "default" before "latin1".  This means that for files with 8-bit
126 encodings the default is to use the encoding specified by the environment, if
127 possible.  Previously latin1 would always be used, which is wrong in a
128 non-latin1 environment, such as Russian.
130 Previously Vim would exit when there are two windows, both of them displaying
131 a help file, and using ":quit".  Now only the window is closed.
133 "-w {scriptout}" only works when {scriptout} doesn't start with a digit.
134 Otherwise it's used to set the 'window' option.
136 Previously <Home> and <xHome> could be mapped separately.  This had the
137 disadvantage that all mappings (with modifiers) had to be duplicated, since
138 you can't be sure what the keyboard generates.  Now all <xHome> are internally
139 translated to <Home>, both for the keys and for mappings.  Also for <xEnd>,
140 <xF1>, etc.
142 ":put" now leaves the cursor on the last inserted line.
144 When a .gvimrc file exists then 'compatible' is off, just like when a ".vimrc"
145 file exists.
147 When making a string upper-case with "vlllU" or similar then the German sharp
148 s is replaced with "SS".  This does not happen with "~" to avoid backwards
149 compatibility problems and because "SS" can't be changed back to a sharp s.
151 "gd" previously found the very first occurrence of a variable in a function,
152 that could be the function argument without type.  Now it finds the position
153 where the type is given.
155 The line continuation in functions was not taken into account, line numbers in
156 errors were logical lines, not lines in the sourced file.  That made it
157 difficult to locate errors.  Now the line number in the sourced file is
158 reported, relative to the function start.  This also means that line numbers
159 for ":breakadd func" are different.
161 When defining a user command with |:command| the special items could be
162 abbreviated.  This caused unexpected behavior, such as <li> being recognized
163 as <line1>.  The items can no longer be abbreviated.
165 When executing a FileChangedRO autocommand it is no longer allowed to switch
166 to another buffer or edit another file.  This is to prevent crashes (the event
167 is triggered deep down in the code where changing buffers is not anticipated).
168 It is still possible to reload the buffer.
170 At the |more-prompt| and the |hit-enter-prompt|, when the 'more' option is
171 set, the 'k', 'u', 'g' and 'b' keys are now used to scroll back to previous
172 messages.  Thus they are no longer used as typeahead.
174 ==============================================================================
175 NEW FEATURES                                            *new-7*
177 Vim script enhancements                                 *new-vim-script*
178 -----------------------
180 In Vim scripts the following types have been added:
182         |List|          ordered list of items
183         |Dictionary|    associative array of items
184         |Funcref|       reference to a function
186 Many functions and commands have been added to support the new types.
188 The |string()| function can be used to get a string representation of a
189 variable.  Works for Numbers, Strings and composites of them.  Then |eval()|
190 can be used to turn the string back into the variable value.
192 The |:let| command can now use "+=", "-=" and ".=": >
193         :let var += expr        " works like :let var = var + expr
194         :let var -= expr        " works like :let var = var - expr
195         :let var .= string      " works like :let var = var . string
197 With the |:profile| command you can find out where your function or script
198 is wasting time.
200 In the Python interface vim.eval() also handles Dictionaries and Lists.
201 |python-eval| (G. Sumner Hayes)
203 The |getscript| plugin was added as a convenient way to update scripts from
204 www.vim.org automatically. (Charles Campbell)
206 The |vimball| plugin was added as a convenient way to distribute a set of
207 files for a plugin (plugin file, autoload script, documentation). (Charles
208 Campbell)
211 Spell checking                                          *new-spell*
212 --------------
214 Spell checking has been integrated in Vim.  There were a few implementations
215 with scripts, but they were slow and/or required an external program.
217 The 'spell'        option is used to switch spell checking on or off
218 The 'spelllang'    option is used to specify the accepted language(s)
219 The 'spellfile'    option specifies where new words are added
220 The 'spellsuggest' option specifies the methods used for making suggestions
222 The |[s| and |]s| commands can be used to move to the next or previous error
223 The |zg| and |zw| commands can be used to add good and wrong words
224 The |z=|          command can be used to list suggestions and correct the word
225 The |:mkspell|    command is used to generate a Vim spell file from word lists
227 The "undercurl" highlighting attribute was added to nicely point out spelling
228 mistakes in the GUI (based on patch from Marcin Dalecki).
229 The "guisp" color can be used to give it a color different from foreground and
230 background.
231 The number of possible different highlight attributes was raised from about
232 220 to over 30000.  This allows for the attributes of spelling to be combined
233 with syntax highlighting attributes.  This is also used for syntax
234 highlighting and marking the Visual area.
236 Much more info here: |spell|.
239 Omni completion                                 *new-omni-completion*
240 ---------------
242 This could also be called "intellisense", but that is a trademark.  It is a
243 smart kind of completion.  The text in front of the cursor is inspected to
244 figure out what could be following.  This may suggest struct and class
245 members, system functions, etc.
247 Use CTRL-X CTRL-O in Insert mode to start the completion.  |i_CTRL-X_CTRL-O|
249 The 'omnifunc' option is set by filetype plugins to define the function that
250 figures out the completion.
252 Currently supported languages:
253         C                                       |ft-c-omni|
254         (X)HTML with CSS                        |ft-html-omni|
255         JavaScript                              |ft-javascript-omni|
256         PHP                                     |ft-php-omni|
257         Python
258         Ruby                                    |ft-ruby-omni|
259         SQL                                     |ft-sql-omni|
260         XML                                     |ft-xml-omni|
261         any language wih syntax highligting     |ft-syntax-omni|
263 You can add your own omni completion scripts.
265 When the 'completeopt' option contains "menu" then matches for Insert mode
266 completion are displayed in a (rather primitive) popup menu.
269 MzScheme interface                                      *new-MzScheme*
270 ------------------
272 The MzScheme interpreter is supported. |MzScheme|
274 The |:mzscheme| command can be used to execute MzScheme commands
275 The |:mzfile|   command can be used to execute an MzScheme script file
277 This depends on Vim being compiled with the |+mzscheme| feature.
280 Printing multi-byte text                                *new-print-multi-byte*
281 ------------------------
283 The |:hardcopy| command now supports printing multi-byte characters when using
284 PostScript.
286 The 'printmbcharset' and 'printmbfont' options are used for this.
287 Also see |postscript-cjk-printing|.  (Mike Williams)
290 Tab pages                                               *new-tab-pages*
291 ---------
293 A tab page is page with one or more windows with a label (aka tab) at the top.
294 By clicking on the label you can quickly switch between the tab pages.  And
295 with the keyboard, using the |gt| (Goto Tab) command.  This is a convenient
296 way to work with many windows.
298 To start Vim with each file argument in a separate tab page use the |-p|
299 argument.  The maximum number of pages can be set with 'tabpagemax'.
301 The line with tab labels is either made with plain text and highlighting or
302 with a GUI mechanism.  The GUI labels look better but are only available on a
303 few systems.  The line can be customized with 'tabline', 'guitablabel' and
304 'guitabtooltip'.  Whether it is displayed is set with 'showtabline'.  Whether
305 to use the GUI labels is set with the "e" flag in 'guioptions'.
307 The |:tab| command modifier can be used to have most commands that open a new
308 window open a new tab page instead.
310 The |--remote-tab| argument can be used to edit a file in a new tab page in an
311 already running Vim server.
313 Variables starting with "t:" are local to a tab page.
315 More info here: |tabpage|
316 Most of the GUI stuff was implemented by Yegappan Lakshmanan.
319 Undo branches                                           *new-undo-branches*
320 -------------
322 Previously there was only one line of undo-redo.  If, after undoing a number
323 of changes, a new change was made all the undone changes were lost.  This
324 could lead to accidentally losing work.
326 Vim now makes an undo branch in this situation.  Thus you can go back to the
327 text after any change, even if they were undone.  So long as you do not run
328 into 'undolevels', when undo information is freed up to limit the memory used.
330 To be able to navigate the undo branches each change is numbered sequentially.
331 The commands |g-| and |:earlier| go back in time, to older changes.  The
332 commands |g+| and |:later| go forward in time, to newer changes.
334 The changes are also timestamped.  Use ":earlier 10m" to go to the text as it
335 was about ten minutes earlier.
337 The |:undolist| command can be used to get an idea of which undo branches
338 exist.  The |:undo| command now takes an argument to directly jump to a
339 specific position in this list.  The |changenr()| function can be used to
340 obtain the change number.
342 There is no graphical display of the tree with changes, navigation can be
343 quite confusing.
346 Extended Unicode support                                *new-more-unicode*
347 ------------------------
349 Previously only two combining characters were displayed.  The limit is now
350 raised to 6.  This can be set with the 'maxcombine' option.  The default is
351 still 2.
353 |ga| now shows all combining characters, not just the first two.
355 Previously only 16 bit Unicode characters were supported for displaying.  Now
356 the full 32 bit character set can be used.  Unless manually disabled at
357 compile time to save a bit of memory.
359 For pattern matching it is now possible to search for individual composing
360 characters. |patterns-composing|
362 The |8g8| command searches for an illegal UTF-8 byte sequence.
365 More highlighting                               *new-more-highlighting*
366 -----------------
368 Highlighting matching parens:
370 When moving the cursor through the text and it is on a paren, then the
371 matching paren can be highlighted.  This uses the new |CursorMoved|
372 autocommand event.
374 This means some commands are executed every time you move the cursor.  If this
375 slows you down too much switch it off with: >
376         :NoMatchParen
378 See |matchparen| for more information.
380 The plugin uses the |:match| command.  It now supports three match patterns.
381 The plugin uses the third one.  The first one is for the user and the second
382 one can be used by another plugin.
384 Highlighting the cursor line and column:
386 The 'cursorline' and 'cursorcolumn' options have been added.  These highlight
387 the screen line and screen column of the cursor.  This makes the cursor
388 position easier to spot.  'cursorcolumn' is also useful to align text.  This
389 may make screen updating quite slow.  The CursorColumn and CursorLine
390 highlight groups allow changing the colors used.  |hl-CursorColumn|
391 |hl-CursorLine|
393 The number of possible different highlight attributes was raised from about
394 220 to over 30000.  This allows for the attributes of spelling to be combined
395 with syntax highlighting attributes.  This is also used for syntax
396 highlighting, marking the Visual area, CursorColumn, etc.
399 Translated manual pages                                 *new-manpage-trans*
400 -----------------------
402 The manual page of Vim and associated programs is now also available in
403 several other languages.
405 French  - translated by David Blanchet
406 Italian - translated by Antonio Colombo
407 Russian - translated by Vassily Ragosin
408 Polish  - translated by Mikolaj Machowski
410 The Unix Makefile installs the Italian manual pages in .../man/it/man1/,
411 .../man/it.ISO8859-1/man1/ and .../man/it.UTF-8/man1/.  There appears to be no
412 standard for what encoding goes in the "it" directory, the 8-bit encoded file
413 is used there as a best guess.
414 Other languages are installed in similar places.
415 The translated pages are not automatically installed when Vim was configured
416 with "--disable-nls", but "make install-languages install-tool-languages" will
417 do it anyway.
420 Internal grep                                           *new-vimgrep*
421 -------------
423 The ":vimgrep" command can be used to search for a pattern in a list of files.
424 This is like the ":grep" command, but no external program is used.  Besides
425 better portability, handling of different file encodings and using multi-line
426 patterns, this also allows grepping in compressed and remote files.
427 |:vimgrep|.
429 If you want to use the search results in a script you can use the
430 |getqflist()| function.
432 To grep files in various directories the "**" pattern can be used.  It expands
433 into an arbitrary depth of directories.  "**" can be used in all places where
434 file names are expanded, thus also with |:next| and |:args|.
437 Scroll back in messages                                 *new-scroll-back*
438 -----------------------
440 When displaying messages, at the |more-prompt| and the |hit-enter-prompt|, The
441 'k', 'u', 'g' and 'b' keys can be used to scroll back to previous messages.
442 This is especially useful for commands such as ":syntax", ":autocommand" and
443 ":highlight".  This is implemented in a generic way thus it works for all
444 commands and highlighting is kept.  Only works when the 'more' option is set.
445 Previously it only partly worked for ":clist".
447 The |g<| command can be used to see the last page of messages after you have
448 hit <Enter> at the |hit-enter-prompt|.  Then you can scroll further back.
451 Cursor past end of the line                             *new-onemore*
452 ---------------------------
454 When the 'virtualedit' option contains "onemore" the cursor can move just past
455 the end of the line.  As if it's on top of the line break.
457 This makes some commands more consistent.  Previously the cursor was always
458 past the end of the line if the line was empty.  But it is far from Vi
459 compatible.  It may also break some plugins or Vim scripts.  Use with care!
461 The patch was provided by Mattias Flodin.
464 POSIX compatibility                                     *new-posix*
465 -------------------
467 The POSIX test suite was used to verify POSIX compatibility.  A number of
468 problems have been fixed to make Vim more POSIX compatible.  Some of them
469 conflict with traditional Vi or expected behavior.  The $VIM_POSIX environment
470 variable can be set to get POSIX compatibility.  See |posix|.
472 Items that were fixed for both Vi and POSIX compatibility:
473 - repeating "R" with a count only overwrites text once; added the 'X' flag to
474   'cpoptions' |cpo-X|
475 - a vertical movement command that moves to a non-existing line fails; added
476   the '-' flag to 'cpoptions' |cpo--|
477 - when preserving a file and doing ":q!" the file can be recovered; added the
478   '&' flag to 'cpoptions' |cpo-&|
479 - The 'window' option is partly implemented.  It specifies how much CTRL-F and
480   CTRL-B scroll when there is one window.  The "-w {number}" argument is now
481   accepted.  "-w {scriptout}" only works when {scriptout} doesn't start with a
482   digit.
483 - Allow "-c{command}" argument, no space between "-c" and {command}.
484 - When writing a file with ":w!" don't reset 'readonly' when 'Z' is present in
485   'cpoptions'.
486 - Allow 'l' and '#' flags for ":list", ":print" and ":number".
487 - Added the '.' flag to 'cpoptions': ":cd" fails when the buffer is modified.
488 - In Ex mode with an empty buffer ":read file" doesn't keep an empty line
489   above or below the new lines.
490 - Remove a backslash before a NL for the ":global" command.
491 - When ":append", ":insert" or ":change" is used with ":global", get the
492   inserted lines from the command.  Can use backslash-NL to separate lines.
493 - Can use ":global /pat/ visual" to execute Normal mode commands at each
494   matched line.  Use "Q" to continue and go to the next line.
495 - The |:open| command has been partially implemented.  It stops Ex mode, but
496   redraws the whole screen, not just one line as open mode is supposed to do.
497 - Support using a pipe to read the output from and write input to an external
498   command.  Added the 'shelltemp' option and has("filterpipe").
499 - In ex silent mode the ":set" command output is displayed.
500 - The ":@@" and ":**" give an error message when no register was used before.
501 - The search pattern "[]-`]" matches ']', '^', '_' and '`'.
502 - Autoindent for ":insert" is using the line below the insert.
503 - Autoindent for ":change" is using the first changed line.
504 - Editing Ex command lines is not done in cooked mode, because CTRL-D and
505   CTRL-T cannot be handled then.
506 - In Ex mode, "1,3" prints three lines.  "%" prints all lines.
507 - In Ex mode "undo" would undo all changes since Ex mode was started.
508 - Implemented the 'prompt' option.
511 Debugger support                                        *new-debug-support*
512 ----------------
514 The 'balloonexpr' option has been added.  This is a generic way to implement
515 balloon functionality.  You can use it to show info for the word under the
516 mouse pointer.
519 Remote file explorer                                    *new-netrw-explore*
520 --------------------
522 The netrw plugin now also supports viewing a directory, when "scp://" is used.
523 Deleting and renaming files is possible.
525 To avoid duplicating a lot of code, the previous file explorer plugin has been
526 integrated in the netrw plugin.  This means browsing local and remote files
527 works the same way.
529 ":browse edit" and ":browse split" use the netrw plugin when it's available
530 and a GUI dialog is not possible.
532 The netrw plugin is maintained by Charles Campbell.
535 Define an operator                                      *new-define-operator*
536 ------------------
538 Previously it was not possible to define your own operator; a command that is
539 followed by a {motion}.  Vim 7 introduces the 'operatorfunc' option and the
540 |g@| operator.  This makes it possible to define a mapping that works like an
541 operator.  The actual work is then done by a function, which is invoked
542 through the |g@| operator.
544 See |:map-operator| for the explanation and an example.
547 Mapping to an expression                                *new-map-expression*
548 ------------------------
550 The {rhs} argument of a mapping can be an expression.  That means the
551 resulting characters can depend on the context.  Example: >
552         :inoremap <expr> . InsertDot()
553 Here the dot will be mapped to whatever InsertDot() returns.
555 This also works for abbreviations.  See |:map-<expr>| for the details.
558 Visual and Select mode mappings                         *new-map-select*
559 -------------------------------
561 Previously Visual mode mappings applied both to Visual and Select mode.  With
562 a trick to have the mappings work in Select mode like they would in Visual
563 mode.
565 Commands have been added to define mappings for Visual and Select mode
566 separately: |:xmap| and |:smap|.  With the associated "noremap" and "unmap"
567 commands.
569 The same is done for menus: |:xmenu|, |:smenu|, etc.
572 Location list                                           *new-location-list*
573 -------------
575 The support for a per-window quickfix list (location list) is added. The
576 location list can be displayed in a location window (similar to the quickfix
577 window).  You can open more than one location list window.  A set of commands
578 similar to the quickfix commands are added to browse the location list.
579 (Yegappan Lakshmanan)
582 Various new items                                       *new-items-7*
583 -----------------
585 Normal mode commands: ~
587 a", a' and a`           New text objects to select quoted strings. |a'|
588 i", i' and i`           (Taro Muraoka)
590 CTRL-W <Enter>          In the quickfix window: opens a new window to show the
591                         location of the error under the cursor.
593 |at| and |it| text objects select a block of text between HTML or XML tags.
595 <A-LeftMouse> ('mousemodel' "popup" or "popup-setpos")
596 <A-RightMouse> ('mousemodel' "extend")
597                         Make a blockwise selection. |<A-LeftMouse>|
599 gF                      Start editing the filename under the cursor and jump
600                         to the line number following the file name.
601                         (Yegappan Lakshmanan)
603 CTRL-W F                Start editing the filename under the cursor in a new
604                         window and jump to the line number following the file
605                         name.  (Yegappan Lakshmanan)
607 Insert mode commands: ~
609 CTRL-\ CTRL-O           Execute a Normal mode command.  Like CTRL-O but
610                         without moving the cursor. |i_CTRL-\_CTRL-O|
612 Options: ~
614 'balloonexpr'           expression for text to show in evaluation balloon
615 'completefunc'          The name of the function used for user-specified
616                         Insert mode completion.  CTRL-X CTRL-U can be used in
617                         Insert mode to do any kind of completion.  (Taro
618                         Muraoka)
619 'completeopt'           Enable popup menu and other settings for Insert mode
620                         completion.
621 'cursorcolumn'          highlight column of the cursor
622 'cursorline'            highlight line of the cursor
623 'formatexpr'            expression for formatting text with |gq| and when text
624                         goes over 'textwidth' in Insert mode.
625 'formatlistpat'         pattern to recognize a numbered list for formatting.
626                         (idea by Hugo Haas)
627 'fsync'                 Whether fsync() is called after writing a file.
628                         (Ciaran McCreesh)
629 'guitablabel'           expression for text to display in GUI tab page label
630 'guitabtooltip'         expression for text to display in GUI tab page tooltip
631 'macatsui'              Mac: use ATSUI text display functions
632 'maxcombine'            maximum number of combining characters displayed
633 'maxmempattern'         maximum amount of memory to use for pattern matching
634 'mkspellmem'            parameters for |:mkspell| memory use
635 'mzquantum'             Time in msec to schedule MzScheme threads.
636 'numberwidth'           Minimal width of the space used for the 'number'
637                         option. (Emmanuel Renieris)
638 'omnifunc'              The name of the function used for omni completion.
639 'operatorfunc'          function to be called for |g@| operator
640 'printmbcharset'        CJK character set to be used for :hardcopy
641 'printmbfont'           font names to be used for CJK output of :hardcopy
642 'pumheight'             maximum number of items to show in the popup menu
643 'quoteescape'           Characters used to escape quotes inside a string.
644                         Used for the a", a' and a` text objects. |a'|
645 'shelltemp'             whether to use a temp file or pipes for shell commands
646 'showtabline'           whether to show the tab pages line
647 'spell'                 switch spell checking on/off
648 'spellcapcheck'         pattern to locate the end of a sentence
649 'spellfile'             file where good and wrong words are added
650 'spelllang'             languages to check spelling for
651 'spellsuggest'          methods for spell suggestions
652 'synmaxcol'             maximum column to look for syntax items; avoids very
653                         slow redrawing when there are very long lines
654 'tabline'               expression for text to display in the tab pages line
655 'tabpagemax'            maximum number of tab pages to open for |-p|
656 'verbosefile'           Log messages in a file.
657 'wildoptions'           "tagfile" value enables listing the file name of
658                         matching tags for CTRL-D command line completion.
659                         (based on an idea from Yegappan Lakshmanan)
660 'winfixwidth'           window with fixed width, similar to 'winfixheight'
663 Ex commands: ~
665 Win32: The ":winpos" command now also works in the console. (Vipin Aravind)
667 |:startreplace|         Start Replace mode. (Charles Campbell)
668 |:startgreplace|        Start Virtual Replace mode.
670 |:0file|                Removes the name of the buffer. (Charles Campbell)
672 |:diffoff|              Switch off diff mode in the current window or in all
673                         windows.
675 |:delmarks|             Delete marks.
677 |:exusage|              Help for Ex commands (Nvi command).
678 |:viusage|              Help for Vi commands (Nvi command).
680 |:sort|                 Sort lines in the buffer without depending on an
681                         external command. (partly by Bryce Wagner)
683 |:vimgrep|              Internal grep command, search for a pattern in files.
684 |:vimgrepadd|           Like |:vimgrep| but don't make a new list.
686 |:caddfile|             Add error messages to an existing quickfix list
687                         (Yegappan Lakshmanan).
688 |:cbuffer|              Read error lines from a buffer. (partly by Yegappan
689                         Lakshmanan)
690 |:cgetbuffer|           Create a quickfix list from a buffer but don't jump to
691                         the first error.
692 |:caddbuffer|           Add errors from the current buffer to the quickfix
693                         list.
694 |:cexpr|                Read error messages from a Vim expression (Yegappan
695                         Lakshmanan).
696 |:caddexpr|             Add error messages from a Vim expression to an
697                         existing quickfix list. (Yegappan Lakshmanan).
698 |:cgetexpr|             Create a quickfix list from a Vim expression, but
699                         don't jump to the first error. (Yegappan Lakshmanan).
701 |:lfile|                Like |:cfile| but use the location list.
702 |:lgetfile|             Like |:cgetfile| but use the location list.
703 |:laddfile|             Like |:caddfile| but use the location list.
704 |:lbuffer|              Like |:cbuffer| but use the location list.
705 |:lgetbuffer|           Like |:cgetbuffer| but use the location list.
706 |:laddbuffer|           Like |:caddbuffer| but use the location list.
707 |:lexpr|                Like |:cexpr| but use the location list.
708 |:lgetexpr|             Like |:cgetexpr| but use the location list.
709 |:laddexpr|             Like |:caddexpr| but use the location list.
710 |:ll|                   Like |:cc| but use the location list.
711 |:llist|                Like |:clist| but use the location list.
712 |:lnext|                Like |:cnext| but use the location list.
713 |:lprevious|            Like |:cprevious| but use the location list.
714 |:lNext|                Like |:cNext| but use the location list.
715 |:lfirst|               Like |:cfirst| but use the location list.
716 |:lrewind|              Like |:crewind| but use the location list.
717 |:llast|                Like |:clast| but use the location list.
718 |:lnfile|               Like |:cnfile| but use the location list.
719 |:lpfile|               Like |:cpfile| but use the location list.
720 |:lNfile|               Like |:cNfile| but use the location list.
721 |:lolder|               Like |:colder| but use the location list.
722 |:lnewer|               Like |:cnewer| but use the location list.
723 |:lwindow|              Like |:cwindow| but use the location list.
724 |:lopen|                Like |:copen| but use the location list.
725 |:lclose|               Like |:cclose| but use the location list.
726 |:lmake|                Like |:make| but use the location list.
727 |:lgrep|                Like |:grep| but use the location list.
728 |:lgrepadd|             Like |:grepadd| but use the location list.
729 |:lvimgrep|             Like |:vimgrep| but use the location list.
730 |:lvimgrepadd|          Like |:vimgrepadd| but use the location list.
731 |:lhelpgrep|            Like |:helpgrep| but use the location list.
732 |:lcscope|              Like |:cscope| but use the location list.
733 |:ltag|                 Jump to a tag and add matching tags to a location list.
735 |:undojoin|             Join a change with the previous undo block.
736 |:undolist|             List the leafs of the undo tree.
738 |:earlier|              Go back in time for changes in the text.
739 |:later|                Go forward in time for changes in the text.
741 |:for|                  Loop over a |List|.
742 |:endfor|
744 |:lockvar|              Lock a variable, prevents it from being changed.
745 |:unlockvar|            Unlock a locked variable.
747 |:mkspell|              Create a Vim spell file.
748 |:spellgood|            Add a word to the list of good words.
749 |:spellwrong|           Add a word to the list of bad words
750 |:spelldump|            Dump list of good words.
751 |:spellinfo|            Show information about the spell files used.
752 |:spellrepall|          Repeat a spelling correction for the whole buffer.
753 |:spellundo|            Remove a word from list of good and bad words.
755 |:mzscheme|             Execute MzScheme commands.
756 |:mzfile|               Execute an MzScheme script file.
758 |:nbkey|                Pass a key to NetBeans for processing.
760 |:profile|              Commands for Vim script profiling.
761 |:profdel|              Stop profiling for specified items.
763 |:smap|                 Select mode mapping.
764 |:smapclear|
765 |:snoremap|
766 |:sunmap|
768 |:xmap|                 Visual mode mapping, not used for Select mode.
769 |:xmapclear|
770 |:xnoremap|
771 |:xunmap|
773 |:smenu|                Select mode menu.
774 |:snoremenu|
775 |:sunmenu|
777 |:xmenu|                Visual mode menu, not used for Select mode.
778 |:xnoremenu|
779 |:xunmenu|
781 |:tabclose|             Close the current tab page.
782 |:tabdo|                Perform a command in every tab page.
783 |:tabedit|              Edit a file in a new tab page.
784 |:tabnew|               Open a new tab page.
785 |:tabfind|              Search for a file and open it in a new tab page.
786 |:tabnext|              Go to the next tab page.
787 |:tabprevious|          Go to the previous tab page.
788 |:tabNext|              Go to the previous tab page.
789 |:tabfirst|             Go to the first tab page.
790 |:tabrewind|            Go to the first tab page.
791 |:tablast|              Go to the last tab page.
792 |:tabmove|              Move the current tab page elsewhere.
793 |:tabonly|              Close all other tab pages.
794 |:tabs|                 List the tab pages and the windows they contain.
796 Ex command modifiers: ~
798 |:keepalt|              Do not change the alternate file.
800 |:noautocmd|            Do not trigger autocommand events.
802 |:sandbox|              Execute a command in the sandbox.
804 |:tab|                  When opening a new window create a new tab page.
807 Ex command arguments: ~
809 |++bad|                 Specify what happens with characters that can't be
810                         converted and illegal bytes. (code example by Yasuhiro
811                         Matsumoto)
812                         Also, when a conversion error occurs or illegal bytes
813                         are found include the line number in the error
814                         message.
817 New and extended functions: ~
819 |add()|                 append an item to a List
820 |append()|              append List of lines to the buffer
821 |argv()|                without an argument return the whole argument list
822 |browsedir()|           dialog to select a directory
823 |bufnr()|               takes an extra argument: create buffer
824 |byteidx()|             index of a character (Ilya Sher)
825 |call()|                call a function with List as arguments
826 |changenr()|            number of current change
827 |complete()|            set matches for Insert mode completion
828 |complete_add()|        add match for 'completefunc'
829 |complete_check()|      check for key pressed, for 'completefunc'
830 |copy()|                make a shallow copy of a List or Dictionary
831 |count()|               count nr of times a value is in a List or Dictionary
832 |cursor()|              also accepts an offset for 'virtualedit', and
833                         the first argument can be a list: [lnum, col, off]
834 |deepcopy()|            make a full copy of a List or Dictionary
835 |diff_filler()|         returns number of filler lines above line {lnum}.
836 |diff_hlID()|           returns the highlight ID for diff mode
837 |empty()|               check if List or Dictionary is empty
838 |eval()|                evaluate {string} and return the result
839 |extend()|              append one List to another or add items from one
840                         Dictionary to another
841 |feedkeys()|            put characters in the typeahead buffer
842 |filter()|              remove selected items from a List or Dictionary
843 |finddir()|             find a directory in 'path'
844 |findfile()|            find a file in 'path' (Johannes Zellner)
845 |foldtextresult()|      the text displayed for a closed fold at line "lnum"
846 |function()|            make a Funcref out of a function name
847 |garbagecollect()|      cleanup unused |Lists| and |Dictionaries| with circular
848                         references
849 |get()|                 get an item from a List or Dictionary
850 |getbufline()|          get a list of lines from a specified buffer
851                         (Yegappan Lakshmanan)
852 |getcmdtype()|          return the current command-line type
853                         (Yegappan Lakshmanan)
854 |getfontname()|         get actual font name being used
855 |getfperm()|            get file permission string (Nikolai Weibull)
856 |getftype()|            get type of file (Nikolai Weibull)
857 |getline()|             with second argument: get List with buffer lines
858 |getloclist()|          list of location list items (Yegappan Lakshmanan)
859 |getpos()|              return a list with the position of cursor, mark, etc.
860 |getqflist()|           list of quickfix errors (Yegappan Lakshmanan)
861 |getreg()|              get contents of a register
862 |gettabwinvar()|        get variable from window in specified tab page.
863 |has_key()|             check whether a key appears in a Dictionary
864 |haslocaldir()|         check if current window used |:lcd|
865 |hasmapto()|            check for a mapping to a string
866 |index()|               index of item in List
867 |inputlist()|           prompt the user to make a selection from a list
868 |insert()|              insert an item somewhere in a List
869 |islocked()|            check if a variable is locked
870 |items()|               get List of Dictionary key-value pairs
871 |join()|                join List items into a String
872 |keys()|                get List of Dictionary keys
873 |len()|                 number of items in a List or Dictionary
874 |map()|                 change each List or Dictionary item
875 |maparg()|              extra argument: use abbreviation
876 |mapcheck()|            extra argument: use abbreviation
877 |match()|               extra argument: count
878 |matcharg()|            return arguments of |:match| command
879 |matchend()|            extra argument: count
880 |matchlist()|           list with match and submatches of a pattern in a string
881 |matchstr()|            extra argument: count
882 |max()|                 maximum value in a List or Dictionary
883 |min()|                 minimum value in a List or Dictionary
884 |mkdir()|               create a directory
885 |pathshorten()|         reduce directory names to a single character
886 |printf()|              format text
887 |pumvisible()|          check whether the popup menu is displayed
888 |range()|               generate a List with numbers
889 |readfile()|            read a file into a list of lines
890 |reltime()|             get time value, possibly relative
891 |reltimestr()|          turn a time value into a string
892 |remove()|              remove one or more items from a List or Dictionary
893 |repeat()|              repeat "expr" "count" times (Christophe Poucet)
894 |reverse()|             reverse the order of a List
895 |search()|              extra argument:
896 |searchdecl()|          search for declaration of variable
897 |searchpair()|          extra argument: line to stop searching
898 |searchpairpos()|       return a List with the position of the match
899 |searchpos()|           return a List with the position of the match
900 |setloclist()|          modify a location list (Yegappan Lakshmanan)
901 |setpos()|              set cursor or mark to a position
902 |setqflist()|           modify a quickfix list (Yegappan Lakshmanan)
903 |settabwinvar()|        set variable in window of specified tab page
904 |sort()|                sort a List
905 |soundfold()|           get the sound-a-like equivalent of a word
906 |spellbadword()|        get a badly spelled word
907 |spellsuggest()|        get suggestions for correct spelling
908 |split()|               split a String into a List
909 |str2nr()|              convert a string to a number, base 8, 10 or 16
910 |stridx()|              extra argument: start position
911 |strridx()|             extra argument: start position
912 |string()|              string representation of a List or Dictionary
913 |system()|              extra argument: filters {input} through a shell command
914 |tabpagebuflist()|      List of buffers in a tab page
915 |tabpagenr()|           number of current or last tab page
916 |tabpagewinnr()|        window number in a tab page
917 |tagfiles()|            List with tags file names
918 |taglist()|             get list of matching tags (Yegappan Lakshmanan)
919 |tr()|                  translate characters (Ron Aaron)
920 |values()|              get List of Dictionary values
921 |winnr()|               takes an argument: what window to use
922 |winrestview()|         restore the view of the current window
923 |winsaveview()|         save the view of the current window
924 |writefile()|           write a list of lines into a file
926 User defined functions can now be loaded automatically from the "autoload"
927 directory in 'runtimepath'.  See |autoload-functions|.
930 New Vim variables: ~
932 |v:insertmode|          used for |InsertEnter| and |InsertChange| autocommands
933 |v:val|                 item value in a |map()| or |filter()| function
934 |v:key|                 item key in a |map()| or |filter()| function
935 |v:profiling|           non-zero after a ":profile start" command
936 |v:fcs_reason|          the reason why |FileChangedShell| was triggered
937 |v:fcs_choice|          what should happen after |FileChangedShell|
938 |v:beval_bufnr|         buffer number for 'balloonexpr'
939 |v:beval_winnr|         window number for 'balloonexpr'
940 |v:beval_lnum|          line number for 'balloonexpr'
941 |v:beval_col|           column number for 'balloonexpr'
942 |v:beval_text|          text under the mouse pointer for 'balloonexpr'
943 |v:scrollstart|         what caused the screen to be scrolled up
944 |v:swapname|            name of the swap file for the |SwapExists| event
945 |v:swapchoice|          what to do for an existing swap file
946 |v:swapcommand|         command to be executed after handling |SwapExists|
947 |v:char|                argument for evaluating 'formatexpr'
950 New autocommand events: ~
952 |ColorScheme|           after loading a color scheme
954 |CursorHoldI|           the user doesn't press a key for a while in Insert mode
955 |CursorMoved|           the cursor was moved in Normal mode
956 |CursorMovedI|          the cursor was moved in Insert mode
958 |FileChangedShellPost|  after handling a file changed outside of Vim
960 |InsertEnter|           starting Insert or Replace mode
961 |InsertChange|          going from Insert to Replace mode or back
962 |InsertLeave|           leaving Insert or Replace mode
964 |MenuPopup|             just before showing popup menu
966 |QuickFixCmdPre|        before :make, :grep et al. (Ciaran McCreesh)
967 |QuickFixCmdPost|       after :make, :grep et al. (Ciaran McCreesh)
969 |SessionLoadPost|       after loading a session file. (Yegappan Lakshmanan)
971 |ShellCmdPost|          after executing a shell command
972 |ShellFilterPost|       after filtering with a shell command
974 |SourcePre|             before sourcing a Vim script
976 |SpellFileMissing|      when a spell file can't be found
978 |SwapExists|            found existing swap file when editing a file
980 |TabEnter|              just after entering a tab page
981 |TabLeave|              just before leaving a tab page
983 |VimResized|            after the Vim window size changed (Yakov Lerner)
986 New highlight groups: ~
988 Pmenu                   Popup menu: normal item |hl-Pmenu|
989 PmenuSel                Popup menu: selected item |hl-PmenuSel|
990 PmenuThumb              Popup menu: scrollbar |hl-PmenuThumb|
991 PmenuSbar               Popup menu: Thumb of the scrollbar |hl-PmenuSbar|
993 TabLine                 tab pages line, inactive label |hl-TabLine|
994 TabLineSel              tab pages line, selected label |hl-TabLineSel|
995 TabLineFill             tab pages line, filler |hl-TabLineFill|
997 SpellBad                badly spelled word |hl-SpellBad|
998 SpellCap                word with wrong caps |hl-SpellCap|
999 SpellRare               rare word |hl-SpellRare|
1000 SpellLocal              word only exists in other region |hl-SpellLocal|
1002 CursorColumn            'cursorcolumn' |hl-CursorColumn|
1003 CursorLine              'cursorline' |hl-CursorLine|
1005 MatchParen              matching parens |pi_paren.txt| |hl-MatchParen|
1008 New items in search patterns: ~
1009 |/\%d| \%d123           search for character with decimal number
1010 |/\]|  [\d123]          idem, in a collection
1011 |/\%o| \%o103           search for character with octal number
1012 |/\]|  [\o1o3]          idem, in a collection
1013 |/\%x| \%x1a            search for character with 2 pos. hex number
1014 |/\]|  [\x1a]           idem, in a collection
1015 |/\%u| \%u12ab          search for character with 4 pos. hex number
1016 |/\]|  [\u12ab]         idem, in a collection
1017 |/\%U| \%U1234abcd      search for character with 8 pos. hex number
1018 |/\]|  [\U1234abcd]     idem, in a collection
1019                             (The above partly by Ciaran McCreesh)
1021 |/[[=| [[=a=]]          an equivalence class (only for latin1 characters)
1022 |/[[.| [[.a.]]          a collation element (only works with single char)
1024 |/\%'m|  \%'m           match at mark m
1025 |/\%<'m| \%<'m          match before mark m
1026 |/\%>'m| \%>'m          match after mark m
1027 |/\%V|   \%V            match in Visual area
1029 Nesting |/multi| items no longer is an error when an empty match is possible.
1031 It is now possible to use \{0}, it matches the preceding atom zero times.  Not
1032 useful, just for compatibility.
1035 New Syntax/Indent/FTplugin files: ~
1037 Moved all the indent settings from the filetype plugin to the indent file.
1038 Implemented b:undo_indent to undo indent settings when setting 'filetype' to a
1039 different value.
1041 a2ps syntax and ftplugin file. (Nikolai Weibull)
1042 ABAB/4 syntax file. (Marius van Wyk)
1043 alsaconf ftplugin file. (Nikolai Weibull)
1044 AppendMatchGroup ftplugin file. (Dave Silvia)
1045 arch ftplugin file. (Nikolai Weibull)
1046 asterisk and asteriskvm syntax file. (Tilghman Lesher)
1047 BDF ftplugin file. (Nikolai Weibull)
1048 BibTeX indent file. (Dorai Sitaram)
1049 BibTeX Bibliography Style syntax file. (Tim Pope)
1050 BTM ftplugin file. (Bram Moolenaar)
1051 calendar ftplugin file. (Nikolai Weibull)
1052 Changelog indent file. (Nikolai Weibull)
1053 ChordPro syntax file. (Niels Bo Andersen)
1054 Cmake indent and syntax file. (Andy Cedilnik)
1055 conf ftplugin file. (Nikolai Weibull)
1056 context syntax and ftplugin file. (Nikolai Weibull)
1057 CRM114 ftplugin file. (Nikolai Weibull)
1058 cvs RC ftplugin file. (Nikolai Weibull)
1059 D indent file. (Jason Mills)
1060 Debian Sources.list syntax file. (Matthijs Mohlmann)
1061 dictconf and dictdconf syntax, indent and ftplugin files. (Nikolai Weibull)
1062 diff ftplugin file. (Bram Moolenaar)
1063 dircolors ftplugin file. (Nikolai Weibull)
1064 django and htmldjango syntax file. (Dave Hodder)
1065 doxygen syntax file. (Michael Geddes)
1066 elinks ftplugin file. (Nikolai Weibull)
1067 eterm ftplugin file. (Nikolai Weibull)
1068 eviews syntax file. (Vaidotas Zemlys)
1069 fetchmail RC ftplugin file. (Nikolai Weibull)
1070 FlexWiki syntax and ftplugin file. (George Reilly)
1071 Generic indent file. (Dave Silvia)
1072 gpg ftplugin file. (Nikolai Weibull)
1073 gretl syntax file. (Vaidotas Zemlys)
1074 groovy syntax file. (Alessio Pace)
1075 group syntax and ftplugin file. (Nikolai Weibull)
1076 grub ftplugin file. (Nikolai Weibull)
1077 Haskell ftplugin file. (Nikolai Weibull)
1078 help ftplugin file. (Nikolai Weibull)
1079 indent ftplugin file. (Nikolai Weibull)
1080 Javascript ftplugin file. (Bram Moolenaar)
1081 Kconfig ftplugin and syntax file. (Nikolai Weibull)
1082 ld syntax, indent and ftplugin file. (Nikolai Weibull)
1083 lftp ftplugin file. (Nikolai Weibull)
1084 libao config ftplugin file. (Nikolai Weibull)
1085 limits syntax and ftplugin file. (Nikolai Weibull)
1086 Lisp indent file. (Sergey Khorev)
1087 loginaccess and logindefs syntax and ftplugin file. (Nikolai Weibull)
1088 m4 ftplugin file. (Nikolai Weibull)
1089 mailaliases syntax file. (Nikolai Weibull)
1090 mailcap ftplugin file. (Nikolai Weibull)
1091 manconf syntax and ftplugin file. (Nikolai Weibull)
1092 matlab ftplugin file. (Jake Wasserman)
1093 Maxima syntax file. (Robert Dodier)
1094 MGL syntax file. (Gero Kuhlmann)
1095 modconf ftplugin file. (Nikolai Weibull)
1096 mplayer config ftplugin file. (Nikolai Weibull)
1097 Mrxvtrc syntax and ftplugin file. (Gautam Iyer)
1098 MuPAD source syntax, indent and ftplugin. (Dave Silvia)
1099 mutt RC ftplugin file. (Nikolai Weibull)
1100 nanorc syntax and ftplugin file. (Nikolai Weibull)
1101 netrc ftplugin file. (Nikolai Weibull)
1102 pamconf syntax and ftplugin file. (Nikolai Weibull)
1103 Pascal indent file. (Neil Carter)
1104 passwd syntax and ftplugin file. (Nikolai Weibull)
1105 PHP compiler plugin. (Doug Kearns)
1106 pinfo ftplugin file. (Nikolai Weibull)
1107 plaintex syntax and ftplugin files. (Nikolai Weibull, Benji Fisher)
1108 procmail ftplugin file. (Nikolai Weibull)
1109 prolog ftplugin file. (Nikolai Weibull)
1110 protocols syntax and ftplugin file. (Nikolai Weibull)
1111 quake ftplugin file. (Nikolai Weibull)
1112 racc syntax and ftplugin file. (Nikolai Weibull)
1113 readline ftplugin file. (Nikolai Weibull)
1114 rhelp syntax file. (Johannes Ranke)
1115 rnoweb syntax file. (Johannes Ranke)
1116 Relax NG compact ftplugin file. (Nikolai Weibull)
1117 Scheme indent file. (Sergey Khorev)
1118 screen ftplugin file. (Nikolai Weibull)
1119 sensors syntax and ftplugin file. (Nikolai Weibull)
1120 services syntax and ftplugin file. (Nikolai Weibull)
1121 setserial syntax and ftplugin file. (Nikolai Weibull)
1122 sieve syntax and ftplugin file. (Nikolai Weibull)
1123 SiSU syntax file (Ralph Amissah)
1124 Sive syntax file. (Nikolai Weibull)
1125 slp config, reg and spi syntax and ftplugin files. (Nikolai Weibull)
1126 SML indent file. (Saikat Guha)
1127 SQL anywhere syntax and indent file. (David Fishburn)
1128 SQL indent file.
1129 SQL-Informix syntax file. (Dean L Hill)
1130 SQL: Handling of various variants. (David Fishburn)
1131 sshconfig ftplugin file. (Nikolai Weibull)
1132 Stata and SMCL syntax files. (Jeff Pitblado)
1133 sudoers ftplugin file. (Nikolai Weibull)
1134 sysctl syntax and ftplugin file. (Nikolai Weibull)
1135 terminfo ftplugin file. (Nikolai Weibull)
1136 trustees syntax file. (Nima Talebi)
1137 Vera syntax file. (David Eggum)
1138 udev config, permissions and rules syntax and ftplugin files. (Nikolai Weibull)
1139 updatedb syntax and ftplugin file. (Nikolai Weibull)
1140 VHDL indent file (Gerald Lai)
1141 WSML syntax file. (Thomas Haselwanter)
1142 Xdefaults ftplugin file. (Nikolai Weibull)
1143 XFree86 config ftplugin file. (Nikolai Weibull)
1144 xinetd syntax, indent and ftplugin file. (Nikolai Weibull)
1145 xmodmap ftplugin file. (Nikolai Weibull)
1146 Xquery syntax file. (Jean-Marc Vanel)
1147 xsd (XML schema) indent file.
1148 YAML ftplugin file. (Nikolai Weibull)
1149 Zsh ftplugin file. (Nikolai Weibull)
1152 New Keymaps: ~
1154 Sinhala (Sri Lanka) (Harshula Jayasuriya)
1155 Tamil in TSCII encoding (Yegappan Lakshmanan)
1156 Greek in cp737 (Panagiotis Louridas)
1157 Polish-slash (HS6_06)
1158 Ukrainian-jcuken (Anatoli Sakhnik)
1159 Kana (Edward L. Fox)
1162 New message translations: ~
1164 The Ukranian messages are now also available in cp1251.
1165 Vietnamese message translations and menu. (Phan Vinh Thinh)
1168 Others: ~
1170 The |:read| command has the |++edit| argument.  This means it will use the
1171 detected 'fileformat', 'fileencoding' and other options for the buffer.  This
1172 also fixes the problem that editing a compressed file didn't set these
1173 options.
1175 The Netbeans interface was updated for Sun Studio 10.  The protocol number
1176 goes from 2.2 to 2.3. (Gordon Prieur)
1178 Mac: When starting up Vim will load the $VIMRUNTIME/macmap.vim script to
1179 define default command-key mappings. (mostly by Benji Fisher)
1181 Mac: Add the selection type to the clipboard, so that Block, line and
1182 character selections can be used between two Vims. (Eckehard Berns)
1183 Also fixes the problem that setting 'clipboard' to "unnamed" breaks using
1184 "yyp".
1186 Mac: GUI font selector. (Peter Cucka)
1188 Mac: support for multi-byte characters. (Da Woon Jung)
1189 This doesn't always work properly.  If you see text drawing problems try
1190 switching the 'macatsui' option off.
1192 Mac: Support the xterm mouse in the non-GUI version.
1194 Mac: better integration with Xcode.  Post a fake mouse-up event after the odoc
1195 event and the drag receive handler to work around a stall after Vim loads a
1196 file.  Fixed an off-by-one line number error. (Da Woon Jung)
1198 Mac: When started from Finder change directory to the file being edited or the
1199 user home directory.
1201 Added the t_SI and t_EI escape sequences for starting and ending Insert mode.
1202 To be used to set the cursor shape to a bar or a block.  No default values,
1203 they are not supported by termcap/terminfo.
1205 GUI font selector for Motif. (Marcin Dalecki)
1207 Nicer toolbar buttons for Motif. (Marcin Dalecki)
1209 Mnemonics for the Motif find/replace dialog. (Marcin Dalecki)
1211 Included a few improvements for Motif from Marcin Dalecki.  Draw label
1212 contents ourselves to make them handle fonts in a way configurable by Vim and
1213 a bit less dependent on the X11 font management.
1215 Autocommands can be defined local to a buffer.  This means they will also work
1216 when the buffer does not have a name or no specific name.  See
1217 |autocmd-buflocal|.  (Yakov Lerner)
1219 For xterm most combinations of modifiers with function keys are recognized.
1220 |xterm-modifier-keys|
1222 When 'verbose' is set the output of ":highlight" will show where a highlight
1223 item was last set.
1224 When 'verbose' is set the output of the ":map", ":abbreviate", ":command",
1225 ":function" and ":autocmd" commands will show where it was last defined.
1226 (Yegappan Lakshmanan)
1228 ":function /pattern" lists functions matching the pattern.
1230 "1gd" can be used like "gd" but ignores matches in a {} block that ends before
1231 the cursor position.  Likewise for "1gD" and "gD".
1233 'scrolljump' can be set to a negative number to scroll a percentage of the
1234 window height.
1236 The |v:scrollstart| variable has been added to help finding the location in
1237 your script that causes the hit-enter prompt.
1239 To make it possible to handle the situation that a file is being edited that
1240 is already being edited by another Vim instance, the |SwapExists| event has
1241 been added.  The |v:swapname|, |v:swapchoice| and |v:swapcommand| variables
1242 can be used, for example to use the |client-server| functionality to bring the
1243 other Vim to the foreground.
1244 When starting Vim with a "-t tag" argument, there is an existing swapfile and
1245 the user selects "quit" or "abort" then exit Vim.
1247 Undo now also restores the '< and '> marks.  "gv" selects the same area as
1248 before the change and undo.
1250 When editing a search pattern for a "/" or "?" command and 'incsearch' is set
1251 CTRL-L can be used to add a character from the current match.  CTRL-R CTRL-W
1252 will add a word, but exclude the part of the word that was already typed.
1254 Ruby interface: add line number methods. (Ryan Paul)
1256 The $MYVIMRC environment variable is set to the first found vimrc file.
1257 The $MYGVIMRC environment variable is set to the first found gvimrc file.
1259 ==============================================================================
1260 IMPROVEMENTS                                            *improvements-7*
1262 ":helpgrep" accepts a language specifier after the pattern: "pat@it".
1264 Moved the help for printing to a separate help file.  It's quite a lot now.
1266 When doing completion for ":!cmd", ":r !cmd" or ":w !cmd" executable files are
1267 found in $PATH instead of looking for ordinary files in the current directory.
1269 When ":silent" is used and a backwards range is given for an Ex command the
1270 range is swapped automatically instead of asking if that is OK.
1272 The pattern matching code was changed from a recursive function to an
1273 iterative mechanism.  This avoids out-of-stack errors.  State is stored in
1274 allocated memory, running out of memory can always be detected.  Allows
1275 matching more complex things, but Vim may seem to hang while doing that.
1277 Previously some options were always evaluated in the |sandbox|.  Now that only
1278 happens when the option was set from a modeline or in secure mode.  Applies to
1279 'balloonexpr', 'foldexpr', 'foldtext' and 'includeexpr'. (Sumner Hayes)
1281 Some commands and expressions could have nasty side effects, such as using
1282 CTRL-R = while editing a search pattern and the expression invokes a function
1283 that jumps to another window.  The |textlock| has been added to prevent this
1284 from happening.
1286 ":breakadd here" and ":breakdel here" can be used to set or delete a
1287 breakpoint at the cursor.
1289 It is now possible to define a function with: >
1290         :exe "func Test()\n ...\n endfunc"
1292 The tutor was updated to make it simpler to use and text was added to explain
1293 a few more important commands.  Used ideas from Gabriel Zachmann.
1295 Unix: When libcall() fails obtain an error message with dlerror() and display
1296 it. (Johannes Zellner)
1298 Mac and Cygwin: When editing an existing file make the file name the same case
1299 of the edited file.  Thus when typing ":e os_UNIX.c" the file name becomes
1300 "os_unix.c".
1302 Added "nbsp" in 'listchars'. (David Blanchet)
1304 Added the "acwrite" value for the 'buftype' option.  This is for a buffer that
1305 does not have a name that refers to a file and is written with BufWriteCmd
1306 autocommands.
1308 For lisp indenting and matching parenthesis: (Sergey Khorev)
1309 - square brackets are recognized properly
1310 - #\(, #\), #\[ and #\] are recognized as character literals
1311 - Lisp line comments (delimited by semicolon) are recognized
1313 Added the "count" argument to match(), matchend() and matchstr(). (Ilya Sher)
1315 winnr() takes an optional "$" or "#" argument.  (Nikolai Weibull, Yegappan
1316 Lakshmanan)
1318 Added 's' flag to search(): set ' mark if cursor moved. (Yegappan Lakshmanan)
1319 Added 'n' flag to search(): don't move the cursor. (Nikolai Weibull)
1320 Added 'c' flag to search(): accept match at the cursor.
1321 Added 'e' flag to search(): move to end of the match. (Benji Fisher)
1322 Added 'p' flag to search(): return number of sub-pattern. (Benji Fisher)
1323 These also apply to searchpos(), searchpair() and searchpairpos().
1325 The search() and searchpair() functions have an extra argument to specify
1326 where to stop searching.  Speeds up searches that should not continue too far.
1328 When uncompressing fails in the gzip plugin, give an error message but don't
1329 delete the raw text.  Helps if the file has a .gz extension but is not
1330 actually compressed. (Andrew Pimlott)
1332 When C, C++ or IDL syntax is used, may additionally load doxygen syntax.
1333 (Michael Geddes)
1335 Support setting 'filetype' and 'syntax' to "aaa.bbb" for "aaa" plus "bbb"
1336 filetype or syntax.
1338 The ":registers" command now displays multi-byte characters properly.
1340 VMS: In the usage message mention that a slash can be used to make a flag
1341 upper case.  Add color support to the builtin vt320 terminal codes.
1342 (Zoltan Arpadffy)
1344 For the '%' item in 'viminfo', allow a number to set a maximum for the number
1345 of buffers.
1347 For recognizing the file type: When a file looks like a shell script, check
1348 for an "exec" command that starts the tcl interpreter. (suggested by Alexios
1349 Zavras)
1351 Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that
1352 digraphs still work when iconv is not available.
1354 When a session file is loaded while editing an unnamed, empty buffer that
1355 buffer is wiped out.  Avoids that there is an unused buffer in the buffer
1356 list.
1358 Win32: When libintl.dll supports bind_textdomain_codeset(), use it.
1359 (NAKADAIRA Yukihiro)
1361 Win32: Vim was not aware of hard links on NTFS file systems.  These are
1362 detected now for when 'backupcopy' is "auto".  Also fixed a bogus "file has
1363 been changed since reading it" error for links.
1365 When foldtext() finds no text after removing the comment leader, use the
1366 second line of the fold.  Helps for C-style /* */ comments where the first
1367 line is just "/*".
1369 When editing the same file from two systems (e.g., Unix and MS-Windows) there
1370 mostly was no warning for an existing swap file, because the name of the
1371 edited file differs (e.g., y:\dir\file vs /home/me/dir/file).  Added a flag to
1372 the swap file to indicate it is in the same directory as the edited file.  The
1373 used path then doesn't matter and the check for editing the same file is much
1374 more reliable.
1376 Unix: When editing a file through a symlink the swap file would use the name
1377 of the symlink.  Now use the name of the actual file, so that editing the same
1378 file twice is detected. (suggestions by Stefano Zacchiroli and James Vega)
1380 Client-server communication now supports 'encoding'.  When setting 'encoding'
1381 in a Vim server to "utf-8", and using "vim --remote fname" in a console,
1382 "fname" is converted from the console encoding to utf-8.  Also allows Vims
1383 with different 'encoding' settings to exchange messages.
1385 Internal: Changed ga_room into ga_maxlen, so that it doesn't need to be
1386 incremented/decremented each time.
1388 When a register is empty it is not stored in the viminfo file.
1390 Removed the tcltags script, it's obsolete.
1392 ":redir @*>>" and ":redir @+>>" append to the clipboard.  Better check for
1393 invalid characters after the register name. |:redir|
1395 ":redir => variable" and ":redir =>> variable" write or append to a variable.
1396 (Yegappan Lakshmanan) |:redir|
1398 ":redir @{a-z}>>" appends to register a to z. (Yegappan Lakshmanan)
1400 The 'verbosefile' option can be used to log messages in a file.  Verbose
1401 messages are not displayed then.  The "-V{filename}" argument can be used to
1402 log startup messages.
1404 ":let g:" lists global variables.
1405 ":let b:" lists buffer-local variables.
1406 ":let w:" lists window-local variables.
1407 ":let v:" lists Vim variables.
1409 The stridx() and strridx() functions take a third argument, where to start
1410 searching.  (Yegappan Lakshmanan)
1412 The getreg() function takes an extra argument to be able to get the expression
1413 for the '=' register instead of the result of evaluating it.
1415 The setline() function can take a List argument to set multiple lines.  When
1416 the line number is just below the last line the line is appended.
1418 g CTRL-G also shows the number of characters if it differs from the number of
1419 bytes.
1421 Completion for ":debug" and entering an expression for the '=' register.  Skip
1422 ":" between range and command name. (Peter winters)
1424 CTRL-Q in Insert mode now works like CTRL-V by default.  Previously it was
1425 ignored.
1427 When "beep" is included in 'debug' a function or script that causes a beep
1428 will result in a message with the source of the error.
1430 When completing buffer names, match with "\(^\|[\/]\)" instead of "^", so that
1431 ":buf stor<Tab>" finds both "include/storage.h" and "storage/main.c".
1433 To count items (pattern matches) without changing the buffer the 'n' flag has
1434 been added to |:substitute|.  See |count-items|.
1436 In a |:substitute| command the \u, \U, \l and \L items now also work for
1437 multi-byte characters.
1439 The "screen.linux" $TERM name is recognized to set the default for
1440 'background' to "dark". (Ciaran McCreesh)  Also for "cygwin" and "putty".
1442 The |FileChangedShell| autocommand event can now use the |v:fcs_reason|
1443 variable that specifies what triggered the event.  |v:fcs_choice| can be used
1444 to reload the buffer or ask the user what to do.
1446 Not all modifiers were recognized for xterm function keys.  Added the
1447 possibility in term codes to end in ";*X" or "O*X", where X is any character
1448 and the * stands for the modifier code.
1449 Added the <xUp>, <xDown>, <xLeft> and <xRight> keys, to be able to recognize
1450 the two forms that xterm can send their codes in and still handle all possible
1451 modifiers.
1453 getwinvar() now also works to obtain a buffer-local option from the specified
1454 window.
1456 Added the "%s" item to 'errorformat'. (Yegappan Lakshmanan)
1457 Added the "%>" item to 'errorformat'.
1459 For 'errorformat' it was not possible to have a file name that contains the
1460 character that follows after "%f".  For example, in "%f:%l:%m" the file name
1461 could not contain ":".  Now include the first ":" where the rest of the
1462 pattern matches.  In the example a ":" not followed by a line number is
1463 included in the file name. (suggested by Emanuele Giaquinta)
1465 GTK GUI: use the GTK file dialog when it's available.  Mix from patches by
1466 Grahame Bowland and Evan Webb.
1468 Added ":scriptnames" to bugreport.vim, so that we can see what plugins were
1469 used.
1471 Win32: If the user changes the setting for the number of lines a scroll wheel
1472 click scrolls it is now used immediately.  Previously Vim would need to be
1473 restarted.
1475 When using @= in an expression the value is expression @= contains.  ":let @=
1476 = value" can be used to set the register contents.
1478 A ! can be added to ":popup" to have the popup menu appear at the mouse
1479 pointer position instead of the text cursor.
1481 The table with encodings has been expanded with many MS-Windows codepages,
1482 such as cp1250 and cp737, so that these can also be used on Unix without
1483 prepending "8bit-".
1484 When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part.
1486 Added the "customlist" completion argument to a user-defined command.  The
1487 user-defined completion function should return the completion candidates as a
1488 Vim List and the returned results are not filtered by Vim. (Yegappan
1489 Lakshmanan)
1491 Win32: Balloons can have multiple lines if common controls supports it.
1492 (Sergey Khorev)
1494 For command-line completion the matches for various types of arguments are now
1495 sorted: user commands, variables, syntax names, etc.
1497 When no locale is set, thus using the "C" locale, Vim will work with latin1
1498 characters, using its own isupper()/toupper()/etc. functions.
1500 When using an rxvt terminal emulator guess the value of 'background' using the
1501 COLORFGBG environment variable. (Ciaran McCreesh)
1503 Also support t_SI and t_EI on Unix with normal features. (Ciaran McCreesh)
1505 When 'foldcolumn' is one then put as much info in it as possible.  This allows
1506 closing a fold with the mouse by clicking on the '-'.
1508 input() takes an optional completion argument to specify the type of
1509 completion supported for the input. (Yegappan Lakshmanan)
1511 "dp" works with more than two buffers in diff mode if there is only one where
1512 'modifiable' is set.
1514 The 'diffopt' option has three new values: "horizontal", "vertical" and
1515 "foldcolumn".
1517 When the 'include' option contains \zs the file name found is what is being
1518 matched from \zs to the end or \ze.  Useful to pass more to 'includeexpr'.
1520 Loading plugins on startup now supports subdirectories in the plugin
1521 directory. |load-plugins|
1523 In the foldcolumn always show the '+' for a closed fold, so that it can be
1524 opened easily.  It may overwrite another character, esp. if 'foldcolumn' is 1.
1526 It is now possible to get the W10 message again by setting 'readonly'.  Useful
1527 in the FileChangedRO autocommand when checking out the file fails.
1529 Unix: When open() returns EFBIG give an appropriate message.
1531 ":mksession" sets the SessionLoad variable to notify plugins.  A modeline is
1532 added to the session file to set 'filetype' to "vim".
1534 In the ATTENTION prompt put the "Delete it" choice before "Quit" to make it
1535 more logical.  (Robert Webb)
1537 When appending to a file while the buffer has no name the name of the appended
1538 file would be used for the current buffer.  But the buffer contents is
1539 actually different from the file content.  Don't set the file name, unless the
1540 'P' flag is present in 'cpoptions'.
1542 When starting to edit a new file and the directory for the file doesn't exist
1543 then Vim will report "[New DIRECTORY]" instead of "[New File] to give the user
1544 a hint that something might be wrong.
1546 Win32: Preserve the hidden attribute of the viminfo file.
1548 In Insert mode CTRL-A didn't keep the last inserted text when using CTRL-O and
1549 then a cursor key.  Now keep the previously inserted text if nothing is
1550 inserted after the CTRL-O.  Allows using CTRL-O commands to move the cursor
1551 without losing the last inserted text.
1553 The exists() function now supports checking for autocmd group definition
1554 and for supported autocommand events. (Yegappan Lakshmanan)
1556 Allow using ":global" in the sandbox, it doesn't do anything harmful by
1557 itself.
1559 ":saveas asdf.c" will set 'filetype' to c when it's empty.  Also for ":w
1560 asdf.c" when it sets the filename for the buffer.
1562 Insert mode completion for whole lines now also searches unloaded buffers.
1564 The colortest.vim script can now be invoked directly with ":source" or
1565 ":runtime syntax/colortest.vim".
1567 The 'statusline' option can be local to the window, so that each window can
1568 have a different value.  (partly by Yegappan Lakshmanan)
1570 The 'statusline' option and other options that support the same format can now
1571 use these new features:
1572 - When it starts with "%!" the value is first evaluated as an expression
1573   before parsing the value.
1574 - "%#HLname#" can be used to start highlighting with HLname.
1576 When 'statusline' is set to something that causes an error message then it is
1577 made empty to avoid an endless redraw loop.  Also for other options, such at
1578 'tabline' and 'titlestring'.  ":verbose set statusline" will mention that it
1579 was set in an error handler.
1581 When there are several matching tags, the ":tag <name>" and CTRL-] commands
1582 jump to the [count] matching tag. (Yegappan Lakshmanan)
1584 Win32: In the batch files generated by the install program, use $VIMRUNTIME or
1585 $VIM if it's set.  Example provided by Mathias Michaelis.
1586 Also create a vimtutor.bat batch file.
1588 The 'balloonexpr' option is now |global-local|.
1590 The system() function now runs in cooked mode, thus can be interrupted by
1591 CTRL-C.
1593 ==============================================================================
1594 COMPILE TIME CHANGES                                    *compile-changes-7*
1596 Dropped the support for the BeOS and Amiga GUI.  They were not maintained and
1597 probably didn't work.  If you want to work on this: get the Vim 6.x version
1598 and merge it back in.
1600 When running the tests and one of them fails to produce "test.out" the
1601 following tests are still executed.  This helps when running out of memory.
1603 When compiling with EXITFREE defined and the ccmalloc library it is possible
1604 to detect memory leaks.  Some memory will always reported as leaked, such as
1605 allocated by X11 library functions and the memory allocated in alloc_cmdbuff()
1606 to store the ":quit" command.
1608 Moved the code for printing to src/hardcopy.c.
1610 Moved some code from main() to separate functions to make it easier to see
1611 what is being done.  Using a structure to avoid a lot of arguments to the
1612 functions.
1614 Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c
1615 without copying the code.
1617 --- Mac ---
1619 "make" now creates the Vim.app directory and "make install" copies it to its
1620 final destination. (Raf)
1622 Put the runtime directory not directly in Vim.app but in
1623 Vim.app/Contents/Resources/vim, so that it's according to Mac specs.
1625 Made it possible to compile with Motif, Athena or GTK without tricks and still
1626 being able to use the MacRoman conversion.  Added the os_mac_conv.c file.
1628 When running "make install" the runtime files are installed as for Unix.
1629 Avoids that too many files are copied.  When running "make" a link to the
1630 runtime files is created to avoid a recursive copy that takes much time.
1632 Configure will attempt to build Vim for both Intel and PowerPC.  The
1633 --with-mac-arch configure argument can change it.
1635 --- Win32 ---
1637 The Make_mvc.mak file was adjusted to work with the latest MS compilers,
1638 including the free version of Visual Studio 2005. (George Reilly)
1640 INSTALLpc.txt was updated for the recent changes. (George Reilly)
1642 The distributed executable is now produced with the free Visual C++ Toolkit
1643 2003 and other free SDK chunks.  msvcsetup.bat was added to support this.
1645 Also generate the .pdb file that can be used to generate a useful crash report
1646 on MS-Windows. (George Reilly)
1648 ==============================================================================
1649 BUG FIXES                                               *bug-fixes-7*
1651 When using PostScript printing on MS-DOS the default 'printexpr' used "lpr"
1652 instead of "copy".  When 'printdevice' was empty the copy command did not
1653 work.  Use "LPT1" then.
1655 The GTK font dialog uses a font size zero when the font name doesn't include a
1656 size.  Use a default size of 10.
1658 This example in the documentation didn't work:
1659     :e `=foo . ".c" `
1660 Skip over the expression in `=expr` when looking for comments, |, % and #.
1662 When ":helpgrep" doesn't find anything there is no error message.
1664 "L" and "H" did not take closed folds into account.
1666 Win32: The "-P title" argument stopped at the first title that matched, even
1667 when it doesn't support MDI.
1669 Mac GUI: CTRL-^ and CTRL-@ did not work.
1671 "2daw" on "word." at the end of a line didn't include the preceding white
1672 space.
1674 Win32: Using FindExecutable() doesn't work to find a program.  Use
1675 SearchPath() instead.  For executable() use $PATHEXT when the program searched
1676 for doesn't have an extension.
1678 When 'virtualedit' is set, moving the cursor up after appending a character
1679 may move it to a different column.  Was caused by auto-formatting moving the
1680 cursor and not putting it back where it was.
1682 When indent was added automatically and then moving the cursor, the indent was
1683 not deleted (like when pressing ESC).  The "I" flag in 'cpoptions' can be used
1684 to make it work the old way.
1686 When opening a command-line window, 'textwidth' gets set to 78 by the Vim
1687 filetype plugin.  Reset 'textwidth' to 0 to avoid lines are broken.
1689 After using cursor(line, col) moving up/down doesn't keep the same column.
1691 Win32: Borland C before 5.5 requires using ".u." for LowPart and HighPart
1692 fields. (Walter Briscoe)
1694 On Sinix SYS_NMLN isn't always defined.  Define it ourselves. (Cristiano De
1695 Michele)
1697 Printing with PostScript may keep the printer waiting for more.  Append a
1698 CTRL-D to the printer output. (Mike Williams)
1700 When converting a string with a hex or octal number the leading '-' was
1701 ignored.  ":echo '-05' + 0" resulted in 5 instead of -5.
1703 Using "@:" to repeat a command line didn't work when it contains control
1704 characters.  Also remove "'<,'>" when in Visual mode to avoid that it appears
1705 twice.
1707 When using file completion for a user command, it would not expand environment
1708 variables like for a regular command with a file argument.
1710 'cindent': When the argument of a #define looks like a C++ class the next line
1711 is indented too much.
1713 When 'comments' includes multi-byte characters inserting the middle part and
1714 alignment may go wrong.  'cindent' also suffers from this for right-aligned
1715 items.
1717 Win32: when 'encoding' is set to "utf-8" getenv() still returns strings in the
1718 active codepage.  Convert to utf-8.  Also for $HOME.
1720 The default for 'helplang' was "zh" for both "zh_cn" and "zh_tw".  Now use
1721 "cn" or "tw" as intended.
1723 When 'bin' is set and 'eol' is not set then line2byte() added the line break
1724 after the last line while it's not there.
1726 Using foldlevel() in a WinEnter autocommand may not work.  Noticed when
1727 resizing the GUI shell upon startup.
1729 Python: Using buffer.append(f.readlines()) didn't work.  Allow appending a
1730 string with a trailing newline.  The newline is ignored.
1732 When using the ":saveas f2" command for buffer "f1", the Buffers menu would
1733 contain "f2" twice, one of them leading to "f1".  Also trigger the BufFilePre
1734 and BufFilePost events for the alternate buffer that gets the old name.
1736 strridx() did not work well when the needle is empty. (Ciaran McCreesh)
1738 GTK: Avoid a potential hang in gui_mch_wait_for_chars() when input arrives
1739 just before it is invoked
1741 VMS: Occasionally CR characters were inserted in the file.  Expansion of
1742 environment variables was not correct. (Zoltan Arpadffy)
1744 UTF-8: When 'delcombine' is set "dw" only deleted the last combining character
1745 from the first character of the word.
1747 When using ":sball" in an autocommand only the filetype in one buffer was
1748 detected.  Reset did_filetype in enter_buffer().
1750 When using ":argdo" and the window already was at the first argument index,
1751 but not actually editing it, the current buffer would be used instead.
1753 When ":next dir/*" includes many matches, adding the names to the argument
1754 list may take an awful lot of time and can't be interrupted.  Allow
1755 interrupting this.
1757 When editing a file that was already loaded in a buffer, modelines were not
1758 used.  Now window-local options in the modeline are set.  Buffer-local options
1759 and global options remain unmodified.
1761 Win32: When 'encoding' is set to "utf-8" in the vimrc file, files from the
1762 command line with non-ASCII characters are not used correctly.  Recode the
1763 file names when 'encoding' is set, using the Unicode command line.
1765 Win32 console: When the default for 'encoding' ends up to be "latin1", the
1766 default value of 'isprint' was wrong.
1768 When an error message is given while waiting for a character (e.g., when an
1769 xterm reports the number of colors), the hit-enter prompt overwrote the last
1770 line.  Don't reset msg_didout in normal_cmd() for K_IGNORE.
1772 Mac GUI: Shift-Tab didn't work.
1774 When defining tooltip text, don't translate terminal codes, since it's not
1775 going to be used like a command.
1777 GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a
1778 GTK error.  Invalid characters may appear when 'encoding' is changed.
1780 GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango.
1782 Win32: When 'encoding' is changed while starting up, use the Unicode command
1783 line to convert the file arguments to 'encoding'.  Both for the GUI and the
1784 console version.
1786 Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because
1787 there is no codepage for latin9.  Do our own conversion from latin9 to UCS2.
1789 When two versions of GTK+ 2 are installed it was possible to use the header
1790 files from one and the library from the other.  Use GTK_LIBDIR to put the
1791 directory for the library early in the link flags.
1793 With the GUI find/replace dialog a replace only worked if the pattern was
1794 literal text.  Now it works for any pattern.
1796 When 'equalalways' is set and 'eadirection' is "hor", ":quit" would still
1797 cause equalizing window heights in the vertical direction.
1799 When ":emenu" is used in a startup script the command was put in the typeahead
1800 buffer, causing a prompt for the crypt key to be messed up.
1802 Mac OS/X: The default for 'isprint' included characters 128-160, causes
1803 problems for Terminal.app.
1805 When a syntax item with "containedin" is used, it may match in the start or
1806 end of a region with a matchgroup, while this doesn't happen for a "contains"
1807 argument.
1809 When a transparent syntax items matches in another item where the highlighting
1810 has already stopped (because of a he= argument), the highlighting would come
1811 back.
1813 When cscope is used to set the quickfix error list, it didn't get set if there
1814 was only one match. (Sergey Khorev)
1816 When 'confirm' is set and using ":bdel" in a modified buffer, then selecting
1817 "cancel", would still give an error message.
1819 The PopUp menu items that started Visual mode didn't work when not in Normal
1820 mode.  Switching between selecting a word and a line was not possible.
1822 Win32: The keypad decimal point always resulted in a '.', while on some
1823 keyboards it's a ','.  Use MapVirtualKey(VK_DECIMAL, 2).
1825 Removed unused function DisplayCompStringOpaque() from gui_w32.c
1827 In Visual mode there is not always an indication whether the line break is
1828 selected or not.  Highlight the character after the line when the line break
1829 is included, e.g., after "v$o".
1831 GTK: The <F10> key can't be mapped, it selects the menu.  Disable that with a
1832 GTK setting and do select the menu when <F10> isn't mapped. (David Necas)
1834 After "Y" '[ and '] were not at start/end of the yanked text.
1836 When a telnet connection is dropped Vim preserves files and exits.  While
1837 doing that a SIGHUP may arrive and disturb us, thus ignore it. (Scott
1838 Anderson)  Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to
1839 handle.  Added handle_signal().
1841 When completing a file name on the command line backslashes are required for
1842 white space.  Was only done for a space, not for a Tab.
1844 When configure could not find a terminal library, compiling continued for a
1845 long time before reporting the problem.  Added a configure check for tgetent()
1846 being found in a library.
1848 When the cursor is on the first char of the last line a ":g/pat/s///" command
1849 may cause the cursor to be displayed below the text.
1851 Win32: Editing a file with non-ASCII characters doesn't work when 'encoding'
1852 is "utf-8".  use _wfullpath() instead of _fullpath(). (Yu-sung Moon)
1854 When recovering the 'fileformat' and 'fileencoding' were taken from the
1855 original file instead of from the swapfile.  When the file didn't exist, was
1856 empty or the option was changed (e.g., with ":e ++fenc=cp123 file") it could
1857 be wrong.  Now store 'fileformat' and 'fileencoding' in the swapfile and use
1858 the values when recovering.
1860 ":bufdo g/something/p" overwrites each last printed text line with the file
1861 message for the next buffer.  Temporarily clear 'shortmess' to avoid that.
1863 Win32: Cannot edit a file starting with # with --remote.  Do escape % and #
1864 when building the ":drop" command.
1866 A comment or | just after a expression-backtick argument was not recognized.
1867 E.g. in :e `="foo"`"comment.
1869 "(" does not stop at an empty sentence (single dot and white space) while ")"
1870 does.  Also breaks "das" on that dot.
1872 When doing "yy" with the cursor on a TAB the ruler could be wrong and "k"
1873 moved the cursor to another column.
1875 When 'commentstring' is '"%s' and there is a double quote in the line a double
1876 quote before the fold marker isn't removed in the text displayed for a  closed
1877 fold.
1879 In Visual mode, when 'bin' and 'eol' set, g CTRL-G counted the last line
1880 break, resulting in "selected 202 of 201 bytes".
1882 Motif: fonts were not used for dialog components. (Marcin Dalecki)
1884 Motif: After using a toolbar button the keyboard focus would be on the toolbar
1885 (Lesstif problem). (Marcin Dalecki)
1887 When using "y<C-V>`x" where mark x is in the first column, the last line was
1888 not included.
1890 Not all test scripts work properly on MS-Windows when checked out from CVS.
1891 Use a Vim command to fix all fileformats to dos before executing the tests.
1893 When using ":new" and the file fits in the window, lines could still be above
1894 the window.  Now remove empty lines instead of keeping the relative position.
1896 Cmdline completion didn't work after ":let var1 var<Tab>".
1898 When using ":startinsert" or ":startreplace" when already in Insert mode
1899 (possible when using CTRL-R =), pressing Esc would directly restart Insert
1900 mode. (Peter Winters)
1902 "2daw" didn't work at end of file if the last word is a single character.
1904 Completion for ":next a'<Tab>" put a backslash before single quote, but it was
1905 not removed when editing a file.  Now halve backslashes in save_patterns().
1906 Also fix expanding a file name with the shell that contains "\'".
1908 When doing "1,6d|put" only "fewer lines" was reported.  Now a following "more
1909 lines" overwrites the message.
1911 Configure could not handle "-Dfoo=long\ long" in the TCL config output.
1913 When searching backwards, using a pattern that matches a newline and uses \zs
1914 after that, didn't find a match.  Could also get a hang or end up in the right
1915 column in the wrong line.
1917 When $LANG is "sl" for slovenian, the slovak menu was used, since "slovak"
1918 starts with "sl".
1920 When 'paste' is set in the GUI the Paste toolbar button doesn't work.  Clear
1921 'paste' when starting the GUI.
1923 A message about a wrong viminfo line included the trailing NL.
1925 When 'paste' is set in the GUI the toolbar button doesn't work in Insert mode.
1926 Use ":exe" in menu.vim to avoid duplicating the commands, instead of using a
1927 mapping.
1929 Treat "mlterm" as an xterm-like terminal. (Seiichi Sato)
1931 ":z.4" and ":z=4" didn't work Vi compatible.
1933 When sourcing a file, editing it and sourcing it again, it could appear twice
1934 in ":scriptnames" and get a new <SID>, because the inode has changed.
1936 When $SHELL is set but empty the 'shell' option would be empty.  Don't use an
1937 empty $SHELL value.
1939 A command "w! file" in .vimrc or $EXINIT didn't work.  Now it writes an empty
1940 file.
1942 When a CTRL-F command at the end of the file failed, the cursor was still
1943 moved to the start of the line.  Now it remains where it is.
1945 When using ":s" or "&" to repeat the last substitute and "$" was used to put
1946 the cursor in the last column, put the cursor in the last column again.  This
1947 is Vi compatible.
1949 Vim is not fully POSIX compliant but sticks with traditional Vi behavior.
1950 Added a few flags in 'cpoptions' to behave the POSIX way when wanted.  The
1951 $VIM_POSIX environment variable is checked to set the default.
1953 Appending to a register didn't insert a line break like Vi.  Added the '>'
1954 flag to 'cpoptions' for this.
1956 Using "I" in a line with only blanks appended to the line.  This is not Vi
1957 compatible.  Added the 'H' flag in 'coptions' for this.
1959 When joining multiple lines the cursor would be at the last joint, but Vi
1960 leaves it at the position where "J" would put it.  Added the 'q' flag in
1961 'cpoptions' for this.
1963 Autoindent didn't work for ":insert" and ":append".
1965 Using ":append" in an empty buffer kept the dummy line.  Now it's deleted to
1966 be Vi compatible.
1968 When reading commands from a file and stdout goes to a terminal, would still
1969 request the xterm version.  Vim can't read it, thus the output went to the
1970 shell and caused trouble there.
1972 When redirecting to a register with an invalid name the redirection would
1973 still be done (after an error message).  Now reset "redir_reg". (Yegappan
1974 Lakshmanan)
1976 It was not possible to use a NL after a backslash in Ex mode.  This is
1977 sometimes used to feed multiple lines to a shell command.
1979 When 'cmdheight' is set to 2 in .vimrc and the GUI uses the number of lines
1980 from the terminal we actually get 3 lines for the cmdline in gvim.
1982 When setting $HOME allocated memory would leak.
1984 Win32: bold characters may sometimes write in another character cell.  Use
1985 unicodepdy[] as for UTF-8. (Taro Muraoka)
1987 ":w fname" didn't work for files with 'buftype' set to "nofile".
1989 The method used to locate user commands for completion differed from when they
1990 are executed.  Ambiguous command names were not completed properly.
1992 Incremental search may cause a crash when there is a custom statusline that
1993 indirectly invokes ":normal".
1995 Diff mode failed when $DIFF_OPTIONS was set in the environment.  Unset it
1996 before invoking "diff".
1998 Completion didn't work after ":argdo", ":windo" and ":bufdo".  Also for ":set
1999 &l:opt" and ":set &g:opt". (Peter Winters)
2001 When setting 'ttymouse' to "dec" in an xterm that supports the DEC mouse
2002 locator it doesn't work.  Now switch off the mouse before selecting another
2003 mouse model.
2005 When the CursorHold event is triggered and the commands peek for typed
2006 characters the typeahead buffer may be messed up, e.g., when a mouse-up event
2007 is received.  Avoid invoking the autocommands from the function waiting for a
2008 character, let it put K_CURSORHOLD in the input buffer.
2010 Removed the "COUNT" flag from ":argadd", to avoid ":argadd 1*" to be used like
2011 ":1argadd *".  Same for ":argdelete" and ":argedit".
2013 Avoid that $LANG is used for the menus when LC_MESSAGES is "en_US".
2015 Added backslashes before dashes in the vim.1 manual page to make the appear as
2016 real dashes. (Pierr Habouzit)
2018 Where "gq" left the cursor depended on the value of 'formatprg'.  Now "gq"
2019 always leaves the cursor at the last line of the formatted text.
2021 When editing a compressed file, such as "changelog.Debian.gz" file, filetype
2022 detection may try to check the contents of the file while it's still
2023 compressed.  Skip setting 'filetype' for compressed files until they have been
2024 decompressed.  Required for patterns that end in a "*".
2026 Starting with an argument "+cmd" or "-S script" causes the cursor the be moved
2027 to the first line.  That breaks a BufReadPost autocommand that uses g`".
2028 Don't move the cursor if it's somewhere past the first line.
2030 "gg=G" while 'modifiable' is off was uninterruptible.
2032 When 'encoding' is "sjis" inserting CTRL-V u d800 a few times causes a crash.
2033 Don't insert a DBCS character with a NUL second byte.
2035 In Insert mode CTRL-O <Home> didn't move the cursor.  Made "ins_at_eol" global
2036 and reset it in nv_home().
2038 Wildcard expansion failed: ":w /tmp/$$.`echo test`".  Don't put quotes around
2039 spaces inside backticks.
2041 After this sequence of commands: Y V p gv: the wrong line is selected.  Now
2042 let "gv" select the text that was put, since the original text is deleted.
2043 This should be the most useful thing to do.
2045 ":sleep 100u" sleeps for 100 seconds, not 100 usec as one might expect.  Give
2046 an error message when the argument isn't recognized.
2048 In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in
2049 reallocating the buffer every time. (Alexei Alexandrov)
2051 When using a Python "atexit" function it was not invoked when Vim exits.  Now
2052 call Py_Finalize() for that. (Ugo Di Girolamo)
2053 This breaks the thread stuff though, fixed by Ugo.
2055 GTK GUI: using a .vimrc with "set cmdheight=2 lines=43" and ":split" right
2056 after startup, the window layout is messed up. (Michael Schaap)  Added
2057 win_new_shellsize() call in gui_init() to fix the topframe size.
2059 Trick to get ...MOUSE_NM not used when there are vertical splits.  Now pass
2060 column -1 for the left most window and add MOUSE_COLOFF for others.  Limits
2061 mouse column to 10000.
2063 searchpair() may hang when the end pattern has "\zs" at the end.  Check that
2064 we find the same position again and advance one character.
2066 When in diff mode and making a change that causes the "changed" highlighting
2067 to disappear or reappear, it was still highlighted in another window.
2069 When a ":next" command fails because the user selects "Abort" at the ATTENTION
2070 prompt the argument index was advanced anyway.
2072 When "~" is in 'iskeyword' the "gd" doesn't work, it's used for the previous
2073 substitute pattern.  Put "\V" in the pattern to avoid that.
2075 Use of sprintf() sometimes didn't check properly for buffer overflow.  Also
2076 when using smsg().  Included code for snprintf() to avoid having to do size
2077 checks where invoking them
2079 ":help \=<Tab>" didn't find "sub-replace-\=".  Wild menu for help tags didn't
2080 show backslashes.  ":he :s\=" didn't work.
2082 When reading an errorfile "~/" in a file name was not expanded.
2084 GTK GUI: When adding a scrollbar (e.g. when using ":vsplit") in a script or
2085 removing it the window size may change.  GTK sends us resize events when we
2086 change the window size ourselves, but they may come at an unexpected moment.
2087 Peek for a character to get any window resize events and fix 'columns' and
2088 'lines' to undo this.
2090 When using the GTK plug mechanism, resizing and focus was not working
2091 properly. (Neil Bird)
2093 After deleting files from the argument list a session file generated with
2094 ":mksession" may contain invalid ":next" commands.
2096 When 'shortmess' is empty and 'keymap' set to accents, in Insert mode CTRL-N
2097 may cause the hit-enter prompt.  Typing 'a then didn't result in the accented
2098 character.  Put the character typed at the prompt back in the typeahead buffer
2099 so that mapping is done in the right mode.
2101 setbufvar() and setwinvar() did not give error messages.
2103 It was possible to set a variable with an illegal name, e.g. with setbufvar().
2104 It was possible to define a function with illegal name, e.t. ":func F{-1}()"
2106 CTRL-W F and "gf" didn't use the same method to get the file name.
2108 When reporting a conversion error the line number of the last error could be
2109 given.  Now report the first encountered error.
2111 When using ":e ++enc=name file" and iconv() was used for conversion an error
2112 caused a fall-back to no conversion.  Now replace a character with '?' and
2113 continue.
2115 When opening a new buffer the local value of 'bomb' was not initialized from
2116 the global value.
2118 Win32: When using the "Edit with Vim" entry the file name was limited to about
2119 200 characters.
2121 When using command line completion for ":e *foo" and the file "+foo" exists
2122 the resulting command ":e +foo" doesn't work.  Now insert a backslash: ":e
2123 \+foo".
2125 When the translation of "-- More --" was not 10 characters long the following
2126 message would be in the wrong position.
2128 At the more-prompt the last character in the last line wasn't drawn.
2130 When deleting non-existing text while 'virtualedit' is set the '[ and '] marks
2131 were not set.
2133 Win32: Could not use "**/" in 'path', it had to be "**\".
2135 The search pattern "\n" did not match at the end of the last line.
2137 Searching for a pattern backwards, starting on the NUL at the end of the line
2138 and 'encoding' is "utf-8" would match the pattern just before it incorrectly.
2139 Affected searchpair('/\*', '', '\*/').
2141 For the Find/Replace dialog it was possible that not finding the text resulted
2142 in an error message while redrawing, which cleared the syntax highlighting
2143 while it was being used, resulting in a crash.  Now don't clear syntax
2144 highlighting, disable it with b_syn_error.
2146 Win32: Combining UTF-8 characters were drawn on the previous character.
2147 Could be noticed with a Thai font.
2149 Output of ":function" could leave some of the typed text behind. (Yegappan
2150 Lakshmanan)
2152 When the command line history has only a few lines the command line window
2153 would be opened with these lines above the first window line.
2155 When using a command line window for search strings ":qa" would result in
2156 searching for "qa" instead of quitting all windows.
2158 GUI: When scrolling with the scrollbar and there is a line that doesn't fit
2159 redrawing may fail.  Make sure w_skipcol is valid before redrawing.
2161 Limit the values of 'columns' and 'lines' to avoid an overflow in Rows *
2162 Columns.  Fixed bad effects when running out of memory (command line would be
2163 reversed, ":qa!" resulted in ":!aq").
2165 Motif: "gvim -iconic" opened the window anyway.  (David Harrison)
2167 There is a tiny chance that a symlink gets created between checking for an
2168 existing file and creating a file.  Use the O_NOFOLLOW for open() if it's
2169 available.
2171 In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of
2172 sticking to the first column.
2174 When using ":wq" and a BufWriteCmd autocmd uses inputsecret() the text was
2175 echoed anyway.  Set terminal to raw mode in getcmdline().
2177 Unix: ":w a;b~c" caused an error in expanding wildcards.
2179 When appending to a file with ":w >>fname" in a buffer without a name, causing
2180 the buffer to use "fname", the modified flag was reset.
2182 When appending to the current file the "not edited" flag would be reset.
2183 ":w" would overwrite the file accidentally.
2185 Unix: When filtering text with an external command Vim would still read input,
2186 causing text typed for the command (e.g., a password) to be eaten and echoed.
2187 Don't read input when the terminal is in cooked mode.
2189 The Cygwin version of xxd used CR/LF line separators. (Corinna Vinschen)
2191 Unix: When filtering text through a shell command some resulting text may be
2192 dropped.  Now after detecting that the child has exited try reading some more
2193 of its output.
2195 When inside input(), using "CTRL-R =" and the expression throws an exception
2196 the command line was not abandoned but it wasn't used either.  Now abandon
2197 typing the command line.
2199 'delcombine' was also used in Visual and Select mode and for commands like
2200 "cl".  That was illogical and has been disabled.
2202 When recording while a CursorHold autocommand was defined special keys would
2203 appear in the register.  Now the CursorHold event is not triggered while
2204 recording.
2206 Unix: the src/configure script used ${srcdir-.}, not all shells understand
2207 that.  Use ${srcdir:-.} instead.
2209 When editing file "a" which is a symlink to file "b" that doesn't exist,
2210 writing file "a" to create "b" and then ":split b" resulted in two buffers on
2211 the same file with two different swapfile names.  Now set the inode in the
2212 buffer when creating a new file.
2214 When 'esckeys' is not set don't send the xterm code to request the version
2215 string, because it may cause trouble in Insert mode.
2217 When evaluating an expression for CTRL-R = on the command line it was possible
2218 to call a function that opens a new window, resulting in errors for
2219 incremental search, and many other nasty things were possible.  Now use the
2220 |textlock| to disallow changing the buffer or jumping to another window
2221 to protect from unexpected behavior.  Same for CTRL-\ e.
2223 "d(" deleted the character under the cursor, while the documentation specified
2224 an exclusive motion.  Vi also doesn't delete the character under the cursor.
2226 Shift-Insert in Insert mode could put the cursor before the last character
2227 when it just fits in the window.  In coladvance() don't stop at the window
2228 edge when filling with spaces and when in Insert mode.  In mswin.vim avoid
2229 getting a beep from the "l" command.
2231 Win32 GUI: When Alt-F4 is used to close the window and Cancel is selected in
2232 the dialog then Vim would insert <M-F4> in the text.  Now it's ignored.
2234 When ":silent! {cmd}" caused the swap file dialog, which isn't displayed,
2235 there would still be a hit-enter prompt.
2237 Requesting the termresponse (|t_RV|) early may cause problems with "-c"
2238 arguments that invoke an external command or even "-c quit".  Postpone it
2239 until after executing "-c" arguments.
2241 When typing in Insert mode so that a new line is started, using CTRL-G u to
2242 break undo and start a new change, then joining the lines with <BS> caused
2243 undo info to be missing.  Now reset the insertion start point.
2245 Syntax HL: When a region start match has a matchgroup and an offset that
2246 happens to be after the end of the line then it continued in the next line and
2247 stopped at the region end match, making the region continue after that.
2248 Now check for the column being past the end of the line in syn_add_end_off().
2250 When changing a file, setting 'swapfile' off and then on again, making another
2251 change and killing Vim, then some blocks may be missing from the swapfile.
2252 When 'swapfile' is switched back on mark all blocks in the swapfile as dirty.
2253 Added mf_set_dirty().
2255 Expanding wildcards in a command like ":e aap;<>!" didn't work.  Put
2256 backslashes before characters that are special to the shell. (Adri Verhoef)
2258 A CursorHold autocommand would cause a message to be cleared.  Don't show the
2259 special key for the event for 'showcmd'.
2261 When expanding a file name for a shell command, as in "!cmd foo<Tab>" or ":r
2262 !cmd foo<Tab>" also escape characters that are special for the shell:
2263 "!;&()<>".
2265 When the name of the buffer was set by a ":r fname" command |cpo-f| no
2266 autocommands were triggered to notify about the change in the buffer list.
2268 In the quickfix buffer 'bufhidden' was set to "delete", which caused closing
2269 the quickfix window to leave an unlisted "No Name" buffer behind every time.
2271 Win32: when using two screens of different size, setting 'lines' to a large
2272 value didn't fill the whole screen. (SungHyun Nam)
2274 Win32 installer: The generated _vimrc contained an absolute path to diff.exe.
2275 After upgrading it becomes invalid.  Now use $VIMRUNTIME instead.
2277 The command line was cleared to often when 'showmode' was set and ":silent
2278 normal vy" was used.  Don't clear the command line unless the mode was
2279 actually displayed.  Added the "mode_displayed" variable.
2281 The "load session" toolbar item could not handle a space or other special
2282 characters in v:this_session.
2284 ":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2.
2286 In a multi-byte file the foldmarker could be recognized in the trail byte.
2287 (Taro Muraoka)
2289 Pasting with CTRL-V and menu didn't work properly when some commands are
2290 mapped.  Use ":normal!" instead of ":normal". (Tony Apuzzo)
2292 Crashed when expanding a file name argument in backticks.
2294 In some situations the menu and scrollbar didn't work, when the value contains
2295 a CSI byte. (Yukihiro Nakadaira)
2297 GTK GUI: When drawing the balloon focus changes and we might get a key release
2298 event that removed the balloon again.  Ignore the key release event.
2300 'titleold' was included in ":mkexrc" and ":mksession" files.
2302 ":set background&" didn't use the same logic as was used when starting up.
2304 When "umask" is set such that nothing is writable then the viminfo file would
2305 be written without write permission. (Julian Bridle)
2307 Motif: In diff mode dragging one scrollbar didn't update the scrollbar of the
2308 other diff'ed window.
2310 When editing in an xterm with a different number of colors than expected the
2311 screen would be cleared and redrawn, causing the message about the edited file
2312 to be cleared.  Now set "keep_msg" to redraw the last message.
2314 For a color terminal: When the Normal HL uses bold, possibly to make the color
2315 lighter, and another HL group specifies a color it might become light as well.
2316 Now reset bold if a HL group doesn't specify bold itself.
2318 When using 256 color xterm the color 255 would show up as color 0.  Use a
2319 short instead of a char to store the color number.
2321 ml_get errors when searching for "\n\zs" in an empty file.
2323 When selecting a block and using "$" to select until the end of every line and
2324 not highlighting the character under the cursor the first character of the
2325 block could be unhighlighted.
2327 When counting words for the Visual block area and using "$" to select until
2328 the end of every line only up to the length of the last line was counted.
2330 "dip" in trailing empty lines left one empty line behind.
2332 The script ID was only remembered globally for each option. When a buffer- or
2333 window-local option was set the same "last set" location was changed for all
2334 buffers and windows.  Now remember the script ID for each local option
2335 separately.
2337 GUI: The "Replace All" button didn't handle backslashes in the replacement in
2338 the same way as "Replace".  Escape backslashes so that they are taken
2339 literally.
2341 When using Select mode from Insert mode and typing a key, causing lines to be
2342 deleted and a message displayed, delayed the effect of inserting the key.
2343 Now overwrite the message without delay.
2345 When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line
2346 worked differently.  Now recognize all operators when using "l" at the end of
2347 a line.
2349 GTK GUI: when the font selector returned a font name with a comma in it then
2350 it would be handled like two font names.  Now put a backslash before the
2351 comma.
2353 MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for
2354 'iskeyword' was still for CPxxx.  And when 'nocompatible' was set 'isprint'
2355 would also be the wrong value.
2357 When a command was defined not to take arguments and no '|' no warning message
2358 would be given for using a '|'.  Also with ":loadkeymap".
2360 Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) !=
2361 sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira)
2363 ":all" always set the current window to the first window, even when it
2364 contains a buffer that is not in the argument list (can't be closed because it
2365 is modified).  Now go to the window that has the first item of the argument
2366 list.
2368 GUI: To avoid left-over pixels from bold text all characters after a character
2369 with special attributes were redrawn.  Now only do this for characters that
2370 actually are bold.  Speeds up displaying considerably.
2372 When only highlighting changes and the text is scrolled at the same time
2373 everything is redraw instead of using a scroll and updating the changed text.
2374 E.g., when using ":match" to highlight a paren that the cursor landed on.
2375 Added SOME_VALID: Redraw the whole window but also try to scroll to minimize
2376 redrawing.
2378 Win32: When using Korean IME making it active didn't work properly. (Moon,
2379 Yu-sung, 2005 March 21)
2381 Ruby interface: when inserting/deleting lines display wasn't updated. (Ryan
2382 Paul)
2384 --- fixes since Vim 7.0b ---
2386 Getting the GCC version in configure didn't work with Solaris sed.  First
2387 strip any "darwin." and then get the version number.
2389 The "autoload" directory was missing from the self-installing executable for
2390 MS-Windows.
2392 The MS-Windows install program would find "vimtutor.bat" in the install
2393 directory.  After changing to "c:" also change to "\" to avoid looking in the
2394 install directory.
2396 To make the 16 bit DOS version compile exclude not used highlight
2397 initializations and build a tiny instead of small version.
2399 finddir() and findfile() accept a negative count and return a List then.
2401 The Python indent file contained a few debugging statements, removed.
2403 Expanding {} for a function name, resulting in a name starting with "s:" was
2404 not handled correctly.
2406 Spelling: renamed COMPOUNDMAX to COMPOUNDWORDMAX.  Added several items to be
2407 able to handle the new Hungarian dictionary.
2409 Mac: Default to building for the current platform only, that is much faster
2410 than building a universal binary.  Also, using Perl/Python/etc. only works for
2411 the current platform.
2413 The time on undo messages disappeared for someone.  Using %T for strftime()
2414 apparently doesn't work everywhere.  Use %H:%M:%S instead.
2416 Typing BS at the "z=" prompt removed the prompt.
2418 --- fixes and changes since Vim 7.0c ---
2420 When jumping to another tab page the Vim window size was always set, even when
2421 nothing in the layout changed.
2423 Win32 GUI tab pages line wasn't always enabled.  Do a proper check for the
2424 compiler version.
2426 Win32: When switching between tab pages the Vim window was moved when part of
2427 it was outside of the screen.  Now only do that in the direction of a size
2428 change.
2430 Win32: added menu to GUI tab pages line. (Yegappan Lakshmanan)
2432 Mac: Added document icons. (Benji Fisher)
2434 Insert mode completion: Using Enter to accept the current match causes
2435 confusion.  Use CTRL-Y instead.  Also, use CTRL-E to go back to the typed
2436 text.
2438 GUI: When there are left and right scrollbars, ":tabedit" kept them instead of
2439 using the one that isn't needed.
2441 Using "gP" to replace al the text could leave the cursor below the last line,
2442 causing ml_get errors.
2444 When 'cursorline' is set don't use the highlighting when Visual mode is
2445 active, otherwise it's difficult to see the selected area.
2447 The matchparen plugin restricts the search to 100 lines, to avoid a long delay
2448 when there are closed folds.
2450 Sometimes using CTRL-X s to list spelling suggestions used text from another
2451 line.
2453 Win32: Set the default for 'isprint' back to the wrong default "@,~-255",
2454 because many people use Windows-1252 while 'encoding' is "latin1".
2456 GTK: Added a workaround for gvim crashing when used over an untrusted ssh
2457 link, caused by GTK doing something nasty. (Ed Catmur)
2459 Win32: The font used for the tab page labels is too big.  Use the system menu
2460 font. (George Reilly)
2462 Win32: Adjusting the window position and size to keep it on the screen didn't
2463 work properly when the taskbar is on the left or top of the screen.
2465 The installman.sh and installml.sh scripts use ${10}, that didn't work with
2466 old shells.  And use "test -f" instead of "test -e".
2468 Win32: When 'encoding' was set in the vimrc then a directory argument for diff
2469 mode didn't work.
2471 GUI: at the inputlist() prompt the cursorshape was adjusted as if the windows
2472 were still at their old position.
2474 The parenmatch plugin didn't remember the highlighting per window.
2476 Using ":bd" for a buffer that's the current window in another tab page caused
2477 a crash.
2479 For a new tab page the 'scroll' option wasn't set to a good default.
2481 Using an end offset for a search "/pat/e" didn't work properly for multi-byte
2482 text. (Yukihiro Nakadaira)
2484 ":s/\n/,/" doubled the text when used on the last line.
2486 When "search" is in 'foldopen' "[s" and "]s" now open folds.
2488 When using a numbered function "dict" can be omitted, but "self" didn't work
2489 then.  Always add FC_DICT to the function flags when it's part of a
2490 dictionary.
2492 When "--remote-tab" executes locally it left an empty tab page.
2494 "gvim -u NONE", ":set cursorcolumn", "C" in the second line didn't update
2495 text.  Do update further lines even though the "$" is displayed.
2497 VMS: Support GTK better, also enable +clientserver. (Zoltan Arpadffy)
2499 When highlighting of statusline or tabline is changed there was no redraw to
2500 show the effect.
2502 Mac: Added "CFBundleIdentifier" to infplist.xml.
2504 Added tabpage-local variables t:var.
2506 Win32: Added double-click in tab pages line creates new tab. (Yegappan
2507 Lakshmanan)
2509 Motif: Added GUI tab pages line. (Yegappan Lakshmanan)
2511 Fixed crash when 'lines' was set to 1000 in a modeline.
2513 When init_spellfile() finds a writable directory in 'runtimepath' but it
2514 doesn't contain a "spell" directory, create one.
2516 Win32: executable() also finds "xxd" in the directory where Vim was started,
2517 but "!xxd" doesn't work.  Append the Vim starting directory to $PATH.
2519 The tab page labels are shortened, directory names are reduced to a single
2520 letter by default.  Added the pathshorten() function to allow a user to do the
2521 same.
2523 ":saveas" now resets 'readonly' if the file was successfully written.
2525 Set $MYVIMRC file to the first found .vimrc file.
2526 Set $MYGVIMRC file to the first found .gvimrc file.
2527 Added menu item "Startup Settings" that edits the $MYVIMRC file
2529 Added matcharg().
2531 Error message E745 appeared twice.  Renamed one to E786.
2533 Fixed crash when using "au BufRead * Sexplore" and doing ":help".  Was wiping
2534 out a buffer that's still in a window.
2536 ":hardcopy" resulted in an error message when 'encoding' is "utf-8" and
2537 'printencoding' is empty.  Now it assumes latin1. (Mike Williams)
2539 The check for the toolbar feature for Motif, depending on certain included
2540 files, wasn't detailed enough, causing building to fail in gui_xmebw.c.
2542 Using CTRL-E in Insert mode completion after CTRL-P inserted the first match
2543 instead of the original text.
2545 When displaying a UTF-8 character with a zero lower byte Vim might think the
2546 previous character is double-wide.
2548 The "nbsp" item of 'listchars' didn't work when 'encoding' was utf-8.
2550 Motif: when Xm/xpm.h is missing gui_xmebw.c would not compile.
2551 HAVE_XM_UNHIGHLIGHTT_H was missing a T.
2553 Mac: Moved the .icns files into src/os_mac_rsrc, so that they can all be
2554 copied at once.  Adjusted the Info.plist file for three icons.
2556 When Visual mode is active while switching to another tabpage could get ml_get
2557 errors.
2559 When 'list' is set, 'nowrap' the $ in the first column caused 'cursorcolumn'
2560 to move to the right.
2562 When a line wraps, 'cursorcolumn' was never displayed past the end of the
2563 line.
2565 'autochdir' was only available when compiled with NetBeans and GUI.  Now it's
2566 a separate feature, also available in the "big" version.
2568 Added CTRL-W gf: open file under cursor in new tab page.
2570 When using the menu in the tab pages line, "New Tab" opens the new tab before
2571 where the click was.  Beyond the labels the new tab appears at the end instead
2572 of after the current tab page.
2574 Inside a mapping with an expression getchar() could not be used.
2576 When vgetc is used recursively vgetc_busy protects it from being used
2577 recursively.  But after a ":normal" command the protection was reset.
2579 ":s/a/b/n" didn't work when 'modifiable' was off.
2581 When $VIMRUNTIME includes a multi-byte character then rgb.txt could not be
2582 found. (Yukihiro Nakadaira)
2584 ":mkspell" didn't work correctly for non-ASCII affix flags when conversion is
2585 needed on the spell file.
2587 glob('/dir/\$ABC/*') didn't work.
2589 When using several tab pages and changing 'cmdheight' the display could become
2590 messed up.  Now store the value of 'cmdheight' separately for each tab page.
2592 The user of the Enter key while the popup menu is visible was still confusing.
2593 Now use Enter to select the match after using a cursor key.
2595 Added "usetab" to 'switchbuf'.
2598 --- fixes and changes since Vim 7.0d ---
2600 Added CTRL-W T: move a window to a new tab page.
2602 Using CTRL-X s in Insert mode to complete spelling suggestions and using BS
2603 deleted characters before the bad word.
2605 A few small fixes for the VMS makefile. (Zoltan Arpadffy)
2607 With a window of 91 lines 45 cols, ":vsp" scrolled the window.  Copy w_wrow
2608 when splitting a window and skip setting the height when it's already at the
2609 right value.
2611 Using <silent> in a mapping with a shell command and the GUI caused redraw
2612 to use wrong attributes.
2614 Win32: Using MSVC 4.1 for install.exe resulted in the start menu items to be
2615 created in the administrator directory instead of "All Users".  Define the
2616 CSIDL_ items if they are missing.
2618 Motif: The GUI tabline did not use the space above the right scrollbar.  Work
2619 around a bug in the Motif library. (Yegappan Lakshmanan)
2621 The extra files for XML Omni completion are now also installed.
2622 |xml-omni-datafile|
2624 GTK GUI: when 'm' is missing from 'guioptions' during startup and pressing
2625 <F10> GTK produced error messages.  Now do create the menu but disable it just
2626 after the first gui_mch_update().
2628 ":mkspell" doesn't work well with the Hungarian dictionary from the Hunspell
2629 project.  Back to the Myspell dictionary.
2631 In help files hide the | used around tags.
2633 Renamed pycomplete to pythoncomplete.
2635 Added "tabpages" to 'sessionoptions'.
2637 When 'guitablabel' is set the effect wasn't visible right away.
2639 Fixed a few 'cindent' errors.
2641 When completing menu names, e.g., after ":emenu", don't sort the entries but
2642 keep them in the original order.
2644 Fixed a crash when editing a directory in diff mode.  Don't trigger
2645 autocommands when executing the diff command.
2647 Getting a keystroke could get stuck if 'encoding' is a multi-byte encoding and
2648 typing a special key.
2650 When 'foldignore' is set the folds were not updated right away.
2652 When a list is indexed with [a : b] and b was greater than the length an error
2653 message was given.  Now silently truncate the result.
2655 When using BS during Insert mode completion go back to the original text, so
2656 that CTRL-N selects the first matching entry.
2658 Added the 'M' flag to 'cinoptions'.
2660 Win32: Make the "gvim --help" window appear in the middle of the screen
2661 instead of at an arbitrary position. (Randall W. Morris)
2663 Added gettabwinvar() and settabwinvar().
2665 Command line completion: pressing <Tab> after ":e /usr/*" expands the whole
2666 tree, because it becomes ":e /usr/**".  Don't add a star if there already is
2667 one.
2669 Added grey10 to grey90 to all GUIs, so that they can all be used for
2670 initializing highlighting.  Use grey40 for CursorColumn and CursorLine when
2671 'background' is "dark".
2673 When reading a file and using iconv for conversion, an incomplete byte
2674 sequence at the end caused problems. (Yukihiro Nakadaira)
2677 --- fixes and changes since Vim 7.0e ---
2679 Default color for MatchParen when 'background' is "dark" is now DarkCyan.
2681 ":syn off" had to be used twice in a file that sets 'syntax' in a modeline.
2682 (Michael Geddes)
2684 When using ":vsp" or ":sp" the available space wasn't used equally between
2685 windows. (Servatius Brandt)
2687 Expanding <cWORD> on a trailing blank resulted in the first word in the line
2688 if 'encoding' is a multi-byte encoding.
2690 Spell checking: spellbadword() didn't see a missing capital in the first word
2691 of a line.  Popup menu now only suggest the capitalized word when appropriate.
2693 When using whole line completion CTRL-L moves through the matches but it
2694 didn't work when at the original text.
2696 When completion finds the longest match, don't go to the first match but stick
2697 at the original text, so that CTRL-N selects the first one.
2699 Recognize "zsh-beta" like "zsh" for setting the 'shellpipe' default. (James
2700 Vega)
2702 When using ":map <expr>" and the expression results in something with a
2703 special byte (NUL or CSI) then it didn't work properly.  Now escape special
2704 bytes.
2706 The default Visual highlighting for a color xterm with 8 colors was a magenta
2707 background, which made magenta text disappear.  Now use reverse in this
2708 specific situation.
2710 After completing the longest match "." didn't insert the same text.  Repeating
2711 also didn't work correctly for multi-byte text.
2713 When using Insert mode completion and BS the whole word that was completed
2714 would result in all possible matches.  Now stop completion.  Also fixes that
2715 for spell completion the previous word was deleted.
2717 GTK: When 'encoding' is "latin1" and using non-ASCII characters in a file name
2718 the tab page label was wrong and an error message would be given.
2720 The taglist() function could hang on a tags line with a non-ASCII character.
2722 Win32: When 'encoding' differs from the system encoding tab page labels with
2723 non-ASCII characters looked wrong. (Yegappan Lakshmanan)
2725 Motif: building failed when Xm/Notebook.h doesn't exist.  Added a configure
2726 check, disable GUI tabline when it's missing.
2728 Mac: When compiled without multi-byte feature the clipboard didn't work.
2730 It was possible to switch to another tab page when the cmdline window is open.
2732 Completion could hang when 'lines' is 6 and a preview window was opened.
2734 Added CTRL-W gF: open file under cursor in new tab page and jump to the line
2735 number following the file name.
2736 Added 'guitabtooltip'.  Implemented for Win32 (Yegappan Lakshmanan).
2738 Added "throw" to 'debug' option: throw an exception for error messages even
2739 whey they would otherwise be ignored.
2741 When 'keymap' is set and a line contains an invalid entry could get a "No
2742 mapping found" warning instead of a proper error message.
2744 Motif: default to using XpmAttributes instead of XpmAttributes_21.
2746 A few more changes for 64 bit MS-Windows. (George Reilly)
2748 Got ml_get errors when doing "o" and selecting in other window where there are
2749 less line shorter than the cursor position in the other window.  ins_mouse()
2750 was using position in wrong window.
2752 Win32 GUI: Crash when giving a lot of messages during startup.  Allocate twice
2753 as much memory for the dialog template.
2755 Fixed a few leaks and wrong pointer use reported by coverity.
2757 When showing menus the mode character was sometimes wrong.
2759 Added feedkeys(). (Yakov Lerner)
2761 Made matchlist() always return all submatches.
2763 Moved triggering QuickFixCmdPost to before jumping to the first location.
2765 Mac: Added the 'macatsui' option as a temporary work around for text drawing
2766 problems.
2768 Line completion on "/**" gave error messages when scanning an unloaded buffer.
2770 --- fixes and changes since Vim 7.0f ---
2772 Win32: The height of the tab page labels is now adjusted to the font height.
2773 (Yegappan Lakshmanan)
2775 Win32: selecting the tab label was off by one. (Yegappan Lakshmanan)
2777 Added tooltips for Motif and GTK tab page labels. (Yegappan Lakshmanan)
2779 When 'encoding' is "utf-8" then ":help spell" would report an illegal byte and
2780 the file was not converted from latin1 to utf-8.  Now retry with latin1 if
2781 reading the file as utf-8 results in illegal bytes.
2783 Escape the argument of feedkeys() before putting it in the typeahead buffer.
2784 (Yukihiro Nakadaira)
2786 Added the v:char variable for evaluating 'formatexpr'. (Yukihiro Nakadaira)
2788 With 8 colors Search highlighting combined with Statement highlighted text
2789 made the text disappear.
2791 VMS: avoid warnings for redefining MAX and MIN. (Zoltan Arpadffy)
2793 When 'virtualedit' includes "onemore", stopping Visual selection would still
2794 move the cursor left.
2796 Prevent that using CTRL-R = in Insert mode can start Visual mode.
2798 Fixed a crash that occurred when in Insert mode with completion active and a
2799 mapping caused edit() to be called recursively.
2801 When using CTRL-O in Insert mode just after the last character while
2802 'virtualedit' is "all", then typing CR moved the last character to the next
2803 line.  Call coladvance() before starting the new line.
2805 When using |:shell| ignore clicks on the tab page labels.  Also when using the
2806 command line window.
2808 When 'eventignore' is "all" then adding more to ignoring some events, e.g.,
2809 for ":vimgrep", would actually trigger more events.
2811 Win32: When a running Vim uses server name GVIM1 then "gvim --remote fname"
2812 didn't find it.  When looking for a server name that doesn't end in a digit
2813 and it is not found then use another server with that name and a number (just
2814 like on Unix).
2816 When using "double" in 'spellsuggest' when the language doesn't support sound
2817 folding resulted in too many suggestions.
2819 Win32: Dropping a shortcut on the Vim icon didn't edit the referred file like
2820 editing it in another way would.  Use fname_expand() in buf_set_name() instead
2821 of simply make the file name a full path.
2823 Using feedkeys() could cause Vim to hang.
2825 When closing another tab page from the tabline menu in Insert mode the tabline
2826 was not updated right away.
2828 The syntax menu didn't work in compatible mode.
2830 After using ":tag id" twice with the same "id", ":ts" and then ":pop" a ":ts"
2831 reported no matching tag.  Clear the cached tag name.
2833 In Insert mode the matchparen plugin highlighted the wrong paren when there is
2834 a string just next to a paren.
2836 GTK: After opening a new tab page the text was sometimes not drawn correctly.
2837 Flush output and catch up with events when updating the tab page labels.
2839 In the GUI, using CTRL-W q to close the last window of a tab page could cause
2840 a crash.
2842 GTK: The tab pages line menu was not converted from 'encoding' to utf-8.
2844 Typing a multi-byte character or a special key at the hit-enter prompt did not
2845 work.
2847 When 'virtualedit' contains "onemore" CTRL-O in Insert mode still moved the
2848 cursor left when it was after the end of the line, even though it's allowed to
2849 be there.
2851 Added test for using tab pages.
2853 towupper() and towlower() were not used, because of checking for
2854 __STDC__ISO_10646__ instead of __STDC_ISO_10646__. (sertacyildiz)
2856 For ":map <expr>" forbid changing the text, jumping to another buffer and
2857 using ":normal" to avoid nasty side effects.
2859 --- fixes and changes since Vim 7.0g ---
2861 Compilation error on HP-UX, use of "dlerr" must be inside a #ifdef.
2862 (Gary Johnson)
2864 Report +reltime feature in ":version" output.
2866 The tar and zip plugins detect failure to get the contents of the archive and
2867 edit the file as-is.
2869 When the result of 'guitablabel' is empty fall back to the default label.
2871 Fixed crash when using ":insert" in a while loop and missing "endwhile".
2873 "gt" and other commands could move to another window when |textlock| active
2874 and when the command line window was open.
2876 Spell checking a file with syntax highlighting and a bad word at the end of
2877 the line is ignored could make "]s" hang.
2879 Mac: inputdialog() didn't work when compiled with big features.
2881 Interrupting ":vimgrep" while it is busy loading a file left a modified and
2882 hidden buffer behind.  Use enter_cleanup() and leave_cleanup() around
2883 wipe_buffer().
2885 When making 'keymap' empty the b:keymap_name variable wasn't deleted.
2887 Using CTRL-N that searches a long time, pressing space to interrupt the
2888 searching and accept the first match, the popup menu was still displayed
2889 briefly.
2891 When setting the Vim window height with -geometry the 'window' option could be
2892 at a value that makes CTRL-F behave differently.
2894 When opening a quickfix window in two tabs they used different buffers,
2895 causing redrawing problems later.  Now use the same buffer for all quickfix
2896 windows. (Yegappan Lakshmanan)
2898 When 'mousefocus' is set moving the mouse to the text tab pages line would
2899 move focus to the first window.  Also, the mouse pointer would jump to the
2900 active window.
2902 In a session file, when an empty buffer is wiped out, do this silently.
2904 When one window has the cursor on the last line and another window is resized
2905 to make that window smaller, the cursor line could go below the displayed
2906 lines.  In win_new_height() subtract one from the available space.
2907 Also avoid that using "~" lines makes the window scroll down.
2909 Mac: When sourcing the "macmap.vim" script and then finding a .vimrc file the
2910 'cpo' option isn't set properly, because it was already set and restored.
2911 Added the <special> argument to ":map", so that 'cpo' doesn't need to be
2912 changed to be able to use <> notation.  Also do this for ":menu" for
2913 consistency.
2915 When using "/encoding=abc" in a spell word list, only "bc" was used.
2917 When 'encoding' and 'printencoding' were both "utf-8" then ":hardcopy" didn't
2918 work. (Mike Williams)
2920 Mac: When building with "--disable-gui" the install directory would still be
2921 "/Applications" and Vim.app would be installed.  Now install in /usr/local as
2922 usual for a console application.
2924 GUI: when doing completion and there is one match and still searching for
2925 another, the cursor was displayed at the end of the line instead of after the
2926 match.  Now show the cursor after the match while still searching for matches.
2928 GUI: The mouse shape changed on the statusline even when 'mouse' was empty and
2929 they can't be dragged..
2931 GTK2: Selecting a button in the confirm() dialog with Tab or cursor keys and
2932 hitting Enter didn't select that button.  Removed GTK 1 specific code. (Neil
2933 Bird)
2935 When evaluating 'balloonexpr' takes a long time it could be called
2936 recursively, which could cause a crash.
2938 exists() could not be used to detect whether ":2match" is supported.  Added a
2939 check for it specifically.
2941 GTK1: Tab page labels didn't work. (Yegappan Lakshmanan)
2943 Insert mode completion: When finding matches use 'ignorecase', but when adding
2944 matches to the list don't use it, so that all words with different case are
2945 added, "word", "Word" and "WORD".
2947 When 'cursorline' and 'hlsearch' are set and the search pattern is "x\n"
2948 the rest of the line was highlighted as a match.
2950 Cursor moved while evaluating 'balloonexpr' that invokes ":isearch" and
2951 redirects the output.  Don't move the cursor to the command line if msg_silent
2952 is set.
2954 exists() ignored text after a function name and option name, which could
2955 result in false positives.
2957 exists() ignored characters after the recognized word, which can be wrong when
2958 using a name with non-keyword characters.  Specifically, these calls no longer
2959 allow characters after the name: exists('*funcname') exists('*funcname(...')
2960 exists('&option') exists(':cmd') exists('g:name') exists('g:name[n]')
2961 exists('g:name.n')
2963 Trigger the TabEnter autocommand only after entering the current window of the
2964 tab page, otherwise the commands are executed with an invalid current window.
2966 Win32: When using two monitors and Vim is on the second monitor, changing the
2967 width of the Vim window could make it jump to the first monitor.
2969 When scrolling back at the more prompt and the quitting a line of text would
2970 be left behind when 'cmdheight' is 2 or more.
2972 Fixed a few things for Insert mode completion, especially when typing BS,
2973 CTRL-N or a printable character while still searching for matches.
2976 ==============================================================================
2977 VERSION 7.1                                             *version-7.1*
2979 This section is about improvements made between version 7.0 and 7.1.
2981 This is a bug-fix release, there are no fancy new features.
2984 Changed                                                 *changed-7.1*
2985 -------
2987 Added setting 'mouse' in vimrc_example.vim.
2989 When building with MZscheme also look for include files in the "plt"
2990 subdirectory.  That's where they are for FreeBSD.
2992 The Ruby interface module is now called "Vim" instead of "VIM".  But "VIM" is
2993 an alias, so it's backwards compatible. (Tim Pope)
2996 Added                                                   *added-7.1*
2997 -----
2999 New syntax files:
3000         /var/log/messages (Yakov Lerner)
3001         Autohotkey (Nikolai Weibull)
3002         AutoIt v3 (Jared Breland)
3003         Bazaar commit file "bzr". (Dmitry Vasiliev)
3004         Cdrdao TOC (Nikolai Weibull)
3005         Cmusrc (Nikolai Weibull)
3006         Conary recipe (rPath Inc)
3007         Framescript (Nikolai Weibull)
3008         FreeBasic (Mark Manning)
3009         Hamster (David Fishburn)
3010         IBasic (Mark Manning)
3011         Initng (Elan Ruusamae)
3012         Ldapconf (Nikolai Weibull)
3013         Litestep (Nikolai Weibull)
3014         Privoxy actions file (Doug Kearns)
3015         Streaming Descriptors "sd" (Puria Nafisi Azizi)
3017 New tutor files:
3018         Czech (Lubos Turek)
3019         Hungarian (Arpad Horvath)
3020         Turkish (Serkan kkk)
3021         utf-8 version of Greek tutor.
3022         utf-8 version of Russian tutor.
3023         utf-8 version of Slowak tutor.
3025 New filetype plugins:
3026         Bst (Tim Pope)
3027         Cobol (Tim Pope)
3028         Fvwm (Gautam Iyer)
3029         Hamster (David Fishburn)
3030         Django HTML template (Dave Hodder)
3032 New indent files:
3033         Bst (Tim Pope)
3034         Cobol (Tim Pope)
3035         Hamster (David Fishburn)
3036         Django HTML template (Dave Hodder)
3037         Javascript
3038         JSP (David Fishburn)
3040 New keymap files:
3041         Bulgarian (Boyko Bantchev)
3042         Mongolian (Natsagdorj Shagdar)
3043         Thaana (Ibrahim Fayaz)
3044         Vietnamese (Samuel Thibault)
3046 Other new runtime files:
3047         Ada support files. (Neil Bird, Martin Krischik)
3048         Slovenian menu translations (Mojca Miklavec)
3049         Mono C# compiler plugin (Jarek Sobiecki)
3052 Fixed                                                   *fixed-7.1*
3053 -----
3055 Could not build the Win32s version.  Added a few structure definitions in
3056 src/gui_w32.c
3059 Patch 7.0.001
3060 Problem:    ":set spellsuggest+=10" does not work. (Suresh Govindachar)
3061 Solution:   Add P_COMMA to the 'spellsuggest' flags.
3062 Files:      src/option.c
3064 Patch 7.0.002
3065 Problem:    C omni completion has a problem with tags files with a path
3066             containing "#" or "%".
3067 Solution:   Escape these characters. (Sebastian Baberowski)
3068 Files:      runtime/autoload/ccomplete.vim
3070 Patch 7.0.003
3071 Problem:    GUI: clicking in the lower part of a label in the tab pages line
3072             while 'mousefocus' is set may warp the mouse pointer. (Robert
3073             Webb)
3074 Solution:   Check for a negative mouse position.
3075 Files:      src/gui.c
3077 Patch 7.0.004
3078 Problem:    Compiler warning for debug_saved used before set. (Todd Blumer)
3079 Solution:   Remove the "else" for calling save_dbg_stuff().
3080 Files:      src/ex_docmd.c
3082 Patch 7.0.005 (extra)
3083 Problem:    Win32: The installer doesn't remove the "autoload" and "spell"
3084             directories. (David Fishburn)
3085 Solution:   Add the directories to the list to be removed.
3086 Files:      nsis/gvim.nsi
3088 Patch 7.0.006
3089 Problem:    Mac: "make shadow" doesn't make a link for infplist.xml. (Axel
3090             Kielhorn)
3091 Solution:   Make the link.
3092 Files:      src/Makefile
3094 Patch 7.0.007
3095 Problem:    AIX: compiling fails for message.c. (Ruediger Hornig)
3096 Solution:   Move the #if outside of memchr().
3097 Files:      src/message.c
3099 Patch 7.0.008
3100 Problem:    Can't call a function that uses both <SID> and {expr}. (Thomas)
3101 Solution:   Check both the expanded and unexpanded name for <SID>.
3102 Files:      src/eval.c
3104 Patch 7.0.009
3105 Problem:    ml_get errors with both 'sidescroll' and 'spell' set.
3106 Solution:   Use ml_get_buf() instead of ml_get(), get the line from the right
3107             buffer, not the current one.
3108 Files:      src/spell.c
3110 Patch 7.0.010
3111 Problem:    The spellfile plugin required typing login name and password.
3112 Solution:   Use "anonymous" and "vim7user" by default.  No need to setup a
3113             .netrc file.
3114 Files:      runtime/autoload/spellfile.vim
3116 Patch 7.0.011
3117 Problem:    Can't compile without the folding and with the eval feature.
3118 Solution:   Add an #ifdef. (Vallimar)
3119 Files:      src/option.c
3121 Patch 7.0.012
3122 Problem:    Using the matchparen plugin, moving the cursor in Insert mode to a
3123             shorter line that ends in a brace, changes the preferred column
3124 Solution:   Use winsaveview()/winrestview() instead of getpos()/setpos().
3125 Files:      runtime/plugin/matchparen.vim
3127 Patch 7.0.013
3128 Problem:    Insert mode completion: using CTRL-L to add an extra character
3129             also deselects the current match, making it impossible to use
3130             CTRL-L a second time.
3131 Solution:   Keep the current match.  Also make CTRL-L work at the original
3132             text, using the first displayed match.
3133 Files:      src/edit.c
3135 Patch 7.0.014
3136 Problem:    Compiling gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
3137 Solution:   Disable some code for Motif 1.2 and older.
3138 Files:      src/gui_xmebw.c
3140 Patch 7.0.015
3141 Problem:    Athena: compilation problems with modern compiler.
3142 Solution:   Avoid type casts for lvalue. (Alexey Froloff)
3143 Files:      src/gui_at_fs.c
3145 Patch 7.0.016
3146 Problem:    Printing doesn't work for "dec-mcs" encoding.
3147 Solution:   Add "dec-mcs", "mac-roman" and "hp-roman8" to the list of
3148             recognized 8-bit encodings. (Mike Williams)
3149 Files:      src/mbyte.c
3151 Patch 7.0.017 (after 7.0.014)
3152 Problem:    Linking gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
3153 Solution:   Adjust defines for Motif 1.2 and older.
3154 Files:      src/gui_xmebw.c
3156 Patch 7.0.018
3157 Problem:    VMS: plugins are not loaded on startup.
3158 Solution:   Remove "**" from the path. (Zoltan Arpadffy)
3159 Files:      src/main.c
3161 Patch 7.0.019
3162 Problem:    Repeating "VjA789" may cause a crash. (James Vega)
3163 Solution:   Check the cursor column after moving it to another line.
3164 Files:      src/ops.c
3166 Patch 7.0.020
3167 Problem:    Crash when using 'mousefocus'. (William Fulton)
3168 Solution:   Make buffer for mouse coordinates 2 bytes longer. (Juergen Weigert)
3169 Files:      src/gui.c
3171 Patch 7.0.021
3172 Problem:    Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber)
3173 Solution:   Check for valid submatches after matching the pattern.
3174 Files:      src/quickfix.c
3176 Patch 7.0.022
3177 Problem:    Using buffer.append() in Ruby may append the line to the wrong
3178             buffer. (Alex Norman)
3179 Solution:   Properly switch to the buffer to do the appending.  Also for
3180             buffer.delete() and setting a buffer line.
3181 Files:      src/if_ruby.c
3183 Patch 7.0.023
3184 Problem:    Crash when doing spell completion in an empty line and pressing
3185             CTRL-E.
3186 Solution:   Check for a zero pointer. (James Vega)
3187             Also handle a situation without a matching pattern better, report
3188             "No matches" instead of remaining in undefined CTRL-X mode.  And
3189             get out of CTRL-X mode when typing a letter.
3190 Files:      src/edit.c
3192 Patch 7.0.024
3193 Problem:    It is possible to set arbitrary "v:" variables.
3194 Solution:   Disallow setting "v:" variables that are not predefined.
3195 Files:      src/eval.c
3197 Patch 7.0.025
3198 Problem:    Crash when removing an element of a:000.  (Nikolai Weibull)
3199 Solution:   Mark the a:000 list with VAR_FIXED.
3200 Files:      src/eval.c
3202 Patch 7.0.026
3203 Problem:    Using libcall() may show an old error.
3204 Solution:   Invoke dlerror() to clear a previous error. (Yukihiro Nakadaira)
3205 Files:      src/os_unix.c
3207 Patch 7.0.027 (extra)
3208 Problem:    Win32: When compiled with SNIFF gvim may hang on exit.
3209 Solution:   Translate and dispatch the WM_USER message. (Mathias Michaelis)
3210 Files:      src/gui_w48.c
3212 Patch 7.0.028 (extra)
3213 Problem:    OS/2: Vim doesn't compile with gcc 3.2.1.
3214 Solution:   Add argument to after_pathsep(), don't define vim_handle_signal(),
3215             define HAVE_STDARG_H. (David Sanders)
3216 Files:      src/os_unix.c, src/vim.h, src/os_os2_cfg.h
3218 Patch 7.0.029
3219 Problem:    getchar() may not position the cursor after a space.
3220 Solution:   Position the cursor explicitly.
3221 Files:      src/eval.c
3223 Patch 7.0.030
3224 Problem:    The ":compiler" command can't be used in a FileChangedRO event.
3225             (Hari Krishna Dara)
3226 Solution:   Add the CMDWIN flag to the ":compiler" command.
3227 Files:      src/ex_cmds.h
3229 Patch 7.0.031
3230 Problem:    When deleting a buffer the buffer-local mappings for Select mode
3231             remain.
3232 Solution:   Add the Select mode bit to MAP_ALL_MODES. (Edwin Steiner)
3233 Files:      src/vim.h
3235 Patch 7.0.032 (extra, after 7.0.027)
3236 Problem:    Missing semicolon.
3237 Solution:   Add the semicolon.
3238 Files:      src/gui_w48.c
3240 Patch 7.0.033
3241 Problem:    When pasting text, with the menu or CTRL-V, autoindent is removed.
3242 Solution:   Use "x<BS>" to avoid indent to be removed. (Benji Fisher)
3243 Files:      runtime/autoload/paste.vim
3245 Patch 7.0.034
3246 Problem:    After doing completion and typing more characters or using BS
3247             repeating with "." didn't work properly. (Martin Stubenschrott)
3248 Solution:   Don't put BS and other characters in the redo buffer right away,
3249             do this when finishing completion.
3250 Files:      src/edit.c
3252 Patch 7.0.035
3253 Problem:    Insert mode completion works when typed but not when replayed from
3254             a register. (Hari Krishna Dara)
3255             Also: Mappings for Insert mode completion don't always work.
3256 Solution:   When finding a non-completion key in the input don't interrupt
3257             completion when it wasn't typed.
3258             Do use mappings when checking for typeahead while still finding
3259             completions.  Avoids that completion is interrupted too soon.
3260             Use "compl_pending" in a different way.
3261 Files:      src/edit.c
3263 Patch 7.0.036
3264 Problem:    Can't compile with small features and syntax highlighting or the
3265             diff feature.
3266 Solution:   Define LINE_ATTR whenever syntax highlighting or the diff feature
3267             is enabled.
3268 Files:      src/screen.c
3270 Patch 7.0.037
3271 Problem:    Crash when resizing the GUI window vertically when there is a line
3272             that doesn't fit.
3273 Solution:   Don't redraw while the screen data is invalid.
3274 Files:      src/screen.c
3276 Patch 7.0.038
3277 Problem:    When calling complete() from an Insert mode expression mapping
3278             text could be inserted in an improper way.
3279 Solution:   Make undo_allowed() global and use it in complete().
3280 Files:      src/undo.c, src/proto/undo.pro, src/eval.c
3282 Patch 7.0.039
3283 Problem:    Calling inputdialog() with a third argument in the console doesn't
3284             work.
3285 Solution:   Make a separate function for input() and inputdialog(). (Yegappan
3286             Lakshmanan)
3287 Files:      src/eval.c
3289 Patch 7.0.040
3290 Problem:    When 'cmdheight' is larger than 1 using inputlist() or selecting
3291             a spell suggestion with the mouse gets the wrong entry.
3292 Solution:   Start listing the first alternative on the last line of the screen.
3293 Files:      src/eval.c, src/spell.c
3295 Patch 7.0.041
3296 Problem:    cursor([1, 1]) doesn't work. (Peter Hodge)
3297 Solution:   Allow leaving out the third item of the list and use zero for the
3298             virtual column offset.
3299 Files:      src/eval.c
3301 Patch 7.0.042
3302 Problem:    When pasting a block of text in Insert mode Vim hangs or crashes.
3303             (Noam Halevy)
3304 Solution:   Avoid that the cursor is positioned past the NUL of a line.
3305 Files:      src/ops.c
3307 Patch 7.0.043
3308 Problem:    Using "%!" at the start of 'statusline' doesn't work.
3309 Solution:   Recognize the special item when the option is being set.
3310 Files:      src/option.c
3312 Patch 7.0.044
3313 Problem:    Perl: setting a buffer line in another buffer may result in
3314             changing the current buffer.
3315 Solution:   Properly change to the buffer to be changed.
3316 Files:      src/if_perl.xs
3318 Patch 7.0.045 (extra)
3319 Problem:    Win32: Warnings when compiling OLE version with MSVC 2005.
3320 Solution:   Move including vim.h to before windows.h. (Ilya Bobir)
3321 Files:      src/if_ole.cpp
3323 Patch 7.0.046
3324 Problem:    The matchparen plugin ignores parens in strings, but not in single
3325             quotes, often marked with "character".
3326 Solution:   Also ignore parens in syntax items matching "character".
3327 Files:      runtime/plugin/matchparen.vim
3329 Patch 7.0.047
3330 Problem:    When running configure the exit status is wrong.
3331 Solution:   Handle the exit status properly. (Matthew Woehlke)
3332 Files:      configure, src/configure
3334 Patch 7.0.048
3335 Problem:    Writing a compressed file fails when there are parens in the name.
3336             (Wang Jian)
3337 Solution:   Put quotes around the temp file name.
3338 Files:      runtime/autoload/gzip.vim
3340 Patch 7.0.049
3341 Problem:    Some TCL scripts are not recognized. (Steven Atkinson)
3342 Solution:   Check for "exec wish" in the file.
3343 Files:      runtime/scripts.vim
3345 Patch 7.0.050
3346 Problem:    After using the netbeans interface close command a stale pointer
3347             may be used.
3348 Solution:   Clear the pointer to the closed buffer. (Xaview de Gaye)
3349 Files:      src/netbeans.c
3351 Patch 7.0.051 (after 7.0.44)
3352 Problem:    The Perl interface doesn't compile or doesn't work properly.
3353 Solution:   Remove the spaces before #ifdef and avoid an empty line above it.
3354 Files:      src/if_perl.xs
3356 Patch 7.0.052
3357 Problem:    The user may not be aware that the Vim server allows others more
3358             functionality than desired.
3359 Solution:   When running Vim as root don't become a Vim server without an
3360             explicit --servername argument.
3361 Files:      src/main.c
3363 Patch 7.0.053
3364 Problem:    Shortening a directory name may fail when there are multi-byte
3365             characters.
3366 Solution:   Copy the correct bytes. (Titov Anatoly)
3367 Files:      src/misc1.c
3369 Patch 7.0.054
3370 Problem:    Mac: Using a menu name that only has a mnemonic or accelerator
3371             causes a crash.  (Elliot Shank)
3372 Solution:   Check for an empty menu name.  Also delete empty submenus that
3373             were created before detecting the error.
3374 Files:      src/menu.c
3376 Patch 7.0.055
3377 Problem:    ":startinsert" in a CmdwinEnter autocommand doesn't take immediate
3378             effect. (Bradley White)
3379 Solution:   Put a NOP key in the typeahead buffer.  Also avoid that using
3380             CTRL-C to go back to the command line moves the cursor left.
3381 Files:      src/edit.c, src/ex_getln.c
3383 Patch 7.0.056
3384 Problem:    "#!something" gives an error message.
3385 Solution:   Ignore this line, so that it can be used in an executable Vim
3386             script.
3387 Files:      src/ex_docmd.c
3389 Patch 7.0.057 (extra, after 7.0.45)
3390 Problem:    Win32: Compilation problem with Borland C 5.5.
3391 Solution:   Include vim.h as before. (Mark S. Williams)
3392 Files:      src/if_ole.cpp
3394 Patch 7.0.058
3395 Problem:    The gbk and and gb18030 encodings are not recognized.
3396 Solution:   Add aliases to cp936. (Edward L. Fox)
3397 Files:      src/mbyte.c
3399 Patch 7.0.059
3400 Problem:    The Perl interface doesn't compile with ActiveState Perl 5.8.8.
3401 Solution:   Remove the __attribute__() items. (Liu Yubao)
3402 Files:      src/if_perl.xs
3404 Patch 7.0.060 (after 7.0.51)
3405 Problem:    Code for temporarily switching to another buffer is duplicated in
3406             quite a few places.
3407 Solution:   Use aucmd_prepbuf() and aucmd_restbuf() also when FEAT_AUTOCMD is
3408             not defined.
3409 Files:      src/buffer.c, src/eval.c, src/fileio.c, src/if_ruby.c,
3410             src/if_perl.xs, src/quickfix.c, src/structs.h
3412 Patch 7.0.061
3413 Problem:    Insert mode completion for Vim commands may crash if there is
3414             nothing to complete.
3415 Solution:   Instead of freeing the pattern make it empty, so that a "not
3416             found" error is given. (Yukihiro Nakadaira)
3417 Files:      src/edit.c
3419 Patch 7.0.062
3420 Problem:    Mac: Crash when using the popup menu for spell correction.  The
3421             popup menu appears twice when letting go of the right mouse button
3422             early.
3423 Solution:   Don't show the popup menu on the release of the right mouse
3424             button.  Also check that a menu pointer is actually valid.
3425 Files:      src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c
3427 Patch 7.0.063
3428 Problem:    Tiny chance for a memory leak. (coverity)
3429 Solution:   Free pointer when next memory allocation fails.
3430 Files:      src/eval.c
3432 Patch 7.0.064
3433 Problem:    Using uninitialized variable. (Tony Mechelynck)
3434 Solution:   When not used set "temp" to zero.  Also avoid a warning for
3435             "files" in ins_compl_dictionaries().
3436 Files:      src/edit.c
3438 Patch 7.0.065 (extra)
3439 Problem:    Mac: left-right movement of the scrollwheel causes up-down
3440             scrolling.
3441 Solution:   Ignore mouse wheel events that are not up-down. (Nicolas Weber)
3442 Files:      src/gui_mac.c
3444 Patch 7.0.066
3445 Problem:    After the popup menu for Insert mode completion overlaps the tab
3446             pages line it is not completely removed.
3447 Solution:   Redraw the tab pages line after removing the popup menu. (Ori
3448             Avtalion)
3449 Files:      src/popupmnu.c
3451 Patch 7.0.067
3452 Problem:    Undo doesn't always work properly when using "scim" input method.
3453             Undo is split up when using preediting.
3454 Solution:   Reset xim_has_preediting also when preedit_start_col is not
3455             MAXCOL.  Don't split undo when <Left> is used while preediting.
3456             (Yukihiro Nakadaira)
3457 Files:      src/edit.c, src/mbyte.c
3459 Patch 7.0.068
3460 Problem:    When 'ignorecase' is set and using Insert mode completion,
3461             typing characters to change the list of matches, case is not
3462             ignored. (Hugo Ahlenius)
3463 Solution:   Store the 'ignorecase' flag with the matches where needed.
3464 Files:      src/edit.c, src/search.c, src/spell.c
3466 Patch 7.0.069
3467 Problem:    Setting 'guitablabel' to %!expand(\%)  causes Vim to free an
3468             invalid pointer. (Kim Schulz)
3469 Solution:   Don't try freeing a constant string pointer.
3470 Files:      src/buffer.c
3472 Patch 7.0.070
3473 Problem:    Compiler warnings for shadowed variables and uninitialized
3474             variables.
3475 Solution:   Rename variables such as "index", "msg" and "dup".  Initialize
3476             variables.
3477 Files:      src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c,
3478             src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c,
3479             src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c,
3480             src/memline.c, src/netbeans.c, src/normal.c, src/option.c,
3481             src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c,
3482             src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c,
3483             src/version.c
3485 Patch 7.0.071
3486 Problem:    Using an empty search pattern may cause a crash.
3487 Solution:   Avoid using a NULL pointer.
3488 Files:      src/search.c
3490 Patch 7.0.072
3491 Problem:    When starting the GUI fails there is no way to adjust settings or
3492             do something else.
3493 Solution:   Add the GUIFailed autocommand event.
3494 Files:      src/fileio.c, src/gui.c, src/vim.h
3496 Patch 7.0.073
3497 Problem:    Insert mode completion: Typing <CR> sometimes selects the original
3498             text instead of keeping what was typed.  (Justin Constantino)
3499 Solution:   Don't let <CR> select the original text if there is no popup menu.
3500 Files:      src/edit.c
3502 Patch 7.0.074 (extra)
3503 Problem:    Win32: tooltips were not converted from 'encoding' to Unicode.
3504 Solution:   Set the tooltip to use Unicode and do the conversion.  Also
3505             cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira)
3506 Files:      src/gui_w32.c, src/gui_w48.c
3508 Patch 7.0.075
3509 Problem:    winsaveview() did not store the actual value of the desired cursor
3510             column.  This could move the cursor in the matchparen plugin.
3511 Solution:   Call update_curswant() before using the value w_curswant.
3512 Files:      src/eval.c
3514 Patch 7.0.076 (after 7.0.010)
3515 Problem:    Automatic downloading of spell files only works for ftp.
3516 Solution:   Don't add login and password for non-ftp URLs. (Alexander Patrakov)
3517 Files:      runtime/autoload/spellfile.vim
3519 Patch 7.0.077
3520 Problem:    ":unlet v:this_session" causes a crash. (Marius Roets)
3521 Solution:   When trying to unlet a fixed variable give an error message.
3522 Files:      src/eval.c
3524 Patch 7.0.078
3525 Problem:    There are two error messages E46.
3526 Solution:   Change the number for the sandbox message to E794.
3527 Files:      src/globals.h
3529 Patch 7.0.079
3530 Problem:    Russian tutor doesn't work when 'encoding' is "utf-8".
3531 Solution:   Use tutor.ru.utf-8 as the master, and generate the other encodings
3532             from it.  Select the right tutor depending on 'encoding'. (Alexey
3533             Froloff)
3534 Files:      runtime/tutor/Makefile, runtime/tutor/tutor.vim,
3535             runtime/tutor/tutor.ru.utf-8
3537 Patch 7.0.080
3538 Problem:    Generating auto/pathdef.c fails for CFLAGS with a backslash.
3539 Solution:   Double backslashes in the string. (Alexey Froloff)
3540 Files:      src/Makefile
3542 Patch 7.0.081
3543 Problem:    Command line completion doesn't work for a shell command with an
3544             absolute path.
3545 Solution:   Don't use $PATH when there is an absolute path.
3546 Files:      src/ex_getln.c
3548 Patch 7.0.082
3549 Problem:    Calling a function that waits for input may cause List and
3550             Dictionary arguments to be freed by the garbage collector.
3551 Solution:   Keep a list of all arguments to internal functions.
3552 Files:      src/eval.c
3554 Patch 7.0.083
3555 Problem:    Clicking with the mouse on an item for inputlist() doesn't work
3556             when 'compatible' is set and/or when 'cmdheight' is more than one.
3557             (Christian J.  Robinson)
3558 Solution:   Also decrement "lines_left" when 'more' isn't set.  Set
3559             "cmdline_row" to zero to get all mouse events.
3560 Files:      src/message.c, src/misc1.c
3562 Patch 7.0.084
3563 Problem:    The garbage collector may do its work while some Lists or
3564             Dictionaries are used internally, e.g., by ":echo" that runs into
3565             the more-prompt or ":echo [garbagecollect()]".
3566 Solution:   Only do garbage collection when waiting for a character at the
3567             toplevel.  Let garbagecollect() set a flag that is handled at the
3568             toplevel before waiting for a character.
3569 Files:      src/eval.c, src/getchar.c, src/globals.h, src/main.c
3571 Patch 7.0.085
3572 Problem:    When doing "make test" the viminfo file is modified.
3573 Solution:   Use another viminfo file after setting 'compatible.
3574 Files:      src/testdir/test56.in
3576 Patch 7.0.086
3577 Problem:    getqflist() returns entries for pattern and text with the number
3578             zero.  Passing these to setqflist() results in the string "0".
3579 Solution:   Use an empty string instead of the number zero.
3580 Files:      src/quickfix.c
3582 Patch 7.0.087
3583 Problem:    After ":file fname" and ":saveas fname" the 'autochdir' option
3584             does not take effect. (Yakov Lerner)
3585             Commands for handling 'autochdir' are repeated many times.
3586 Solution:   Add the DO_AUTOCHDIR macro and do_autochdir().  Use it for
3587             ":file fname" and ":saveas fname".
3588 Files:      src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h,
3589             src/netbeans.c, src/option.c, src/window.c
3591 Patch 7.0.088
3592 Problem:    When compiled with Perl the generated prototypes have "extern"
3593             unnecessarily added.
3594 Solution:   Remove the "-pipe" argument from PERL_CFLAGS.
3595 Files:      src/auto/configure, src/configure.in
3597 Patch 7.0.089
3598 Problem:    "ga" does not work properly for a non-Unicode multi-byte encoding.
3599 Solution:   Only check for composing chars for utf-8. (Taro Muraoka)
3600 Files:      src/ex_cmds.c
3602 Patch 7.0.090
3603 Problem:    Cancelling the conform() dialog on the console with Esc requires
3604             typing it twice. (Benji Fisher)
3605 Solution:   When the start of an escape sequence is found use 'timeoutlen' or
3606             'ttimeoutlen'.
3607 Files:      src/misc1.c
3609 Patch 7.0.091
3610 Problem:    Using winrestview() while 'showcmd' is set causes the cursor to be
3611             displayed in the wrong position. (Yakov Lerner)
3612 Solution:   Set the window topline properly.
3613 Files:      src/eval.c
3615 Patch 7.0.092 (after 7.0.082 and 7.0.084)
3616 Problem:    The list of internal function arguments is obsolete now that
3617             garbage collection is only done at the toplevel.
3618 Solution:   Remove the list of all arguments to internal functions.
3619 Files:      src/eval.c
3621 Patch 7.0.093
3622 Problem:    The matchparen plugin can't handle a 'matchpairs' value where a
3623             colon is matched.
3624 Solution:   Change the split() that is used to change 'matchpairs' into a
3625             List.
3626 Files:      runtime/plugin/matchparen.vim
3628 Patch 7.0.094
3629 Problem:    When a hidden buffer is made the current buffer and another file
3630             edited later, the file message will still be given.  Using
3631             ":silent" also doesn't prevent the file message. (Marvin Renich)
3632 Solution:   Reset the need_fileinfo flag when reading a file.  Don't set
3633             need_fileinfo when msg_silent is set.
3634 Files:      src/buffer.c, src/fileio.c
3636 Patch 7.0.095
3637 Problem:    The Greek tutor is not available in utf-8.  "el" is used for the
3638             language, only "gr" for the country is recognized.
3639 Solution:   Add the utf-8 Greek tutor.  Use it for conversion to iso-8859-7
3640             and cp737.  (Lefteris Dimitroulakis)
3641 Files:      runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8,
3642             runtime/tutor/tutor.vim
3644 Patch 7.0.096
3645 Problem:    taglist() returns the filename relative to the tags file, while
3646             the directory of the tags file is unknown. (Hari Krishna Dara)
3647 Solution:   Expand the file name. (Yegappan Lakshmanan)
3648 Files:      src/tag.c
3650 Patch 7.0.097
3651 Problem:    ":tabclose N" that closes another tab page does not remove the tab
3652             pages line.  Same problem when using the mouse.
3653 Solution:   Adjust the tab pages line when needed in tabpage_close_other().
3654 Files:      src/ex_docmd.c
3656 Patch 7.0.098
3657 Problem:    Redirecting command output in a cmdline completion function
3658             doesn't work. (Hari Krishna Dara)
3659 Solution:   Enable redirection when redirection is started.
3660 Files:      src/ex_docmd.c, src/ex_getln.c
3662 Patch 7.0.099
3663 Problem:    GUI: When the popup menu is visible using the scrollbar messes up
3664             the display.
3665 Solution:   Disallow scrolling the current window.  Redraw the popup menu
3666             after scrolling another window.
3667 Files:      src/gui.c
3669 Patch 7.0.100
3670 Problem:    "zug" may report the wrong filename. (Lawrence Kesteloot)
3671 Solution:   Call home_replace() to fill NameBuff[].
3672 Files:      src/spell.c
3674 Patch 7.0.101
3675 Problem:    When the "~/.vim/spell" directory does not exist "zg" may create
3676             a wrong directory.  "zw" doesn't work.
3677 Solution:   Use the directory of the file name instead of NameBuff.  For "zw"
3678             not only remove a good word but also add the word with "!".
3679 Files:      src/spell.c
3681 Patch 7.0.102
3682 Problem:    Redrawing cmdline is not correct when using SCIM.
3683 Solution:   Don't call im_get_status(). (Yukihiro Nakadaira)
3684 Files:      src/ex_getln.c
3686 Patch 7.0.103 (after 7.0.101)
3687 Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
3688 Solution:   Init variable.
3689 Files:      src/spell.c
3691 Patch 7.0.104
3692 Problem:    The CursorHoldI event only triggers once in Insert mode.  It also
3693             triggers after CTRL-V and other two-key commands.
3694 Solution:   Set "did_cursorhold" before getting a second key.  Reset
3695             "did_cursorhold" after handling a command.
3696 Files:      src/edit.c, src/fileio.c
3698 Patch 7.0.105
3699 Problem:    When using incremental search the statusline ruler isn't updated.
3700             (Christoph Koegl)
3701 Solution:   Update the statusline when it contains the ruler.
3702 Files:      src/ex_getln.c
3704 Patch 7.0.106
3705 Problem:    The spell popup menu uses ":amenu", triggering mappings.  Other
3706             PopupMenu autocommands are removed. (John Little)
3707 Solution:   Use ":anoremenu" and use an autocmd group.
3708 Files:      runtime/menu.vim
3710 Patch 7.0.107
3711 Problem:    Incremental search doesn't redraw the text tabline. (Ilya Bobir)
3712             Also happens in other situations with one window in a tab page.
3713 Solution:   Redraw the tabline after clearing the screen.
3714 Files:      src/screen.c
3716 Patch 7.0.108 (extra)
3717 Problem:    Amiga: Compilation problem.
3718 Solution:   Have mch_mkdir() return a failure flag. (Willy Catteau)
3719 Files:      src/os_amiga.c, src/proto/os_amiga.pro
3721 Patch 7.0.109
3722 Problem:    Lisp indenting is confused by escaped quotes in strings. (Dorai
3723             Sitaram)
3724 Solution:   Check for backslash inside strings. (Sergey Khorev)
3725 Files:      src/misc1.c
3727 Patch 7.0.110
3728 Problem:    Amiga: Compilation problems when not using libnix.
3729 Solution:   Change a few #ifdefs. (Willy Catteau)
3730 Files:      src/memfile.c
3732 Patch 7.0.111
3733 Problem:    The gzip plugin can't handle filenames with single quotes.
3734 Solution:   Add and use the shellescape() function. (partly by Alexey Froloff)
3735 Files:      runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c,
3736             src/mbyte.c, src/misc2.c, src/proto/misc2.pro
3738 Patch 7.0.112
3739 Problem:    Python interface does not work with Python 2.5.
3740 Solution:   Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes)
3741 Files:      src/if_python.c
3743 Patch 7.0.113
3744 Problem:    Using CTRL-L in Insert completion when there is no current match
3745             may cause a crash. (Yukihiro Nakadaira)
3746 Solution:   Check for compl_leader to be NULL
3747 Files:      src/edit.c
3749 Patch 7.0.114
3750 Problem:    When aborting an insert with CTRL-C an extra undo point is
3751             created in the GUI. (Yukihiro Nakadaira)
3752 Solution:   Call gotchars() only when advancing.
3753 Files:      src/getchar.c
3755 Patch 7.0.115
3756 Problem:    When 'ignorecase' is set, Insert mode completion only adds "foo"
3757             and not "Foo" when both are found.
3758             A found match isn't displayed right away when 'completeopt' does
3759             not have "menu" or "menuone".
3760 Solution:   Do not ignore case when checking if a completion match already
3761             exists.  call ins_compl_check_keys() also when not using a popup
3762             menu. (Yukihiro Nakadaira)
3763 Files:      src/edit.c
3765 Patch 7.0.116
3766 Problem:    64 bit Windows version reports "32 bit" in the ":version" output.
3767             (M. Veerman)
3768 Solution:   Change the text for Win64.
3769 Files:      src/version.c
3771 Patch 7.0.117
3772 Problem:    Using "extend" on a syntax item inside a region with "keepend", an
3773             intermediate item may be truncated.
3774             When applying the "keepend" and there is an offset to the end
3775             pattern the highlighting of a contained item isn't adjusted.
3776 Solution:   Use the seen_keepend flag to remember when to apply the "keepend"
3777             flag.  Adjust the keepend highlighting properly. (Ilya Bobir)
3778 Files:      src/syntax.c
3780 Patch 7.0.118
3781 Problem:    printf() does not do zero padding for strings.
3782 Solution:   Do allow zero padding for strings.
3783 Files:      src/message.c
3785 Patch 7.0.119
3786 Problem:    When going back from Insert to Normal mode the CursorHold event
3787             doesn't trigger. (Yakov Lerner)
3788 Solution:   Reset "did_cursorhold" when leaving Insert mode.
3789 Files:      src/edit.c
3791 Patch 7.0.120
3792 Problem:    Crash when using CTRL-R = at the command line and entering
3793             "getreg('=')". (James Vega)
3794 Solution:   Avoid recursiveness of evaluating the = register.
3795 Files:      src/ops.c
3797 Patch 7.0.121
3798 Problem:    GUI: Dragging the last status line doesn't work when there is a
3799             text tabline.  (Markus Wolf)
3800 Solution:   Take the text tabline into account when deciding to start modeless
3801             selection.
3802 Files:      src/gui.c
3804 Patch 7.0.122
3805 Problem:    GUI: When clearing after a bold, double-wide character half a
3806             character may be drawn.
3807 Solution:   Check for double-wide character and redraw it. (Yukihiro Nakadaira)
3808 Files:      src/screen.c
3810 Patch 7.0.123
3811 Problem:    On SCO Openserver configure selects the wrong terminal library.
3812 Solution:   Put terminfo before the other libraries. (Roger Cornelius)
3813             Also fix a small problem compiling on Mac without Darwin.
3814 Files:      src/configure.in, src/auto/configure
3816 Patch 7.0.124
3817 Problem:    getwinvar() obtains a dictionary with window-local variables, but
3818             it's always for the current window.
3819 Solution:   Get the variables of the specified window. (Geoff Reedy)
3820 Files:      src/eval.c
3822 Patch 7.0.125
3823 Problem:    When "autoselect" is in the 'clipboard' option then the '< and '>
3824             marks are set while Visual mode is still active.
3825 Solution:   Don't set the '< and '> marks when yanking the selected area for
3826             the clipboard.
3827 Files:      src/normal.c
3829 Patch 7.0.126
3830 Problem:    When 'formatexpr' uses setline() and later internal formatting is
3831             used undo information is not correct. (Jiri Cerny, Benji Fisher)
3832 Solution:   Set ins_need_undo after using 'formatexpr'.
3833 Files:      src/edit.c
3835 Patch 7.0.127
3836 Problem:    Crash when swap files has invalid timestamp.
3837 Solution:   Check return value of ctime() for being NULL.
3838 Files:      src/memline.c
3840 Patch 7.0.128
3841 Problem:    GUI: when closing gvim is cancelled because there is a changed
3842             buffer the screen isn't updated to show the changed buffer in the
3843             current window.  (Krzysztof Kacprzak)
3844 Solution:   Redraw when closing gvim is cancelled.
3845 Files:      src/gui.c
3847 Patch 7.0.129
3848 Problem:    GTK GUI: the GTK file dialog can't handle a relative path.
3849 Solution:   Make the initial directory a full path before passing it to GTK.
3850             (James Vega)  Also postpone adding the default file name until
3851             after setting the directory.
3852 Files:      src/gui_gtk.c
3854 Patch 7.0.130 (extra)
3855 Problem:    Win32: Trying to edit or write devices may cause Vim to get stuck.
3856 Solution:   Add the 'opendevice' option, default off.  Disallow
3857             reading/writing from/to devices when it's off.
3858             Also detect more devices by the full name starting with "\\.\".
3859 Files:      runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h,
3860             src/os_win32.c
3862 Patch 7.0.131
3863 Problem:    Win32: "vim -r" does not list all the swap files.
3864 Solution:   Also check for swap files starting with a dot.
3865 Files:      src/memline.c
3867 Patch 7.0.132 (after 7.0.130)
3868 Problem:    Win32: Crash when Vim reads from stdin.
3869 Solution:   Only use mch_nodetype() when there is a file name.
3870 Files:      src/fileio.c
3872 Patch 7.0.133
3873 Problem:    When searching included files messages are added to the history.
3874 Solution:   Set msg_hist_off for messages about scanning included files.
3875             Set msg_silent to avoid message about wrapping around.
3876 Files:      src/edit.c, src/globals.h, src/message.c, src/search.c
3878 Patch 7.0.134
3879 Problem:    Crash when comparing a recursively looped List or Dictionary.
3880 Solution:   Limit recursiveness for comparing to 1000.
3881 Files:      src/eval.c
3883 Patch 7.0.135
3884 Problem:    Crash when garbage collecting list or dict with loop.
3885 Solution:   Don't use DEL_REFCOUNT but don't recurse into Lists and
3886             Dictionaries when freeing them in the garbage collector.
3887             Also add allocated Dictionaries to the list of Dictionaries to
3888             avoid leaking memory.
3889 Files:      src/eval.c, src/proto/eval.pro, src/tag.c
3891 Patch 7.0.136
3892 Problem:    Using "O" while matching parens are highlighted may not remove the
3893             highlighting. (Ilya Bobir)
3894 Solution:   Also trigger CursorMoved when a line is inserted under the cursor.
3895 Files:      src/misc1.c
3897 Patch 7.0.137
3898 Problem:    Configure check for big features is wrong.
3899 Solution:   Change "==" to "=". (Martti Kuparinen)
3900 Files:      src/auto/configure, src/configure.in
3902 Patch 7.0.138 (extra)
3903 Problem:    Mac: modifiers don't work with function keys.
3904 Solution:   Use GetEventParameter() to obtain modifiers. (Nicolas Weber)
3905 Files:      src/gui_mac.c
3907 Patch 7.0.139
3908 Problem:    Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another
3909             tab page does not prepare for undo properly. (Stefano Zacchiroli)
3910 Solution:   Call start_arrow() before switching tab page.
3911 Files:      src/edit.c
3913 Patch 7.0.140 (after 7.0.134)
3914 Problem:    Comparing recursively looped List or Dictionary doesn't work well.
3915 Solution:   Detect comparing a List or Dictionary with itself.
3916 Files:      src/eval.c
3918 Patch 7.0.141
3919 Problem:    When pasting a while line on the command line an extra CR is added
3920             literally.
3921 Solution:   Don't add the trailing CR when pasting with the mouse.
3922 Files:      src/ex_getln.c, src/proto/ops.pro, src/ops.c
3924 Patch 7.0.142
3925 Problem:    Using the middle mouse button in Select mode to paste text results
3926             in an extra "y". (Kriton Kyrimis)
3927 Solution:   Let the middle mouse button replace the selected text with the
3928             contents of the clipboard.
3929 Files:      src/normal.c
3931 Patch 7.0.143
3932 Problem:    Setting 'scroll' to its default value was not handled correctly.
3933 Solution:   Compare the right field to PV_SCROLL.
3934 Files:      src/option.c
3936 Patch 7.0.144
3937 Problem:    May compare two unrelated pointers when matching a pattern against
3938             a string.  (Dominique Pelle)
3939 Solution:   Avoid calling reg_getline() when REG_MULTI is false.
3940 Files:      src/regexp.c
3942 Patch 7.0.145 (after 7.0.142)
3943 Problem:    Compiler warning.
3944 Solution:   Add type cast.
3945 Files:      src/normal.c
3947 Patch 7.0.146
3948 Problem:    When 'switchbuf' is set to "usetab" and the current tab has only a
3949             quickfix window, jumping to an error always opens a new window.
3950             Also, when the buffer is open in another tab page it's not found.
3951 Solution:   Check for the "split" value of 'switchbuf' properly.  Search in
3952             other tab pages for the desired buffer. (Yegappan Lakshmanan)
3953 Files:      src/buffer.c, src/quickfix.c
3955 Patch 7.0.147
3956 Problem:    When creating a session file and there are several tab pages and
3957             some windows have a local directory a short file name may be used
3958             when it's not valid. (Marius Roets)
3959             A session with multiple tab pages may result in "No Name" buffers.
3960             (Bill McCarthy)
3961 Solution:   Don't enter tab pages when going through the list, only use a
3962             pointer to the first window in each tab page.
3963             Use "tabedit" instead of "tabnew | edit" when possible.
3964 Files:      src/ex_docmd.c
3966 Patch 7.0.148
3967 Problem:    When doing "call a.xyz()" and "xyz" does not exist in dictionary
3968             "a" there is no error message. (Yegappan Lakshmanan)
3969 Solution:   Add the error message.
3970 Files:      src/eval.c
3972 Patch 7.0.149
3973 Problem:    When resizing a window that shows "~" lines the text sometimes
3974             jumps down.
3975 Solution:   Remove code that uses "~" lines in some situations.  Fix the
3976             computation of the screen line of the cursor.  Also set w_skipcol
3977             to handle very long lines.
3978 Files:      src/misc1.c, src/window.c
3980 Patch 7.0.150
3981 Problem:    When resizing the Vim window scrollbinding doesn't work. (Yakov
3982             Lerner)
3983 Solution:   Do scrollbinding in set_shellsize().
3984 Files:      src/term.c
3986 Patch 7.0.151
3987 Problem:    Buttons in file dialog are not according to Gnome guidelines.
3988 Solution:   Swap Cancel and Open buttons. (Stefano Zacchiroli)
3989 Files:      src/gui_gtk.c
3991 Patch 7.0.152
3992 Problem:    Crash when using lesstif 2.
3993 Solution:   Fill in the extension field. (Ben Hutchings)
3994 Files:      src/gui_xmebw.c
3996 Patch 7.0.153
3997 Problem:    When using cscope and opening the temp file fails Vim crashes.
3998             (Kaya Bekiroglu)
3999 Solution:   Check for NULL pointer returned from mch_open().
4000 Files:      src/if_cscope.c
4002 Patch 7.0.154
4003 Problem:    When 'foldnextmax' is negative Vim can hang. (James Vega)
4004 Solution:   Avoid the fold level becoming negative.
4005 Files:      src/fold.c, src/syntax.c
4007 Patch 7.0.155
4008 Problem:    When getchar() returns a mouse button click there is no way to get
4009             the mouse coordinates.
4010 Solution:   Add v:mouse_win, v:mouse_lnum and v:mouse_col.
4011 Files:      runtime/doc/eval.txt, src/eval.c, src/vim.h
4013 Patch 7.0.156 (extra)
4014 Problem:    Vim doesn't compile for Amiga OS 4.
4015 Solution:   Various changes for Amiga OS4. (Peter Bengtsson)
4016 Files:      src/feature.h, src/mbyte.c, src/memfile.c, src/memline.c,
4017             src/os_amiga.c, src/os_amiga.h, src/pty.c
4019 Patch 7.0.157
4020 Problem:    When a function is used recursively the profiling information is
4021             invalid. (Mikolaj Machowski)
4022 Solution:   Put the start time on the stack instead of in the function.
4023 Files:      src/eval.c
4025 Patch 7.0.158
4026 Problem:    In a C file with ":set foldmethod=syntax", typing {<CR> on the
4027             last line results in the cursor being in a closed fold. (Gautam
4028             Iyer)
4029 Solution:   Open fold after inserting a new line.
4030 Files:      src/edit.c
4032 Patch 7.0.159
4033 Problem:    When there is an I/O error in the swap file the cause of the error
4034             cannot be seen.
4035 Solution:   Use PERROR() instead of EMSG() where possible.
4036 Files:      src/memfile.c
4038 Patch 7.0.160
4039 Problem:    ":@a" echoes the command, Vi doesn't do that.
4040 Solution:   Set the silent flag in the typeahead buffer to avoid echoing the
4041             command.
4042 Files:      src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro
4044 Patch 7.0.161
4045 Problem:    Win32: Tab pages line popup menu isn't using the right encoding.
4046             (Yongwei Wu)
4047 Solution:   Convert the text when necessary.  Also fixes the Find/Replace
4048             dialog title. (Yegappan Lakshmanan)
4049 Files:      src/gui_w48.c
4051 Patch 7.0.162
4052 Problem:    "vim -o a b" when file "a" triggers the ATTENTION dialog,
4053             selecting "Quit" exits Vim instead of editing "b" only.
4054             When file "b" triggers the ATTENTION dialog selecting "Quit" or
4055             "Abort" results in editing file "a" in that window.
4056 Solution:   When selecting "Abort" exit Vim.  When selecting "Quit" close the
4057             window.  Also avoid hit-enter prompt when selecting Abort.
4058 Files:      src/buffer.c, src/main.c
4060 Patch 7.0.163
4061 Problem:    Can't retrieve the position of a sign after it was set.
4062 Solution:   Add the netbeans interface getAnno command. (Xavier de Gaye)
4063 Files:      runtime/doc/netbeans.txt, src/netbeans.c
4065 Patch 7.0.164
4066 Problem:    ":redir @+" doesn't work.
4067 Solution:   Accept "@+" just like "@*". (Yegappan Lakshmanan)
4068 Files:      src/ex_docmd.c
4070 Patch 7.0.165
4071 Problem:    Using CTRL-L at the search prompt adds a "/" and other characters
4072             without escaping, causing the pattern not to match.
4073 Solution:   Escape special characters with a backslash.
4074 Files:      src/ex_getln.c
4076 Patch 7.0.166
4077 Problem:    Crash in cscope code when connection could not be opened.
4078             (Kaya Bekiroglu)
4079 Solution:   Check for the file descriptor to be NULL.
4080 Files:      src/if_cscope.c
4082 Patch 7.0.167
4083 Problem:    ":function" redefining a dict function doesn't work properly.
4084             (Richard Emberson)
4085 Solution:   Allow a function name to be a number when it's a function
4086             reference.
4087 Files:      src/eval.c
4089 Patch 7.0.168
4090 Problem:    Using uninitialized memory and memory leak. (Dominique Pelle)
4091 Solution:   Use alloc_clear() instead of alloc() for w_lines.  Free
4092             b_ml.ml_stack after recovery.
4093 Files:      src/memline.c, src/window.c
4095 Patch 7.0.169
4096 Problem:    With a Visual block selection, with the cursor in the left upper
4097             corner, pressing "I" doesn't remove the highlighting. (Guopeng
4098             Wen)
4099 Solution:   When checking if redrawing is needed also check if Visual
4100             selection is still active.
4101 Files:      src/screen.c
4103 Patch 7.0.170 (extra)
4104 Problem:    Win32: Using "gvim --remote-tab foo" when gvim is minimized while
4105             it previously was maximized, un-maximizing doesn't work properly.
4106             And the labels are not displayed properly when 'encoding' is
4107             utf-8.
4108 Solution:   When minimized check for SW_SHOWMINIMIZED.  When updating the tab
4109             pages line use TCM_SETITEMW instead of TCM_INSERTITEMW. (Liu
4110             Yubao)
4111 Files:      src/gui_w48.c
4113 Patch 7.0.171 (extra)
4114 Problem:    VMS: A file name with multiple paths is written in the wrong file.
4115 Solution:   Get the actually used file name. (Zoltan Arpadffy)
4116             Also add info to the :version command about compilation.
4117 Files:      src/Make_vms.mms, src/buffer.c, src/os_unix.c, src/version.c
4119 Patch 7.0.172
4120 Problem:    Crash when recovering and quitting at the "press-enter" prompt.
4121 Solution:   Check for "msg_list" to be NULL. (Liu Yubao)
4122 Files:      src/ex_eval.c
4124 Patch 7.0.173
4125 Problem:    ":call f().TT()" doesn't work.  (Richard Emberson)
4126 Solution:   When a function returns a Dictionary or another composite continue
4127             evaluating what follows.
4128 Files:      src/eval.c    
4130 Patch 7.0.174
4131 Problem:    ":mksession" doesn't restore window layout correctly in tab pages
4132             other than the current one. (Zhibin He)
4133 Solution:   Use the correct topframe for producing the window layout commands.
4134 Files:      src/ex_docmd.c
4136 Patch 7.0.175
4137 Problem:    The result of tr() is missing the terminating NUL. (Ingo Karkat)
4138 Solution:   Add the NUL.
4139 Files:      src/eval.c
4141 Patch 7.0.176
4142 Problem:    ":emenu" isn't executed directly, causing the encryption key
4143             prompt to fail. (Life Jazzer)
4144 Solution:   Fix wrong #ifdef.
4145 Files:      src/menu.c
4147 Patch 7.0.177
4148 Problem:    When the press-enter prompt gets a character from a non-remappable
4149             mapping, it's put back in the typeahead buffer as remappable,
4150             which may cause an endless loop.
4151 Solution:   Restore the non-remappable flag and the silent flag when putting a
4152             char back in the typeahead buffer.
4153 Files:      src/getchar.c, src/message.c, src/normal.c
4155 Patch 7.0.178
4156 Problem:    When 'enc' is "utf-8" and 'ignorecase' is set the result of ":echo
4157             ("\xe4" == "\xe4")" varies.
4158 Solution:   In mb_strnicmp() avoid looking past NUL bytes.
4159 Files:      src/mbyte.c
4161 Patch 7.0.179
4162 Problem:    Using ":recover" or "vim -r" without a swapfile crashes Vim.
4163 Solution:   Check for "buf" to be unequal NULL. (Yukihiro Nakadaira)
4164 Files:      src/memline.c
4166 Patch 7.0.180 (extra, after 7.0.171)
4167 Problem:    VMS: build failed.  Problem with swapfiles.
4168 Solution:   Add "compiled_arch".  Always expand path and pass it to
4169             buf_modname().  (Zoltan Arpadffy)
4170 Files:      src/globals.h, src/memline.c, src/os_unix.c, runtime/menu.vim
4172 Patch 7.0.181
4173 Problem:    When reloading a file that starts with an empty line, the reloaded
4174             buffer has an extra empty line at the end. (Motty Lentzitzky)
4175 Solution:   Delete all lines, don't use bufempty().
4176 Files:      src/fileio.c
4178 Patch 7.0.182
4179 Problem:    When using a mix of undo and "g-" it may no longer be possible to
4180             go to every point in the undo tree.  (Andy Wokula)
4181 Solution:   Correctly update pointers in the undo tree.
4182 Files:      src/undo.c
4184 Patch 7.0.183
4185 Problem:    Crash in ":let" when redirecting to a variable that's being
4186             displayed. (Thomas Link)
4187 Solution:   When redirecting to a variable only do the assignment when
4188             stopping redirection to avoid that setting the variable causes a
4189             freed string to be accessed.
4190 Files:      src/eval.c
4192 Patch 7.0.184
4193 Problem:    When the cscope program is called "mlcscope" the Cscope interface
4194             doesn't work.
4195 Solution:   Accept "\S*cscope:" instead of "cscope:". (Frodak D. Baksik)
4196 Files:      src/if_cscope.c
4198 Patch 7.0.185
4199 Problem:    Multi-byte characters in a message are displayed with attributes
4200             from what comes before it.
4201 Solution:   Don't use the attributes for a multi-byte character.  Do use
4202             attributes for special characters. (Yukihiro Nakadaira)
4203 Files:      src/message.c
4205 Patch 7.0.186
4206 Problem:    Get an ml_get error when 'encoding' is "utf-8" and searching for
4207             "/\_s*/e" in an empty buffer.  (Andrew Maykov)
4208 Solution:   Don't try getting the line just below the last line.
4209 Files:      src/search.c
4211 Patch 7.0.187
4212 Problem:    Can't source a remote script properly.
4213 Solution:   Add the SourceCmd event. (Charles Campbell)
4214 Files:      runtime/doc/autocmd.txt, src/ex_cmds2.c, src/fileio.c, src/vim.h
4216 Patch 7.0.188 (after 7.0.186)
4217 Problem:    Warning for wrong pointer type.
4218 Solution:   Add a type cast.
4219 Files:      src/search.c
4221 Patch 7.0.189
4222 Problem:    Translated message about finding matches is truncated. (Yukihiro
4223             Nakadaira)
4224 Solution:   Enlarge the buffer.  Also use vim_snprintf().
4225 Files:      src/edit.c
4227 Patch 7.0.190
4228 Problem:    "syntax spell default" results in an error message.
4229 Solution:   Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado)
4230 Files:      src/syntax.c
4232 Patch 7.0.191
4233 Problem:    The items used by getqflist() and setqflist() don't match.
4234 Solution:   Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan)
4235 Files:      runtime/doc/eval.txt, src/quickfix.c
4237 Patch 7.0.192
4238 Problem:    When 'swapfile' is switched off in an empty file it is possible
4239             that not all blocks are loaded into memory, causing ml_get errors
4240             later.
4241 Solution:   Rename "dont_release" to "mf_dont_release" and also use it to
4242             avoid using the cached line and locked block. 
4243 Files:      src/globals.h, src/memfile.c, src/memline.c
4245 Patch 7.0.193
4246 Problem:    Using --remote or --remote-tab with an argument that matches
4247             'wildignore' causes a crash.
4248 Solution:   Check the argument count before using ARGLIST[0].
4249 Files:      src/ex_cmds.c
4251 Patch 7.0.194
4252 Problem:    Once an ml_get error is given redrawing part of the screen may
4253             cause it again, resulting in an endless loop.
4254 Solution:   Don't give the error message for a recursive call.
4255 Files:      src/memline.c
4257 Patch 7.0.195
4258 Problem:    When a buffer is modified and 'autowriteall' is set, ":quit"
4259             results in an endless loop when there is a conversion error while
4260             writing. (Nikolai Weibull)
4261 Solution:   Make autowrite() return FAIL if the buffer is still changed after
4262             writing it.
4263             /* put the cursor on the last char, for 'tw' formatting */
4264 Files:      src/ex_cmds2.c
4266 Patch 7.0.196
4267 Problem:    When using ":vert ball" the computation of the mouse pointer
4268             position may be off by one column. (Stefan Karlsson)
4269 Solution:   Recompute the frame width when moving the vertical separator from
4270             one window to another.
4271 Files:      src/window.c
4273 Patch 7.0.197 (extra)
4274 Problem:    Win32: Compiling with EXITFREE doesn't work.
4275 Solution:   Adjust a few #ifdefs. (Alexei Alexandrof)
4276 Files:      src/misc2.c, src/os_mswin.c
4278 Patch 7.0.198 (extra)
4279 Problem:    Win32: Compiler warnings.  No need to generate gvim.exe.mnf.
4280 Solution:   Add type casts.  Use "*" for processorArchitecture. (George Reilly)
4281 Files:      src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c
4283 Patch 7.0.199
4284 Problem:    When using multi-byte characters the combination of completion and
4285             formatting may result in a wrong cursor position.
4286 Solution:   Don't decrement the cursor column, use dec_cursor(). (Yukihiro
4287             Nakadaira)  Also check for the column to be zero.
4288 Files:      src/edit.c
4290 Patch 7.0.200
4291 Problem:    Memory leaks when out of memory.
4292 Solution:   Free the memory.
4293 Files:      src/edit.c, src/diff.c
4295 Patch 7.0.201
4296 Problem:    Message for ":diffput" about buffer not being in diff mode may be
4297             wrong.
4298 Solution:   Check for buffer in diff mode but not modifiable.
4299 Files:      src/diff.c
4301 Patch 7.0.202
4302 Problem:    Problems on Tandem systems while compiling and at runtime.
4303 Solution:   Recognize root uid is 65535.  Check select() return value for it
4304             not being supported.  Avoid wrong function prototypes.  Mention
4305             use of -lfloss.  (Matthew Woehlke)
4306 Files:      src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c,
4307             src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c,
4308             src/vim.h
4310 Patch 7.0.203
4311 Problem:    0x80 characters in a register are not handled correctly for the
4312             "@" command.
4313 Solution:   Escape CSI and 0x80 characters. (Yukihiro Nakadaira)
4314 Files:      src/ops.c
4316 Patch 7.0.204
4317 Problem:    Cscope: Parsing matches for listing isn't done properly.
4318 Solution:   Check for line number being found. (Yu Zhao)
4319 Files:      src/if_cscope.c
4321 Patch 7.0.205 (after 7.0.203)
4322 Problem:    Can't compile.
4323 Solution:   Always include the vim_strsave_escape_csi function.
4324 Files:      src/getchar.c
4326 Patch 7.0.206 (after 7.0.058)
4327 Problem:    Some characters of the "gb18030" encoding are not handled
4328             properly.
4329 Solution:   Do not use "cp936" as an alias for "gb18030" encoding.  Instead
4330             initialize 'encoding' to "cp936".
4331 Files:      src/mbyte.c, src/option.c
4333 Patch 7.0.207
4334 Problem:    After patch 2.0.203 CSI and K_SPECIAL characters are escaped when
4335             recorded and then again when the register is executed.
4336 Solution:   Remove escaping before putting the recorded characters in a
4337             register.  (Yukihiro Nakadaira)
4338 Files:      src/getchar.c, src/ops.c, src/proto/getchar.pro
4340 Patch 7.0.208 (after 7.0.171 and 7.0.180)
4341 Problem:    VMS: changes to path handling cause more trouble than they solve.
4342 Solution:   Revert changes.
4343 Files:      src/buffer.c, src/memline.c, src/os_unix.c
4345 Patch 7.0.209
4346 Problem:    When replacing a line through Python the cursor may end up beyond
4347             the end of the line.
4348 Solution:   Check the cursor column after replacing the line.
4349 Files:      src/if_python.c
4351 Patch 7.0.210
4352 Problem:    ":cbuffer" and ":lbuffer" always fail when the buffer is modified.
4353             (Gary Johnson)
4354 Solution:   Support adding a !. (Yegappan Lakshmanan)
4355 Files:      runtime/doc/quickfix.txt, src/ex_cmds.h
4357 Patch 7.0.211
4358 Problem:    With ":set cindent noai bs=0" using CTRL-U in Insert mode will
4359             delete auto-indent.  After ":set ai" it doesn't.
4360 Solution:   Also check 'cindent' being set. (Ryan Lortie)
4361 Files:      src/edit.c
4363 Patch 7.0.212
4364 Problem:    The GUI can't be terminated with SIGTERM. (Mark Logan)
4365 Solution:   Use the signal protection in the GUI as in the console, allow
4366             signals when waiting for 100 msec or longer.
4367 Files:      src/ui.c
4369 Patch 7.0.213
4370 Problem:    When 'spellfile' has two regions that use the same sound folding
4371             using "z=" will cause memory to be freed twice. (Mark Woodward)
4372 Solution:   Clear the hashtable properly so that the items are only freed once.
4373 Files:      src/spell.c
4375 Patch 7.0.214
4376 Problem:    When using <f-args> in a user command it's not possible to have an
4377             argument end in '\ '.
4378 Solution:   Change the handling of backslashes. (Yakov Lerner)
4379 Files:      runtime/doc/map.txt, src/ex_docmd.c
4381 Patch 7.0.215 (extra)
4382 Problem:    Mac: Scrollbar size isn't set.  Context menu has disabled useless
4383             Help entry.  Call to MoreMasterPointers() is ignored.
4384 Solution:   Call SetControlViewSize() in gui_mch_set_scrollbar_thumb().  Use
4385             kCMHelpItemRemoveHelp for ContextualMenuSelect().  Remove call to
4386             MoreMasterPointers(). (Nicolas Weber)
4387 Files:      src/gui_mac.c
4389 Patch 7.0.216
4390 Problem:    ":tab wincmd ]" does not open a tab page. (Tony Mechelynck)
4391 Solution:   Copy the cmdmod.tab value to postponed_split_tab and use it.
4392 Files:      src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c
4394 Patch 7.0.217
4395 Problem:    This hangs when pressing "n": ":%s/\n/,\r/gc". (Ori Avtalion)
4396 Solution:   Set "skip_match" to advance to the next line.
4397 Files:      src/ex_cmds.c
4399 Patch 7.0.218
4400 Problem:    "%B" in 'statusline' always shows zero in Insert mode. (DervishD)
4401 Solution:   Remove the exception for Insert mode, check the column for being
4402             valid instead.
4403 Files:      src/buffer.c
4405 Patch 7.0.219
4406 Problem:    When using the 'editexisting.vim' script and a file is being
4407             edited in another tab page the window is split.  The "+123"
4408             argument is not used.
4409 Solution:   Make the tab page with the file the current tab page.  Set
4410             v:swapcommand when starting up to the first "+123" or "-c" command
4411             line argument.
4412 Files:      runtime/macros/editexisting.vim, src/main.c
4414 Patch 7.0.220
4415 Problem:    Crash when using winnr('#') in a new tab page. (Andy Wokula)
4416 Solution:   Check for not finding the window.
4417 Files:      src/eval.c
4419 Patch 7.0.221
4420 Problem:    finddir() uses 'path' by default, where "." means relative to the
4421             current file.  But it works relative to the current directory.
4422             (Tye Zdrojewski)
4423 Solution:   Add the current buffer name to find_file_in_path_option() for the
4424             relative file name.
4425 Files:      runtime/doc/eval.txt, src/eval.c
4427 Patch 7.0.222
4428 Problem:    Perl indenting using 'cindent' works almost right.
4429 Solution:   Recognize '#' to start a comment. (Alex Manoussakis)  Added '#'
4430             flag in 'cinoptions'.
4431 Files:      runtime/doc/indent.txt, src/misc1.c
4433 Patch 7.0.223
4434 Problem:    Unprintable characters in completion text mess up the popup menu.
4435             (Gombault Damien)
4436 Solution:   Use strtrans() to make the text printable.
4437 Files:      src/charset.c, src/popupmnu.c
4439 Patch 7.0.224
4440 Problem:    When expanding "##" spaces are escaped twice.  (Pavol Juhas)
4441 Solution:   Don't escape the spaces that separate arguments.
4442 Files:      src/eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro
4444 Patch 7.0.225
4445 Problem:    When using setline() in an InsertEnter autocommand and doing "A"
4446             the cursor ends up on the last byte in the line. (Yukihiro
4447             Nakadaira)
4448 Solution:   Only adjust the column when using setline() for the cursor line.
4449             Move it back to the head byte if necessary.
4450 Files:      src/eval.c, src/misc2.c
4452 Patch 7.0.226
4453 Problem:    Display flickering when updating signs through the netbeans
4454             interface. (Xavier de Gaye)
4455 Solution:   Remove the redraw_later(CLEAR) call.
4456 Files:      src/netbeans.c
4458 Patch 7.0.227
4459 Problem:    Crash when closing a window in the GUI. (Charles Campbell)
4460 Solution:   Don't call out_flush() from win_free().
4461 Files:      src/window.c
4463 Patch 7.0.228
4464 Problem:    Cygwin: problem with symlink to DOS style path.
4465 Solution:   Invoke cygwin_conv_to_posix_path(). (Luca Masini)
4466 Files:      src/os_unix.c
4468 Patch 7.0.229
4469 Problem:    When 'pastetoggle' starts with Esc then pressing Esc in Insert
4470             mode will not time out. (Jeffery Small)
4471 Solution:   Use KL_PART_KEY instead of KL_PART_MAP, so that 'ttimeout' applies
4472             to the 'pastetoggle' key.
4473 Files:      src/getchar.c
4475 Patch 7.0.230
4476 Problem:    After using ":lcd" a script doesn't know how to restore the
4477             current directory.
4478 Solution:   Add the haslocaldir() function. (Bob Hiestand)
4479 Files:      runtime/doc/usr_41.txt, runtime/doc/eval.txt, src/eval.c
4481 Patch 7.0.231
4482 Problem:    When recovering from a swap file the page size is likely to be
4483             different from the minimum.  The block used for the first page
4484             then has a buffer of the wrong size, causing a crash when it's
4485             reused later.  (Zephaniah Hull)
4486 Solution:   Reallocate the buffer when the page size changes.  Also check that
4487             the page size is at least the minimum value.
4488 Files:      src/memline.c
4490 Patch 7.0.232 (extra)
4491 Problem:    Mac: doesn't support GUI tab page labels.
4492 Solution:   Add GUI tab page labels. (Nicolas Weber)
4493 Files:      src/feature.h, src/gui.c, src/gui.h, src/gui_mac.c,
4494             src/proto/gui_mac.pro
4496 Patch 7.0.233 (extra)
4497 Problem:    Mac: code formatted badly.
4498 Solution:   Fix code formatting
4499 Files:      src/gui_mac.c
4501 Patch 7.0.234
4502 Problem:    It's possible to use feedkeys() from a modeline.  That is a
4503             security issue, can be used for a trojan horse.
4504 Solution:   Disallow using feedkeys() in the sandbox.
4505 Files:      src/eval.c
4507 Patch 7.0.235
4508 Problem:    It is possible to use writefile() in the sandbox.
4509 Solution:   Add a few more checks for the sandbox.
4510 Files:      src/eval.c
4512 Patch 7.0.236
4513 Problem:    Linux 2.4 uses sysinfo() with a mem_unit field, which is not
4514             backwards compatible.
4515 Solution:   Add an autoconf check for sysinfo.mem_unit.  Let mch_total_mem()
4516             return Kbyte to avoid overflow.
4517 Files:      src/auto/configure, src/configure.in, src/config.h.in,
4518             src/option.c, src/os_unix.c
4520 Patch 7.0.237
4521 Problem:    For root it is recommended to not use 'modeline', but in
4522             not-compatible mode the default is on.
4523 Solution:   Let 'modeline' default to off for root.
4524 Files:      runtime/doc/options.txt, src/option.c
4526 Patch 7.0.238
4527 Problem:    Crash when ":match" pattern runs into 'maxmempattern'. (Yakov
4528             Lerner)
4529 Solution:   Don't free the regexp program of match_hl.
4530 Files:      src/screen.c
4532 Patch 7.0.239
4533 Problem:    When using local directories and tab pages ":mksession" uses a
4534             short file name when it shouldn't.  Window-local options from a
4535             modeline may be applied to the wrong window. (Teemu Likonen)
4536 Solution:   Add the did_lcd flag, use the full path when it's set.  Don't use
4537             window-local options from the modeline when using the current
4538             window for another buffer in ":doautoall".
4539 Files:      src/fileio.c,  src/ex_docmd.c
4541 Patch 7.0.240
4542 Problem:    Crash when splitting a window in the GUI. (opposite of 7.0.227)
4543 Solution:   Don't call out_flush() from win_alloc().  Also avoid this for
4544             win_delete().  Also block autocommands while the window structure
4545             is invalid.
4546 Files:      src/window.c
4548 Patch 7.0.241
4549 Problem:    ":windo throw 'foo'" loops forever. (Andy Wokula)
4550 Solution:   Detect that win_goto() doesn't work.
4551 Files:      src/ex_cmds2.c
4553 Patch 7.0.242 (extra)
4554 Problem:    Win32: Using "-register" in a Vim that does not support OLE causes
4555             a crash.
4556 Solution:   Don't use EMSG() but mch_errmsg().  Check p_go for being NULL.
4557             (partly by Michael Wookey)
4558 Files:      src/gui_w32.c
4560 Patch 7.0.243 (extra)
4561 Problem:    Win32: When GvimExt is built with MSVC 2005 or later, the "Edit
4562             with vim" context menu doesn't appear in the Windows Explorer.
4563 Solution:   Embed the linker manifest file into the resources of GvimExt.dll.
4564             (Mathias Michaelis)
4565 Files:      src/GvimExt/Makefile
4568 Fixes after Vim 7.1a BETA:
4570 The extra archive had CVS directories included below "farsi" and
4571 "runtime/icons".  CVS was missing the farsi icon files.
4573 Fix compiling with Gnome 2.18, undefine bind_textdomain_codeset. (Daniel
4574 Drake)
4576 Mac: "make install" didn't copy rgb.txt.
4578 When editing a compressed file while there are folds caused "ml_get" errors
4579 and some lines could be missing.  When decompressing failed option values were
4580 not restored.
4583 Patch 7.1a.001
4584 Problem:    Crash when downloading a spell file.  (Szabolcs Horvat)
4585 Solution:   Avoid that did_set_spelllang() is used recursively when a new
4586             window is opened for the download.
4587             Also avoid wiping out the wrong buffer.
4588 Files:      runtime/autoload/spellfile.vim, src/buffer.c, src/ex_cmds.c,
4589             src/spell.c
4591 Patch 7.1a.002 (extra)
4592 Problem:    Compilation error with MingW.
4593 Solution:   Check for LPTOOLTIPTEXT to be defined.
4594 Files:      src/gui_w32.c
4597 Fixes after Vim 7.1b BETA:
4599 Made the Mzscheme interface build both with old and new versions of Mzscheme,
4600 using an #ifdef. (Sergey Khorev)
4601 Mzscheme interface didn't link, missing function.  Changed order of libraries
4602 in the configure script.
4604 Ruby interface didn't compile on Mac.  Changed #ifdef. (Kevin Ballard)
4606 Patch 7.1b.001 (extra)
4607 Problem:    Random text in a source file.  No idea how it got there.
4608 Solution:   Delete the text.
4609 Files:      src/gui_w32.c
4611 Patch 7.1b.002
4612 Problem:    When 'maxmem' is large there can be an overflow in computations.
4613             (Thomas Wiegner)
4614 Solution:   Use the same mechanism as in mch_total_mem(): first reduce the
4615             multiplier as much as possible.
4616 Files:      src/memfile.c
4620  vim:tw=78:ts=8:ft=help:norl: