Merge branch 'vim'
[MacVim.git] / runtime / doc / version7.txt
blobe4e40986c0946778445b6c1fc0b3ab19bb24cf6b
1 *version7.txt*  For Vim version 7.1.  Last change: 2008 May 19
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)
1180 This only applies to the older Carbon version of Vim, MacVim.app does not
1181 source this file.
1183 Mac: Add the selection type to the clipboard, so that Block, line and
1184 character selections can be used between two Vims. (Eckehard Berns)
1185 Also fixes the problem that setting 'clipboard' to "unnamed" breaks using
1186 "yyp".
1188 Mac: GUI font selector. (Peter Cucka)
1190 Mac: support for multi-byte characters. (Da Woon Jung)
1191 This doesn't always work properly.  If you see text drawing problems try
1192 switching the 'macatsui' option off.
1194 Mac: Support the xterm mouse in the non-GUI version.
1196 Mac: better integration with Xcode.  Post a fake mouse-up event after the odoc
1197 event and the drag receive handler to work around a stall after Vim loads a
1198 file.  Fixed an off-by-one line number error. (Da Woon Jung)
1200 Mac: When started from Finder change directory to the file being edited or the
1201 user home directory.
1203 Added the t_SI and t_EI escape sequences for starting and ending Insert mode.
1204 To be used to set the cursor shape to a bar or a block.  No default values,
1205 they are not supported by termcap/terminfo.
1207 GUI font selector for Motif. (Marcin Dalecki)
1209 Nicer toolbar buttons for Motif. (Marcin Dalecki)
1211 Mnemonics for the Motif find/replace dialog. (Marcin Dalecki)
1213 Included a few improvements for Motif from Marcin Dalecki.  Draw label
1214 contents ourselves to make them handle fonts in a way configurable by Vim and
1215 a bit less dependent on the X11 font management.
1217 Autocommands can be defined local to a buffer.  This means they will also work
1218 when the buffer does not have a name or no specific name.  See
1219 |autocmd-buflocal|.  (Yakov Lerner)
1221 For xterm most combinations of modifiers with function keys are recognized.
1222 |xterm-modifier-keys|
1224 When 'verbose' is set the output of ":highlight" will show where a highlight
1225 item was last set.
1226 When 'verbose' is set the output of the ":map", ":abbreviate", ":command",
1227 ":function" and ":autocmd" commands will show where it was last defined.
1228 (Yegappan Lakshmanan)
1230 ":function /pattern" lists functions matching the pattern.
1232 "1gd" can be used like "gd" but ignores matches in a {} block that ends before
1233 the cursor position.  Likewise for "1gD" and "gD".
1235 'scrolljump' can be set to a negative number to scroll a percentage of the
1236 window height.
1238 The |v:scrollstart| variable has been added to help finding the location in
1239 your script that causes the hit-enter prompt.
1241 To make it possible to handle the situation that a file is being edited that
1242 is already being edited by another Vim instance, the |SwapExists| event has
1243 been added.  The |v:swapname|, |v:swapchoice| and |v:swapcommand| variables
1244 can be used, for example to use the |client-server| functionality to bring the
1245 other Vim to the foreground.
1246 When starting Vim with a "-t tag" argument, there is an existing swapfile and
1247 the user selects "quit" or "abort" then exit Vim.
1249 Undo now also restores the '< and '> marks.  "gv" selects the same area as
1250 before the change and undo.
1252 When editing a search pattern for a "/" or "?" command and 'incsearch' is set
1253 CTRL-L can be used to add a character from the current match.  CTRL-R CTRL-W
1254 will add a word, but exclude the part of the word that was already typed.
1256 Ruby interface: add line number methods. (Ryan Paul)
1258 The $MYVIMRC environment variable is set to the first found vimrc file.
1259 The $MYGVIMRC environment variable is set to the first found gvimrc file.
1261 ==============================================================================
1262 IMPROVEMENTS                                            *improvements-7*
1264 ":helpgrep" accepts a language specifier after the pattern: "pat@it".
1266 Moved the help for printing to a separate help file.  It's quite a lot now.
1268 When doing completion for ":!cmd", ":r !cmd" or ":w !cmd" executable files are
1269 found in $PATH instead of looking for ordinary files in the current directory.
1271 When ":silent" is used and a backwards range is given for an Ex command the
1272 range is swapped automatically instead of asking if that is OK.
1274 The pattern matching code was changed from a recursive function to an
1275 iterative mechanism.  This avoids out-of-stack errors.  State is stored in
1276 allocated memory, running out of memory can always be detected.  Allows
1277 matching more complex things, but Vim may seem to hang while doing that.
1279 Previously some options were always evaluated in the |sandbox|.  Now that only
1280 happens when the option was set from a modeline or in secure mode.  Applies to
1281 'balloonexpr', 'foldexpr', 'foldtext' and 'includeexpr'. (Sumner Hayes)
1283 Some commands and expressions could have nasty side effects, such as using
1284 CTRL-R = while editing a search pattern and the expression invokes a function
1285 that jumps to another window.  The |textlock| has been added to prevent this
1286 from happening.
1288 ":breakadd here" and ":breakdel here" can be used to set or delete a
1289 breakpoint at the cursor.
1291 It is now possible to define a function with: >
1292         :exe "func Test()\n ...\n endfunc"
1294 The tutor was updated to make it simpler to use and text was added to explain
1295 a few more important commands.  Used ideas from Gabriel Zachmann.
1297 Unix: When libcall() fails obtain an error message with dlerror() and display
1298 it. (Johannes Zellner)
1300 Mac and Cygwin: When editing an existing file make the file name the same case
1301 of the edited file.  Thus when typing ":e os_UNIX.c" the file name becomes
1302 "os_unix.c".
1304 Added "nbsp" in 'listchars'. (David Blanchet)
1306 Added the "acwrite" value for the 'buftype' option.  This is for a buffer that
1307 does not have a name that refers to a file and is written with BufWriteCmd
1308 autocommands.
1310 For lisp indenting and matching parenthesis: (Sergey Khorev)
1311 - square brackets are recognized properly
1312 - #\(, #\), #\[ and #\] are recognized as character literals
1313 - Lisp line comments (delimited by semicolon) are recognized
1315 Added the "count" argument to match(), matchend() and matchstr(). (Ilya Sher)
1317 winnr() takes an optional "$" or "#" argument.  (Nikolai Weibull, Yegappan
1318 Lakshmanan)
1320 Added 's' flag to search(): set ' mark if cursor moved. (Yegappan Lakshmanan)
1321 Added 'n' flag to search(): don't move the cursor. (Nikolai Weibull)
1322 Added 'c' flag to search(): accept match at the cursor.
1323 Added 'e' flag to search(): move to end of the match. (Benji Fisher)
1324 Added 'p' flag to search(): return number of sub-pattern. (Benji Fisher)
1325 These also apply to searchpos(), searchpair() and searchpairpos().
1327 The search() and searchpair() functions have an extra argument to specify
1328 where to stop searching.  Speeds up searches that should not continue too far.
1330 When uncompressing fails in the gzip plugin, give an error message but don't
1331 delete the raw text.  Helps if the file has a .gz extension but is not
1332 actually compressed. (Andrew Pimlott)
1334 When C, C++ or IDL syntax is used, may additionally load doxygen syntax.
1335 (Michael Geddes)
1337 Support setting 'filetype' and 'syntax' to "aaa.bbb" for "aaa" plus "bbb"
1338 filetype or syntax.
1340 The ":registers" command now displays multi-byte characters properly.
1342 VMS: In the usage message mention that a slash can be used to make a flag
1343 upper case.  Add color support to the builtin vt320 terminal codes.
1344 (Zoltan Arpadffy)
1346 For the '%' item in 'viminfo', allow a number to set a maximum for the number
1347 of buffers.
1349 For recognizing the file type: When a file looks like a shell script, check
1350 for an "exec" command that starts the tcl interpreter. (suggested by Alexios
1351 Zavras)
1353 Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that
1354 digraphs still work when iconv is not available.
1356 When a session file is loaded while editing an unnamed, empty buffer that
1357 buffer is wiped out.  Avoids that there is an unused buffer in the buffer
1358 list.
1360 Win32: When libintl.dll supports bind_textdomain_codeset(), use it.
1361 (NAKADAIRA Yukihiro)
1363 Win32: Vim was not aware of hard links on NTFS file systems.  These are
1364 detected now for when 'backupcopy' is "auto".  Also fixed a bogus "file has
1365 been changed since reading it" error for links.
1367 When foldtext() finds no text after removing the comment leader, use the
1368 second line of the fold.  Helps for C-style /* */ comments where the first
1369 line is just "/*".
1371 When editing the same file from two systems (e.g., Unix and MS-Windows) there
1372 mostly was no warning for an existing swap file, because the name of the
1373 edited file differs (e.g., y:\dir\file vs /home/me/dir/file).  Added a flag to
1374 the swap file to indicate it is in the same directory as the edited file.  The
1375 used path then doesn't matter and the check for editing the same file is much
1376 more reliable.
1378 Unix: When editing a file through a symlink the swap file would use the name
1379 of the symlink.  Now use the name of the actual file, so that editing the same
1380 file twice is detected. (suggestions by Stefano Zacchiroli and James Vega)
1382 Client-server communication now supports 'encoding'.  When setting 'encoding'
1383 in a Vim server to "utf-8", and using "vim --remote fname" in a console,
1384 "fname" is converted from the console encoding to utf-8.  Also allows Vims
1385 with different 'encoding' settings to exchange messages.
1387 Internal: Changed ga_room into ga_maxlen, so that it doesn't need to be
1388 incremented/decremented each time.
1390 When a register is empty it is not stored in the viminfo file.
1392 Removed the tcltags script, it's obsolete.
1394 ":redir @*>>" and ":redir @+>>" append to the clipboard.  Better check for
1395 invalid characters after the register name. |:redir|
1397 ":redir => variable" and ":redir =>> variable" write or append to a variable.
1398 (Yegappan Lakshmanan) |:redir|
1400 ":redir @{a-z}>>" appends to register a to z. (Yegappan Lakshmanan)
1402 The 'verbosefile' option can be used to log messages in a file.  Verbose
1403 messages are not displayed then.  The "-V{filename}" argument can be used to
1404 log startup messages.
1406 ":let g:" lists global variables.
1407 ":let b:" lists buffer-local variables.
1408 ":let w:" lists window-local variables.
1409 ":let v:" lists Vim variables.
1411 The stridx() and strridx() functions take a third argument, where to start
1412 searching.  (Yegappan Lakshmanan)
1414 The getreg() function takes an extra argument to be able to get the expression
1415 for the '=' register instead of the result of evaluating it.
1417 The setline() function can take a List argument to set multiple lines.  When
1418 the line number is just below the last line the line is appended.
1420 g CTRL-G also shows the number of characters if it differs from the number of
1421 bytes.
1423 Completion for ":debug" and entering an expression for the '=' register.  Skip
1424 ":" between range and command name. (Peter winters)
1426 CTRL-Q in Insert mode now works like CTRL-V by default.  Previously it was
1427 ignored.
1429 When "beep" is included in 'debug' a function or script that causes a beep
1430 will result in a message with the source of the error.
1432 When completing buffer names, match with "\(^\|[\/]\)" instead of "^", so that
1433 ":buf stor<Tab>" finds both "include/storage.h" and "storage/main.c".
1435 To count items (pattern matches) without changing the buffer the 'n' flag has
1436 been added to |:substitute|.  See |count-items|.
1438 In a |:substitute| command the \u, \U, \l and \L items now also work for
1439 multi-byte characters.
1441 The "screen.linux" $TERM name is recognized to set the default for
1442 'background' to "dark". (Ciaran McCreesh)  Also for "cygwin" and "putty".
1444 The |FileChangedShell| autocommand event can now use the |v:fcs_reason|
1445 variable that specifies what triggered the event.  |v:fcs_choice| can be used
1446 to reload the buffer or ask the user what to do.
1448 Not all modifiers were recognized for xterm function keys.  Added the
1449 possibility in term codes to end in ";*X" or "O*X", where X is any character
1450 and the * stands for the modifier code.
1451 Added the <xUp>, <xDown>, <xLeft> and <xRight> keys, to be able to recognize
1452 the two forms that xterm can send their codes in and still handle all possible
1453 modifiers.
1455 getwinvar() now also works to obtain a buffer-local option from the specified
1456 window.
1458 Added the "%s" item to 'errorformat'. (Yegappan Lakshmanan)
1459 Added the "%>" item to 'errorformat'.
1461 For 'errorformat' it was not possible to have a file name that contains the
1462 character that follows after "%f".  For example, in "%f:%l:%m" the file name
1463 could not contain ":".  Now include the first ":" where the rest of the
1464 pattern matches.  In the example a ":" not followed by a line number is
1465 included in the file name. (suggested by Emanuele Giaquinta)
1467 GTK GUI: use the GTK file dialog when it's available.  Mix from patches by
1468 Grahame Bowland and Evan Webb.
1470 Added ":scriptnames" to bugreport.vim, so that we can see what plugins were
1471 used.
1473 Win32: If the user changes the setting for the number of lines a scroll wheel
1474 click scrolls it is now used immediately.  Previously Vim would need to be
1475 restarted.
1477 When using @= in an expression the value is expression @= contains.  ":let @=
1478 = value" can be used to set the register contents.
1480 A ! can be added to ":popup" to have the popup menu appear at the mouse
1481 pointer position instead of the text cursor.
1483 The table with encodings has been expanded with many MS-Windows codepages,
1484 such as cp1250 and cp737, so that these can also be used on Unix without
1485 prepending "8bit-".
1486 When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part.
1488 Added the "customlist" completion argument to a user-defined command.  The
1489 user-defined completion function should return the completion candidates as a
1490 Vim List and the returned results are not filtered by Vim. (Yegappan
1491 Lakshmanan)
1493 Win32: Balloons can have multiple lines if common controls supports it.
1494 (Sergey Khorev)
1496 For command-line completion the matches for various types of arguments are now
1497 sorted: user commands, variables, syntax names, etc.
1499 When no locale is set, thus using the "C" locale, Vim will work with latin1
1500 characters, using its own isupper()/toupper()/etc. functions.
1502 When using an rxvt terminal emulator guess the value of 'background' using the
1503 COLORFGBG environment variable. (Ciaran McCreesh)
1505 Also support t_SI and t_EI on Unix with normal features. (Ciaran McCreesh)
1507 When 'foldcolumn' is one then put as much info in it as possible.  This allows
1508 closing a fold with the mouse by clicking on the '-'.
1510 input() takes an optional completion argument to specify the type of
1511 completion supported for the input. (Yegappan Lakshmanan)
1513 "dp" works with more than two buffers in diff mode if there is only one where
1514 'modifiable' is set.
1516 The 'diffopt' option has three new values: "horizontal", "vertical" and
1517 "foldcolumn".
1519 When the 'include' option contains \zs the file name found is what is being
1520 matched from \zs to the end or \ze.  Useful to pass more to 'includeexpr'.
1522 Loading plugins on startup now supports subdirectories in the plugin
1523 directory. |load-plugins|
1525 In the foldcolumn always show the '+' for a closed fold, so that it can be
1526 opened easily.  It may overwrite another character, esp. if 'foldcolumn' is 1.
1528 It is now possible to get the W10 message again by setting 'readonly'.  Useful
1529 in the FileChangedRO autocommand when checking out the file fails.
1531 Unix: When open() returns EFBIG give an appropriate message.
1533 ":mksession" sets the SessionLoad variable to notify plugins.  A modeline is
1534 added to the session file to set 'filetype' to "vim".
1536 In the ATTENTION prompt put the "Delete it" choice before "Quit" to make it
1537 more logical.  (Robert Webb)
1539 When appending to a file while the buffer has no name the name of the appended
1540 file would be used for the current buffer.  But the buffer contents is
1541 actually different from the file content.  Don't set the file name, unless the
1542 'P' flag is present in 'cpoptions'.
1544 When starting to edit a new file and the directory for the file doesn't exist
1545 then Vim will report "[New DIRECTORY]" instead of "[New File] to give the user
1546 a hint that something might be wrong.
1548 Win32: Preserve the hidden attribute of the viminfo file.
1550 In Insert mode CTRL-A didn't keep the last inserted text when using CTRL-O and
1551 then a cursor key.  Now keep the previously inserted text if nothing is
1552 inserted after the CTRL-O.  Allows using CTRL-O commands to move the cursor
1553 without losing the last inserted text.
1555 The exists() function now supports checking for autocmd group definition
1556 and for supported autocommand events. (Yegappan Lakshmanan)
1558 Allow using ":global" in the sandbox, it doesn't do anything harmful by
1559 itself.
1561 ":saveas asdf.c" will set 'filetype' to c when it's empty.  Also for ":w
1562 asdf.c" when it sets the filename for the buffer.
1564 Insert mode completion for whole lines now also searches unloaded buffers.
1566 The colortest.vim script can now be invoked directly with ":source" or
1567 ":runtime syntax/colortest.vim".
1569 The 'statusline' option can be local to the window, so that each window can
1570 have a different value.  (partly by Yegappan Lakshmanan)
1572 The 'statusline' option and other options that support the same format can now
1573 use these new features:
1574 - When it starts with "%!" the value is first evaluated as an expression
1575   before parsing the value.
1576 - "%#HLname#" can be used to start highlighting with HLname.
1578 When 'statusline' is set to something that causes an error message then it is
1579 made empty to avoid an endless redraw loop.  Also for other options, such at
1580 'tabline' and 'titlestring'.  ":verbose set statusline" will mention that it
1581 was set in an error handler.
1583 When there are several matching tags, the ":tag <name>" and CTRL-] commands
1584 jump to the [count] matching tag. (Yegappan Lakshmanan)
1586 Win32: In the batch files generated by the install program, use $VIMRUNTIME or
1587 $VIM if it's set.  Example provided by Mathias Michaelis.
1588 Also create a vimtutor.bat batch file.
1590 The 'balloonexpr' option is now |global-local|.
1592 The system() function now runs in cooked mode, thus can be interrupted by
1593 CTRL-C.
1595 ==============================================================================
1596 COMPILE TIME CHANGES                                    *compile-changes-7*
1598 Dropped the support for the BeOS and Amiga GUI.  They were not maintained and
1599 probably didn't work.  If you want to work on this: get the Vim 6.x version
1600 and merge it back in.
1602 When running the tests and one of them fails to produce "test.out" the
1603 following tests are still executed.  This helps when running out of memory.
1605 When compiling with EXITFREE defined and the ccmalloc library it is possible
1606 to detect memory leaks.  Some memory will always reported as leaked, such as
1607 allocated by X11 library functions and the memory allocated in alloc_cmdbuff()
1608 to store the ":quit" command.
1610 Moved the code for printing to src/hardcopy.c.
1612 Moved some code from main() to separate functions to make it easier to see
1613 what is being done.  Using a structure to avoid a lot of arguments to the
1614 functions.
1616 Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c
1617 without copying the code.
1619 --- Mac ---
1621 "make" now creates the Vim.app directory and "make install" copies it to its
1622 final destination. (Raf)
1624 Put the runtime directory not directly in Vim.app but in
1625 Vim.app/Contents/Resources/vim, so that it's according to Mac specs.
1627 Made it possible to compile with Motif, Athena or GTK without tricks and still
1628 being able to use the MacRoman conversion.  Added the os_mac_conv.c file.
1630 When running "make install" the runtime files are installed as for Unix.
1631 Avoids that too many files are copied.  When running "make" a link to the
1632 runtime files is created to avoid a recursive copy that takes much time.
1634 Configure will attempt to build Vim for both Intel and PowerPC.  The
1635 --with-mac-arch configure argument can change it.
1637 --- Win32 ---
1639 The Make_mvc.mak file was adjusted to work with the latest MS compilers,
1640 including the free version of Visual Studio 2005. (George Reilly)
1642 INSTALLpc.txt was updated for the recent changes. (George Reilly)
1644 The distributed executable is now produced with the free Visual C++ Toolkit
1645 2003 and other free SDK chunks.  msvcsetup.bat was added to support this.
1647 Also generate the .pdb file that can be used to generate a useful crash report
1648 on MS-Windows. (George Reilly)
1650 ==============================================================================
1651 BUG FIXES                                               *bug-fixes-7*
1653 When using PostScript printing on MS-DOS the default 'printexpr' used "lpr"
1654 instead of "copy".  When 'printdevice' was empty the copy command did not
1655 work.  Use "LPT1" then.
1657 The GTK font dialog uses a font size zero when the font name doesn't include a
1658 size.  Use a default size of 10.
1660 This example in the documentation didn't work:
1661     :e `=foo . ".c" `
1662 Skip over the expression in `=expr` when looking for comments, |, % and #.
1664 When ":helpgrep" doesn't find anything there is no error message.
1666 "L" and "H" did not take closed folds into account.
1668 Win32: The "-P title" argument stopped at the first title that matched, even
1669 when it doesn't support MDI.
1671 Mac GUI: CTRL-^ and CTRL-@ did not work.
1673 "2daw" on "word." at the end of a line didn't include the preceding white
1674 space.
1676 Win32: Using FindExecutable() doesn't work to find a program.  Use
1677 SearchPath() instead.  For executable() use $PATHEXT when the program searched
1678 for doesn't have an extension.
1680 When 'virtualedit' is set, moving the cursor up after appending a character
1681 may move it to a different column.  Was caused by auto-formatting moving the
1682 cursor and not putting it back where it was.
1684 When indent was added automatically and then moving the cursor, the indent was
1685 not deleted (like when pressing ESC).  The "I" flag in 'cpoptions' can be used
1686 to make it work the old way.
1688 When opening a command-line window, 'textwidth' gets set to 78 by the Vim
1689 filetype plugin.  Reset 'textwidth' to 0 to avoid lines are broken.
1691 After using cursor(line, col) moving up/down doesn't keep the same column.
1693 Win32: Borland C before 5.5 requires using ".u." for LowPart and HighPart
1694 fields. (Walter Briscoe)
1696 On Sinix SYS_NMLN isn't always defined.  Define it ourselves. (Cristiano De
1697 Michele)
1699 Printing with PostScript may keep the printer waiting for more.  Append a
1700 CTRL-D to the printer output. (Mike Williams)
1702 When converting a string with a hex or octal number the leading '-' was
1703 ignored.  ":echo '-05' + 0" resulted in 5 instead of -5.
1705 Using "@:" to repeat a command line didn't work when it contains control
1706 characters.  Also remove "'<,'>" when in Visual mode to avoid that it appears
1707 twice.
1709 When using file completion for a user command, it would not expand environment
1710 variables like for a regular command with a file argument.
1712 'cindent': When the argument of a #define looks like a C++ class the next line
1713 is indented too much.
1715 When 'comments' includes multi-byte characters inserting the middle part and
1716 alignment may go wrong.  'cindent' also suffers from this for right-aligned
1717 items.
1719 Win32: when 'encoding' is set to "utf-8" getenv() still returns strings in the
1720 active codepage.  Convert to utf-8.  Also for $HOME.
1722 The default for 'helplang' was "zh" for both "zh_cn" and "zh_tw".  Now use
1723 "cn" or "tw" as intended.
1725 When 'bin' is set and 'eol' is not set then line2byte() added the line break
1726 after the last line while it's not there.
1728 Using foldlevel() in a WinEnter autocommand may not work.  Noticed when
1729 resizing the GUI shell upon startup.
1731 Python: Using buffer.append(f.readlines()) didn't work.  Allow appending a
1732 string with a trailing newline.  The newline is ignored.
1734 When using the ":saveas f2" command for buffer "f1", the Buffers menu would
1735 contain "f2" twice, one of them leading to "f1".  Also trigger the BufFilePre
1736 and BufFilePost events for the alternate buffer that gets the old name.
1738 strridx() did not work well when the needle is empty. (Ciaran McCreesh)
1740 GTK: Avoid a potential hang in gui_mch_wait_for_chars() when input arrives
1741 just before it is invoked
1743 VMS: Occasionally CR characters were inserted in the file.  Expansion of
1744 environment variables was not correct. (Zoltan Arpadffy)
1746 UTF-8: When 'delcombine' is set "dw" only deleted the last combining character
1747 from the first character of the word.
1749 When using ":sball" in an autocommand only the filetype in one buffer was
1750 detected.  Reset did_filetype in enter_buffer().
1752 When using ":argdo" and the window already was at the first argument index,
1753 but not actually editing it, the current buffer would be used instead.
1755 When ":next dir/*" includes many matches, adding the names to the argument
1756 list may take an awful lot of time and can't be interrupted.  Allow
1757 interrupting this.
1759 When editing a file that was already loaded in a buffer, modelines were not
1760 used.  Now window-local options in the modeline are set.  Buffer-local options
1761 and global options remain unmodified.
1763 Win32: When 'encoding' is set to "utf-8" in the vimrc file, files from the
1764 command line with non-ASCII characters are not used correctly.  Recode the
1765 file names when 'encoding' is set, using the Unicode command line.
1767 Win32 console: When the default for 'encoding' ends up to be "latin1", the
1768 default value of 'isprint' was wrong.
1770 When an error message is given while waiting for a character (e.g., when an
1771 xterm reports the number of colors), the hit-enter prompt overwrote the last
1772 line.  Don't reset msg_didout in normal_cmd() for K_IGNORE.
1774 Mac GUI: Shift-Tab didn't work.
1776 When defining tooltip text, don't translate terminal codes, since it's not
1777 going to be used like a command.
1779 GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a
1780 GTK error.  Invalid characters may appear when 'encoding' is changed.
1782 GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango.
1784 Win32: When 'encoding' is changed while starting up, use the Unicode command
1785 line to convert the file arguments to 'encoding'.  Both for the GUI and the
1786 console version.
1788 Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because
1789 there is no codepage for latin9.  Do our own conversion from latin9 to UCS2.
1791 When two versions of GTK+ 2 are installed it was possible to use the header
1792 files from one and the library from the other.  Use GTK_LIBDIR to put the
1793 directory for the library early in the link flags.
1795 With the GUI find/replace dialog a replace only worked if the pattern was
1796 literal text.  Now it works for any pattern.
1798 When 'equalalways' is set and 'eadirection' is "hor", ":quit" would still
1799 cause equalizing window heights in the vertical direction.
1801 When ":emenu" is used in a startup script the command was put in the typeahead
1802 buffer, causing a prompt for the crypt key to be messed up.
1804 Mac OS/X: The default for 'isprint' included characters 128-160, causes
1805 problems for Terminal.app.
1807 When a syntax item with "containedin" is used, it may match in the start or
1808 end of a region with a matchgroup, while this doesn't happen for a "contains"
1809 argument.
1811 When a transparent syntax items matches in another item where the highlighting
1812 has already stopped (because of a he= argument), the highlighting would come
1813 back.
1815 When cscope is used to set the quickfix error list, it didn't get set if there
1816 was only one match. (Sergey Khorev)
1818 When 'confirm' is set and using ":bdel" in a modified buffer, then selecting
1819 "cancel", would still give an error message.
1821 The PopUp menu items that started Visual mode didn't work when not in Normal
1822 mode.  Switching between selecting a word and a line was not possible.
1824 Win32: The keypad decimal point always resulted in a '.', while on some
1825 keyboards it's a ','.  Use MapVirtualKey(VK_DECIMAL, 2).
1827 Removed unused function DisplayCompStringOpaque() from gui_w32.c
1829 In Visual mode there is not always an indication whether the line break is
1830 selected or not.  Highlight the character after the line when the line break
1831 is included, e.g., after "v$o".
1833 GTK: The <F10> key can't be mapped, it selects the menu.  Disable that with a
1834 GTK setting and do select the menu when <F10> isn't mapped. (David Necas)
1836 After "Y" '[ and '] were not at start/end of the yanked text.
1838 When a telnet connection is dropped Vim preserves files and exits.  While
1839 doing that a SIGHUP may arrive and disturb us, thus ignore it. (Scott
1840 Anderson)  Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to
1841 handle.  Added handle_signal().
1843 When completing a file name on the command line backslashes are required for
1844 white space.  Was only done for a space, not for a Tab.
1846 When configure could not find a terminal library, compiling continued for a
1847 long time before reporting the problem.  Added a configure check for tgetent()
1848 being found in a library.
1850 When the cursor is on the first char of the last line a ":g/pat/s///" command
1851 may cause the cursor to be displayed below the text.
1853 Win32: Editing a file with non-ASCII characters doesn't work when 'encoding'
1854 is "utf-8".  use _wfullpath() instead of _fullpath(). (Yu-sung Moon)
1856 When recovering the 'fileformat' and 'fileencoding' were taken from the
1857 original file instead of from the swapfile.  When the file didn't exist, was
1858 empty or the option was changed (e.g., with ":e ++fenc=cp123 file") it could
1859 be wrong.  Now store 'fileformat' and 'fileencoding' in the swapfile and use
1860 the values when recovering.
1862 ":bufdo g/something/p" overwrites each last printed text line with the file
1863 message for the next buffer.  Temporarily clear 'shortmess' to avoid that.
1865 Win32: Cannot edit a file starting with # with --remote.  Do escape % and #
1866 when building the ":drop" command.
1868 A comment or | just after a expression-backtick argument was not recognized.
1869 E.g. in :e `="foo"`"comment.
1871 "(" does not stop at an empty sentence (single dot and white space) while ")"
1872 does.  Also breaks "das" on that dot.
1874 When doing "yy" with the cursor on a TAB the ruler could be wrong and "k"
1875 moved the cursor to another column.
1877 When 'commentstring' is '"%s' and there is a double quote in the line a double
1878 quote before the fold marker isn't removed in the text displayed for a  closed
1879 fold.
1881 In Visual mode, when 'bin' and 'eol' set, g CTRL-G counted the last line
1882 break, resulting in "selected 202 of 201 bytes".
1884 Motif: fonts were not used for dialog components. (Marcin Dalecki)
1886 Motif: After using a toolbar button the keyboard focus would be on the toolbar
1887 (Lesstif problem). (Marcin Dalecki)
1889 When using "y<C-V>`x" where mark x is in the first column, the last line was
1890 not included.
1892 Not all test scripts work properly on MS-Windows when checked out from CVS.
1893 Use a Vim command to fix all fileformats to dos before executing the tests.
1895 When using ":new" and the file fits in the window, lines could still be above
1896 the window.  Now remove empty lines instead of keeping the relative position.
1898 Cmdline completion didn't work after ":let var1 var<Tab>".
1900 When using ":startinsert" or ":startreplace" when already in Insert mode
1901 (possible when using CTRL-R =), pressing Esc would directly restart Insert
1902 mode. (Peter Winters)
1904 "2daw" didn't work at end of file if the last word is a single character.
1906 Completion for ":next a'<Tab>" put a backslash before single quote, but it was
1907 not removed when editing a file.  Now halve backslashes in save_patterns().
1908 Also fix expanding a file name with the shell that contains "\'".
1910 When doing "1,6d|put" only "fewer lines" was reported.  Now a following "more
1911 lines" overwrites the message.
1913 Configure could not handle "-Dfoo=long\ long" in the TCL config output.
1915 When searching backwards, using a pattern that matches a newline and uses \zs
1916 after that, didn't find a match.  Could also get a hang or end up in the right
1917 column in the wrong line.
1919 When $LANG is "sl" for slovenian, the slovak menu was used, since "slovak"
1920 starts with "sl".
1922 When 'paste' is set in the GUI the Paste toolbar button doesn't work.  Clear
1923 'paste' when starting the GUI.
1925 A message about a wrong viminfo line included the trailing NL.
1927 When 'paste' is set in the GUI the toolbar button doesn't work in Insert mode.
1928 Use ":exe" in menu.vim to avoid duplicating the commands, instead of using a
1929 mapping.
1931 Treat "mlterm" as an xterm-like terminal. (Seiichi Sato)
1933 ":z.4" and ":z=4" didn't work Vi compatible.
1935 When sourcing a file, editing it and sourcing it again, it could appear twice
1936 in ":scriptnames" and get a new <SID>, because the inode has changed.
1938 When $SHELL is set but empty the 'shell' option would be empty.  Don't use an
1939 empty $SHELL value.
1941 A command "w! file" in .vimrc or $EXINIT didn't work.  Now it writes an empty
1942 file.
1944 When a CTRL-F command at the end of the file failed, the cursor was still
1945 moved to the start of the line.  Now it remains where it is.
1947 When using ":s" or "&" to repeat the last substitute and "$" was used to put
1948 the cursor in the last column, put the cursor in the last column again.  This
1949 is Vi compatible.
1951 Vim is not fully POSIX compliant but sticks with traditional Vi behavior.
1952 Added a few flags in 'cpoptions' to behave the POSIX way when wanted.  The
1953 $VIM_POSIX environment variable is checked to set the default.
1955 Appending to a register didn't insert a line break like Vi.  Added the '>'
1956 flag to 'cpoptions' for this.
1958 Using "I" in a line with only blanks appended to the line.  This is not Vi
1959 compatible.  Added the 'H' flag in 'coptions' for this.
1961 When joining multiple lines the cursor would be at the last joint, but Vi
1962 leaves it at the position where "J" would put it.  Added the 'q' flag in
1963 'cpoptions' for this.
1965 Autoindent didn't work for ":insert" and ":append".
1967 Using ":append" in an empty buffer kept the dummy line.  Now it's deleted to
1968 be Vi compatible.
1970 When reading commands from a file and stdout goes to a terminal, would still
1971 request the xterm version.  Vim can't read it, thus the output went to the
1972 shell and caused trouble there.
1974 When redirecting to a register with an invalid name the redirection would
1975 still be done (after an error message).  Now reset "redir_reg". (Yegappan
1976 Lakshmanan)
1978 It was not possible to use a NL after a backslash in Ex mode.  This is
1979 sometimes used to feed multiple lines to a shell command.
1981 When 'cmdheight' is set to 2 in .vimrc and the GUI uses the number of lines
1982 from the terminal we actually get 3 lines for the cmdline in gvim.
1984 When setting $HOME allocated memory would leak.
1986 Win32: bold characters may sometimes write in another character cell.  Use
1987 unicodepdy[] as for UTF-8. (Taro Muraoka)
1989 ":w fname" didn't work for files with 'buftype' set to "nofile".
1991 The method used to locate user commands for completion differed from when they
1992 are executed.  Ambiguous command names were not completed properly.
1994 Incremental search may cause a crash when there is a custom statusline that
1995 indirectly invokes ":normal".
1997 Diff mode failed when $DIFF_OPTIONS was set in the environment.  Unset it
1998 before invoking "diff".
2000 Completion didn't work after ":argdo", ":windo" and ":bufdo".  Also for ":set
2001 &l:opt" and ":set &g:opt". (Peter Winters)
2003 When setting 'ttymouse' to "dec" in an xterm that supports the DEC mouse
2004 locator it doesn't work.  Now switch off the mouse before selecting another
2005 mouse model.
2007 When the CursorHold event is triggered and the commands peek for typed
2008 characters the typeahead buffer may be messed up, e.g., when a mouse-up event
2009 is received.  Avoid invoking the autocommands from the function waiting for a
2010 character, let it put K_CURSORHOLD in the input buffer.
2012 Removed the "COUNT" flag from ":argadd", to avoid ":argadd 1*" to be used like
2013 ":1argadd *".  Same for ":argdelete" and ":argedit".
2015 Avoid that $LANG is used for the menus when LC_MESSAGES is "en_US".
2017 Added backslashes before dashes in the vim.1 manual page to make the appear as
2018 real dashes. (Pierr Habouzit)
2020 Where "gq" left the cursor depended on the value of 'formatprg'.  Now "gq"
2021 always leaves the cursor at the last line of the formatted text.
2023 When editing a compressed file, such as "changelog.Debian.gz" file, filetype
2024 detection may try to check the contents of the file while it's still
2025 compressed.  Skip setting 'filetype' for compressed files until they have been
2026 decompressed.  Required for patterns that end in a "*".
2028 Starting with an argument "+cmd" or "-S script" causes the cursor the be moved
2029 to the first line.  That breaks a BufReadPost autocommand that uses g`".
2030 Don't move the cursor if it's somewhere past the first line.
2032 "gg=G" while 'modifiable' is off was uninterruptible.
2034 When 'encoding' is "sjis" inserting CTRL-V u d800 a few times causes a crash.
2035 Don't insert a DBCS character with a NUL second byte.
2037 In Insert mode CTRL-O <Home> didn't move the cursor.  Made "ins_at_eol" global
2038 and reset it in nv_home().
2040 Wildcard expansion failed: ":w /tmp/$$.`echo test`".  Don't put quotes around
2041 spaces inside backticks.
2043 After this sequence of commands: Y V p gv: the wrong line is selected.  Now
2044 let "gv" select the text that was put, since the original text is deleted.
2045 This should be the most useful thing to do.
2047 ":sleep 100u" sleeps for 100 seconds, not 100 usec as one might expect.  Give
2048 an error message when the argument isn't recognized.
2050 In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in
2051 reallocating the buffer every time. (Alexei Alexandrov)
2053 When using a Python "atexit" function it was not invoked when Vim exits.  Now
2054 call Py_Finalize() for that. (Ugo Di Girolamo)
2055 This breaks the thread stuff though, fixed by Ugo.
2057 GTK GUI: using a .vimrc with "set cmdheight=2 lines=43" and ":split" right
2058 after startup, the window layout is messed up. (Michael Schaap)  Added
2059 win_new_shellsize() call in gui_init() to fix the topframe size.
2061 Trick to get ...MOUSE_NM not used when there are vertical splits.  Now pass
2062 column -1 for the left most window and add MOUSE_COLOFF for others.  Limits
2063 mouse column to 10000.
2065 searchpair() may hang when the end pattern has "\zs" at the end.  Check that
2066 we find the same position again and advance one character.
2068 When in diff mode and making a change that causes the "changed" highlighting
2069 to disappear or reappear, it was still highlighted in another window.
2071 When a ":next" command fails because the user selects "Abort" at the ATTENTION
2072 prompt the argument index was advanced anyway.
2074 When "~" is in 'iskeyword' the "gd" doesn't work, it's used for the previous
2075 substitute pattern.  Put "\V" in the pattern to avoid that.
2077 Use of sprintf() sometimes didn't check properly for buffer overflow.  Also
2078 when using smsg().  Included code for snprintf() to avoid having to do size
2079 checks where invoking them
2081 ":help \=<Tab>" didn't find "sub-replace-\=".  Wild menu for help tags didn't
2082 show backslashes.  ":he :s\=" didn't work.
2084 When reading an errorfile "~/" in a file name was not expanded.
2086 GTK GUI: When adding a scrollbar (e.g. when using ":vsplit") in a script or
2087 removing it the window size may change.  GTK sends us resize events when we
2088 change the window size ourselves, but they may come at an unexpected moment.
2089 Peek for a character to get any window resize events and fix 'columns' and
2090 'lines' to undo this.
2092 When using the GTK plug mechanism, resizing and focus was not working
2093 properly. (Neil Bird)
2095 After deleting files from the argument list a session file generated with
2096 ":mksession" may contain invalid ":next" commands.
2098 When 'shortmess' is empty and 'keymap' set to accents, in Insert mode CTRL-N
2099 may cause the hit-enter prompt.  Typing 'a then didn't result in the accented
2100 character.  Put the character typed at the prompt back in the typeahead buffer
2101 so that mapping is done in the right mode.
2103 setbufvar() and setwinvar() did not give error messages.
2105 It was possible to set a variable with an illegal name, e.g. with setbufvar().
2106 It was possible to define a function with illegal name, e.t. ":func F{-1}()"
2108 CTRL-W F and "gf" didn't use the same method to get the file name.
2110 When reporting a conversion error the line number of the last error could be
2111 given.  Now report the first encountered error.
2113 When using ":e ++enc=name file" and iconv() was used for conversion an error
2114 caused a fall-back to no conversion.  Now replace a character with '?' and
2115 continue.
2117 When opening a new buffer the local value of 'bomb' was not initialized from
2118 the global value.
2120 Win32: When using the "Edit with Vim" entry the file name was limited to about
2121 200 characters.
2123 When using command line completion for ":e *foo" and the file "+foo" exists
2124 the resulting command ":e +foo" doesn't work.  Now insert a backslash: ":e
2125 \+foo".
2127 When the translation of "-- More --" was not 10 characters long the following
2128 message would be in the wrong position.
2130 At the more-prompt the last character in the last line wasn't drawn.
2132 When deleting non-existing text while 'virtualedit' is set the '[ and '] marks
2133 were not set.
2135 Win32: Could not use "**/" in 'path', it had to be "**\".
2137 The search pattern "\n" did not match at the end of the last line.
2139 Searching for a pattern backwards, starting on the NUL at the end of the line
2140 and 'encoding' is "utf-8" would match the pattern just before it incorrectly.
2141 Affected searchpair('/\*', '', '\*/').
2143 For the Find/Replace dialog it was possible that not finding the text resulted
2144 in an error message while redrawing, which cleared the syntax highlighting
2145 while it was being used, resulting in a crash.  Now don't clear syntax
2146 highlighting, disable it with b_syn_error.
2148 Win32: Combining UTF-8 characters were drawn on the previous character.
2149 Could be noticed with a Thai font.
2151 Output of ":function" could leave some of the typed text behind. (Yegappan
2152 Lakshmanan)
2154 When the command line history has only a few lines the command line window
2155 would be opened with these lines above the first window line.
2157 When using a command line window for search strings ":qa" would result in
2158 searching for "qa" instead of quitting all windows.
2160 GUI: When scrolling with the scrollbar and there is a line that doesn't fit
2161 redrawing may fail.  Make sure w_skipcol is valid before redrawing.
2163 Limit the values of 'columns' and 'lines' to avoid an overflow in Rows *
2164 Columns.  Fixed bad effects when running out of memory (command line would be
2165 reversed, ":qa!" resulted in ":!aq").
2167 Motif: "gvim -iconic" opened the window anyway.  (David Harrison)
2169 There is a tiny chance that a symlink gets created between checking for an
2170 existing file and creating a file.  Use the O_NOFOLLOW for open() if it's
2171 available.
2173 In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of
2174 sticking to the first column.
2176 When using ":wq" and a BufWriteCmd autocmd uses inputsecret() the text was
2177 echoed anyway.  Set terminal to raw mode in getcmdline().
2179 Unix: ":w a;b~c" caused an error in expanding wildcards.
2181 When appending to a file with ":w >>fname" in a buffer without a name, causing
2182 the buffer to use "fname", the modified flag was reset.
2184 When appending to the current file the "not edited" flag would be reset.
2185 ":w" would overwrite the file accidentally.
2187 Unix: When filtering text with an external command Vim would still read input,
2188 causing text typed for the command (e.g., a password) to be eaten and echoed.
2189 Don't read input when the terminal is in cooked mode.
2191 The Cygwin version of xxd used CR/LF line separators. (Corinna Vinschen)
2193 Unix: When filtering text through a shell command some resulting text may be
2194 dropped.  Now after detecting that the child has exited try reading some more
2195 of its output.
2197 When inside input(), using "CTRL-R =" and the expression throws an exception
2198 the command line was not abandoned but it wasn't used either.  Now abandon
2199 typing the command line.
2201 'delcombine' was also used in Visual and Select mode and for commands like
2202 "cl".  That was illogical and has been disabled.
2204 When recording while a CursorHold autocommand was defined special keys would
2205 appear in the register.  Now the CursorHold event is not triggered while
2206 recording.
2208 Unix: the src/configure script used ${srcdir-.}, not all shells understand
2209 that.  Use ${srcdir:-.} instead.
2211 When editing file "a" which is a symlink to file "b" that doesn't exist,
2212 writing file "a" to create "b" and then ":split b" resulted in two buffers on
2213 the same file with two different swapfile names.  Now set the inode in the
2214 buffer when creating a new file.
2216 When 'esckeys' is not set don't send the xterm code to request the version
2217 string, because it may cause trouble in Insert mode.
2219 When evaluating an expression for CTRL-R = on the command line it was possible
2220 to call a function that opens a new window, resulting in errors for
2221 incremental search, and many other nasty things were possible.  Now use the
2222 |textlock| to disallow changing the buffer or jumping to another window
2223 to protect from unexpected behavior.  Same for CTRL-\ e.
2225 "d(" deleted the character under the cursor, while the documentation specified
2226 an exclusive motion.  Vi also doesn't delete the character under the cursor.
2228 Shift-Insert in Insert mode could put the cursor before the last character
2229 when it just fits in the window.  In coladvance() don't stop at the window
2230 edge when filling with spaces and when in Insert mode.  In mswin.vim avoid
2231 getting a beep from the "l" command.
2233 Win32 GUI: When Alt-F4 is used to close the window and Cancel is selected in
2234 the dialog then Vim would insert <M-F4> in the text.  Now it's ignored.
2236 When ":silent! {cmd}" caused the swap file dialog, which isn't displayed,
2237 there would still be a hit-enter prompt.
2239 Requesting the termresponse (|t_RV|) early may cause problems with "-c"
2240 arguments that invoke an external command or even "-c quit".  Postpone it
2241 until after executing "-c" arguments.
2243 When typing in Insert mode so that a new line is started, using CTRL-G u to
2244 break undo and start a new change, then joining the lines with <BS> caused
2245 undo info to be missing.  Now reset the insertion start point.
2247 Syntax HL: When a region start match has a matchgroup and an offset that
2248 happens to be after the end of the line then it continued in the next line and
2249 stopped at the region end match, making the region continue after that.
2250 Now check for the column being past the end of the line in syn_add_end_off().
2252 When changing a file, setting 'swapfile' off and then on again, making another
2253 change and killing Vim, then some blocks may be missing from the swapfile.
2254 When 'swapfile' is switched back on mark all blocks in the swapfile as dirty.
2255 Added mf_set_dirty().
2257 Expanding wildcards in a command like ":e aap;<>!" didn't work.  Put
2258 backslashes before characters that are special to the shell. (Adri Verhoef)
2260 A CursorHold autocommand would cause a message to be cleared.  Don't show the
2261 special key for the event for 'showcmd'.
2263 When expanding a file name for a shell command, as in "!cmd foo<Tab>" or ":r
2264 !cmd foo<Tab>" also escape characters that are special for the shell:
2265 "!;&()<>".
2267 When the name of the buffer was set by a ":r fname" command |cpo-f| no
2268 autocommands were triggered to notify about the change in the buffer list.
2270 In the quickfix buffer 'bufhidden' was set to "delete", which caused closing
2271 the quickfix window to leave an unlisted "No Name" buffer behind every time.
2273 Win32: when using two screens of different size, setting 'lines' to a large
2274 value didn't fill the whole screen. (SungHyun Nam)
2276 Win32 installer: The generated _vimrc contained an absolute path to diff.exe.
2277 After upgrading it becomes invalid.  Now use $VIMRUNTIME instead.
2279 The command line was cleared to often when 'showmode' was set and ":silent
2280 normal vy" was used.  Don't clear the command line unless the mode was
2281 actually displayed.  Added the "mode_displayed" variable.
2283 The "load session" toolbar item could not handle a space or other special
2284 characters in v:this_session.
2286 ":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2.
2288 In a multi-byte file the foldmarker could be recognized in the trail byte.
2289 (Taro Muraoka)
2291 Pasting with CTRL-V and menu didn't work properly when some commands are
2292 mapped.  Use ":normal!" instead of ":normal". (Tony Apuzzo)
2294 Crashed when expanding a file name argument in backticks.
2296 In some situations the menu and scrollbar didn't work, when the value contains
2297 a CSI byte. (Yukihiro Nakadaira)
2299 GTK GUI: When drawing the balloon focus changes and we might get a key release
2300 event that removed the balloon again.  Ignore the key release event.
2302 'titleold' was included in ":mkexrc" and ":mksession" files.
2304 ":set background&" didn't use the same logic as was used when starting up.
2306 When "umask" is set such that nothing is writable then the viminfo file would
2307 be written without write permission. (Julian Bridle)
2309 Motif: In diff mode dragging one scrollbar didn't update the scrollbar of the
2310 other diff'ed window.
2312 When editing in an xterm with a different number of colors than expected the
2313 screen would be cleared and redrawn, causing the message about the edited file
2314 to be cleared.  Now set "keep_msg" to redraw the last message.
2316 For a color terminal: When the Normal HL uses bold, possibly to make the color
2317 lighter, and another HL group specifies a color it might become light as well.
2318 Now reset bold if a HL group doesn't specify bold itself.
2320 When using 256 color xterm the color 255 would show up as color 0.  Use a
2321 short instead of a char to store the color number.
2323 ml_get errors when searching for "\n\zs" in an empty file.
2325 When selecting a block and using "$" to select until the end of every line and
2326 not highlighting the character under the cursor the first character of the
2327 block could be unhighlighted.
2329 When counting words for the Visual block area and using "$" to select until
2330 the end of every line only up to the length of the last line was counted.
2332 "dip" in trailing empty lines left one empty line behind.
2334 The script ID was only remembered globally for each option. When a buffer- or
2335 window-local option was set the same "last set" location was changed for all
2336 buffers and windows.  Now remember the script ID for each local option
2337 separately.
2339 GUI: The "Replace All" button didn't handle backslashes in the replacement in
2340 the same way as "Replace".  Escape backslashes so that they are taken
2341 literally.
2343 When using Select mode from Insert mode and typing a key, causing lines to be
2344 deleted and a message displayed, delayed the effect of inserting the key.
2345 Now overwrite the message without delay.
2347 When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line
2348 worked differently.  Now recognize all operators when using "l" at the end of
2349 a line.
2351 GTK GUI: when the font selector returned a font name with a comma in it then
2352 it would be handled like two font names.  Now put a backslash before the
2353 comma.
2355 MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for
2356 'iskeyword' was still for CPxxx.  And when 'nocompatible' was set 'isprint'
2357 would also be the wrong value.
2359 When a command was defined not to take arguments and no '|' no warning message
2360 would be given for using a '|'.  Also with ":loadkeymap".
2362 Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) !=
2363 sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira)
2365 ":all" always set the current window to the first window, even when it
2366 contains a buffer that is not in the argument list (can't be closed because it
2367 is modified).  Now go to the window that has the first item of the argument
2368 list.
2370 GUI: To avoid left-over pixels from bold text all characters after a character
2371 with special attributes were redrawn.  Now only do this for characters that
2372 actually are bold.  Speeds up displaying considerably.
2374 When only highlighting changes and the text is scrolled at the same time
2375 everything is redraw instead of using a scroll and updating the changed text.
2376 E.g., when using ":match" to highlight a paren that the cursor landed on.
2377 Added SOME_VALID: Redraw the whole window but also try to scroll to minimize
2378 redrawing.
2380 Win32: When using Korean IME making it active didn't work properly. (Moon,
2381 Yu-sung, 2005 March 21)
2383 Ruby interface: when inserting/deleting lines display wasn't updated. (Ryan
2384 Paul)
2386 --- fixes since Vim 7.0b ---
2388 Getting the GCC version in configure didn't work with Solaris sed.  First
2389 strip any "darwin." and then get the version number.
2391 The "autoload" directory was missing from the self-installing executable for
2392 MS-Windows.
2394 The MS-Windows install program would find "vimtutor.bat" in the install
2395 directory.  After changing to "c:" also change to "\" to avoid looking in the
2396 install directory.
2398 To make the 16 bit DOS version compile exclude not used highlight
2399 initializations and build a tiny instead of small version.
2401 finddir() and findfile() accept a negative count and return a List then.
2403 The Python indent file contained a few debugging statements, removed.
2405 Expanding {} for a function name, resulting in a name starting with "s:" was
2406 not handled correctly.
2408 Spelling: renamed COMPOUNDMAX to COMPOUNDWORDMAX.  Added several items to be
2409 able to handle the new Hungarian dictionary.
2411 Mac: Default to building for the current platform only, that is much faster
2412 than building a universal binary.  Also, using Perl/Python/etc. only works for
2413 the current platform.
2415 The time on undo messages disappeared for someone.  Using %T for strftime()
2416 apparently doesn't work everywhere.  Use %H:%M:%S instead.
2418 Typing BS at the "z=" prompt removed the prompt.
2420 --- fixes and changes since Vim 7.0c ---
2422 When jumping to another tab page the Vim window size was always set, even when
2423 nothing in the layout changed.
2425 Win32 GUI tab pages line wasn't always enabled.  Do a proper check for the
2426 compiler version.
2428 Win32: When switching between tab pages the Vim window was moved when part of
2429 it was outside of the screen.  Now only do that in the direction of a size
2430 change.
2432 Win32: added menu to GUI tab pages line. (Yegappan Lakshmanan)
2434 Mac: Added document icons. (Benji Fisher)
2436 Insert mode completion: Using Enter to accept the current match causes
2437 confusion.  Use CTRL-Y instead.  Also, use CTRL-E to go back to the typed
2438 text.
2440 GUI: When there are left and right scrollbars, ":tabedit" kept them instead of
2441 using the one that isn't needed.
2443 Using "gP" to replace al the text could leave the cursor below the last line,
2444 causing ml_get errors.
2446 When 'cursorline' is set don't use the highlighting when Visual mode is
2447 active, otherwise it's difficult to see the selected area.
2449 The matchparen plugin restricts the search to 100 lines, to avoid a long delay
2450 when there are closed folds.
2452 Sometimes using CTRL-X s to list spelling suggestions used text from another
2453 line.
2455 Win32: Set the default for 'isprint' back to the wrong default "@,~-255",
2456 because many people use Windows-1252 while 'encoding' is "latin1".
2458 GTK: Added a workaround for gvim crashing when used over an untrusted ssh
2459 link, caused by GTK doing something nasty. (Ed Catmur)
2461 Win32: The font used for the tab page labels is too big.  Use the system menu
2462 font. (George Reilly)
2464 Win32: Adjusting the window position and size to keep it on the screen didn't
2465 work properly when the taskbar is on the left or top of the screen.
2467 The installman.sh and installml.sh scripts use ${10}, that didn't work with
2468 old shells.  And use "test -f" instead of "test -e".
2470 Win32: When 'encoding' was set in the vimrc then a directory argument for diff
2471 mode didn't work.
2473 GUI: at the inputlist() prompt the cursorshape was adjusted as if the windows
2474 were still at their old position.
2476 The parenmatch plugin didn't remember the highlighting per window.
2478 Using ":bd" for a buffer that's the current window in another tab page caused
2479 a crash.
2481 For a new tab page the 'scroll' option wasn't set to a good default.
2483 Using an end offset for a search "/pat/e" didn't work properly for multi-byte
2484 text. (Yukihiro Nakadaira)
2486 ":s/\n/,/" doubled the text when used on the last line.
2488 When "search" is in 'foldopen' "[s" and "]s" now open folds.
2490 When using a numbered function "dict" can be omitted, but "self" didn't work
2491 then.  Always add FC_DICT to the function flags when it's part of a
2492 dictionary.
2494 When "--remote-tab" executes locally it left an empty tab page.
2496 "gvim -u NONE", ":set cursorcolumn", "C" in the second line didn't update
2497 text.  Do update further lines even though the "$" is displayed.
2499 VMS: Support GTK better, also enable +clientserver. (Zoltan Arpadffy)
2501 When highlighting of statusline or tabline is changed there was no redraw to
2502 show the effect.
2504 Mac: Added "CFBundleIdentifier" to infplist.xml.
2506 Added tabpage-local variables t:var.
2508 Win32: Added double-click in tab pages line creates new tab. (Yegappan
2509 Lakshmanan)
2511 Motif: Added GUI tab pages line. (Yegappan Lakshmanan)
2513 Fixed crash when 'lines' was set to 1000 in a modeline.
2515 When init_spellfile() finds a writable directory in 'runtimepath' but it
2516 doesn't contain a "spell" directory, create one.
2518 Win32: executable() also finds "xxd" in the directory where Vim was started,
2519 but "!xxd" doesn't work.  Append the Vim starting directory to $PATH.
2521 The tab page labels are shortened, directory names are reduced to a single
2522 letter by default.  Added the pathshorten() function to allow a user to do the
2523 same.
2525 ":saveas" now resets 'readonly' if the file was successfully written.
2527 Set $MYVIMRC file to the first found .vimrc file.
2528 Set $MYGVIMRC file to the first found .gvimrc file.
2529 Added menu item "Startup Settings" that edits the $MYVIMRC file
2531 Added matcharg().
2533 Error message E745 appeared twice.  Renamed one to E786.
2535 Fixed crash when using "au BufRead * Sexplore" and doing ":help".  Was wiping
2536 out a buffer that's still in a window.
2538 ":hardcopy" resulted in an error message when 'encoding' is "utf-8" and
2539 'printencoding' is empty.  Now it assumes latin1. (Mike Williams)
2541 The check for the toolbar feature for Motif, depending on certain included
2542 files, wasn't detailed enough, causing building to fail in gui_xmebw.c.
2544 Using CTRL-E in Insert mode completion after CTRL-P inserted the first match
2545 instead of the original text.
2547 When displaying a UTF-8 character with a zero lower byte Vim might think the
2548 previous character is double-wide.
2550 The "nbsp" item of 'listchars' didn't work when 'encoding' was utf-8.
2552 Motif: when Xm/xpm.h is missing gui_xmebw.c would not compile.
2553 HAVE_XM_UNHIGHLIGHTT_H was missing a T.
2555 Mac: Moved the .icns files into src/os_mac_rsrc, so that they can all be
2556 copied at once.  Adjusted the Info.plist file for three icons.
2558 When Visual mode is active while switching to another tabpage could get ml_get
2559 errors.
2561 When 'list' is set, 'nowrap' the $ in the first column caused 'cursorcolumn'
2562 to move to the right.
2564 When a line wraps, 'cursorcolumn' was never displayed past the end of the
2565 line.
2567 'autochdir' was only available when compiled with NetBeans and GUI.  Now it's
2568 a separate feature, also available in the "big" version.
2570 Added CTRL-W gf: open file under cursor in new tab page.
2572 When using the menu in the tab pages line, "New Tab" opens the new tab before
2573 where the click was.  Beyond the labels the new tab appears at the end instead
2574 of after the current tab page.
2576 Inside a mapping with an expression getchar() could not be used.
2578 When vgetc is used recursively vgetc_busy protects it from being used
2579 recursively.  But after a ":normal" command the protection was reset.
2581 ":s/a/b/n" didn't work when 'modifiable' was off.
2583 When $VIMRUNTIME includes a multi-byte character then rgb.txt could not be
2584 found. (Yukihiro Nakadaira)
2586 ":mkspell" didn't work correctly for non-ASCII affix flags when conversion is
2587 needed on the spell file.
2589 glob('/dir/\$ABC/*') didn't work.
2591 When using several tab pages and changing 'cmdheight' the display could become
2592 messed up.  Now store the value of 'cmdheight' separately for each tab page.
2594 The user of the Enter key while the popup menu is visible was still confusing.
2595 Now use Enter to select the match after using a cursor key.
2597 Added "usetab" to 'switchbuf'.
2600 --- fixes and changes since Vim 7.0d ---
2602 Added CTRL-W T: move a window to a new tab page.
2604 Using CTRL-X s in Insert mode to complete spelling suggestions and using BS
2605 deleted characters before the bad word.
2607 A few small fixes for the VMS makefile. (Zoltan Arpadffy)
2609 With a window of 91 lines 45 cols, ":vsp" scrolled the window.  Copy w_wrow
2610 when splitting a window and skip setting the height when it's already at the
2611 right value.
2613 Using <silent> in a mapping with a shell command and the GUI caused redraw
2614 to use wrong attributes.
2616 Win32: Using MSVC 4.1 for install.exe resulted in the start menu items to be
2617 created in the administrator directory instead of "All Users".  Define the
2618 CSIDL_ items if they are missing.
2620 Motif: The GUI tabline did not use the space above the right scrollbar.  Work
2621 around a bug in the Motif library. (Yegappan Lakshmanan)
2623 The extra files for XML Omni completion are now also installed.
2624 |xml-omni-datafile|
2626 GTK GUI: when 'm' is missing from 'guioptions' during startup and pressing
2627 <F10> GTK produced error messages.  Now do create the menu but disable it just
2628 after the first gui_mch_update().
2630 ":mkspell" doesn't work well with the Hungarian dictionary from the Hunspell
2631 project.  Back to the Myspell dictionary.
2633 In help files hide the | used around tags.
2635 Renamed pycomplete to pythoncomplete.
2637 Added "tabpages" to 'sessionoptions'.
2639 When 'guitablabel' is set the effect wasn't visible right away.
2641 Fixed a few 'cindent' errors.
2643 When completing menu names, e.g., after ":emenu", don't sort the entries but
2644 keep them in the original order.
2646 Fixed a crash when editing a directory in diff mode.  Don't trigger
2647 autocommands when executing the diff command.
2649 Getting a keystroke could get stuck if 'encoding' is a multi-byte encoding and
2650 typing a special key.
2652 When 'foldignore' is set the folds were not updated right away.
2654 When a list is indexed with [a : b] and b was greater than the length an error
2655 message was given.  Now silently truncate the result.
2657 When using BS during Insert mode completion go back to the original text, so
2658 that CTRL-N selects the first matching entry.
2660 Added the 'M' flag to 'cinoptions'.
2662 Win32: Make the "gvim --help" window appear in the middle of the screen
2663 instead of at an arbitrary position. (Randall W. Morris)
2665 Added gettabwinvar() and settabwinvar().
2667 Command line completion: pressing <Tab> after ":e /usr/*" expands the whole
2668 tree, because it becomes ":e /usr/**".  Don't add a star if there already is
2669 one.
2671 Added grey10 to grey90 to all GUIs, so that they can all be used for
2672 initializing highlighting.  Use grey40 for CursorColumn and CursorLine when
2673 'background' is "dark".
2675 When reading a file and using iconv for conversion, an incomplete byte
2676 sequence at the end caused problems. (Yukihiro Nakadaira)
2679 --- fixes and changes since Vim 7.0e ---
2681 Default color for MatchParen when 'background' is "dark" is now DarkCyan.
2683 ":syn off" had to be used twice in a file that sets 'syntax' in a modeline.
2684 (Michael Geddes)
2686 When using ":vsp" or ":sp" the available space wasn't used equally between
2687 windows. (Servatius Brandt)
2689 Expanding <cWORD> on a trailing blank resulted in the first word in the line
2690 if 'encoding' is a multi-byte encoding.
2692 Spell checking: spellbadword() didn't see a missing capital in the first word
2693 of a line.  Popup menu now only suggest the capitalized word when appropriate.
2695 When using whole line completion CTRL-L moves through the matches but it
2696 didn't work when at the original text.
2698 When completion finds the longest match, don't go to the first match but stick
2699 at the original text, so that CTRL-N selects the first one.
2701 Recognize "zsh-beta" like "zsh" for setting the 'shellpipe' default. (James
2702 Vega)
2704 When using ":map <expr>" and the expression results in something with a
2705 special byte (NUL or CSI) then it didn't work properly.  Now escape special
2706 bytes.
2708 The default Visual highlighting for a color xterm with 8 colors was a magenta
2709 background, which made magenta text disappear.  Now use reverse in this
2710 specific situation.
2712 After completing the longest match "." didn't insert the same text.  Repeating
2713 also didn't work correctly for multi-byte text.
2715 When using Insert mode completion and BS the whole word that was completed
2716 would result in all possible matches.  Now stop completion.  Also fixes that
2717 for spell completion the previous word was deleted.
2719 GTK: When 'encoding' is "latin1" and using non-ASCII characters in a file name
2720 the tab page label was wrong and an error message would be given.
2722 The taglist() function could hang on a tags line with a non-ASCII character.
2724 Win32: When 'encoding' differs from the system encoding tab page labels with
2725 non-ASCII characters looked wrong. (Yegappan Lakshmanan)
2727 Motif: building failed when Xm/Notebook.h doesn't exist.  Added a configure
2728 check, disable GUI tabline when it's missing.
2730 Mac: When compiled without multi-byte feature the clipboard didn't work.
2732 It was possible to switch to another tab page when the cmdline window is open.
2734 Completion could hang when 'lines' is 6 and a preview window was opened.
2736 Added CTRL-W gF: open file under cursor in new tab page and jump to the line
2737 number following the file name.
2738 Added 'guitabtooltip'.  Implemented for Win32 (Yegappan Lakshmanan).
2740 Added "throw" to 'debug' option: throw an exception for error messages even
2741 whey they would otherwise be ignored.
2743 When 'keymap' is set and a line contains an invalid entry could get a "No
2744 mapping found" warning instead of a proper error message.
2746 Motif: default to using XpmAttributes instead of XpmAttributes_21.
2748 A few more changes for 64 bit MS-Windows. (George Reilly)
2750 Got ml_get errors when doing "o" and selecting in other window where there are
2751 less line shorter than the cursor position in the other window.  ins_mouse()
2752 was using position in wrong window.
2754 Win32 GUI: Crash when giving a lot of messages during startup.  Allocate twice
2755 as much memory for the dialog template.
2757 Fixed a few leaks and wrong pointer use reported by coverity.
2759 When showing menus the mode character was sometimes wrong.
2761 Added feedkeys(). (Yakov Lerner)
2763 Made matchlist() always return all submatches.
2765 Moved triggering QuickFixCmdPost to before jumping to the first location.
2767 Mac: Added the 'macatsui' option as a temporary work around for text drawing
2768 problems.
2770 Line completion on "/**" gave error messages when scanning an unloaded buffer.
2772 --- fixes and changes since Vim 7.0f ---
2774 Win32: The height of the tab page labels is now adjusted to the font height.
2775 (Yegappan Lakshmanan)
2777 Win32: selecting the tab label was off by one. (Yegappan Lakshmanan)
2779 Added tooltips for Motif and GTK tab page labels. (Yegappan Lakshmanan)
2781 When 'encoding' is "utf-8" then ":help spell" would report an illegal byte and
2782 the file was not converted from latin1 to utf-8.  Now retry with latin1 if
2783 reading the file as utf-8 results in illegal bytes.
2785 Escape the argument of feedkeys() before putting it in the typeahead buffer.
2786 (Yukihiro Nakadaira)
2788 Added the v:char variable for evaluating 'formatexpr'. (Yukihiro Nakadaira)
2790 With 8 colors Search highlighting combined with Statement highlighted text
2791 made the text disappear.
2793 VMS: avoid warnings for redefining MAX and MIN. (Zoltan Arpadffy)
2795 When 'virtualedit' includes "onemore", stopping Visual selection would still
2796 move the cursor left.
2798 Prevent that using CTRL-R = in Insert mode can start Visual mode.
2800 Fixed a crash that occurred when in Insert mode with completion active and a
2801 mapping caused edit() to be called recursively.
2803 When using CTRL-O in Insert mode just after the last character while
2804 'virtualedit' is "all", then typing CR moved the last character to the next
2805 line.  Call coladvance() before starting the new line.
2807 When using |:shell| ignore clicks on the tab page labels.  Also when using the
2808 command line window.
2810 When 'eventignore' is "all" then adding more to ignoring some events, e.g.,
2811 for ":vimgrep", would actually trigger more events.
2813 Win32: When a running Vim uses server name GVIM1 then "gvim --remote fname"
2814 didn't find it.  When looking for a server name that doesn't end in a digit
2815 and it is not found then use another server with that name and a number (just
2816 like on Unix).
2818 When using "double" in 'spellsuggest' when the language doesn't support sound
2819 folding resulted in too many suggestions.
2821 Win32: Dropping a shortcut on the Vim icon didn't edit the referred file like
2822 editing it in another way would.  Use fname_expand() in buf_set_name() instead
2823 of simply make the file name a full path.
2825 Using feedkeys() could cause Vim to hang.
2827 When closing another tab page from the tabline menu in Insert mode the tabline
2828 was not updated right away.
2830 The syntax menu didn't work in compatible mode.
2832 After using ":tag id" twice with the same "id", ":ts" and then ":pop" a ":ts"
2833 reported no matching tag.  Clear the cached tag name.
2835 In Insert mode the matchparen plugin highlighted the wrong paren when there is
2836 a string just next to a paren.
2838 GTK: After opening a new tab page the text was sometimes not drawn correctly.
2839 Flush output and catch up with events when updating the tab page labels.
2841 In the GUI, using CTRL-W q to close the last window of a tab page could cause
2842 a crash.
2844 GTK: The tab pages line menu was not converted from 'encoding' to utf-8.
2846 Typing a multi-byte character or a special key at the hit-enter prompt did not
2847 work.
2849 When 'virtualedit' contains "onemore" CTRL-O in Insert mode still moved the
2850 cursor left when it was after the end of the line, even though it's allowed to
2851 be there.
2853 Added test for using tab pages.
2855 towupper() and towlower() were not used, because of checking for
2856 __STDC__ISO_10646__ instead of __STDC_ISO_10646__. (sertacyildiz)
2858 For ":map <expr>" forbid changing the text, jumping to another buffer and
2859 using ":normal" to avoid nasty side effects.
2861 --- fixes and changes since Vim 7.0g ---
2863 Compilation error on HP-UX, use of "dlerr" must be inside a #ifdef.
2864 (Gary Johnson)
2866 Report +reltime feature in ":version" output.
2868 The tar and zip plugins detect failure to get the contents of the archive and
2869 edit the file as-is.
2871 When the result of 'guitablabel' is empty fall back to the default label.
2873 Fixed crash when using ":insert" in a while loop and missing "endwhile".
2875 "gt" and other commands could move to another window when |textlock| active
2876 and when the command line window was open.
2878 Spell checking a file with syntax highlighting and a bad word at the end of
2879 the line is ignored could make "]s" hang.
2881 Mac: inputdialog() didn't work when compiled with big features.
2883 Interrupting ":vimgrep" while it is busy loading a file left a modified and
2884 hidden buffer behind.  Use enter_cleanup() and leave_cleanup() around
2885 wipe_buffer().
2887 When making 'keymap' empty the b:keymap_name variable wasn't deleted.
2889 Using CTRL-N that searches a long time, pressing space to interrupt the
2890 searching and accept the first match, the popup menu was still displayed
2891 briefly.
2893 When setting the Vim window height with -geometry the 'window' option could be
2894 at a value that makes CTRL-F behave differently.
2896 When opening a quickfix window in two tabs they used different buffers,
2897 causing redrawing problems later.  Now use the same buffer for all quickfix
2898 windows. (Yegappan Lakshmanan)
2900 When 'mousefocus' is set moving the mouse to the text tab pages line would
2901 move focus to the first window.  Also, the mouse pointer would jump to the
2902 active window.
2904 In a session file, when an empty buffer is wiped out, do this silently.
2906 When one window has the cursor on the last line and another window is resized
2907 to make that window smaller, the cursor line could go below the displayed
2908 lines.  In win_new_height() subtract one from the available space.
2909 Also avoid that using "~" lines makes the window scroll down.
2911 Mac: When sourcing the "macmap.vim" script and then finding a .vimrc file the
2912 'cpo' option isn't set properly, because it was already set and restored.
2913 Added the <special> argument to ":map", so that 'cpo' doesn't need to be
2914 changed to be able to use <> notation.  Also do this for ":menu" for
2915 consistency.
2917 When using "/encoding=abc" in a spell word list, only "bc" was used.
2919 When 'encoding' and 'printencoding' were both "utf-8" then ":hardcopy" didn't
2920 work. (Mike Williams)
2922 Mac: When building with "--disable-gui" the install directory would still be
2923 "/Applications" and Vim.app would be installed.  Now install in /usr/local as
2924 usual for a console application.
2926 GUI: when doing completion and there is one match and still searching for
2927 another, the cursor was displayed at the end of the line instead of after the
2928 match.  Now show the cursor after the match while still searching for matches.
2930 GUI: The mouse shape changed on the statusline even when 'mouse' was empty and
2931 they can't be dragged..
2933 GTK2: Selecting a button in the confirm() dialog with Tab or cursor keys and
2934 hitting Enter didn't select that button.  Removed GTK 1 specific code. (Neil
2935 Bird)
2937 When evaluating 'balloonexpr' takes a long time it could be called
2938 recursively, which could cause a crash.
2940 exists() could not be used to detect whether ":2match" is supported.  Added a
2941 check for it specifically.
2943 GTK1: Tab page labels didn't work. (Yegappan Lakshmanan)
2945 Insert mode completion: When finding matches use 'ignorecase', but when adding
2946 matches to the list don't use it, so that all words with different case are
2947 added, "word", "Word" and "WORD".
2949 When 'cursorline' and 'hlsearch' are set and the search pattern is "x\n"
2950 the rest of the line was highlighted as a match.
2952 Cursor moved while evaluating 'balloonexpr' that invokes ":isearch" and
2953 redirects the output.  Don't move the cursor to the command line if msg_silent
2954 is set.
2956 exists() ignored text after a function name and option name, which could
2957 result in false positives.
2959 exists() ignored characters after the recognized word, which can be wrong when
2960 using a name with non-keyword characters.  Specifically, these calls no longer
2961 allow characters after the name: exists('*funcname') exists('*funcname(...')
2962 exists('&option') exists(':cmd') exists('g:name') exists('g:name[n]')
2963 exists('g:name.n')
2965 Trigger the TabEnter autocommand only after entering the current window of the
2966 tab page, otherwise the commands are executed with an invalid current window.
2968 Win32: When using two monitors and Vim is on the second monitor, changing the
2969 width of the Vim window could make it jump to the first monitor.
2971 When scrolling back at the more prompt and the quitting a line of text would
2972 be left behind when 'cmdheight' is 2 or more.
2974 Fixed a few things for Insert mode completion, especially when typing BS,
2975 CTRL-N or a printable character while still searching for matches.
2978 ==============================================================================
2979 VERSION 7.1                                             *version-7.1*
2981 This section is about improvements made between version 7.0 and 7.1.
2983 This is a bug-fix release, there are no fancy new features.
2986 Changed                                                 *changed-7.1*
2987 -------
2989 Added setting 'mouse' in vimrc_example.vim.
2991 When building with MZscheme also look for include files in the "plt"
2992 subdirectory.  That's where they are for FreeBSD.
2994 The Ruby interface module is now called "Vim" instead of "VIM".  But "VIM" is
2995 an alias, so it's backwards compatible. (Tim Pope)
2998 Added                                                   *added-7.1*
2999 -----
3001 New syntax files:
3002         /var/log/messages (Yakov Lerner)
3003         Autohotkey (Nikolai Weibull)
3004         AutoIt v3 (Jared Breland)
3005         Bazaar commit file "bzr". (Dmitry Vasiliev)
3006         Cdrdao TOC (Nikolai Weibull)
3007         Cmusrc (Nikolai Weibull)
3008         Conary recipe (rPath Inc)
3009         Framescript (Nikolai Weibull)
3010         FreeBasic (Mark Manning)
3011         Hamster (David Fishburn)
3012         IBasic (Mark Manning)
3013         Initng (Elan Ruusamae)
3014         Ldapconf (Nikolai Weibull)
3015         Litestep (Nikolai Weibull)
3016         Privoxy actions file (Doug Kearns)
3017         Streaming Descriptors "sd" (Puria Nafisi Azizi)
3019 New tutor files:
3020         Czech (Lubos Turek)
3021         Hungarian (Arpad Horvath)
3022         Turkish (Serkan kkk)
3023         utf-8 version of Greek tutor.
3024         utf-8 version of Russian tutor.
3025         utf-8 version of Slowak tutor.
3027 New filetype plugins:
3028         Bst (Tim Pope)
3029         Cobol (Tim Pope)
3030         Fvwm (Gautam Iyer)
3031         Hamster (David Fishburn)
3032         Django HTML template (Dave Hodder)
3034 New indent files:
3035         Bst (Tim Pope)
3036         Cobol (Tim Pope)
3037         Hamster (David Fishburn)
3038         Django HTML template (Dave Hodder)
3039         Javascript
3040         JSP (David Fishburn)
3042 New keymap files:
3043         Bulgarian (Boyko Bantchev)
3044         Mongolian (Natsagdorj Shagdar)
3045         Thaana (Ibrahim Fayaz)
3046         Vietnamese (Samuel Thibault)
3048 Other new runtime files:
3049         Ada support files. (Neil Bird, Martin Krischik)
3050         Slovenian menu translations (Mojca Miklavec)
3051         Mono C# compiler plugin (Jarek Sobiecki)
3054 Fixed                                                   *fixed-7.1*
3055 -----
3057 Could not build the Win32s version.  Added a few structure definitions in
3058 src/gui_w32.c
3061 Patch 7.0.001
3062 Problem:    ":set spellsuggest+=10" does not work. (Suresh Govindachar)
3063 Solution:   Add P_COMMA to the 'spellsuggest' flags.
3064 Files:      src/option.c
3066 Patch 7.0.002
3067 Problem:    C omni completion has a problem with tags files with a path
3068             containing "#" or "%".
3069 Solution:   Escape these characters. (Sebastian Baberowski)
3070 Files:      runtime/autoload/ccomplete.vim
3072 Patch 7.0.003
3073 Problem:    GUI: clicking in the lower part of a label in the tab pages line
3074             while 'mousefocus' is set may warp the mouse pointer. (Robert
3075             Webb)
3076 Solution:   Check for a negative mouse position.
3077 Files:      src/gui.c
3079 Patch 7.0.004
3080 Problem:    Compiler warning for debug_saved used before set. (Todd Blumer)
3081 Solution:   Remove the "else" for calling save_dbg_stuff().
3082 Files:      src/ex_docmd.c
3084 Patch 7.0.005 (extra)
3085 Problem:    Win32: The installer doesn't remove the "autoload" and "spell"
3086             directories. (David Fishburn)
3087 Solution:   Add the directories to the list to be removed.
3088 Files:      nsis/gvim.nsi
3090 Patch 7.0.006
3091 Problem:    Mac: "make shadow" doesn't make a link for infplist.xml. (Axel
3092             Kielhorn)
3093 Solution:   Make the link.
3094 Files:      src/Makefile
3096 Patch 7.0.007
3097 Problem:    AIX: compiling fails for message.c. (Ruediger Hornig)
3098 Solution:   Move the #if outside of memchr().
3099 Files:      src/message.c
3101 Patch 7.0.008
3102 Problem:    Can't call a function that uses both <SID> and {expr}. (Thomas)
3103 Solution:   Check both the expanded and unexpanded name for <SID>.
3104 Files:      src/eval.c
3106 Patch 7.0.009
3107 Problem:    ml_get errors with both 'sidescroll' and 'spell' set.
3108 Solution:   Use ml_get_buf() instead of ml_get(), get the line from the right
3109             buffer, not the current one.
3110 Files:      src/spell.c
3112 Patch 7.0.010
3113 Problem:    The spellfile plugin required typing login name and password.
3114 Solution:   Use "anonymous" and "vim7user" by default.  No need to setup a
3115             .netrc file.
3116 Files:      runtime/autoload/spellfile.vim
3118 Patch 7.0.011
3119 Problem:    Can't compile without the folding and with the eval feature.
3120 Solution:   Add an #ifdef. (Vallimar)
3121 Files:      src/option.c
3123 Patch 7.0.012
3124 Problem:    Using the matchparen plugin, moving the cursor in Insert mode to a
3125             shorter line that ends in a brace, changes the preferred column
3126 Solution:   Use winsaveview()/winrestview() instead of getpos()/setpos().
3127 Files:      runtime/plugin/matchparen.vim
3129 Patch 7.0.013
3130 Problem:    Insert mode completion: using CTRL-L to add an extra character
3131             also deselects the current match, making it impossible to use
3132             CTRL-L a second time.
3133 Solution:   Keep the current match.  Also make CTRL-L work at the original
3134             text, using the first displayed match.
3135 Files:      src/edit.c
3137 Patch 7.0.014
3138 Problem:    Compiling gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
3139 Solution:   Disable some code for Motif 1.2 and older.
3140 Files:      src/gui_xmebw.c
3142 Patch 7.0.015
3143 Problem:    Athena: compilation problems with modern compiler.
3144 Solution:   Avoid type casts for lvalue. (Alexey Froloff)
3145 Files:      src/gui_at_fs.c
3147 Patch 7.0.016
3148 Problem:    Printing doesn't work for "dec-mcs" encoding.
3149 Solution:   Add "dec-mcs", "mac-roman" and "hp-roman8" to the list of
3150             recognized 8-bit encodings. (Mike Williams)
3151 Files:      src/mbyte.c
3153 Patch 7.0.017 (after 7.0.014)
3154 Problem:    Linking gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
3155 Solution:   Adjust defines for Motif 1.2 and older.
3156 Files:      src/gui_xmebw.c
3158 Patch 7.0.018
3159 Problem:    VMS: plugins are not loaded on startup.
3160 Solution:   Remove "**" from the path. (Zoltan Arpadffy)
3161 Files:      src/main.c
3163 Patch 7.0.019
3164 Problem:    Repeating "VjA789" may cause a crash. (James Vega)
3165 Solution:   Check the cursor column after moving it to another line.
3166 Files:      src/ops.c
3168 Patch 7.0.020
3169 Problem:    Crash when using 'mousefocus'. (William Fulton)
3170 Solution:   Make buffer for mouse coordinates 2 bytes longer. (Juergen Weigert)
3171 Files:      src/gui.c
3173 Patch 7.0.021
3174 Problem:    Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber)
3175 Solution:   Check for valid submatches after matching the pattern.
3176 Files:      src/quickfix.c
3178 Patch 7.0.022
3179 Problem:    Using buffer.append() in Ruby may append the line to the wrong
3180             buffer. (Alex Norman)
3181 Solution:   Properly switch to the buffer to do the appending.  Also for
3182             buffer.delete() and setting a buffer line.
3183 Files:      src/if_ruby.c
3185 Patch 7.0.023
3186 Problem:    Crash when doing spell completion in an empty line and pressing
3187             CTRL-E.
3188 Solution:   Check for a zero pointer. (James Vega)
3189             Also handle a situation without a matching pattern better, report
3190             "No matches" instead of remaining in undefined CTRL-X mode.  And
3191             get out of CTRL-X mode when typing a letter.
3192 Files:      src/edit.c
3194 Patch 7.0.024
3195 Problem:    It is possible to set arbitrary "v:" variables.
3196 Solution:   Disallow setting "v:" variables that are not predefined.
3197 Files:      src/eval.c
3199 Patch 7.0.025
3200 Problem:    Crash when removing an element of a:000.  (Nikolai Weibull)
3201 Solution:   Mark the a:000 list with VAR_FIXED.
3202 Files:      src/eval.c
3204 Patch 7.0.026
3205 Problem:    Using libcall() may show an old error.
3206 Solution:   Invoke dlerror() to clear a previous error. (Yukihiro Nakadaira)
3207 Files:      src/os_unix.c
3209 Patch 7.0.027 (extra)
3210 Problem:    Win32: When compiled with SNIFF gvim may hang on exit.
3211 Solution:   Translate and dispatch the WM_USER message. (Mathias Michaelis)
3212 Files:      src/gui_w48.c
3214 Patch 7.0.028 (extra)
3215 Problem:    OS/2: Vim doesn't compile with gcc 3.2.1.
3216 Solution:   Add argument to after_pathsep(), don't define vim_handle_signal(),
3217             define HAVE_STDARG_H. (David Sanders)
3218 Files:      src/os_unix.c, src/vim.h, src/os_os2_cfg.h
3220 Patch 7.0.029
3221 Problem:    getchar() may not position the cursor after a space.
3222 Solution:   Position the cursor explicitly.
3223 Files:      src/eval.c
3225 Patch 7.0.030
3226 Problem:    The ":compiler" command can't be used in a FileChangedRO event.
3227             (Hari Krishna Dara)
3228 Solution:   Add the CMDWIN flag to the ":compiler" command.
3229 Files:      src/ex_cmds.h
3231 Patch 7.0.031
3232 Problem:    When deleting a buffer the buffer-local mappings for Select mode
3233             remain.
3234 Solution:   Add the Select mode bit to MAP_ALL_MODES. (Edwin Steiner)
3235 Files:      src/vim.h
3237 Patch 7.0.032 (extra, after 7.0.027)
3238 Problem:    Missing semicolon.
3239 Solution:   Add the semicolon.
3240 Files:      src/gui_w48.c
3242 Patch 7.0.033
3243 Problem:    When pasting text, with the menu or CTRL-V, autoindent is removed.
3244 Solution:   Use "x<BS>" to avoid indent to be removed. (Benji Fisher)
3245 Files:      runtime/autoload/paste.vim
3247 Patch 7.0.034
3248 Problem:    After doing completion and typing more characters or using BS
3249             repeating with "." didn't work properly. (Martin Stubenschrott)
3250 Solution:   Don't put BS and other characters in the redo buffer right away,
3251             do this when finishing completion.
3252 Files:      src/edit.c
3254 Patch 7.0.035
3255 Problem:    Insert mode completion works when typed but not when replayed from
3256             a register. (Hari Krishna Dara)
3257             Also: Mappings for Insert mode completion don't always work.
3258 Solution:   When finding a non-completion key in the input don't interrupt
3259             completion when it wasn't typed.
3260             Do use mappings when checking for typeahead while still finding
3261             completions.  Avoids that completion is interrupted too soon.
3262             Use "compl_pending" in a different way.
3263 Files:      src/edit.c
3265 Patch 7.0.036
3266 Problem:    Can't compile with small features and syntax highlighting or the
3267             diff feature.
3268 Solution:   Define LINE_ATTR whenever syntax highlighting or the diff feature
3269             is enabled.
3270 Files:      src/screen.c
3272 Patch 7.0.037
3273 Problem:    Crash when resizing the GUI window vertically when there is a line
3274             that doesn't fit.
3275 Solution:   Don't redraw while the screen data is invalid.
3276 Files:      src/screen.c
3278 Patch 7.0.038
3279 Problem:    When calling complete() from an Insert mode expression mapping
3280             text could be inserted in an improper way.
3281 Solution:   Make undo_allowed() global and use it in complete().
3282 Files:      src/undo.c, src/proto/undo.pro, src/eval.c
3284 Patch 7.0.039
3285 Problem:    Calling inputdialog() with a third argument in the console doesn't
3286             work.
3287 Solution:   Make a separate function for input() and inputdialog(). (Yegappan
3288             Lakshmanan)
3289 Files:      src/eval.c
3291 Patch 7.0.040
3292 Problem:    When 'cmdheight' is larger than 1 using inputlist() or selecting
3293             a spell suggestion with the mouse gets the wrong entry.
3294 Solution:   Start listing the first alternative on the last line of the screen.
3295 Files:      src/eval.c, src/spell.c
3297 Patch 7.0.041
3298 Problem:    cursor([1, 1]) doesn't work. (Peter Hodge)
3299 Solution:   Allow leaving out the third item of the list and use zero for the
3300             virtual column offset.
3301 Files:      src/eval.c
3303 Patch 7.0.042
3304 Problem:    When pasting a block of text in Insert mode Vim hangs or crashes.
3305             (Noam Halevy)
3306 Solution:   Avoid that the cursor is positioned past the NUL of a line.
3307 Files:      src/ops.c
3309 Patch 7.0.043
3310 Problem:    Using "%!" at the start of 'statusline' doesn't work.
3311 Solution:   Recognize the special item when the option is being set.
3312 Files:      src/option.c
3314 Patch 7.0.044
3315 Problem:    Perl: setting a buffer line in another buffer may result in
3316             changing the current buffer.
3317 Solution:   Properly change to the buffer to be changed.
3318 Files:      src/if_perl.xs
3320 Patch 7.0.045 (extra)
3321 Problem:    Win32: Warnings when compiling OLE version with MSVC 2005.
3322 Solution:   Move including vim.h to before windows.h. (Ilya Bobir)
3323 Files:      src/if_ole.cpp
3325 Patch 7.0.046
3326 Problem:    The matchparen plugin ignores parens in strings, but not in single
3327             quotes, often marked with "character".
3328 Solution:   Also ignore parens in syntax items matching "character".
3329 Files:      runtime/plugin/matchparen.vim
3331 Patch 7.0.047
3332 Problem:    When running configure the exit status is wrong.
3333 Solution:   Handle the exit status properly. (Matthew Woehlke)
3334 Files:      configure, src/configure
3336 Patch 7.0.048
3337 Problem:    Writing a compressed file fails when there are parens in the name.
3338             (Wang Jian)
3339 Solution:   Put quotes around the temp file name.
3340 Files:      runtime/autoload/gzip.vim
3342 Patch 7.0.049
3343 Problem:    Some TCL scripts are not recognized. (Steven Atkinson)
3344 Solution:   Check for "exec wish" in the file.
3345 Files:      runtime/scripts.vim
3347 Patch 7.0.050
3348 Problem:    After using the netbeans interface close command a stale pointer
3349             may be used.
3350 Solution:   Clear the pointer to the closed buffer. (Xaview de Gaye)
3351 Files:      src/netbeans.c
3353 Patch 7.0.051 (after 7.0.44)
3354 Problem:    The Perl interface doesn't compile or doesn't work properly.
3355 Solution:   Remove the spaces before #ifdef and avoid an empty line above it.
3356 Files:      src/if_perl.xs
3358 Patch 7.0.052
3359 Problem:    The user may not be aware that the Vim server allows others more
3360             functionality than desired.
3361 Solution:   When running Vim as root don't become a Vim server without an
3362             explicit --servername argument.
3363 Files:      src/main.c
3365 Patch 7.0.053
3366 Problem:    Shortening a directory name may fail when there are multi-byte
3367             characters.
3368 Solution:   Copy the correct bytes. (Titov Anatoly)
3369 Files:      src/misc1.c
3371 Patch 7.0.054
3372 Problem:    Mac: Using a menu name that only has a mnemonic or accelerator
3373             causes a crash.  (Elliot Shank)
3374 Solution:   Check for an empty menu name.  Also delete empty submenus that
3375             were created before detecting the error.
3376 Files:      src/menu.c
3378 Patch 7.0.055
3379 Problem:    ":startinsert" in a CmdwinEnter autocommand doesn't take immediate
3380             effect. (Bradley White)
3381 Solution:   Put a NOP key in the typeahead buffer.  Also avoid that using
3382             CTRL-C to go back to the command line moves the cursor left.
3383 Files:      src/edit.c, src/ex_getln.c
3385 Patch 7.0.056
3386 Problem:    "#!something" gives an error message.
3387 Solution:   Ignore this line, so that it can be used in an executable Vim
3388             script.
3389 Files:      src/ex_docmd.c
3391 Patch 7.0.057 (extra, after 7.0.45)
3392 Problem:    Win32: Compilation problem with Borland C 5.5.
3393 Solution:   Include vim.h as before. (Mark S. Williams)
3394 Files:      src/if_ole.cpp
3396 Patch 7.0.058
3397 Problem:    The gbk and and gb18030 encodings are not recognized.
3398 Solution:   Add aliases to cp936. (Edward L. Fox)
3399 Files:      src/mbyte.c
3401 Patch 7.0.059
3402 Problem:    The Perl interface doesn't compile with ActiveState Perl 5.8.8.
3403 Solution:   Remove the __attribute__() items. (Liu Yubao)
3404 Files:      src/if_perl.xs
3406 Patch 7.0.060 (after 7.0.51)
3407 Problem:    Code for temporarily switching to another buffer is duplicated in
3408             quite a few places.
3409 Solution:   Use aucmd_prepbuf() and aucmd_restbuf() also when FEAT_AUTOCMD is
3410             not defined.
3411 Files:      src/buffer.c, src/eval.c, src/fileio.c, src/if_ruby.c,
3412             src/if_perl.xs, src/quickfix.c, src/structs.h
3414 Patch 7.0.061
3415 Problem:    Insert mode completion for Vim commands may crash if there is
3416             nothing to complete.
3417 Solution:   Instead of freeing the pattern make it empty, so that a "not
3418             found" error is given. (Yukihiro Nakadaira)
3419 Files:      src/edit.c
3421 Patch 7.0.062
3422 Problem:    Mac: Crash when using the popup menu for spell correction.  The
3423             popup menu appears twice when letting go of the right mouse button
3424             early.
3425 Solution:   Don't show the popup menu on the release of the right mouse
3426             button.  Also check that a menu pointer is actually valid.
3427 Files:      src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c
3429 Patch 7.0.063
3430 Problem:    Tiny chance for a memory leak. (coverity)
3431 Solution:   Free pointer when next memory allocation fails.
3432 Files:      src/eval.c
3434 Patch 7.0.064
3435 Problem:    Using uninitialized variable. (Tony Mechelynck)
3436 Solution:   When not used set "temp" to zero.  Also avoid a warning for
3437             "files" in ins_compl_dictionaries().
3438 Files:      src/edit.c
3440 Patch 7.0.065 (extra)
3441 Problem:    Mac: left-right movement of the scrollwheel causes up-down
3442             scrolling.
3443 Solution:   Ignore mouse wheel events that are not up-down. (Nicolas Weber)
3444 Files:      src/gui_mac.c
3446 Patch 7.0.066
3447 Problem:    After the popup menu for Insert mode completion overlaps the tab
3448             pages line it is not completely removed.
3449 Solution:   Redraw the tab pages line after removing the popup menu. (Ori
3450             Avtalion)
3451 Files:      src/popupmnu.c
3453 Patch 7.0.067
3454 Problem:    Undo doesn't always work properly when using "scim" input method.
3455             Undo is split up when using preediting.
3456 Solution:   Reset xim_has_preediting also when preedit_start_col is not
3457             MAXCOL.  Don't split undo when <Left> is used while preediting.
3458             (Yukihiro Nakadaira)
3459 Files:      src/edit.c, src/mbyte.c
3461 Patch 7.0.068
3462 Problem:    When 'ignorecase' is set and using Insert mode completion,
3463             typing characters to change the list of matches, case is not
3464             ignored. (Hugo Ahlenius)
3465 Solution:   Store the 'ignorecase' flag with the matches where needed.
3466 Files:      src/edit.c, src/search.c, src/spell.c
3468 Patch 7.0.069
3469 Problem:    Setting 'guitablabel' to %!expand(\%)  causes Vim to free an
3470             invalid pointer. (Kim Schulz)
3471 Solution:   Don't try freeing a constant string pointer.
3472 Files:      src/buffer.c
3474 Patch 7.0.070
3475 Problem:    Compiler warnings for shadowed variables and uninitialized
3476             variables.
3477 Solution:   Rename variables such as "index", "msg" and "dup".  Initialize
3478             variables.
3479 Files:      src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c,
3480             src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c,
3481             src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c,
3482             src/memline.c, src/netbeans.c, src/normal.c, src/option.c,
3483             src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c,
3484             src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c,
3485             src/version.c
3487 Patch 7.0.071
3488 Problem:    Using an empty search pattern may cause a crash.
3489 Solution:   Avoid using a NULL pointer.
3490 Files:      src/search.c
3492 Patch 7.0.072
3493 Problem:    When starting the GUI fails there is no way to adjust settings or
3494             do something else.
3495 Solution:   Add the GUIFailed autocommand event.
3496 Files:      src/fileio.c, src/gui.c, src/vim.h
3498 Patch 7.0.073
3499 Problem:    Insert mode completion: Typing <CR> sometimes selects the original
3500             text instead of keeping what was typed.  (Justin Constantino)
3501 Solution:   Don't let <CR> select the original text if there is no popup menu.
3502 Files:      src/edit.c
3504 Patch 7.0.074 (extra)
3505 Problem:    Win32: tooltips were not converted from 'encoding' to Unicode.
3506 Solution:   Set the tooltip to use Unicode and do the conversion.  Also
3507             cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira)
3508 Files:      src/gui_w32.c, src/gui_w48.c
3510 Patch 7.0.075
3511 Problem:    winsaveview() did not store the actual value of the desired cursor
3512             column.  This could move the cursor in the matchparen plugin.
3513 Solution:   Call update_curswant() before using the value w_curswant.
3514 Files:      src/eval.c
3516 Patch 7.0.076 (after 7.0.010)
3517 Problem:    Automatic downloading of spell files only works for ftp.
3518 Solution:   Don't add login and password for non-ftp URLs. (Alexander Patrakov)
3519 Files:      runtime/autoload/spellfile.vim
3521 Patch 7.0.077
3522 Problem:    ":unlet v:this_session" causes a crash. (Marius Roets)
3523 Solution:   When trying to unlet a fixed variable give an error message.
3524 Files:      src/eval.c
3526 Patch 7.0.078
3527 Problem:    There are two error messages E46.
3528 Solution:   Change the number for the sandbox message to E794.
3529 Files:      src/globals.h
3531 Patch 7.0.079
3532 Problem:    Russian tutor doesn't work when 'encoding' is "utf-8".
3533 Solution:   Use tutor.ru.utf-8 as the master, and generate the other encodings
3534             from it.  Select the right tutor depending on 'encoding'. (Alexey
3535             Froloff)
3536 Files:      runtime/tutor/Makefile, runtime/tutor/tutor.vim,
3537             runtime/tutor/tutor.ru.utf-8
3539 Patch 7.0.080
3540 Problem:    Generating auto/pathdef.c fails for CFLAGS with a backslash.
3541 Solution:   Double backslashes in the string. (Alexey Froloff)
3542 Files:      src/Makefile
3544 Patch 7.0.081
3545 Problem:    Command line completion doesn't work for a shell command with an
3546             absolute path.
3547 Solution:   Don't use $PATH when there is an absolute path.
3548 Files:      src/ex_getln.c
3550 Patch 7.0.082
3551 Problem:    Calling a function that waits for input may cause List and
3552             Dictionary arguments to be freed by the garbage collector.
3553 Solution:   Keep a list of all arguments to internal functions.
3554 Files:      src/eval.c
3556 Patch 7.0.083
3557 Problem:    Clicking with the mouse on an item for inputlist() doesn't work
3558             when 'compatible' is set and/or when 'cmdheight' is more than one.
3559             (Christian J.  Robinson)
3560 Solution:   Also decrement "lines_left" when 'more' isn't set.  Set
3561             "cmdline_row" to zero to get all mouse events.
3562 Files:      src/message.c, src/misc1.c
3564 Patch 7.0.084
3565 Problem:    The garbage collector may do its work while some Lists or
3566             Dictionaries are used internally, e.g., by ":echo" that runs into
3567             the more-prompt or ":echo [garbagecollect()]".
3568 Solution:   Only do garbage collection when waiting for a character at the
3569             toplevel.  Let garbagecollect() set a flag that is handled at the
3570             toplevel before waiting for a character.
3571 Files:      src/eval.c, src/getchar.c, src/globals.h, src/main.c
3573 Patch 7.0.085
3574 Problem:    When doing "make test" the viminfo file is modified.
3575 Solution:   Use another viminfo file after setting 'compatible.
3576 Files:      src/testdir/test56.in
3578 Patch 7.0.086
3579 Problem:    getqflist() returns entries for pattern and text with the number
3580             zero.  Passing these to setqflist() results in the string "0".
3581 Solution:   Use an empty string instead of the number zero.
3582 Files:      src/quickfix.c
3584 Patch 7.0.087
3585 Problem:    After ":file fname" and ":saveas fname" the 'autochdir' option
3586             does not take effect. (Yakov Lerner)
3587             Commands for handling 'autochdir' are repeated many times.
3588 Solution:   Add the DO_AUTOCHDIR macro and do_autochdir().  Use it for
3589             ":file fname" and ":saveas fname".
3590 Files:      src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h,
3591             src/netbeans.c, src/option.c, src/window.c
3593 Patch 7.0.088
3594 Problem:    When compiled with Perl the generated prototypes have "extern"
3595             unnecessarily added.
3596 Solution:   Remove the "-pipe" argument from PERL_CFLAGS.
3597 Files:      src/auto/configure, src/configure.in
3599 Patch 7.0.089
3600 Problem:    "ga" does not work properly for a non-Unicode multi-byte encoding.
3601 Solution:   Only check for composing chars for utf-8. (Taro Muraoka)
3602 Files:      src/ex_cmds.c
3604 Patch 7.0.090
3605 Problem:    Cancelling the conform() dialog on the console with Esc requires
3606             typing it twice. (Benji Fisher)
3607 Solution:   When the start of an escape sequence is found use 'timeoutlen' or
3608             'ttimeoutlen'.
3609 Files:      src/misc1.c
3611 Patch 7.0.091
3612 Problem:    Using winrestview() while 'showcmd' is set causes the cursor to be
3613             displayed in the wrong position. (Yakov Lerner)
3614 Solution:   Set the window topline properly.
3615 Files:      src/eval.c
3617 Patch 7.0.092 (after 7.0.082 and 7.0.084)
3618 Problem:    The list of internal function arguments is obsolete now that
3619             garbage collection is only done at the toplevel.
3620 Solution:   Remove the list of all arguments to internal functions.
3621 Files:      src/eval.c
3623 Patch 7.0.093
3624 Problem:    The matchparen plugin can't handle a 'matchpairs' value where a
3625             colon is matched.
3626 Solution:   Change the split() that is used to change 'matchpairs' into a
3627             List.
3628 Files:      runtime/plugin/matchparen.vim
3630 Patch 7.0.094
3631 Problem:    When a hidden buffer is made the current buffer and another file
3632             edited later, the file message will still be given.  Using
3633             ":silent" also doesn't prevent the file message. (Marvin Renich)
3634 Solution:   Reset the need_fileinfo flag when reading a file.  Don't set
3635             need_fileinfo when msg_silent is set.
3636 Files:      src/buffer.c, src/fileio.c
3638 Patch 7.0.095
3639 Problem:    The Greek tutor is not available in utf-8.  "el" is used for the
3640             language, only "gr" for the country is recognized.
3641 Solution:   Add the utf-8 Greek tutor.  Use it for conversion to iso-8859-7
3642             and cp737.  (Lefteris Dimitroulakis)
3643 Files:      runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8,
3644             runtime/tutor/tutor.vim
3646 Patch 7.0.096
3647 Problem:    taglist() returns the filename relative to the tags file, while
3648             the directory of the tags file is unknown. (Hari Krishna Dara)
3649 Solution:   Expand the file name. (Yegappan Lakshmanan)
3650 Files:      src/tag.c
3652 Patch 7.0.097
3653 Problem:    ":tabclose N" that closes another tab page does not remove the tab
3654             pages line.  Same problem when using the mouse.
3655 Solution:   Adjust the tab pages line when needed in tabpage_close_other().
3656 Files:      src/ex_docmd.c
3658 Patch 7.0.098
3659 Problem:    Redirecting command output in a cmdline completion function
3660             doesn't work. (Hari Krishna Dara)
3661 Solution:   Enable redirection when redirection is started.
3662 Files:      src/ex_docmd.c, src/ex_getln.c
3664 Patch 7.0.099
3665 Problem:    GUI: When the popup menu is visible using the scrollbar messes up
3666             the display.
3667 Solution:   Disallow scrolling the current window.  Redraw the popup menu
3668             after scrolling another window.
3669 Files:      src/gui.c
3671 Patch 7.0.100
3672 Problem:    "zug" may report the wrong filename. (Lawrence Kesteloot)
3673 Solution:   Call home_replace() to fill NameBuff[].
3674 Files:      src/spell.c
3676 Patch 7.0.101
3677 Problem:    When the "~/.vim/spell" directory does not exist "zg" may create
3678             a wrong directory.  "zw" doesn't work.
3679 Solution:   Use the directory of the file name instead of NameBuff.  For "zw"
3680             not only remove a good word but also add the word with "!".
3681 Files:      src/spell.c
3683 Patch 7.0.102
3684 Problem:    Redrawing cmdline is not correct when using SCIM.
3685 Solution:   Don't call im_get_status(). (Yukihiro Nakadaira)
3686 Files:      src/ex_getln.c
3688 Patch 7.0.103 (after 7.0.101)
3689 Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
3690 Solution:   Init variable.
3691 Files:      src/spell.c
3693 Patch 7.0.104
3694 Problem:    The CursorHoldI event only triggers once in Insert mode.  It also
3695             triggers after CTRL-V and other two-key commands.
3696 Solution:   Set "did_cursorhold" before getting a second key.  Reset
3697             "did_cursorhold" after handling a command.
3698 Files:      src/edit.c, src/fileio.c
3700 Patch 7.0.105
3701 Problem:    When using incremental search the statusline ruler isn't updated.
3702             (Christoph Koegl)
3703 Solution:   Update the statusline when it contains the ruler.
3704 Files:      src/ex_getln.c
3706 Patch 7.0.106
3707 Problem:    The spell popup menu uses ":amenu", triggering mappings.  Other
3708             PopupMenu autocommands are removed. (John Little)
3709 Solution:   Use ":anoremenu" and use an autocmd group.
3710 Files:      runtime/menu.vim
3712 Patch 7.0.107
3713 Problem:    Incremental search doesn't redraw the text tabline. (Ilya Bobir)
3714             Also happens in other situations with one window in a tab page.
3715 Solution:   Redraw the tabline after clearing the screen.
3716 Files:      src/screen.c
3718 Patch 7.0.108 (extra)
3719 Problem:    Amiga: Compilation problem.
3720 Solution:   Have mch_mkdir() return a failure flag. (Willy Catteau)
3721 Files:      src/os_amiga.c, src/proto/os_amiga.pro
3723 Patch 7.0.109
3724 Problem:    Lisp indenting is confused by escaped quotes in strings. (Dorai
3725             Sitaram)
3726 Solution:   Check for backslash inside strings. (Sergey Khorev)
3727 Files:      src/misc1.c
3729 Patch 7.0.110
3730 Problem:    Amiga: Compilation problems when not using libnix.
3731 Solution:   Change a few #ifdefs. (Willy Catteau)
3732 Files:      src/memfile.c
3734 Patch 7.0.111
3735 Problem:    The gzip plugin can't handle filenames with single quotes.
3736 Solution:   Add and use the shellescape() function. (partly by Alexey Froloff)
3737 Files:      runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c,
3738             src/mbyte.c, src/misc2.c, src/proto/misc2.pro
3740 Patch 7.0.112
3741 Problem:    Python interface does not work with Python 2.5.
3742 Solution:   Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes)
3743 Files:      src/if_python.c
3745 Patch 7.0.113
3746 Problem:    Using CTRL-L in Insert completion when there is no current match
3747             may cause a crash. (Yukihiro Nakadaira)
3748 Solution:   Check for compl_leader to be NULL
3749 Files:      src/edit.c
3751 Patch 7.0.114
3752 Problem:    When aborting an insert with CTRL-C an extra undo point is
3753             created in the GUI. (Yukihiro Nakadaira)
3754 Solution:   Call gotchars() only when advancing.
3755 Files:      src/getchar.c
3757 Patch 7.0.115
3758 Problem:    When 'ignorecase' is set, Insert mode completion only adds "foo"
3759             and not "Foo" when both are found.
3760             A found match isn't displayed right away when 'completeopt' does
3761             not have "menu" or "menuone".
3762 Solution:   Do not ignore case when checking if a completion match already
3763             exists.  call ins_compl_check_keys() also when not using a popup
3764             menu. (Yukihiro Nakadaira)
3765 Files:      src/edit.c
3767 Patch 7.0.116
3768 Problem:    64 bit Windows version reports "32 bit" in the ":version" output.
3769             (M. Veerman)
3770 Solution:   Change the text for Win64.
3771 Files:      src/version.c
3773 Patch 7.0.117
3774 Problem:    Using "extend" on a syntax item inside a region with "keepend", an
3775             intermediate item may be truncated.
3776             When applying the "keepend" and there is an offset to the end
3777             pattern the highlighting of a contained item isn't adjusted.
3778 Solution:   Use the seen_keepend flag to remember when to apply the "keepend"
3779             flag.  Adjust the keepend highlighting properly. (Ilya Bobir)
3780 Files:      src/syntax.c
3782 Patch 7.0.118
3783 Problem:    printf() does not do zero padding for strings.
3784 Solution:   Do allow zero padding for strings.
3785 Files:      src/message.c
3787 Patch 7.0.119
3788 Problem:    When going back from Insert to Normal mode the CursorHold event
3789             doesn't trigger. (Yakov Lerner)
3790 Solution:   Reset "did_cursorhold" when leaving Insert mode.
3791 Files:      src/edit.c
3793 Patch 7.0.120
3794 Problem:    Crash when using CTRL-R = at the command line and entering
3795             "getreg('=')". (James Vega)
3796 Solution:   Avoid recursiveness of evaluating the = register.
3797 Files:      src/ops.c
3799 Patch 7.0.121
3800 Problem:    GUI: Dragging the last status line doesn't work when there is a
3801             text tabline.  (Markus Wolf)
3802 Solution:   Take the text tabline into account when deciding to start modeless
3803             selection.
3804 Files:      src/gui.c
3806 Patch 7.0.122
3807 Problem:    GUI: When clearing after a bold, double-wide character half a
3808             character may be drawn.
3809 Solution:   Check for double-wide character and redraw it. (Yukihiro Nakadaira)
3810 Files:      src/screen.c
3812 Patch 7.0.123
3813 Problem:    On SCO Openserver configure selects the wrong terminal library.
3814 Solution:   Put terminfo before the other libraries. (Roger Cornelius)
3815             Also fix a small problem compiling on Mac without Darwin.
3816 Files:      src/configure.in, src/auto/configure
3818 Patch 7.0.124
3819 Problem:    getwinvar() obtains a dictionary with window-local variables, but
3820             it's always for the current window.
3821 Solution:   Get the variables of the specified window. (Geoff Reedy)
3822 Files:      src/eval.c
3824 Patch 7.0.125
3825 Problem:    When "autoselect" is in the 'clipboard' option then the '< and '>
3826             marks are set while Visual mode is still active.
3827 Solution:   Don't set the '< and '> marks when yanking the selected area for
3828             the clipboard.
3829 Files:      src/normal.c
3831 Patch 7.0.126
3832 Problem:    When 'formatexpr' uses setline() and later internal formatting is
3833             used undo information is not correct. (Jiri Cerny, Benji Fisher)
3834 Solution:   Set ins_need_undo after using 'formatexpr'.
3835 Files:      src/edit.c
3837 Patch 7.0.127
3838 Problem:    Crash when swap files has invalid timestamp.
3839 Solution:   Check return value of ctime() for being NULL.
3840 Files:      src/memline.c
3842 Patch 7.0.128
3843 Problem:    GUI: when closing gvim is cancelled because there is a changed
3844             buffer the screen isn't updated to show the changed buffer in the
3845             current window.  (Krzysztof Kacprzak)
3846 Solution:   Redraw when closing gvim is cancelled.
3847 Files:      src/gui.c
3849 Patch 7.0.129
3850 Problem:    GTK GUI: the GTK file dialog can't handle a relative path.
3851 Solution:   Make the initial directory a full path before passing it to GTK.
3852             (James Vega)  Also postpone adding the default file name until
3853             after setting the directory.
3854 Files:      src/gui_gtk.c
3856 Patch 7.0.130 (extra)
3857 Problem:    Win32: Trying to edit or write devices may cause Vim to get stuck.
3858 Solution:   Add the 'opendevice' option, default off.  Disallow
3859             reading/writing from/to devices when it's off.
3860             Also detect more devices by the full name starting with "\\.\".
3861 Files:      runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h,
3862             src/os_win32.c
3864 Patch 7.0.131
3865 Problem:    Win32: "vim -r" does not list all the swap files.
3866 Solution:   Also check for swap files starting with a dot.
3867 Files:      src/memline.c
3869 Patch 7.0.132 (after 7.0.130)
3870 Problem:    Win32: Crash when Vim reads from stdin.
3871 Solution:   Only use mch_nodetype() when there is a file name.
3872 Files:      src/fileio.c
3874 Patch 7.0.133
3875 Problem:    When searching included files messages are added to the history.
3876 Solution:   Set msg_hist_off for messages about scanning included files.
3877             Set msg_silent to avoid message about wrapping around.
3878 Files:      src/edit.c, src/globals.h, src/message.c, src/search.c
3880 Patch 7.0.134
3881 Problem:    Crash when comparing a recursively looped List or Dictionary.
3882 Solution:   Limit recursiveness for comparing to 1000.
3883 Files:      src/eval.c
3885 Patch 7.0.135
3886 Problem:    Crash when garbage collecting list or dict with loop.
3887 Solution:   Don't use DEL_REFCOUNT but don't recurse into Lists and
3888             Dictionaries when freeing them in the garbage collector.
3889             Also add allocated Dictionaries to the list of Dictionaries to
3890             avoid leaking memory.
3891 Files:      src/eval.c, src/proto/eval.pro, src/tag.c
3893 Patch 7.0.136
3894 Problem:    Using "O" while matching parens are highlighted may not remove the
3895             highlighting. (Ilya Bobir)
3896 Solution:   Also trigger CursorMoved when a line is inserted under the cursor.
3897 Files:      src/misc1.c
3899 Patch 7.0.137
3900 Problem:    Configure check for big features is wrong.
3901 Solution:   Change "==" to "=". (Martti Kuparinen)
3902 Files:      src/auto/configure, src/configure.in
3904 Patch 7.0.138 (extra)
3905 Problem:    Mac: modifiers don't work with function keys.
3906 Solution:   Use GetEventParameter() to obtain modifiers. (Nicolas Weber)
3907 Files:      src/gui_mac.c
3909 Patch 7.0.139
3910 Problem:    Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another
3911             tab page does not prepare for undo properly. (Stefano Zacchiroli)
3912 Solution:   Call start_arrow() before switching tab page.
3913 Files:      src/edit.c
3915 Patch 7.0.140 (after 7.0.134)
3916 Problem:    Comparing recursively looped List or Dictionary doesn't work well.
3917 Solution:   Detect comparing a List or Dictionary with itself.
3918 Files:      src/eval.c
3920 Patch 7.0.141
3921 Problem:    When pasting a while line on the command line an extra CR is added
3922             literally.
3923 Solution:   Don't add the trailing CR when pasting with the mouse.
3924 Files:      src/ex_getln.c, src/proto/ops.pro, src/ops.c
3926 Patch 7.0.142
3927 Problem:    Using the middle mouse button in Select mode to paste text results
3928             in an extra "y". (Kriton Kyrimis)
3929 Solution:   Let the middle mouse button replace the selected text with the
3930             contents of the clipboard.
3931 Files:      src/normal.c
3933 Patch 7.0.143
3934 Problem:    Setting 'scroll' to its default value was not handled correctly.
3935 Solution:   Compare the right field to PV_SCROLL.
3936 Files:      src/option.c
3938 Patch 7.0.144
3939 Problem:    May compare two unrelated pointers when matching a pattern against
3940             a string.  (Dominique Pelle)
3941 Solution:   Avoid calling reg_getline() when REG_MULTI is false.
3942 Files:      src/regexp.c
3944 Patch 7.0.145 (after 7.0.142)
3945 Problem:    Compiler warning.
3946 Solution:   Add type cast.
3947 Files:      src/normal.c
3949 Patch 7.0.146
3950 Problem:    When 'switchbuf' is set to "usetab" and the current tab has only a
3951             quickfix window, jumping to an error always opens a new window.
3952             Also, when the buffer is open in another tab page it's not found.
3953 Solution:   Check for the "split" value of 'switchbuf' properly.  Search in
3954             other tab pages for the desired buffer. (Yegappan Lakshmanan)
3955 Files:      src/buffer.c, src/quickfix.c
3957 Patch 7.0.147
3958 Problem:    When creating a session file and there are several tab pages and
3959             some windows have a local directory a short file name may be used
3960             when it's not valid. (Marius Roets)
3961             A session with multiple tab pages may result in "No Name" buffers.
3962             (Bill McCarthy)
3963 Solution:   Don't enter tab pages when going through the list, only use a
3964             pointer to the first window in each tab page.
3965             Use "tabedit" instead of "tabnew | edit" when possible.
3966 Files:      src/ex_docmd.c
3968 Patch 7.0.148
3969 Problem:    When doing "call a.xyz()" and "xyz" does not exist in dictionary
3970             "a" there is no error message. (Yegappan Lakshmanan)
3971 Solution:   Add the error message.
3972 Files:      src/eval.c
3974 Patch 7.0.149
3975 Problem:    When resizing a window that shows "~" lines the text sometimes
3976             jumps down.
3977 Solution:   Remove code that uses "~" lines in some situations.  Fix the
3978             computation of the screen line of the cursor.  Also set w_skipcol
3979             to handle very long lines.
3980 Files:      src/misc1.c, src/window.c
3982 Patch 7.0.150
3983 Problem:    When resizing the Vim window scrollbinding doesn't work. (Yakov
3984             Lerner)
3985 Solution:   Do scrollbinding in set_shellsize().
3986 Files:      src/term.c
3988 Patch 7.0.151
3989 Problem:    Buttons in file dialog are not according to Gnome guidelines.
3990 Solution:   Swap Cancel and Open buttons. (Stefano Zacchiroli)
3991 Files:      src/gui_gtk.c
3993 Patch 7.0.152
3994 Problem:    Crash when using lesstif 2.
3995 Solution:   Fill in the extension field. (Ben Hutchings)
3996 Files:      src/gui_xmebw.c
3998 Patch 7.0.153
3999 Problem:    When using cscope and opening the temp file fails Vim crashes.
4000             (Kaya Bekiroglu)
4001 Solution:   Check for NULL pointer returned from mch_open().
4002 Files:      src/if_cscope.c
4004 Patch 7.0.154
4005 Problem:    When 'foldnextmax' is negative Vim can hang. (James Vega)
4006 Solution:   Avoid the fold level becoming negative.
4007 Files:      src/fold.c, src/syntax.c
4009 Patch 7.0.155
4010 Problem:    When getchar() returns a mouse button click there is no way to get
4011             the mouse coordinates.
4012 Solution:   Add v:mouse_win, v:mouse_lnum and v:mouse_col.
4013 Files:      runtime/doc/eval.txt, src/eval.c, src/vim.h
4015 Patch 7.0.156 (extra)
4016 Problem:    Vim doesn't compile for Amiga OS 4.
4017 Solution:   Various changes for Amiga OS4. (Peter Bengtsson)
4018 Files:      src/feature.h, src/mbyte.c, src/memfile.c, src/memline.c,
4019             src/os_amiga.c, src/os_amiga.h, src/pty.c
4021 Patch 7.0.157
4022 Problem:    When a function is used recursively the profiling information is
4023             invalid. (Mikolaj Machowski)
4024 Solution:   Put the start time on the stack instead of in the function.
4025 Files:      src/eval.c
4027 Patch 7.0.158
4028 Problem:    In a C file with ":set foldmethod=syntax", typing {<CR> on the
4029             last line results in the cursor being in a closed fold. (Gautam
4030             Iyer)
4031 Solution:   Open fold after inserting a new line.
4032 Files:      src/edit.c
4034 Patch 7.0.159
4035 Problem:    When there is an I/O error in the swap file the cause of the error
4036             cannot be seen.
4037 Solution:   Use PERROR() instead of EMSG() where possible.
4038 Files:      src/memfile.c
4040 Patch 7.0.160
4041 Problem:    ":@a" echoes the command, Vi doesn't do that.
4042 Solution:   Set the silent flag in the typeahead buffer to avoid echoing the
4043             command.
4044 Files:      src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro
4046 Patch 7.0.161
4047 Problem:    Win32: Tab pages line popup menu isn't using the right encoding.
4048             (Yongwei Wu)
4049 Solution:   Convert the text when necessary.  Also fixes the Find/Replace
4050             dialog title. (Yegappan Lakshmanan)
4051 Files:      src/gui_w48.c
4053 Patch 7.0.162
4054 Problem:    "vim -o a b" when file "a" triggers the ATTENTION dialog,
4055             selecting "Quit" exits Vim instead of editing "b" only.
4056             When file "b" triggers the ATTENTION dialog selecting "Quit" or
4057             "Abort" results in editing file "a" in that window.
4058 Solution:   When selecting "Abort" exit Vim.  When selecting "Quit" close the
4059             window.  Also avoid hit-enter prompt when selecting Abort.
4060 Files:      src/buffer.c, src/main.c
4062 Patch 7.0.163
4063 Problem:    Can't retrieve the position of a sign after it was set.
4064 Solution:   Add the netbeans interface getAnno command. (Xavier de Gaye)
4065 Files:      runtime/doc/netbeans.txt, src/netbeans.c
4067 Patch 7.0.164
4068 Problem:    ":redir @+" doesn't work.
4069 Solution:   Accept "@+" just like "@*". (Yegappan Lakshmanan)
4070 Files:      src/ex_docmd.c
4072 Patch 7.0.165
4073 Problem:    Using CTRL-L at the search prompt adds a "/" and other characters
4074             without escaping, causing the pattern not to match.
4075 Solution:   Escape special characters with a backslash.
4076 Files:      src/ex_getln.c
4078 Patch 7.0.166
4079 Problem:    Crash in cscope code when connection could not be opened.
4080             (Kaya Bekiroglu)
4081 Solution:   Check for the file descriptor to be NULL.
4082 Files:      src/if_cscope.c
4084 Patch 7.0.167
4085 Problem:    ":function" redefining a dict function doesn't work properly.
4086             (Richard Emberson)
4087 Solution:   Allow a function name to be a number when it's a function
4088             reference.
4089 Files:      src/eval.c
4091 Patch 7.0.168
4092 Problem:    Using uninitialized memory and memory leak. (Dominique Pelle)
4093 Solution:   Use alloc_clear() instead of alloc() for w_lines.  Free
4094             b_ml.ml_stack after recovery.
4095 Files:      src/memline.c, src/window.c
4097 Patch 7.0.169
4098 Problem:    With a Visual block selection, with the cursor in the left upper
4099             corner, pressing "I" doesn't remove the highlighting. (Guopeng
4100             Wen)
4101 Solution:   When checking if redrawing is needed also check if Visual
4102             selection is still active.
4103 Files:      src/screen.c
4105 Patch 7.0.170 (extra)
4106 Problem:    Win32: Using "gvim --remote-tab foo" when gvim is minimized while
4107             it previously was maximized, un-maximizing doesn't work properly.
4108             And the labels are not displayed properly when 'encoding' is
4109             utf-8.
4110 Solution:   When minimized check for SW_SHOWMINIMIZED.  When updating the tab
4111             pages line use TCM_SETITEMW instead of TCM_INSERTITEMW. (Liu
4112             Yubao)
4113 Files:      src/gui_w48.c
4115 Patch 7.0.171 (extra)
4116 Problem:    VMS: A file name with multiple paths is written in the wrong file.
4117 Solution:   Get the actually used file name. (Zoltan Arpadffy)
4118             Also add info to the :version command about compilation.
4119 Files:      src/Make_vms.mms, src/buffer.c, src/os_unix.c, src/version.c
4121 Patch 7.0.172
4122 Problem:    Crash when recovering and quitting at the "press-enter" prompt.
4123 Solution:   Check for "msg_list" to be NULL. (Liu Yubao)
4124 Files:      src/ex_eval.c
4126 Patch 7.0.173
4127 Problem:    ":call f().TT()" doesn't work.  (Richard Emberson)
4128 Solution:   When a function returns a Dictionary or another composite continue
4129             evaluating what follows.
4130 Files:      src/eval.c    
4132 Patch 7.0.174
4133 Problem:    ":mksession" doesn't restore window layout correctly in tab pages
4134             other than the current one. (Zhibin He)
4135 Solution:   Use the correct topframe for producing the window layout commands.
4136 Files:      src/ex_docmd.c
4138 Patch 7.0.175
4139 Problem:    The result of tr() is missing the terminating NUL. (Ingo Karkat)
4140 Solution:   Add the NUL.
4141 Files:      src/eval.c
4143 Patch 7.0.176
4144 Problem:    ":emenu" isn't executed directly, causing the encryption key
4145             prompt to fail. (Life Jazzer)
4146 Solution:   Fix wrong #ifdef.
4147 Files:      src/menu.c
4149 Patch 7.0.177
4150 Problem:    When the press-enter prompt gets a character from a non-remappable
4151             mapping, it's put back in the typeahead buffer as remappable,
4152             which may cause an endless loop.
4153 Solution:   Restore the non-remappable flag and the silent flag when putting a
4154             char back in the typeahead buffer.
4155 Files:      src/getchar.c, src/message.c, src/normal.c
4157 Patch 7.0.178
4158 Problem:    When 'enc' is "utf-8" and 'ignorecase' is set the result of ":echo
4159             ("\xe4" == "\xe4")" varies.
4160 Solution:   In mb_strnicmp() avoid looking past NUL bytes.
4161 Files:      src/mbyte.c
4163 Patch 7.0.179
4164 Problem:    Using ":recover" or "vim -r" without a swapfile crashes Vim.
4165 Solution:   Check for "buf" to be unequal NULL. (Yukihiro Nakadaira)
4166 Files:      src/memline.c
4168 Patch 7.0.180 (extra, after 7.0.171)
4169 Problem:    VMS: build failed.  Problem with swapfiles.
4170 Solution:   Add "compiled_arch".  Always expand path and pass it to
4171             buf_modname().  (Zoltan Arpadffy)
4172 Files:      src/globals.h, src/memline.c, src/os_unix.c, runtime/menu.vim
4174 Patch 7.0.181
4175 Problem:    When reloading a file that starts with an empty line, the reloaded
4176             buffer has an extra empty line at the end. (Motty Lentzitzky)
4177 Solution:   Delete all lines, don't use bufempty().
4178 Files:      src/fileio.c
4180 Patch 7.0.182
4181 Problem:    When using a mix of undo and "g-" it may no longer be possible to
4182             go to every point in the undo tree.  (Andy Wokula)
4183 Solution:   Correctly update pointers in the undo tree.
4184 Files:      src/undo.c
4186 Patch 7.0.183
4187 Problem:    Crash in ":let" when redirecting to a variable that's being
4188             displayed. (Thomas Link)
4189 Solution:   When redirecting to a variable only do the assignment when
4190             stopping redirection to avoid that setting the variable causes a
4191             freed string to be accessed.
4192 Files:      src/eval.c
4194 Patch 7.0.184
4195 Problem:    When the cscope program is called "mlcscope" the Cscope interface
4196             doesn't work.
4197 Solution:   Accept "\S*cscope:" instead of "cscope:". (Frodak D. Baksik)
4198 Files:      src/if_cscope.c
4200 Patch 7.0.185
4201 Problem:    Multi-byte characters in a message are displayed with attributes
4202             from what comes before it.
4203 Solution:   Don't use the attributes for a multi-byte character.  Do use
4204             attributes for special characters. (Yukihiro Nakadaira)
4205 Files:      src/message.c
4207 Patch 7.0.186
4208 Problem:    Get an ml_get error when 'encoding' is "utf-8" and searching for
4209             "/\_s*/e" in an empty buffer.  (Andrew Maykov)
4210 Solution:   Don't try getting the line just below the last line.
4211 Files:      src/search.c
4213 Patch 7.0.187
4214 Problem:    Can't source a remote script properly.
4215 Solution:   Add the SourceCmd event. (Charles Campbell)
4216 Files:      runtime/doc/autocmd.txt, src/ex_cmds2.c, src/fileio.c, src/vim.h
4218 Patch 7.0.188 (after 7.0.186)
4219 Problem:    Warning for wrong pointer type.
4220 Solution:   Add a type cast.
4221 Files:      src/search.c
4223 Patch 7.0.189
4224 Problem:    Translated message about finding matches is truncated. (Yukihiro
4225             Nakadaira)
4226 Solution:   Enlarge the buffer.  Also use vim_snprintf().
4227 Files:      src/edit.c
4229 Patch 7.0.190
4230 Problem:    "syntax spell default" results in an error message.
4231 Solution:   Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado)
4232 Files:      src/syntax.c
4234 Patch 7.0.191
4235 Problem:    The items used by getqflist() and setqflist() don't match.
4236 Solution:   Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan)
4237 Files:      runtime/doc/eval.txt, src/quickfix.c
4239 Patch 7.0.192
4240 Problem:    When 'swapfile' is switched off in an empty file it is possible
4241             that not all blocks are loaded into memory, causing ml_get errors
4242             later.
4243 Solution:   Rename "dont_release" to "mf_dont_release" and also use it to
4244             avoid using the cached line and locked block. 
4245 Files:      src/globals.h, src/memfile.c, src/memline.c
4247 Patch 7.0.193
4248 Problem:    Using --remote or --remote-tab with an argument that matches
4249             'wildignore' causes a crash.
4250 Solution:   Check the argument count before using ARGLIST[0].
4251 Files:      src/ex_cmds.c
4253 Patch 7.0.194
4254 Problem:    Once an ml_get error is given redrawing part of the screen may
4255             cause it again, resulting in an endless loop.
4256 Solution:   Don't give the error message for a recursive call.
4257 Files:      src/memline.c
4259 Patch 7.0.195
4260 Problem:    When a buffer is modified and 'autowriteall' is set, ":quit"
4261             results in an endless loop when there is a conversion error while
4262             writing. (Nikolai Weibull)
4263 Solution:   Make autowrite() return FAIL if the buffer is still changed after
4264             writing it.
4265             /* put the cursor on the last char, for 'tw' formatting */
4266 Files:      src/ex_cmds2.c
4268 Patch 7.0.196
4269 Problem:    When using ":vert ball" the computation of the mouse pointer
4270             position may be off by one column. (Stefan Karlsson)
4271 Solution:   Recompute the frame width when moving the vertical separator from
4272             one window to another.
4273 Files:      src/window.c
4275 Patch 7.0.197 (extra)
4276 Problem:    Win32: Compiling with EXITFREE doesn't work.
4277 Solution:   Adjust a few #ifdefs. (Alexei Alexandrof)
4278 Files:      src/misc2.c, src/os_mswin.c
4280 Patch 7.0.198 (extra)
4281 Problem:    Win32: Compiler warnings.  No need to generate gvim.exe.mnf.
4282 Solution:   Add type casts.  Use "*" for processorArchitecture. (George Reilly)
4283 Files:      src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c
4285 Patch 7.0.199
4286 Problem:    When using multi-byte characters the combination of completion and
4287             formatting may result in a wrong cursor position.
4288 Solution:   Don't decrement the cursor column, use dec_cursor(). (Yukihiro
4289             Nakadaira)  Also check for the column to be zero.
4290 Files:      src/edit.c
4292 Patch 7.0.200
4293 Problem:    Memory leaks when out of memory.
4294 Solution:   Free the memory.
4295 Files:      src/edit.c, src/diff.c
4297 Patch 7.0.201
4298 Problem:    Message for ":diffput" about buffer not being in diff mode may be
4299             wrong.
4300 Solution:   Check for buffer in diff mode but not modifiable.
4301 Files:      src/diff.c
4303 Patch 7.0.202
4304 Problem:    Problems on Tandem systems while compiling and at runtime.
4305 Solution:   Recognize root uid is 65535.  Check select() return value for it
4306             not being supported.  Avoid wrong function prototypes.  Mention
4307             use of -lfloss.  (Matthew Woehlke)
4308 Files:      src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c,
4309             src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c,
4310             src/vim.h
4312 Patch 7.0.203
4313 Problem:    0x80 characters in a register are not handled correctly for the
4314             "@" command.
4315 Solution:   Escape CSI and 0x80 characters. (Yukihiro Nakadaira)
4316 Files:      src/ops.c
4318 Patch 7.0.204
4319 Problem:    Cscope: Parsing matches for listing isn't done properly.
4320 Solution:   Check for line number being found. (Yu Zhao)
4321 Files:      src/if_cscope.c
4323 Patch 7.0.205 (after 7.0.203)
4324 Problem:    Can't compile.
4325 Solution:   Always include the vim_strsave_escape_csi function.
4326 Files:      src/getchar.c
4328 Patch 7.0.206 (after 7.0.058)
4329 Problem:    Some characters of the "gb18030" encoding are not handled
4330             properly.
4331 Solution:   Do not use "cp936" as an alias for "gb18030" encoding.  Instead
4332             initialize 'encoding' to "cp936".
4333 Files:      src/mbyte.c, src/option.c
4335 Patch 7.0.207
4336 Problem:    After patch 2.0.203 CSI and K_SPECIAL characters are escaped when
4337             recorded and then again when the register is executed.
4338 Solution:   Remove escaping before putting the recorded characters in a
4339             register.  (Yukihiro Nakadaira)
4340 Files:      src/getchar.c, src/ops.c, src/proto/getchar.pro
4342 Patch 7.0.208 (after 7.0.171 and 7.0.180)
4343 Problem:    VMS: changes to path handling cause more trouble than they solve.
4344 Solution:   Revert changes.
4345 Files:      src/buffer.c, src/memline.c, src/os_unix.c
4347 Patch 7.0.209
4348 Problem:    When replacing a line through Python the cursor may end up beyond
4349             the end of the line.
4350 Solution:   Check the cursor column after replacing the line.
4351 Files:      src/if_python.c
4353 Patch 7.0.210
4354 Problem:    ":cbuffer" and ":lbuffer" always fail when the buffer is modified.
4355             (Gary Johnson)
4356 Solution:   Support adding a !. (Yegappan Lakshmanan)
4357 Files:      runtime/doc/quickfix.txt, src/ex_cmds.h
4359 Patch 7.0.211
4360 Problem:    With ":set cindent noai bs=0" using CTRL-U in Insert mode will
4361             delete auto-indent.  After ":set ai" it doesn't.
4362 Solution:   Also check 'cindent' being set. (Ryan Lortie)
4363 Files:      src/edit.c
4365 Patch 7.0.212
4366 Problem:    The GUI can't be terminated with SIGTERM. (Mark Logan)
4367 Solution:   Use the signal protection in the GUI as in the console, allow
4368             signals when waiting for 100 msec or longer.
4369 Files:      src/ui.c
4371 Patch 7.0.213
4372 Problem:    When 'spellfile' has two regions that use the same sound folding
4373             using "z=" will cause memory to be freed twice. (Mark Woodward)
4374 Solution:   Clear the hashtable properly so that the items are only freed once.
4375 Files:      src/spell.c
4377 Patch 7.0.214
4378 Problem:    When using <f-args> in a user command it's not possible to have an
4379             argument end in '\ '.
4380 Solution:   Change the handling of backslashes. (Yakov Lerner)
4381 Files:      runtime/doc/map.txt, src/ex_docmd.c
4383 Patch 7.0.215 (extra)
4384 Problem:    Mac: Scrollbar size isn't set.  Context menu has disabled useless
4385             Help entry.  Call to MoreMasterPointers() is ignored.
4386 Solution:   Call SetControlViewSize() in gui_mch_set_scrollbar_thumb().  Use
4387             kCMHelpItemRemoveHelp for ContextualMenuSelect().  Remove call to
4388             MoreMasterPointers(). (Nicolas Weber)
4389 Files:      src/gui_mac.c
4391 Patch 7.0.216
4392 Problem:    ":tab wincmd ]" does not open a tab page. (Tony Mechelynck)
4393 Solution:   Copy the cmdmod.tab value to postponed_split_tab and use it.
4394 Files:      src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c
4396 Patch 7.0.217
4397 Problem:    This hangs when pressing "n": ":%s/\n/,\r/gc". (Ori Avtalion)
4398 Solution:   Set "skip_match" to advance to the next line.
4399 Files:      src/ex_cmds.c
4401 Patch 7.0.218
4402 Problem:    "%B" in 'statusline' always shows zero in Insert mode. (DervishD)
4403 Solution:   Remove the exception for Insert mode, check the column for being
4404             valid instead.
4405 Files:      src/buffer.c
4407 Patch 7.0.219
4408 Problem:    When using the 'editexisting.vim' script and a file is being
4409             edited in another tab page the window is split.  The "+123"
4410             argument is not used.
4411 Solution:   Make the tab page with the file the current tab page.  Set
4412             v:swapcommand when starting up to the first "+123" or "-c" command
4413             line argument.
4414 Files:      runtime/macros/editexisting.vim, src/main.c
4416 Patch 7.0.220
4417 Problem:    Crash when using winnr('#') in a new tab page. (Andy Wokula)
4418 Solution:   Check for not finding the window.
4419 Files:      src/eval.c
4421 Patch 7.0.221
4422 Problem:    finddir() uses 'path' by default, where "." means relative to the
4423             current file.  But it works relative to the current directory.
4424             (Tye Zdrojewski)
4425 Solution:   Add the current buffer name to find_file_in_path_option() for the
4426             relative file name.
4427 Files:      runtime/doc/eval.txt, src/eval.c
4429 Patch 7.0.222
4430 Problem:    Perl indenting using 'cindent' works almost right.
4431 Solution:   Recognize '#' to start a comment. (Alex Manoussakis)  Added '#'
4432             flag in 'cinoptions'.
4433 Files:      runtime/doc/indent.txt, src/misc1.c
4435 Patch 7.0.223
4436 Problem:    Unprintable characters in completion text mess up the popup menu.
4437             (Gombault Damien)
4438 Solution:   Use strtrans() to make the text printable.
4439 Files:      src/charset.c, src/popupmnu.c
4441 Patch 7.0.224
4442 Problem:    When expanding "##" spaces are escaped twice.  (Pavol Juhas)
4443 Solution:   Don't escape the spaces that separate arguments.
4444 Files:      src/eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro
4446 Patch 7.0.225
4447 Problem:    When using setline() in an InsertEnter autocommand and doing "A"
4448             the cursor ends up on the last byte in the line. (Yukihiro
4449             Nakadaira)
4450 Solution:   Only adjust the column when using setline() for the cursor line.
4451             Move it back to the head byte if necessary.
4452 Files:      src/eval.c, src/misc2.c
4454 Patch 7.0.226
4455 Problem:    Display flickering when updating signs through the netbeans
4456             interface. (Xavier de Gaye)
4457 Solution:   Remove the redraw_later(CLEAR) call.
4458 Files:      src/netbeans.c
4460 Patch 7.0.227
4461 Problem:    Crash when closing a window in the GUI. (Charles Campbell)
4462 Solution:   Don't call out_flush() from win_free().
4463 Files:      src/window.c
4465 Patch 7.0.228
4466 Problem:    Cygwin: problem with symlink to DOS style path.
4467 Solution:   Invoke cygwin_conv_to_posix_path(). (Luca Masini)
4468 Files:      src/os_unix.c
4470 Patch 7.0.229
4471 Problem:    When 'pastetoggle' starts with Esc then pressing Esc in Insert
4472             mode will not time out. (Jeffery Small)
4473 Solution:   Use KL_PART_KEY instead of KL_PART_MAP, so that 'ttimeout' applies
4474             to the 'pastetoggle' key.
4475 Files:      src/getchar.c
4477 Patch 7.0.230
4478 Problem:    After using ":lcd" a script doesn't know how to restore the
4479             current directory.
4480 Solution:   Add the haslocaldir() function. (Bob Hiestand)
4481 Files:      runtime/doc/usr_41.txt, runtime/doc/eval.txt, src/eval.c
4483 Patch 7.0.231
4484 Problem:    When recovering from a swap file the page size is likely to be
4485             different from the minimum.  The block used for the first page
4486             then has a buffer of the wrong size, causing a crash when it's
4487             reused later.  (Zephaniah Hull)
4488 Solution:   Reallocate the buffer when the page size changes.  Also check that
4489             the page size is at least the minimum value.
4490 Files:      src/memline.c
4492 Patch 7.0.232 (extra)
4493 Problem:    Mac: doesn't support GUI tab page labels.
4494 Solution:   Add GUI tab page labels. (Nicolas Weber)
4495 Files:      src/feature.h, src/gui.c, src/gui.h, src/gui_mac.c,
4496             src/proto/gui_mac.pro
4498 Patch 7.0.233 (extra)
4499 Problem:    Mac: code formatted badly.
4500 Solution:   Fix code formatting
4501 Files:      src/gui_mac.c
4503 Patch 7.0.234
4504 Problem:    It's possible to use feedkeys() from a modeline.  That is a
4505             security issue, can be used for a trojan horse.
4506 Solution:   Disallow using feedkeys() in the sandbox.
4507 Files:      src/eval.c
4509 Patch 7.0.235
4510 Problem:    It is possible to use writefile() in the sandbox.
4511 Solution:   Add a few more checks for the sandbox.
4512 Files:      src/eval.c
4514 Patch 7.0.236
4515 Problem:    Linux 2.4 uses sysinfo() with a mem_unit field, which is not
4516             backwards compatible.
4517 Solution:   Add an autoconf check for sysinfo.mem_unit.  Let mch_total_mem()
4518             return Kbyte to avoid overflow.
4519 Files:      src/auto/configure, src/configure.in, src/config.h.in,
4520             src/option.c, src/os_unix.c
4522 Patch 7.0.237
4523 Problem:    For root it is recommended to not use 'modeline', but in
4524             not-compatible mode the default is on.
4525 Solution:   Let 'modeline' default to off for root.
4526 Files:      runtime/doc/options.txt, src/option.c
4528 Patch 7.0.238
4529 Problem:    Crash when ":match" pattern runs into 'maxmempattern'. (Yakov
4530             Lerner)
4531 Solution:   Don't free the regexp program of match_hl.
4532 Files:      src/screen.c
4534 Patch 7.0.239
4535 Problem:    When using local directories and tab pages ":mksession" uses a
4536             short file name when it shouldn't.  Window-local options from a
4537             modeline may be applied to the wrong window. (Teemu Likonen)
4538 Solution:   Add the did_lcd flag, use the full path when it's set.  Don't use
4539             window-local options from the modeline when using the current
4540             window for another buffer in ":doautoall".
4541 Files:      src/fileio.c,  src/ex_docmd.c
4543 Patch 7.0.240
4544 Problem:    Crash when splitting a window in the GUI. (opposite of 7.0.227)
4545 Solution:   Don't call out_flush() from win_alloc().  Also avoid this for
4546             win_delete().  Also block autocommands while the window structure
4547             is invalid.
4548 Files:      src/window.c
4550 Patch 7.0.241
4551 Problem:    ":windo throw 'foo'" loops forever. (Andy Wokula)
4552 Solution:   Detect that win_goto() doesn't work.
4553 Files:      src/ex_cmds2.c
4555 Patch 7.0.242 (extra)
4556 Problem:    Win32: Using "-register" in a Vim that does not support OLE causes
4557             a crash.
4558 Solution:   Don't use EMSG() but mch_errmsg().  Check p_go for being NULL.
4559             (partly by Michael Wookey)
4560 Files:      src/gui_w32.c
4562 Patch 7.0.243 (extra)
4563 Problem:    Win32: When GvimExt is built with MSVC 2005 or later, the "Edit
4564             with vim" context menu doesn't appear in the Windows Explorer.
4565 Solution:   Embed the linker manifest file into the resources of GvimExt.dll.
4566             (Mathias Michaelis)
4567 Files:      src/GvimExt/Makefile
4570 Fixes after Vim 7.1a BETA:
4572 The extra archive had CVS directories included below "farsi" and
4573 "runtime/icons".  CVS was missing the farsi icon files.
4575 Fix compiling with Gnome 2.18, undefine bind_textdomain_codeset. (Daniel
4576 Drake)
4578 Mac: "make install" didn't copy rgb.txt.
4580 When editing a compressed file while there are folds caused "ml_get" errors
4581 and some lines could be missing.  When decompressing failed option values were
4582 not restored.
4585 Patch 7.1a.001
4586 Problem:    Crash when downloading a spell file.  (Szabolcs Horvat)
4587 Solution:   Avoid that did_set_spelllang() is used recursively when a new
4588             window is opened for the download.
4589             Also avoid wiping out the wrong buffer.
4590 Files:      runtime/autoload/spellfile.vim, src/buffer.c, src/ex_cmds.c,
4591             src/spell.c
4593 Patch 7.1a.002 (extra)
4594 Problem:    Compilation error with MingW.
4595 Solution:   Check for LPTOOLTIPTEXT to be defined.
4596 Files:      src/gui_w32.c
4599 Fixes after Vim 7.1b BETA:
4601 Made the Mzscheme interface build both with old and new versions of Mzscheme,
4602 using an #ifdef. (Sergey Khorev)
4603 Mzscheme interface didn't link, missing function.  Changed order of libraries
4604 in the configure script.
4606 Ruby interface didn't compile on Mac.  Changed #ifdef. (Kevin Ballard)
4608 Patch 7.1b.001 (extra)
4609 Problem:    Random text in a source file.  No idea how it got there.
4610 Solution:   Delete the text.
4611 Files:      src/gui_w32.c
4613 Patch 7.1b.002
4614 Problem:    When 'maxmem' is large there can be an overflow in computations.
4615             (Thomas Wiegner)
4616 Solution:   Use the same mechanism as in mch_total_mem(): first reduce the
4617             multiplier as much as possible.
4618 Files:      src/memfile.c
4622  vim:tw=78:ts=8:ft=help:norl: