version5.txt ForVim version 9.2. Last change: 2026 Feb 14VIM REFERENCE MANUAL by Bram MoolenaarWelcome to Vim Version 5.0!This document lists the differences between Vim 4.x and Vim 5.0.Although 5.0is mentioned here, thisis also for version 5.1, 5.2, etc.Seevi_diff.txt for an overview of differences betweenVi and Vim 5.0.Seeversion4.txt for differences between Vim 3.0 and Vim 4.0.INCOMPATIBLE:incompatible-5Default value for'compatible' changedcp-defaultTextformatting command "Q" changedQ-command-changedCommand-line arguments changedcmdline-changedAutocommands are keptautocmds-keptUse of'hidden' changedhidden-changedTextobject commands changedtext-objects-changedX-Windows Resources removedx-resourcesUse of$VIM$VIM-useUse of$HOME forMS-DOS andWin32$HOME-useTags file format changedtags-file-changedOptions changedoptions-changedCTRL-B inInsert mode gonei_CTRL-B-goneNEW FEATURES:new-5Syntax highlightingnew-highlightingBuilt-inscript languagenew-scriptPerl andPython supportnew-perl-pythonWin32GUI versionadded-win32-GUIVMS versionadded-VMSBeOS versionadded-BeOSMacintoshGUI versionadded-MacMoreVi compatiblemore-compatibleRead input from stdinread-stdinRegularexpression patternsadded-regexpOverloadedtagstag-overloadedNew commandsnew-commandsNewoptionsadded-optionsNew command-line argumentsadded-cmdline-argsVarious additionsadded-variousIMPROVEMENTSimprovements-5COMPILE TIME CHANGEScompile-changes-5BUG FIXESbug-fixes-5VERSION 5.1version-5.1Changedchanged-5.1Addedadded-5.1Fixedfixed-5.1VERSION 5.2version-5.2Long lines editablelong-linesFile browser addedfile-browser-5.2Dialogs addeddialogs-addedPopup menu addedpopup-menu-addedSelect mode addednew-Select-modeSession files addednew-session-filesUser definedfunctions and commandsnew-user-definedNew interfacesinterfaces-5.2New portsports-5.2Multi-byte supportnew-multi-byteNewfunctionsnew-functions-5.2Newoptionsnew-options-5.2NewEx commandsnew-ex-commands-5.2Changedchanged-5.2Addedadded-5.2Fixedfixed-5.2VERSION 5.3version-5.3Changedchanged-5.3Addedadded-5.3Fixedfixed-5.3VERSION 5.4version-5.4Runtime directory introducednew-runtime-dirFiletype introducednew-filetype-5.4Vimscript line continuationnew-line-continuationImproved session filesimproved-sessionsAutocommands improvedimproved-autocmds-5.4Encryptionnew-encryptionGTKGUI portnew-GTK-GUIMenu changesmenu-changes-5.4Viminfo improvedimproved-viminfoVarious new commandsnew-commands-5.4Various newoptionsnew-options-5.4Vim scriptsnew-script-5.4Avoidhit-enter promptavoid-hit-enterImprovedquickfiximproved-quickfixRegular expressionsregexp-changes-5.4Changedchanged-5.4Addedadded-5.4Fixedfixed-5.4VERSION 5.5version-5.5Changedchanged-5.5Addedadded-5.5Fixedfixed-5.5VERSION 5.6version-5.6Changedchanged-5.6Addedadded-5.6Fixedfixed-5.6VERSION 5.7version-5.7Changedchanged-5.7Addedadded-5.7Fixedfixed-5.7VERSION 5.8version-5.8Changedchanged-5.8Addedadded-5.8Fixedfixed-5.8==============================================================================INCOMPATIBLEincompatible-5Default value for'compatible' changedcp-default--------------------------------------Vim version 5.0 tries to be moreVi compatible. This helps people who use Vimasa drop-in replacement for Vi, but causes some things to be incompatiblewith version 4.x.In version 4.x the default value for the'compatible' option was off. Now thedefaultis on. The first thing you will noticeis that the "u" command undoesitself. Other side effects will be that mappings may work differently or notworkat all.Sincea lot of people switching from Vim 4.x to 5.0 will find this annoying,the'compatible' optionis switched off if Vim findsavimrc file. Thisisabit of magic to make sure that 90% of the Vim users will not be bitten bythis change.What does this mean?- If you prefer to run in'compatible' mode and don't haveavimrc file, you don't have todo anything.- If you prefer to run in'nocompatible' mode anddo haveavimrc file, you don't have todo anything.- If you prefer to run in'compatible' mode anddo haveavimrc file, you shouldput this line first in yourvimrc file::set compatible- If you prefer to run in'nocompatible' mode and don't haveavimrc file, you cando one of the following:- Create an emptyvimrc file (e.g.: "~/.vimrc" for Unix).- Put this command in your.exrc file or $EXINIT::set nocompatible- Start Vim with the "-N" argument.If you are new toVi and Vim, using'nocompatible'is strongly recommended,becauseVi hasa lot of unexpected side effects, which are avoided by thissetting. See'compatible'.If you like some things from'compatible' and some not, you can tune thecompatibility with'cpoptions'.When you invoke Vimas "ex" or "gex", Vim always starts in compatible mode.Textformatting command "Q" changedQ-command-changed-----------------------------------The "Q" command formerly formatted lines to the width the'textwidth' optionspecifies. The command for thisis now "gq" (seegq for more info). Thereason for this changeis that "Q"is the standardVi command to enter "Ex"mode, and Vim now does in fact have an "Ex" mode (seeQ for more info).If you still want to use "Q" for formatting, use this mapping::noremap Q gqAnd if you also want to use the functionality of "Q"::noremap gQ QCommand-line arguments changedcmdline-changed------------------------------Command-line file-arguments and option-arguments can now be mixed. You cangiveoptions after the file names. Example: vim main.c -gThisis not possible when editinga file that starts witha '-'. Use the "--"argument then---: vim -g -- -main.c"-v" now means to startEx inVi mode, use "-R" for read-only mode.old: "vim-v file"-vnew: "vim-R file"-R"-e" now means to startVi inEx mode, use "-q" for quickfix.old: "vim-e errorfile"-enew: "vim-q errorfile"-q"-s" inEx mode now means to run in silent (batch) mode.-s-ex"-x" reserved for crypt, use "-f" to avoidstartinga new CLI (Amiga).old: "vim-x file"-xnew: "vim-f file"-fVim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executedonly the last one."-n" now overrides any setting for'updatecount' inavimrc file, but not inagvimrc file.Autocommands are keptautocmds-kept---------------------Before version 5.0,autocommands with the same event, file name pattern, andcommand could appear only once. This was fine for simpleautocommands (likesetting option values), but for more complicated autocommands, where the samecommand might appear twice, this restriction caused problems. ThereforeVim stores allautocommands and keeps them in the order that they are defined.The most obvious side effect of this changeis that when you sourceavimrcfile twice, theautocommands init will be defined twice. To avoid this,doone of these:- Remove anyautocommands that might already be defined before defining them. Example::au! * *.ext:au BufEnter *.ext ...- Put theautocommands inside an ":if" command. Example:if !exists("did_ext_autocmds") let did_ext_autocmds = 1 autocmd BufEnter *.ext ...endif- Put yourautocommands ina differentautocommand group so you can remove them before defining them:augroup:augroup uncompress au! au BufReadPost *.gz ...augroup ENDUse of'hidden' changedhidden-changed-----------------------In version 4.x, only some commands used the'hidden' option. Now all commandsusesit whenevera buffer disappears froma window.Previously you coulddo ":buf xxx" ina changed buffer and that buffer wouldthen become hidden. Now youmust set the'hidden' option for this to work.The new behavioris simpler: whether Vim hidesbuffers no longer depends onthe specific command that you use.- with'hidden' not set, you never get hidden buffers. Exceptions are the ":hide" and ":close!" commands and, in rare cases, where you would otherwise lose changes to the buffer.- With'hidden' set, you almost never unloada buffer. Exceptions are the ":bunload" or ":bdel" commands.":buffer" now supportsa "!":abandon changes in current buffer. Sodo":bnext", ":brewind", etc.Textobject commands changedtext-objects-changed----------------------------Textobject commands have new names. This allows more textobjects and makescharacters available for otherVisual mode commands. Since no more singlecharacters were available, textobjects names now require two characters.The first oneis always 'i' or 'a'.OLDNEWaawawordv_awAaWaWORDv_aWsasasentencev_aspapaparagraphv_apSaba () blockv_abPaBa{} blockv_aBThereis another set of textobjects that starts with "i", for "inner". Theseselect the same objects, but exclude white space.X-Windows Resources removedx-resources--------------------------Vim no longer supports the followingX resources:- boldColor- italicColor- underlineColor- cursorColorVim now uses highlight groups to set colors. This avoids the confusion ofusingabold Font, which would implya certain color. See:highlight andgui-resources.Use of$VIM$VIM-use-----------Vim now uses the VIM environment variable to find all Vim system files. Thisincludes the global vimrc, gvimrc, andmenu.vim files and all on-linehelpandsyntax files. See$VIM. Starting with version 5.4,$VIMRUNTIME canalso be used.For Unix, Vim setsa default value for$VIM when doing "makeinstall".When$VIMis not set, its default valueis the directory from'helpfile',excluding "/doc/help.txt".Use of$HOME forMS-DOS andWin32$HOME-use---------------------------------TheMS-DOS andWin32 versions of Vim now first check$HOME when searching foravimrc orexrc file and for reading/storing theviminfo file. Previously Vimused$VIM for these systems, but this causes trouble ona system with severalusers. Now Vim uses$VIM only when$HOMEis not set or the fileis not foundin $HOME. See_vimrc.Tags file format changedtags-file-changed------------------------Only tabs are allowed to separate fields inatags file. This allows forspaces ina file name andis stillVi compatible. In previous versions ofVim, any whitespace was allowed to separate the fields. If you havea filewhich doesn't usea singletab between fields, edit thetags file and executethis command::%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/Options changedoptions-changed---------------The default value of'errorfile' has changed from "errors.vim" to "errors.err".The reasonis that only Vim scripts should have the ".vim" extensions.The ":make" command no longer uses the'errorfile' option. This prevents theoutput of the ":make" command from overwritinga manually saved error file.":make" uses the'makeef' option instead. This also allows for generatingaunique name, to prevent concurrently running ":make" commands from overwritingeach other's files.With'insertmode' set,a few more things change:-<Esc> inNormal mode goes toInsert mode.-<Esc> inInsert mode doesn't leaveInsert mode.- When doing ":set im",go toInsert mode immediately.Vim considersa buffer to be changed when the'fileformat' (formerly the'textmode' option)is different from the buffer's initial format.CTRL-B inInsert mode gonei_CTRL-B-gone--------------------------When Vim was compiled with the+rightleft feature, you could useCTRL-B totoggle the'revins' option. Unfortunately, some people hit the 'B' keyaccidentally when trying to typeCTRL-V orCTRL-N and then didn't know how toundo this. Since toggling the'revins' option can easily be done with themapping below, this use of theCTRL-B keyis disabled. You can still use theCTRL-_ key for thisi_CTRL-_. :imap <C-B> <C-O>:set revins!<CR>==============================================================================NEW FEATURESnew-5Syntax highlightingnew-highlighting-------------------Vim now hasa very flexible way to highlighting just about any type of file.Seesyntax. Summary: :syntax onColors and attributes can be set for thesyntax highlighting, and also forother highlighted items with the ':' flag in the'highlight' option. Allhighlighted items are assigneda highlight group whichspecifies theirhighlighting. See:highlight. The default colors have been improved.You can use the "Normal" group to set the default fore/background colors foracolor terminal. For the GUI, you can use this group to specify the font, too.The "2html.vim"script can be used to convert any file that hassyntaxhighlighting to HTML. The colors will be exactly the sameas how you see themin Vim. Witha HTML viewer you can also print the file with colors.Built-inscript languagenew-script------------------------A few extra commands and anexpression evaluator enable you to write simplebut powerful scripts. Commands include ":if" and ":while". Expressions canmanipulate numbers and strings. You can use the '=' register toinsertdirectly the result of an expression. Seeexpression.Perl andPython supportnew-perl-python-----------------------Vim can callPerl commands with ":perldo", ":perl", etc. Seeperl.Patches made by Sven Verdoolaege and Matt Gerassimoff.Vim can callPython commands with ":python" and ":pyfile". Seepython.Both of these are only available when enabledat compile time.Win32GUI versionadded-win32-GUI-----------------TheGUI has been ported toMS-Windows 95 and NT. All the features of theX11GUI are available to Windows users now.gui-w32This also fixes problems with running theWin32 console version under Windows95, where console support has always been bad.Thereis alsoa version that supports OLE automation interface.if_ole.txtVim can be integrated with Microsoft Developer Studio using the VisVim DLL.Itis possible to producea DLL version ofgvim with Borland C++ (Aaron).VMS versionadded-VMS-----------Vim can now also be used onVMS systems. Port done by Henk Elbers.This has not been tested much, butit should work.Sorry, no documentation!BeOS versionadded-BeOS------------Vim can be used onBeOS systems (including the BeBox). (Olaf Seibert)Seeos_beos.txt.MacintoshGUI versionadded-Mac---------------------Vim can now be used on the Macintosh. (Dany St-Amant)It has not been tested much yet, be careful!Seeos_mac.txt.MoreVi compatiblemore-compatible------------------Thereis nowa realEx mode. Started with the "Q" command, or by calling theexecutable "ex" or "gex".Ex-modeAlways allow multi-level undo, also inVi compatible mode. When the 'u' flagin'cpoptions'is included,CTRL-Ris used forrepeating theundo orredo(like "." in Nvi).Read input from stdinread-stdin---------------------When using the "-" command-line argument, Vim reads its text input from stdin.This can be used for putting Vimat theend ofa pipe: grep "^a.*" *.c | vim -See--.Regularexpression patternsadded-regexp---------------------------Added specifyinga range for the number of matches of an atom: "\{a,b}"./\{Added the "shortest match"regexp "\{-}" (Webb).Added "\s", matchesa white character. Can replace "[ \t]"./\sAdded "\S", matchesa non-white character. Can replace "[^ \t]"./\SOverloadedtagstag-overloaded---------------When usinga language like C++, there can be severaltags for the sametagname. Commands have been added to be able to jump to any of theseoverloaded tags::tselectList matching tags, and jump to one of them.:stselect Idem, and split window.g_CTRL-] Do ":tselect" with theword under the cursor.After ":ta{tagname}" with multiple matches::tnext Go to next matching tag.:tprevious Go to previous matching tag.:trewind Go to first matching tag.:tlast Go to last matching tag.The ":tag" command now also accepts wildcards. When doing command-linecompletion on tags, case-insensitive matchingis also available (at the end).New commandsnew-commands------------:amenu Definemenus for all modes,insertingaCTRL-O forInsertmode, ESC forVisual andCTRL-C forCmdline mode. "amenu"isused for the defaultmenus and theSyntax menu.:augroup Set group to be used for following autocommands. Allows thegrouping ofautocommands to enable deletion ofa specificgroup.:crewind Go to first error.:clast Go to last error.:doautoall Executeautocommands for all loaded buffers.:echo Echo its argument, whichis an expression. Can be used todisplaymessages which include variables.:execute Execute its argument, whichis an expression. Can be used tobuilt up anEx command with anything.:hide Works like ":close".:if Conditional execution, for built-inscript language.:intro Show introductory message. Thisis always executed when Vimis started without file arguments.:let Assigna value to an internal variable.:omap Map only in operator-pending mode. Makesit possible to maptext-object commands.:redir Redirect output ofmessages toa file.:update Write when buffer has changed.:while While-loop for built-inscript language.Visual mode:v_O "O" inVisual block mode, moves the cursor to the other cornerhorizontally.v_D "D" inVisual block mode deletes tillend of line.Insert mode:i_CTRL-] Triggers abbreviation, withoutinserting any character.Newoptionsadded-options-----------'background'Used for selecting highlight color defaults. Also used in"syntax.vim" for selecting thesyntax colors. Often setautomatically, depending on theterminal used.'complete'Specifies howInsert mode completion works.'eventignore'Makesit possible to ignoreautocommands temporarily.'fileformat'Current file format. Replaces'textmode'.'fileformats'Possible file formats. Replaces'textauto'.Newis that this also supportsMacintosh format:A single<CR>separates lines.The default for'fileformats' for MS-DOS,Win32 andOS/2is"dos,unix", also when'compatible' set.Unix type filesdidn't work anyway when'fileformats' was empty.'guicursor'Set the cursor shape and blinking invarious modes.Defaultis to adjust the cursor forInsert andReplace mode,and when anoperatoris pending. Blinkingis default on.'fkmap'Farsi key mapping.'hlsearch'Highlight all matches with the last used search pattern.'hkmapp'Phonetic Hebrew mapping. (Ilya Dogolazky)'iconstring'Define the name of the icon, when not empty. (Version 5.2: thestringis used literally,a newline can be used to make twolines.)'lazyredraw'Don't redraw the screen while executing macros,registers orother not typed commands.'makeef'Errorfile to be used for ":make". "##"is replaced withaunique number. Avoids that two Vim sessions overwrite eachothers errorfile. TheUnix defaultis "/tmp/vim##.err"; forAmiga "t:vim##.Err, for others "vim##.err".'matchtime'1/10s ofa second to showa matching paren, when'showmatch'is set. Like Nvi.'mousehide'Hide mouse pointer inGUI when typing text.'nrformats'Defines what bases Vim will consider for numbers when usingtheCTRL-A andCTRL-X commands. Default: "hex,octal".'shellxquote'Add extraquotes around the whole shell command, includingredirection.'softtabstop'Make typing behave like tabstopis setat this value, withoutchanging the value of'tabstop'. Makesit moreeasy to keep'ts'at 8, while still getting four spaces fora<Tab>.'titlestring'String for thewindow title, when not empty. (Version 5.2:thisstringis used literally,a newline can be used to maketwo lines.)'verbose'Level of verbosity. Makesit possible to show which .vimrc,.exrc, .viminfo files etc. are used for initializing. Alsoto showautocommands that are being executed. Can also be setby using the "-V" command-line argument.New command-line argumentsadded-cmdline-args---------------------------U Set thegvimrc file to be used. Like "-u" for the vimrc.-V Set the'verbose' option. E.g. "vim -V10".-N Start in non-compatible mode.-C Start in compatible mode.-Z Start in restricted mode, disallow shell commands. Can alsobe done by calling the executable "rvim".-h Show usage information and exit.Various additionsadded-various-----------------Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim canbe usedas an editor for SNiFF. No documentation available...For producinga bug report, thebugreport.vimscript has been included.Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file"bugreport.txt" in the current directory.bugsAdded range to ":normal" command. Now you can repeat the same command foreach line in the range.:normal-rangeIncluded support for theFarsi language (Shiran). Only when enabledatcompile time. Seefarsi.==============================================================================IMPROVEMENTSimprovements-5Performance:- When'showcmd' was set, mappings would execute much more slowly because the output would be flushed very often. Helpsa lot when executing the "life" macros with'showcmd' set.- Included patches for binary searching intags file (David O'Neill). Can be disabled by resetting the'tagbsearch' option.- Don't update the ruler whenrepeatinginsert (slowedit downa lot).- For Unix, file name expansionis now done internally instead ofstartinga shell for it.- Expand environmentvariables with expand_env(), instead of calling the shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim"a LOT faster.- Reduced output for cursor positioning: Use CR-LF for moving to first few columns in next few lines; Don't output CR twice when using termios.- Optimized cursor positioning. Use CR, BS and NL when it's shorter than absolute cursor positioning.- Disable redrawing whilerepeatinginsert "1000ii<Esc>".- Made "d$" or "D" for long linesa lot faster (delete all charactersat once, instead of one by one).- Access option table by first letter, instead of searching from start.- Made setting special highlighting attributesa lot faster by using highlight_attr[], instead of searching in the'highlight' string.- Don't show the mode when redrawingis disabled.- When setting an option, only redraw the screen when required.- Improved performance ofEx commands by usinga lookup table for the first character.Options:'cinoptions'Added 'g' flag, for C++ scope declarations.'cpoptions'Added 'E' flag: Disallow yanking, deleting, etc. empty textarea. Defaultis to allow empty yanks. When 'E'is included,"y$" in an empty line nowis handledas an error (Vicompatible).Added 'j' flag: Only add two spaces fora join aftera '.',not aftera '?' or '!'.Added 'A' flag: don't giveATTENTION message.Added 'L' flag: When not included, and'list'is set,'textwidth'formatting works like'list'is not set.Added 'W' flag: Let ":w!" behave like Vi: don't overwritereadonly files, ora file owned by someone else.'highlight'Added '@' flag, for '@' characters after the last line on thescreen, and '$'at theend of the line when'list'is set.Added 'i' flag: Set highlighting for'incsearch'. Defaultuses "IncSearch" highlight group, whichis linked to "Visual".Disallow 'h' flag in'highlight' (wasn't used anymore since3.0).'guifont'Win32GUI only: When set to "*" brings upa font requester.'guipty'Default on, because so many people need it.'path'Can contain wildcards, and "**" for searchinga whole tree.'shortmess'Added 'I' flag to avoid theintro message.'viminfo'Added '%' flag: Store bufferlist inviminfo file.- Increased defaults for'maxmem' and'maxmemtot' forUnix and Win32. Most machines have much more RAM now that prices have dropped.- Implemented ":set all&", set alloptions to their default value.:setSwap file:- Don't createa swap file fora readonly file. Then create one on the first change. Also createa swapfile when the amount of memory usedis getting too high.swap-file- Make swap file "hidden", if possible. OnUnix thisis done by prependinga dot to the swap file name. When long file names are used, the DJGPP andWin32 versions also prependa dot, incasea file ona mountedUnix file systemis edited.:swapname OnMSDOS the hidden file attributeis NOT set, because this causes problems with share.exe.-'updatecount' always defaults to non-zero, also forVi compatible mode. This means thereisa swap file, which can be used for recovery.Tags:- Includedctags 2.0 (Darren Hiebert). Thesyntax for statictags changed from{tag}:{fname}{fname}{command} to{tag}{fname}{command};"file: Whichis both faster to parse, shorter andVi compatible. The old formatis also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS).tags-file-format- Completion oftags now also includes statictags for other files,at the end.- Included "shtags" from Stephen Riehm.- When findinga matching tag, but the file doesn't exist, continue searching for another match. Helps when using the sametags file (with links) for different versions of source code.- Giveatag witha global match in the current filea higher priority thana global match in another file.Included xxd version V1.8 (Juergen Weigert).Autocommands:-VimLeaveautocommands are executed afterwriting theviminfo file, instead of before.VimLeave- Allowchangingautocommands while executing them. This allows for self-modifying autocommands. (idea from Goldberg)- When usingautocommands with two or more patterns, could not split ":if/:endif" over two lines. Now all matchingautocommands are executed in one do_cmdline().- Autocommands no longer change the command repeated with ".".- Search patterns are restored after executing autocommands. This avoids that the'hlsearch' highlightingis messed up by autocommands.- When trying to execute an autocommand, also try matching thepattern with the short file name. Helps when short file nameis different from full file name (expanded symbolic links).autocmd-patterns- Made the output of ":autocmd" shorter and look better.- Expand<sfile> in an ":autocmd" whenitis defined.<sfile>- Added "nested" flag to ":autocmd", allows nesting.autocmd-nested- Added[group] argument to ":autocmd". Overrides the currently set group.autocmd-groups- new events:BufUnload beforea bufferis unloadedBufDelete beforea bufferis deleted from the bufferlistFileChangedShell whena file's modification time has changed afterexecutinga shell commandUser user-definedautocommand- When'modified' was set byaBufRead* autocommand,it was reset again afterwards. Now the ":set modified"is remembered.GUI:- ImprovedGUI scrollbar handling when redrawingis slower than the scrollbar events are generated.- "vim-u NONE" now also stops loading the.gvimrc and otherGUI inits.-u Use "-U" to use anothergvimrc file.-U- HandleCTRL-C for external command, also for systems where "setsid()"is supported.- Whenstarting the GUI, restrict thewindow size to the screen size.- The defaultmenus are read from $VIMRUNTIME/menu.vim. This allows fora customized default menu.menu.vim- Improved the default menus. Added File/Print,a Window menu,Syntax menu, etc.- Added priority to the ":menu" command. Now each menu can beput ina place where you want it, independent of the order in which themenus are defined.menu-priorityGivea warning in theintro screen when running theWin32 console version onWindows 95 because there are problems using this version under Windows 95.win32-problemsAdded 'e' flag for ":substitute" command: Don't complain when not findingamatch (Campbell).:sWhen using search commands ina mapping, only the last oneis kept in thehistory. Avoids that thehistoryis trashed by long mappings.Ignore characters after "ex", "view" and "gvim" when checkingstartup mode.Allows the use of "gvim5" et. al.gvim "gview" starts theGUI in readonlymode.gviewWhen resizing windows, the cursoris kept in the same relative position, ifpossible. (Webb)":all" and ":ball" no longer close and then openawindow for the same buffer.Avoids losing options, jumplist, and other info."-f" command-line argumentis now ignored if Vim was compiled without GUI.-fInVisual block mode, the right mouse button picks up the nearest corner.Changed default mappings forDOS et al. Removed the DOS-specific mappings,only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del andShift-Del.Changed the numbers in the output of ":jumps", so you can see where{count}CTRL-O takes you.:jumpsUsing "~" for$HOME now works for all systems.$HOMEUnix: Besides usingCTRL-C, also use the INTR character from the tty settings.Somebody has INTR set to DEL.Allowa<NL> ina ":help" command argument toend thehelp command, so anothercommand can follow.Doing "%" ona line that starts with " #if" didn't jump to matching "#else".Don't recognize "#if", "#else" etc. for '%' when'cpo' contains the '%' flag.%Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improvedins-completion:-'complete' option added.- When'nowrapscan'is set, and no match found, report the searched direction in the error message.- RepeatingCTRL-X commands adds following words/lines after the match.- When adding-expansions, accept single character matches.- Made repeatedCTRL-XCTRL-N not break undo, and "." repeats the whole insertion. Also fixes not being able tobackspace overaword that has been inserted withCTRL-N.Whencopying characters inInsert mode from previous/next line, withCTRL-E orCTRL-Y,'textwidth'is no longer used.i_CTRL-ECommands that move in the arglist, like ":n" and ":rew", keep the old cursorposition of the file (thisis mostlyVi compatible).Vim now remembers the'< and'> marks for each buffer. This fixesa problemthata line-delete in one buffer invalidated the'< and'> marks in anotherbuffer.'<For MSDOS,Unix and OS/2: When$VIM not set, use the path from the executable.When using the executable path for $VIM, remove "src/" when present. Shouldmake Vim find the docs andsyntax files whenitis run directly aftercompiling.$VIMWhen quittingVisual mode with<Esc>, the cursorisputat start of theVisualarea (like after executing an operator).Win32 andUnix version: Removed 1100 character limit on external commands.Added possibility to includeaspace ina ":edit +command" argument, byputtingabackslash before it.+cmdAfter recovery,BufReadPostautocommands are applied.:recoverAdded color support for "os2ansi",OS/2 console. (Slootman)Allow "%:p:h" when%is empty.:_%Included "<sfile>": file name from the ":source" command.<sfile>Added "<Bslash>" special character. Helps for avoiding multiple backslashesin mappings and menus.Inahelp window,adouble-click jumps to thetag under the cursor (likeCTRL-]).<C-Left> and<C-Right> now work like<S-Left> and<S-Right>, moveawordforward/backward (Windows compatible).<C-Left>Removed the requirement fora ":version" command ina.vimrc file. It wasn'tused for anything. You can use ":if" to handle differences between versions.:versionFor MS-DOS,Win32 and OS/2: When comparing file names for autocommands, don'tmakea difference between '/' and '\' for path separator.Newtermcap options:"mb": blink. Can only be used by assigningit to one of the other highlight options.t_mb"bc":backspace character.t_bc"nd": Used for moving the cursor right in the GUI, to avoid removing one line of pixels from the lastbold character.t_nd"xs": highlighting not erased by overwriting, for hpterm. Combined with'weirdinvert'.Visual mode works onhpterm now.t_xsUnix: Set time of patch andbackup file sameas original file. (Hiebert).Amiga: In QuickFix mode no longer opens another window. Shell commands can beused now.Added decmouse patches from David Binette. Can now use Dec and Netterm mouse.But only when enabledat compile time.Added '#' register: Alternate file namequote#. Display '#' register with":dis" command.:displayRemoved ':' from'isfname' default for Unix. Check for "://" ina file nameanyway. Also check for ":\\", for MS-DOS.Addedcount to "K"eyword command, when'keywordprg'is "man",is inserted inthe man command. "2K" results in "!man 2<cword>".KWhen using "gf" ona relative path name, remove "../" from the file name, likeit's done for file names in thetags file.gfWhen finishing recording, don't make the recorded register the defaultputregister.When using "!!", don'tput ":5,5!" on the command-line, but ":.!". And someother enhancements to replace the line number with "." or "$" when possible.MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent:.vimrc/_vimrc and .viminfo/_viminfoFor systems wherecase doesn't matter in file names (MSDOS, Amiga), ignorecase whilesorting file names. For buffer names too.When reading from stdin doesn't work, read from stderr (helps for "foo | xargsvim").32 bitMS-DOS version: Replaced csdpmi3 by csdpmi4.Changed<C-Left> and<C-Right> to skipaWORD instead ofa word.Warning for changed modified time when overwritinga file now also works onother systems than Unix.Unix: Changed the defaults for configure to be the sameas the defaults forMakefile: include GUI, Perl, and Python.Some versions ofMotif require "-lXpm". Added check for this in configure.Don't add "-L/usr/lib" to the link line, causes problems ona few systems.==============================================================================COMPILE TIME CHANGEScompile-changes-5When compiling, allowa choice for minimal, normal or maximal features in aneasy way, bychanginga single line in src/feature.h.The DOS16 version has been compiled with minimal features to avoid runningout of memory too quickly.The Win32, DJGPP, andOS/2 versions use maximal features, because they haveenough memory.TheAmiga versionis available with normal and maximal features.Added "make test" toUnix version Makefile. Allows fora quick check if most"normal" commands work properly. Also testsa few specific commands.Added setlocale() with codepage support for DJGPP version.autoconf:- Added autoconf check for -lXdmcp.- Included check for -lXmu, no longer needed to edit the Makefile for this.- Switched to autoconf 2.12.- Added configure check for <poll.h>. Seems to be needed when includingPerl on Linux?- termlibis now checked before termcap.- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added vim_stricmp() for when there's no library function for stricmp().- Use "datadir" in configure, instead of our own check for HELPDIR.Removed "make proto" from Makefile.manx. Could not makeit work withouta lotof #ifdefs.Removed "proto/" from paths in proto.h. Needed for theMac port.Drastically changed Makefile.mint. Nowit includes theUnix Makefile.Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor)All source files are now edited witha tabstop of 8 instead of 4, whichisbetter when debugging and using other tools.'softtabstop'is set to 4, tomake editing easier.Unix: Added "link.sh" script, which removesa few unnecessary libraries fromthe link command.Don't use HPUXdigraphs by default, but only when HPUX_DIGRAPHSis defined.digraphs-default==============================================================================BUG FIXESbug-fixes-5Note:Some of these fixes may only apply to test versions which werecreated after version 4.6, but before 5.0.When doing ":bdel", try going to the next loaded buffer. Don't rewind to thestart of the buffer list.mch_isdir() forUnix returnedTRUE for "" on some systems.Win32:'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't usebackslashes in the temp file names.On linux, witha FAT file system, could get spurious "file xxx changed sinceediting started" messages, because the timeis rounded off to two secondsunexpectedly.Crash in GUI, when selectingaword (double click) and then extend until anempty line.For systems where isdigit() can't handle characters> 255, get_number() causeda crash when moving the mouse during the prompt for recovery.InInsert mode, "CTRL-OP" left the cursor on the last inserted character.Now the cursoris left after the last putted character.Whenquickfix found an error type other than 'e' or 'w',it was never printed.A setting for'errorfile' ina.vimrc overruled the "-q errorfile" argument.Some systems createa file when generatinga temp file name. Filtering wouldthen createabackup file for this, which was never deleted. Now nobackupfileis made when filtering.simplify_filename() could removea ".." aftera link, resulting in the wrongfile name. Made simplify_filename also work for MSDOS. Don't useit forAmiga, sinceit doesn't have "../".otherfile() was unreliable when using links. Could think that reading/writingwas fora different file, whenit was the same.Pasting with mouse inReplace mode didn't replace anything.Window height computed wrong when resizingawindow with anautocommand (couldcausea crash).":s!foo!bar!" wasn't possible (Vi compatible).do_bang() freed memory twice when called recursively, because ofautocommands(test11). Thanks to Electric Fence!"v$d" on an empty line didn't remove the "-- VISUAL--" mode message from thecommand-line, and inverted the cursor.":mkexrc" didn't check for failure to open the file, causinga crash.(Felderhoff).Win32 mch_write() wrote past fixed buffer, causingterminal keys no longer tobe recognized. Both console andGUI version.Athena GUI: Crash when removinga menu item. Now Vim doesn't crash, but thereversing of the menu itemis still wrong.Always reset'list' option for thehelp window.When'scrolloff'is non-zero,a'showmatch' could cause the shown match to bein the wrong line and thewindow to be scrolled (Acevedo).After ":set all&",'lines' and'ttytype' were still non-default, because thedefaults never got set. Now the defaults for'lines' and'columns' are setafter detecting thewindow size.'term' and'ttytype' defaults are set whendetecting theterminal type.For (most) non-Unix systems, don't add file names with illegal characters whenexpanding. Fixes "cannot open swapfile" error when doing ":e *.burp", whenthereis no match.InX11 GUI, drawing part of the cursor obscured the text. Now the textisdrawn over the cursor, like whenit fills the block. (Seibert)when started with "-c cmd-q errfile", the cursor would be left in line 1.Nowa ":cc"is done after executing "cmd".":ilist" never ignored case, even when'ignorecase' set."vim-r file" fora readonly file, then makinga change, gotATTENTION messageininsert mode, display mixed up until<Esc> typed. Also don't giveATTENTIONmessage after recoveringa file.The abbreviation ":ab #i #include" could not be removed.CTRL-L completion (longest common match) on command-line didn't work properlyfor case-insensitive systems (MS-DOS, Windows, etc.). (suggested by RichardKilgore).For terminals that can hide the cursor("vi"termcap entry), resizing thewindow caused the cursor to disappear.Using an invalidmark in anEx address didn't abort the command.When'smarttab' set, would use'shiftround' wheninsertinga TAB afteraspace. Nowit always rounds toa tabstop.Set'[ and'] marks for ":copy", ":move", ":append", ":insert", ":substitute"and ":change". (Acevedo)."d$" in an empty line still caused an error, even when 'E'is not in'cpoptions'.Help files were stored in theviminfo bufferlist withouta path.GUI: Displaying cursor was not synchronized with other displaying. Causedseveral display errors. For example, when the last two lines in the filestart with spaces, "dd" on the last line copied text to the (then) last line.Win32: Needed to typeCTRL-SHIFT-- to getCTRL-_.GUI: Moving the cursor forwards overbold text would remove one column ofboldpixels.X11 GUI: Whenabold character in the last column was scrolled up or down, onecolumn of pixels would not be copied.Using<BS> to move the cursor left can sometimes erasea character. Now use"le"termcap entry for this.Keyword completion withregexp didn't work. e.g., for "b.*crat".Fixed: WithCTRL-O that jumps to another file, cursor couldend up just afterthe line.Amiga: '$' was missing from character recognizedas wildcards, causing$VIMsometimes not to be expanded.":change" didn't adjust marks for deleted lines.":help[range]" didn't work. Also for[pattern],[count] and[quotex].For'cindent'ing, typing "class::method" doesn't align likea label when thesecond ':'is typed.Wheninsertinga CR with'cindent' set (anda bunch of other conditions) thecursor went toa wrong location.'cindent' was wrong fora line that ends in '}'.'cindent' was wrong after "else{".While editing the cmdline in the GUI, could not use the mouse to select textfrom the command-line itself.Whendeleting lines, marks intag stack were only adjusted for the currentwindow, not for otherwindows on the same buffer.Tag guessing could finda function "some_func" instead of the "func" we werelooking for.Tags file name relative to the current file didn't work.":g/pat2/s//pat2/g", causing the number of subs to be reported, used to causea scroll up. Now you no longer have to hit<CR>.X11 GUI: Selecting text could causea crash.32 bitDOS version:CTRL-C in external command killed Vim. WhenSHELLis setto "sh.exe", external commands didn't work. Removed using of command.com, nolonger need to set'shellquote'.Fixed crash when using ":g/pat/i".Fixed (potential) crash forX11 GUI, when using anX selection. Was givingapointer on the stack toa callback function, now it's static.Using "#" and "*" with anoperator didn't work. E.g. "c#".Command-line expansion didn't work properly after ":*". (Acevedo)Setting'weirdinvert' caused highlighting to be wrong in the GUI.":e +4#" didn't work, because the "4" was in unallocated memory (could causea crash).Cursor position was wrong for ":e#", after ":e#" failed, because of changesto the buffer.When doing ":bufN", going toa buffer that was edited with ":view", thereadonly flag was reset. Now makea difference between ":e file" and ":buffile": Only set/reset'ro' for the first one.Avoidhit-enter prompt when not able to writeviminfo on exit.When giving errormessages in theterminal where theGUI was started,GUIescape codes would be written to the terminal. In an xterm this could be seenasa '$' after the message.Mouse would not work directly after ":gui", because full_screen isn't set,which causes starttermcap() not todo its work.'incsearch' did not scroll thewindow in the same wayas the actual search.When'nowrap' set, incsearch didn't showa match whenit was off the side ofthe screen. Nowit also shows the whole match, instead of just the cursorposition (if possible).":unmap", ":unab" and ":unmenu" did not accepta double quote,it was seenasthe start ofa comment. Now it'sVi compatible.Using<Up><Left><Left><Up> in the command-line, when thereis no previouscmdline in the history, inserteda NUL on the command-line."i<Esc>" when ona<Tab> in column0 left the cursor in the wrong place.GUI Motif: When addinga lot of menu items, the menubar goes into two rows.Deleting menu items, reducing the number of rows, now also works.With ":g/pat/s//foo/c",a match in the first line was scrolled off of thescreen, so you could not see it.When using ":s//c", with'nowrap' set,a match could be off the side of thescreen, so you could not see it.When'helpfile' was set toa fixed, non-absolute path in feature.h, Vim wouldcrash. mch_Fullname can now handle file names in read-only memory. (Lottem)When usingCTRL-A orCTRL-@ inInsert mode, there could be strange effectswhen usingCTRL-D next. Also, whenrepeating inserted text that included "0CTRL-D" or "^CTRL-D" this didn't work. (Acevedo)UsingCTRL-D after usingCTRL-E orCTRL-Y inInsert mode that inserteda '0'or '^', removed the '0' or '^' and more indent.The command "2".p" caused the last inserted text to be executedas commands.(Acevedo)Repeating theinsert of "CTRL-V 048" resulted in "^@" to be inserted.RepeatingInsert completion could fail if there are special characters in thetext. (Acevedo)":normal /string<CR>" caused thewindow to scroll. Now all ":normal" commandsare executed withoutscrolling messages.Redo ofCTRL-E orCTRL-Y inInsert mode interpreted special charactersascommands.Line wrapping for'tw' was done one character off forinsert expansioninserts.buffer_exists() function didn't work properly for buffer names witha symboliclink in them (e.g. when using buffer_exists(#)).Removed the "MOTIF_COMMENT" construction from Makefile. It now works withFreeBSD make, and probably with NeXT make too.Matching the'define' and'include' arguments now honor the settings for'ignorecase'. (Acevedo)When one file shown in two windows,Visual selection mixed up cursor positionin currentwindow and other window.When doing ":e file" fromahelp file, the'isk' option wasn't reset properly,because ofamodeline in thehelp file.When doing ":e!",a cursor in anotherwindow on the same buffer could becomeinvalid, leading to "ml_get: invalid lnum" errors.Matching buffer name for when expanded name hasa different path from notexpanded name (Brugnara).Normal mappings didn't work after an operator. For example, with ":mapQgq","QQ" didn't work.When ":make" resulted in zero errors,a "No Errors" error message was given(which breaks mappings).When ":sourcing"a file, line length was limited to 1024 characters.CTRL-Vbefore<EOL> was not handledVi compatible. (Acevedo)Unexpected exit forX11 GUI, caused by SAVE_YOURSELF event. (Heimann)CTRL-XCTRL-I only found one match per line. (Acevedo)When using an illegalCTRL-X key inInsert mode, theCTRL-X mode messagewas stuck.Finally managed to ignore the "Quit" menu entry of the Window manager! NowVim only exists when there are no changed buffers.Trying to start theGUI when $DISPLAYis not set resulted ina crash.When $DISPLAYis not set andgvim starts vim, title was restored to "Thanksfor flying Vim".When $DISPLAY not set,starting "gvim" (dropping back to vim) and thenselecting text with the mouse causeda crash."J", with'joinspaces' set, ona line ending in ". ", caused onespace toomany to be added. (Acevedo)Ininsert mode,aCTRL-R{regname} which didn'tinsert anything left the'"'on the screen.":z10" didn't work. (Clapp)"Help "*" didn't work.Renameda lot of functions, to avoid clashes with POSIX name space.When adding characters toa line, makingit wrap, the following lines weresometimes not shifted down (e.g. afteratag jump).CTRL-E, with'so' set and cursor on last line, now does not move cursoraslongas the last lineis on the screen.When there are two windows, doing "^W+^W-" in the bottomwindow could causethe status line to be doubled (not redrawn correctly).This command would hang: ":ncat". Now connect stdin of the externalcommand to /dev/null, when expanding.Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo)The "+command" argument to ":split" didn't work when there was no file name.When selecting text in the GUI, whichis the output ofa command-line commandor an external command, the inversion would sometimes remain.GUI: "-mh 70" argument was broken. Now, when menuheightis specified,itisnot changed anymore.GUI: When using the scrollbar or mouse while executing an external command,this caused garbage characters.Showmatch sometimes jumped to the wrong position. Was caused bya call tofindmatch() when redrawing the display (whensyntax highlightingis on).Searchpattern "\(a *\)\{3} did not work correctly, also matched "aa".Problem with brace_count not being decremented.Wildcard expansion added too many non-matching file names.When'iskeyword' contains characters like '~', "*" and "#" didn't workproperly. (Acevedo)On Linux, ona FAT file system, modification time can change by one second.Avoida "file has changed" warning fora one second difference.When using the page-switching in an xterm, Vim would position the cursor onthe last line of thewindow on exit. Also removed the cursor positioning for":!" commands.":g/pat/p" command (partly) overwrote the command. Now the outputis onaseparate line.With'ic' and'scs' set,a search for "Keyword", ignore-case matches werehighlighted too."^" ona line with only white space,put cursor beyond theend of the line.Whendeleting characters before where insertion started ('bs'== 2), could notuse abbreviations.CTRL-Eatend of file puts cursor below the file, inVisual mode, when'so'isnon-zero.CTRL-E didn't work when'so'is big and the line below thewindowwraps.CTRL-E, when'so'is non-zero,atend of the file, caused jumpingup-down.":retab" didn't work well when'list'is set.Amiga: Wheninserting charactersat the last line on the screen, causingitto wrap, messed up the display. It appears thata '\n' on the last linedoesn't always causea scroll up.InInsert mode "0<C-D><C-D>" deleted an extra character, because Vim thoughtthat the "0" was still there. (Acevedo)"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo)"S" when'autoindent'is off didn't delete leading white space."/<Tab>" landed on the wrong character when'incsearch'is set.Askinga yes/no question could causeahit-enter prompt.When the file consists of one long line (>4100 characters), making changescausedvariouserrors anda crash.DJGPP version could not save long lines (>64000) for undo."yw" on the last char in the file didn't work. Also fixed "6x"at theend ofthe line. "6X"at the start ofa line fails, but does not breaka mapping. Ingeneral,amovement for anoperator doesn'tbeep or flusha mapping, but whenthereis nothing to operate onit beeps (thisisVi compatible)."m'" and "m`" now set the''markat the cursor position.Unix: Resetting of signals for external program didn't work, because SIG_DFLand NULL are the same! For "!!yes|dd count=1|, the yes command kept onrunning.Partly fixed:Unix GUI: Typeahead while executing an external command was lost.Now it's not lost while the commandis producing output.Typing<S-Tab> inInsert mode, whenit isn't mapped, inserted "<S-Tab>". Nowit works likea normal<Tab>, just like<C-Tab> and<M-Tab>.Redrawing ruler didn't check for old value correctly (caused UMR warnings inPurify).Negative arrayindex in finish_viminfo_history().":g/^/d|mo$" deleted all the lines. The ":move" command now removes the:globalmark from the moved lines.Using "vG" while the last line in thewindowisa "@" line, didn't updatecorrectly. Just the "v" showed "~" lines."daw" on the last char of the file, when it'sa space, moved the cursor beyondtheend of the line.When'hlsearch' was set or reset, only the current buffer was redrawn, whilethis affects all windows.CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down thefile,put the cursorat the bottom of the window, instead of halfway.Whenscrolling up for ":append" command, not allwindows were updatedcorrectly.When'hlsearch'is set, and an auto-indentis highlighted, pressing<Esc>didn't remove the highlighting, although the indent was deleted.When'ru' set and'nosc', using "$j" showeda wrong ruler.Under Xfree 3.2, Shift-Tab didn't work (wrong keysymis used).Mapping<S-Tab> didn't work. Changed the key translations to use the shortestkey code possible. This makes the termcode translations and mappings moreconsistent. Now all modifiers work in all combinations, not only with<Tab>,but also with<Space>,<CR>, etc.For Unix, restore three more signals. And Vim catches SIGINT now, soCTRL-CinEx mode doesn't make Vim exit.""a5Y" yanked 25 lines instead of 5."vrxxx<Esc>" in an empty line could not be undone.ACTRL-C that breaks ":make" caused the errorfile not to be read (annoyingwhen you want to handle what ":make" produced so far).":0;/pat" didn't find "pat" in line 1.Search for "/test/s+1"at first char of file gave bottom-top message, ordidn't workat all with'nowrapscan'.Bug inviminfo history. Could causea crash on exit.":print" didn'tput cursor on first non-blank in line.":0r !cat </dev/null" left cursor in line zero, with very strange effects.With'showcmd' set and'timeoutlen' set toa few seconds, trick to positionthe cursor leftwards didn't work.AIX stty settings were restored to cs5 instead of cs8 (Winn).File name completion didn't work for "zsh" versions thatput spaces betweenfile names, instead of NULs.Changed "XawChain*" to "XtChain*", should work for more systems.Included quitea few fixes for rightleft mode (Lottem).Didn't ask tohit-enter whenGUIis started and errormessages are printed.When trying to edita file ina non-existent directory, ended up with editing"No file"."gqap" to formataparagraph did too much redrawing.When'hlsearch' set, only the currentwindow was updated fora new searchpattern.Sometimes errormessages onstartup didn't causeahit-enter prompt,because ofautocommands containing an empty line.Was possible to select part of thewindow in the border, below the commandline.'< and'> marks were notat the correct position afterlinewiseVisualselection.When translatingahelp argument to "CTRL-x", prepend or appenda '_', whenapplicable.Blockwise visual mode wasn't correct when moving vertically overa specialcharacter (displayedas two screen characters).Renamed "struct option" to "struct vimoption" to avoid name clash with GNUgetopt().":abclear" didn't work (but ":iabclear" and ":cabclear" did work).When'nowrap' used, screen wasn't always updated correctly."vim-c split file" displayed extra lines.Afterstarting the GUI, searched thetermcap fora "gui" term.When'hls' used, search for "^$" causeda hang.When'hls' was set, an error in the lastregexp caused trouble.Unix: Only output an extra<EOL> on exit when outputted something in thealternate screen, or when thereisa message that needs to be cleared."/a\{" did strange things, depending on previous search."c}" only redrew one line (with-u NONE).For mappings,CTRL-META-A was shownas <M-^A> instead of<MC-A>, while:maponly accepts<MC-A>. Now<M-C-A>is shown.Unix: When using full path name inatags file, which containsa link, and'hidden' set and jumping toatag in the current file, would get bogusATTENTION message. Solved by always expanding file names, even whenstartingwith '/'.'hlsearch' highlighting of special characters (e.g.,a TAB) didn't highlightthe whole thing."r<CR>" didn't work correctly on the last char ofa line.Sometimesawindow resize or other signal caused an endless loop, involvingset_winsize()."vim-r" didn't work,it would just hang (using tgetent() while'term'isempty)."gk" while'nowrap' set moved two lines up.Whenwindows are split,a message that causesascroll-up messed up one of thewindows, which requiredaCTRL-L to be typed.Possible endless loop when using shell command in the GUI.Menus defined in the.vimrc were removed whenGUI started.Crash when pasting with the mouse ininsert mode.Crash with ":unmenu *" in.gvimrc for Athena."5>>" shifted 5 lines 5 times, instead of 1 time.CTRL-C when gettinga prompt in ":global" didn't interrupt.When'so'is non-zero, and moving the scrollbar completely to the bottom,there wasa lot of flashing.GUI: Scrollbar identmust be long for DEC Alpha.Somefunctions called vim_regcomp() without setting reg_magic, which couldlead to unpredictable magicness.Crash when clicking around the status line, could geta selection withabackwards range.Whendeleting more than one line characterwise, the last character wasn'tdeleted.GUI: Status line could be overwritten when moving the scrollbar quickly (orwhen'wd'is non-zero).An ESCat theend ofa ":normal" command causeda wait foraterminal code tofinish. Now,aterminal codeis not recognized when its start comes fromamapping or ":normal" command.Included patches from Robert Webb for GUI. Layout of thewindowsis now doneinside Vim, instead of letting the layout managerdo this. Makes Vim workwith Lesstif!UMR warning in set_expand_context().Memory leak: b_winlnumlist was never freed.Removed TIOCLSET/TIOCLGET code from os_unix.c. Waschanging some of theterminal settings, and looked likeit wasn't doing anything good. (suggestedby Juergen Weigert).Ruler overwrote "isa directory" message. Whenstarting up, and'cmdheight'set to> 1, first message could still be in the last line.Removed prototype for putenv() from proto.h, it's already in osdef2.h.in.In replace mode, when moving the cursor and then backspacing, wrong characterswere inserted.Win32GUI was checking foraCTRL-C too often, makingit slow.Removed mappings forMS-DOS that were already covered by commands.When visually selecting all lines ina file, cursorat last line, then "J".Gave ml_get errors. Wasa problem withscrolling down during redrawing.When doingalinewise operator, and then anoperator witha mouse click,itwas also linewise, instead of characterwise.When'list'is set, the column of the ruler was wrong.Spurious error message for "/\(b\+\)*".When visually selected many lines, message from ":w file" disappeared whenredrawing the screen.":set<M-b>=^[b", theninsert "^[b", waited for another character. And theninserted "<M-b>" instead of the real<M-b> character. Was trying toinsertK_SPECIALx NUL.CTRL-W] didn't usecount to setwindow height.GUI: "-font" command-line argument didn't override'guifont' setting from.gvimrc. (Acevedo)GUI:clipboard wasn't used for "*y". And some more Win32/X11 differencesfixed for theclipboard (Webb).Jumping from onehelp file to anotherhelp file, with'compatible' set,removed the'help' flag from the buffer.File-writable bit could be reset when using ":w!" fora readonly file.There wasa wait forCTRL-On inInsert mode, because the searchpattern wasshown.Reduced wait, to allow readinga message, from 10 to 3 seconds. It seemednothing was happening.":recover" found same swap file twice.GUI: "*yy only worked the second time (when pasting to an xterm)."DJGPP version (dos32): The system flags were cleared.Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin).Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() withan empty string.<S-Tab> in the command-line worked likeCTRL-P when no completion started yet.Nowit does completion, last match first.Unix: Could get annoying "can't writeviminfo" message after doing "su". Nowtheviminfo fileis overwritten, and the user set back to the original one.":set term=builtin_gui" started theGUI ina wrong way. Now it's notallowed anymore. But "vim-Tgui" does start theGUI correctly now.GUI: Triple click aftera line onlyput last char in selection, whenitisasingle character word.When thewindowis bigger than the screen, thescrolling up ofmessages waswrong (e.g. ":vers", ":hi"). Also when the bottom part of thewindow wasobscured by another window.When usinga wrong option only an error messageis printed, to avoid that theusage information makesit scroll off the screen.Whenexiting because of not being able to read from stdin, didn't preserve theswap files properly.Visual selecting all chars in more than one line, then hit "x" didn't leave anempty line. For one lineit did leave an empty line.Message for whichautocommandis executing messed up file write message (forFileWritePost event)."vim-h" included "-U" even whenGUIis not available, and "-l" when lispisnot available.Crash for ":he<C-A>" (command-line longer than screen).":s/this/that/gc", type "y" two times, then undo, did reset the modifiedoption, even though the fileis still modified.Empty lines inatags file causeda ":tag" to be aborted.When hitting 'q'at the more prompt for ":menu", still scrolleda few lines.In an xterm that uses thebold tricka single row of characters could remainafter an erasedbold character. Now erase one extra char after thebold char,like for the GUI.":pop!" didn't work.When the readinga buffer was interrupted, ":w" should not be able tooverwrite the file, ":w!"is required.":cf%" causeda crash.":gui longfilename", when forkingis enabled, could leave part of thelongfilenameat the shell prompt.==============================================================================VERSION 5.1version-5.1Improvements made between version 5.0 and 5.1.This was mostlya bug-fix release, not many new features.Changedchanged-5.1-------Theexpand() function now separates file names with<NL> instead ofa space.This avoids problems for file names with embedded spaces. To get the oldresult, use substitute(expand(foo), "\n", " ", "g").For Insert-expanding dictionaries allowabackslash to be used forwildchars. Allows expanding "ze\kra", when'isk' includesa backslash.New icon for theWin32 GUI.":tag", ":tselect" etc. only use the argumentasaregexp whenit startswith '/'. Avoids that ":tag xx~" gives an error message: "No previous sub.regexp". Also, when the:tag argument containedwildcard characters,it wasnotVi compatible.When using '/', the argumentis taken literally too, witha higher priority,so it's found beforewildcard matches.Only when the '/'is used are matches with differentcase found, even though'ignorecase' isn't set.Changed "g^]" to onlydo ":tselect" when thereis more than on matching tag.Changed some of the default colors, because they were not very readable onadark background.A character offset toa searchpattern can move the cursor to the next orprevious line. Also fixes that "/pattern/e+2" got stuck on "pattern"at theend ofa line.Double-clicks in the status linedo no longer startVisual mode. Draggingastatus line no longer stopsVisual mode.Perl interface: Buffers() and Windows() now use more logical arguments, likethey are used in the rest of Vim (Moore).Init'"mark to the first character of the first line. Makesit possible touse'" in anautocommand without getting an error message.Addedadded-5.1-----"shell_error" internal variable: result of last shell command.":echohl" command: Set highlighting for ":echo".'S' flag in'highlight' and StatusLineNC highlight group: highlighting forstatus line of not-current window. Defaultis to usebold for currentwindow.Addedbuffer_name() andbuffer_number()functions (Aaron).Added flags argument "g" tosubstitute() function (Aaron).Addedwinheight() function.Win32: When an external command starts with "start ", no consoleis openedforit (Aaron).Win32 console: Usetermcap codes for bold/reverse based on the currentconsole attributes.Configure check for "strip". (Napier)CTRL-RCTRL-Rx inInsert mode:Insert the contents ofa register literally,instead ofas typed.Madea few "No match" errormessages more informative by adding thepatternthat didn't match."makeinstall" now also copies themacro files.tools/tcltags,a shellscript to generateatags file fromaTCL file."--with-tlib" setting for configure. Easy way to use termlib: "./configure--with-tlib=termlib".'u' flag in'cino' for setting the indent for contained () parts.WhenWin32 OLE version can't load the registered type library, ask the userif he wants to register Vim now. (Erhardt)Win32 with OLE: When registered automatically, exit Vim.Included VisVim 1.1b, witha few enhancements and the new icon (HeikoErhardt).Added patch from Vince Negri for Win32s support. Needs to be compiled withVC 4.1!Perl interface: Added $curbuf. Rationalized Buffers() and Windows().(Moore) Added "group" argument to Msg().IncludedPerl files inDOS source archive. Changed Makefile.bor andMakefile.w32 to support buildingaWin32 version withPerl included.Included new Makefile.w32 from Ken Scott. Now it's able to make allWin32versions, including OLE,Perl and Python.AddedCTRL-Wg] andCTRL-Wg ^]: splitwindow anddog] or g^].Added "g]" to alwaysdo ":tselect" for the ident under the cursor.Added ":tjump" and ":stjump" commands.Improved listing of ":tselect" whentag names area bit long.Included patches for theMacintosh version. Also forPython interface.(St-Amant)":buf foo" now also restores cursor column, when the buffer was used before.Adjusted the Makefile for different final destinations for thesyntax filesand scripts (for Debian Linux).Amiga:$VIM can be used everywhere. When$VIMis not defined, "VIM:"isused. This fixes that "VIM:" had to be assigned for thehelp files, and$VIM set for thesyntax files. Now either of these work.Some xterms send vt100 compatible function keys F1-F4. Since it's notpossible to detect this, recognize both type of keys and translate them to<F1>-<F4>.Added "VimEnter" autocommand. Executed after loading all thestartup stuff.BeOS version now also runs on Intel CPUs (Seibert).Fixedfixed-5.1-----":ts" changed position in thetag stack when cancelled with<CR>.":ts" changed the cursor position forCTRL-T when cancelled with<CR>.":tn" would always jump to the second match.Was using the wrong entry inthetag stack.Doing "tag foo", then ":tselect", overwrote the original cursor position inthetag stack."makeinstall" changed the vim.1 manpage ina wrong way, causing "doc/doc"to appear for the documentation files.When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DECmouse handling interfering.Was leaking memory when using selection in X11.CTRL-D halfwaya command-line left some characters behind the first line(s)of the listing.When expanding directories for ":set path=",put two extra backslashesbeforeaspace ina directory name.When'lisp' set, first line ofa function would be indented. Now its indentis set to zero. And use the indent of the first previous line thatisatthe same () level. Added test33."so<Esc>u" in an empty file didn't work.DOS: "seek error in swap file write" errors, when usingDOS 6.2 share.exe,because the swap file was made hidden. It's no longer hidden.":global" command would sometimes not execute ona matching line. Happenedwhena data blockis full in ml_replace().For AIX usea tgetent buffer of 2048 bytes, instead of 1024.Win32gvim now only sets the console size for external commands to 25x80on Windows 95, not on NT.Win32 console: Dead key could causea crash, because ofa missing "WINAPI"(Deshpande).The right mouse button startedVisual mode, even when'mouse'is empty, andin the command-line,a left click moved the cursor when'mouse'is empty.InVisual mode, 'n' in'mouse' would be used instead of 'v'.A blinking cursor or focus change cleareda non-Visual selection.CTRL-Home andCTRL-End didn't work forMS-DOS versions.Could include NUL in'iskeyword', causinga crash when doinginsert modecompletion.Use _dos_commit() to flush the swap file to disk forMSDOS 16 bit version.In mappings,CTRL-H was replaced by thebackspace key code. This causedproblems whenit was usedas text, e.g. ":map _U :%s/.^H//g<CR>".":set t_Co=0" was not handled likea normal term. Now it's translated into":set t_Co=", which works.For ":syntax keyword" the "transparent" option did work, although notmentioned in the help. ButsynID() returned wrong name."gqG" ina file with one-word-per-line (e.g.a dictionary) was very slow andnot interruptible."gq"operator inserted screen lines in the wrong situation. Now screenlines are inserted or deleted when this speeds up displaying.cindent was wrong when an "if" contained "((".'r' flag in'viminfo' was not used for '%'. Could get files in the bufferlist from removable media.Win32GUI with OLE: if_ole_vc.mak could not be converted intoa project.Hand-edited to fix this...With'nosol' set, doing "$kdw" below an empty line positioned the cursorattheend of the line.Dos32 version changed "\dir\file" into "/dir/file", to work arounda DJGPPbug. That bug appears to have been fixed, therefore this translation hasbeen removed."/^*" didn't work (find'*' in first column)."<afile>" was not always set for autocommands. E.g., for ":auBufEnter *let &tags= expand("<afile>:p:h"). "/tags".In an xterm, thewindow may bea child of the outer xterm window. Use theparentwindow when getting the title and icon names. (Smith)Whenstarting with "gvim-bg black-fg white", the value of'background'isonly set after reading the.gvimrc file. This causesa ":syntax on" to usethe wrong colors. Now allow using ":gui" to open theGUIwindow and set thecolors. Previously ":gui" inagvimrc crashed Vim.tempname() returned the same name all the time, unless the file was actuallycreated. Now there areat least 26 different names.File name used for<afile> was sometimes full path, sometimes file namerelative to current directory.When'background' was set after theGUIwindow was opened,it could changecolors that were set by the user in the.gvimrc file. Nowit only changescolors that have not been set by the user.Ignore special characters aftera CSI in theGUI version. These could beinterpretedas special characters ina wrong way. (St-Amant)Memory leak infarsi code, when using search or ":s" command.Farsistring reversing foramapping was only done for new mappings. Nowitalso works forreplacinga mapping.Crash inWin32 when usinga file name longer than _MAX_PATH. (Aaron)WhenBufDeleteautocommands were executed, some things for the buffer werealready deleted (esp.Perl stuff).Perl interface: Buffer specific items were deleted too soon; fixes "screenno longer exists" messages. (Moore)ThePerlfunctions didn't set the'modified' flag.link.sh did not return an error on exit, which may cause Vim to startinstalling, even though thereis no executable to install. (Riehm)Vi incompatibility: InVi "." redoes the "y" command. Added the 'y' flag to'cpoptions'. Only for'compatible' mode.":echohl" defineda new group, when the argument was not an existing group."syn on" and ":syn off" could move the cursor, if thereisa hidden bufferthatis shorter that the current cursor position.The "mark was not set when doing ":b file".Whena "nextgroup"is used with "skipwhite" insyntax highlighting,spaceattheend of the line made the nextgroup also be found in the next line.":he g<CTRL-D>", then ":" andbackspace to the start didn't redraw.X11 GUI: "gvim-rv" reversed the colors twice on Sun. Now Vim checks if theresultis really reverse video (background darker than foreground)."cat link.sh | vim-" didn't setsyntax highlighting.Win32: Expanding "file.sw?" matched ".file.swp". Thisis an error ofFindnextFile() that we need to work around. (Kilgore)"gqgq" gave an "Invalid lnum" error on the last line.Formatting with "gq" didn't format the first line aftera change of commentleader.There was no check for out-of-memory in win_alloc()."vim-h" didn't mention "-register" and "-unregister" for the OLE version.Could not increase'cmdheight' when the lastwindowis only one line. Nowotherwindows are also made smaller, when necessary.Addeda few{} to avoid "suggest braces around" warnings from gcc 2.8.x.Changed return type of main() from void to int. (Nam)Using '~' twice ina substitutepattern causeda crash."syn on" and ":syn off" could scroll the window, if thereisa hidden bufferthatis shorter that the current cursor position.":if0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif".With twowindows on modified files, with'autowrite' set, cursor in secondwindow, ":qa" gavea warning for the file in the first window, but thenauto-wrote the file in the second window. (Webb)Win32GUI scrollbar could only handle 32767 lines. Also makes theintellimouse wheel use the configurable number of scrolls. (Robinson)When using'patchmode', and thebackup fileis on another partition, the filecopying messed up the write-file message.GUI X11: Alt-Backspace and Alt-Delete didn't work."`0" couldput the cursor after the last character in the line, causingtrouble for other commands, like "i".When completingtags ininsert mode with ^X^], some matches were skipped,because the compare with othertags was wrong. E.g., when "mnuFileSave" wasalready there, "mnuFile" would be skipped. (Negri)Whenscrolling up/down,asyntax item with "keepend" didn't work properly.Now the flags are also stored for thesyntax stateat the start of each line.When'ic' was changed while'hlsearch'is on, there was no redraw to show theeffect.Win32 GUI: Don't display "No write since last chance" ina message box, but inthe Vim window.==============================================================================VERSION 5.2version-5.2Improvements made between version 5.1 and 5.2.Long lines editablelong-lines-------------------A single long line that doesn't fit in thewindow doesn't showa line of @@@anymore. Redrawing startsata character further on in the line, such thatthe text around the cursor can be seen. This makesit possible to edit theselong lines when wrappingis on.File browser addedfile-browser-5.2------------------The Win32, Athena andMotifGUI bring upa file requester if the user asks to":browse" for the ":e", ":w", ":r", ":so", ":redirect" and":mkexrc/vimrc/vsess" commands. ":browsee /foo/bar" opens the requester inthe /foo/bar directory, so you can have nicemapping rhs's like ":browse so$vim/macros". If no initial dir specified for ":browsee", can be compiled toeither begin in the current directory, or that of the current buffer. (Negriand Kahn)Added the'browsedir' option, with value "current", "last" or "buffer". Tellswhethera browsedialog starts in last used dir, dir of current buffer, orcurrent dir. ":browsew"is unaffected.The defaultmenus have been changed to use the ":browse" command.Dialogs addeddialogs-added-------------Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32,Athena andMotifGUI usesa window-dialog. All other platforms can useprompt in command-line. ":confirm qa" offersa choice to save all modifiedfiles.confirm() function: allows user access to the confirm engine.Added 'v' flag to'guioptions'. When included,a vertical button layoutisalways used for theWin32GUI dialog. Otherwise,a horizontal layoutispreferred.Win32 GUI: ":promptfind" and ":promptrepl" pop upadialog to find/replace.To be used froma menu entry. (Negri)Popup menu addedpopup-menu-added----------------When the'mousemodel' optionis set to "popup", the right mouse buttondisplays the top level menu headed with "PopUp"as pop-up context menu. The"PopUp" menuis not displayed in the normal menu bar. This currently onlyworks forWin32 and Athena GUI.Select mode addednew-Select-mode-----------------A new mode has been added: "Select mode". Itis likeVisual mode, but typinga printable character replaces the selection.-CTRL-G can be used totoggle betweenVisual mode andSelect mode.-CTRL-O can be used to switch fromSelect mode toVisual mode for one command.- Added'selectmode' option: tells when to startSelect mode instead ofVisual mode.- Added'mousemodel' option: Change use of mouse buttons.- Added'keymodel' option: tells to use shifted special keys to startaVisual orSelect mode selection.- Added ":behave". Can be used to quickly set'selectmode','mousemodel' and'keymodel' forMS-Windows and xterm behavior.- The xterm-like selectionis now called modeless selection.-Visual mode mappings andmenus are used inSelect mode. They automatically switch toVisual mode first. Afterwards, reselect the area, unlessit was deleted. The "gV" command can be used inamapping to skip the reselection.- Added the "gh", "gH" and "g^H" commands: startSelect (highlight) mode.- Backspace inSelect mode deletes the selected area."mswin.vim" script. Sets behavior mostly like MS-Windows.Session files addednew-session-files-------------------":mks[ession]" acts like "mkvimrc", but also writes the full filenames of thecurrently loadedbuffers and current directory, so that :so'ing the filere-loads those files and cd's to that directory. Also stores and restoreswindows. File names are made relative to session file.The'sessionoptions' option sets behavior of ":mksession". (Negri)User definedfunctions and commandsnew-user-defined-----------------------------------Added user defined functions. Defined with ":function" until ":endfunction".Called with "Func()". Allows the use ofa variable number of arguments.Included support for localvariables "l:name". Returna value with ":return".See:function.Calla function with ":call". When usinga range, the functionis called foreach line in the range.:call"macros/justify.vim"is an example of using user defined functions.Userfunctionsdo not change the last used searchpattern or the command to beredone with ".".'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble(crash because of out-of-memory) whena function uses endless recursion.User definableEx commands: ":command", ":delcommand" and ":comclear".(Moore) Seeuser-commands.New interfacesinterfaces-5.2--------------Tcl interface. (Wilken) Seetcl.Uses the ":tcl", ":tcldo" and "tclfile" commands.Cscope support. (Kahn) (Sekera) Seecscope.Uses the ":cscope" and ":cstag" commands. Uses theoptions'cscopeprg','cscopetag','cscopetagorder' and'cscopeverbose'.New portsports-5.2---------AmigaGUI port. (Nielsen) Not tested much yet!RISC OS version. (Thomas Leonard) Seeriscos.This version can run either withaGUI or in text mode, depending upon whereitis invoked.Deleted the "os_archie" files, they were not working anyway.Multi-byte supportnew-multi-bytenew-multibyte------------------MultiByte support forWin32 GUI. (Baek)The'fileencoding' option decides how the text in the fileis encoded.":ascii" works formultibyte characters. Multi-byte characters work onWindows 95, even when using the US version. (Aaron)Needs to be enabled in feature.h.This has not been tested much yet!Newfunctionsnew-functions-5.2-------------browse() puts upa file requester when available. (Negri)escape() escapes characters inastring witha backslash.fnamemodify() modifiesa file name.input() asks the user to entera line. (Aaron) Thereisa separatehistory for lines typed for theinput() function.argc()argv() can be used to access the argument list.winbufnr() buffer number ofa window. (Aaron)winnr()window number. (Aaron)matchstr() Return matched string.setline() Seta line toastring value.Newoptionsnew-options-5.2-----------'allowrevins'Enable theCTRL-_ command inInsert andCommand-line mode.'browsedir'Tells in which directorya browsedialog starts.'confirm'when set,:q:w and:e commands always actas if ":confirm"is used. (Negri)'cscopeprg''cscopetag''cscopetagorder''cscopeverbose'Set thecscope behavior.'filetype'RISC-OS specific type of file.'grepformat''grepprg'For the:grep command.'keymodel'Tells to use shifted special keys to startaVisual orSelectmode selection.'listchars'Set character to show in'list' mode for end-of-line, tabs andtrailing spaces. (partly by Smith) Also sets character todisplay ifa line doesn't fit when'nowrap'is set.'matchpairs'Allows matching '<' with '>', and other single characterpairs.'mousefocus'Window focus follows mouse (partly by Terhaar). Changing thefocus witha keyboard command moves the pointer to thatwindow. Also move the pointer whenchanging thewindow layout(split window, changewindow height, etc.).'mousemodel'Change use of mouse buttons.'selection'When set to "inclusive" or "exclusive", the cursor cango onecharacter past theend of the line inVisual orSelect mode.When set to "old" the old behavioris used. When"inclusive", the character under the cursoris included in theoperation. When using "exclusive", the new "ve" entry of'guicursor'is used. The defaultisa vertical bar.'selectmode'Tells when to startSelect mode instead ofVisual mode.'sessionoptions' Sets behavior of ":mksession". (Negri)'showfulltag'When completingatag inInsert mode, show thetag searchpattern (tidied up)asa choiceas well (if thereis one).'swapfile'Whether to usea swap file fora buffer.'syntax'Whenitis set, thesyntax by that nameis loaded. Allows forsettinga specificsyntax froma modeline.'ttymouse'Allows using xterm mouse codes for terminals which namedoesn't start with "xterm".'wildignore'List of patterns for files that should not be completedatall.'wildmode'Can be used to set the type of expansion for'wildchar'.Replaces theCTRL-T command for command line completion.Don'tbeep when listing all matches.'winaltkeys'Win32 andMotif GUI. When "yes", ALT keys are handledentirely by thewindow system. When "no", ALT keys are neverused by thewindow system. When "menu"it depends on whethera keyisa menu shortcut.'winminheight'Minimal height for each window. Defaultis 1. Set to0 ifyou want zero-line windows. Scrollbaris removed forzero-height windows. (Negri)NewEx commandsnew-ex-commands-5.2---------------:badd Add file name to bufferlist without side effects. (Negri):behave Quickly setMS-Windows or xterm behavior.:browse Use file selection dialog.:call Calla function, optionally witha range.:cnewer:colder To accessa stack ofquickfix error lists.:comclear Clear all user-defined commands.:command Definea user command.:continue Go back to ":while".:confirm Ask confirmation if something unexpected happens.:cscope Executecscope command.:cstag Usecscope to jump toa tag.:delcommand Deletea user-defined command.:delfunction Deletea user-defined function.:endfunction End of user-defined function.:function Definea user function.:grep Works similar to ":make". (Negri):mksession Createa session file.:nohlsearch Stop'hlsearch' highlighting fora moment.:Print ThisisVi compatible. Does the sameas ":print".:promptfind Searchdialog (Win32 GUI).:promptrepl Search/replacedialog (Win32 GUI).:return Return froma user-defined function.:simaltWin32 GUI: Simulate alt-key pressed. (Negri):smagic Like ":substitute", but always use'magic'.:snomagic Like ":substitute", but always use'nomagic'.:tcl ExecuteTCL command.:tcldo ExecuteTCL command fora range of lines.:tclfile ExecuteaTCLscript file.:tearoff Tear-offa menu (Win32 GUI).:tmenu:tunmenuWin32 GUI: menu tooltips. (Negri):star:*Executea register.Changedchanged-5.2-------Renamed functions:buffer_exists()->bufexists()buffer_name()->bufname()buffer_number()->bufnr()file_readable()->filereadable()highlight_exists()->hlexists()highlightID()->hlID()last_buffer_nr()-> bufnr("$")The old ones are still there, for backwards compatibility.TheCTRL-_ command inInsert andCommand-line modeis only available when thenew'allowrevins' optionis set. Avoids that people who want to type SHIFT-_accidentally enter reverseInsert mode, and don't know how to get out.Whena file name path in ":tselect" listingis too long, removea part in themiddle andput "..." there.Win32 GUI: Made font selector appear inside Vim window, not just any oddplace. (Negri)":bn" skipshelp buffers, unless currently inahelp buffer. (Negri)When thereisa status line and only one window, don't show '^' in the statusline of the current window.":*" used to be used for "'<,'>", theVisual area. But inVi it's usedas analternative for ":@". When'cpoptions' includes'*' thisisVi compatible.When'insertmode'is set, usingCTRL-O to executeamapping will work like'insertmode' was not set. This allows "normal" mappings to be used even when'insertmode'is set.When'mouse' was set already (e.g., in the.vimrc file), don't automaticallyset'mouse' when theGUI starts.Removed the 'N', 'I' and 'A' flags from the'mouse' option.Renamed "toggle option" to "boolean option". Some people thought that ":setxyz" wouldtoggle'xyz' on/off each time.The internal variable "shell_error" contains the error code from the shell,instead of just0 or 1.Wheninserting or replacing, typingCTRL-VCTRL-<CR> used toinsert "<C-CR>".Thatis not very useful. Now the CTRL keyis ignored anda<CR>is inserted.Same for all other "normal" keys with modifiers. Mapping these modified keycombinationsis still possible.InInsert mode,<C-CR> and<S-Space> can be inserted by usingCTRL-K and thenthe special character.Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. Theyare now installed like other documentation files.winheight() function returns -1 fora non-existing window. It used to bezero, but thatisa valid height now.The default for'selection'is "inclusive", which makesa difference whenusing "$" or the mouse to move the cursor inVisual mode.":q!" does not exit when there are changedbuffers which are hidden. Use":qa!" to exit anyway.Disabled the Perl/Python/Tcl interfaces by default. Not many people use themand they make the executablea lot bigger. The internal scripting languageisnow powerful enough for most tasks.The strings from the'titlestring' and'iconstring'options are useduntranslated for the Window title and icon. This allows for includinga<CR>.Previouslya<CR> would be shownas "^M" (two characters).Whenamappingis started inVisual orSelect mode which was started fromInsert mode (the mode shows "(insert)Visual"), don't return toInsert modeuntil themapping has ended. Makesit possible to useamapping inVisualmode that also works when theVisual mode was started fromSelect mode.Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helpswhen definingmenus in the.vimrc file, or when sourcing mswin.vim.Unix: Use /var/tmp for .swp files, ifit exists. Files there surviveareboot (at least on Linux).Addedadded-5.2-------with-motif-lib configure argument. Allows for usinga staticMotif library.Support formapping numeric keypad +,-,*,/ keys. (Negri)When not mapped, they produce the normal character.Win32 GUI: When directory dropped on gVim, cd there and edit new buffer.(Negri)Win32 GUI: MadeCTRL-Break workas interrupt, so thatCTRL-C can beused for mappings.In the output of ":map", highlight the "*" to make clear it's not part of therhs. (Roemer)When showing theVisual area, the cursoris not switched off, so thatit canbe located. TheVisual areais now highlighted witha grey background in theGUI. This makes the cursor visible when it's also reversed.Win32: When started with single full pathname (e.g. via double-clicked file),cd to that file's directory. (Negri)Win32 GUI: Tear-off menus, with ":tearoff<menu-name>" command. (Negri)'t' option to'guioptions': Add tearoff menu items forWin32GUI and Motif.It's included by default.Win32 GUI: tearoff menu with submenusis indicated witha ">>". (Negri)Added ^Kaa and ^KAA digraphs.Added "euro" symbol to digraph.c. (Corry)Support forMotif menu shortcut keys, using '&' likeMS-Windows (Ollis).Other GUIs ignore '&' ina menu name.DJGPP: Faster screen updating (John Lange).Clustering ofsyntax groups ":syntax cluster" (Bigham).Includingsyntax files: ":syntax include" (Bigham).Keep column when switching buffers, when'nosol'is set (Radics).Number function forPerl interface.Support for Intellimouse in Athena GUI. (Jensen)":sleep" also accepts an argument in milliseconds, when "m"is used.Added 'p' flag in'guioptions': Install callbacks for enter/leavewindowevents. Makes cursor blinking work for Terhaar, breaksit for me."--help" and "--version" command-line arguments.Non-text in ":list" outputis highlighted with NonText.Added text objects: "i(" and "i)"as synonym for "ib". "i{" and "i}"assynonym for "iB". New: "i<" and "i>", to select<thing>. All this also for"a" objects.'O' flag in'shortmess': message for readinga file overwrites any previousmessage. (Negri)Win32 GUI: 'T' flag in'guioptions': switch toolbar on/off.Includedalist with self-made toolbar bitmaps. (Negri)Added menu priority for sub-menus. Implemented forWin32 andMotif GUI.Display menu priority with ":menu" command.Default andSyntaxmenus now include priority for items. Allowsinsertingmenu items in between the default ones.When the'number' optionis on, highlight line numbers with the LineNr group."Ignore" highlight group: Text highlighted with thisis made blank. Itisused to hide special characters in thehelp text.Included Exuberant Ctags version 2.3, with C++ support, Java support andrecurse into directories. (Hiebert)Whenatags fileis not sorted, and thisis detected (ina simplistic way), anerror messageis given.":unlet" acceptsa "!", to ignore non-existing variables, and accepts morethan one argument. (Roemer)Completion of variable names for ":unlet". (Roemer)When thereis an error ina function whichis called by another function, showthe call stack in the error message.New file name modifiers:":.": reduce file name to be relative to current dir.":~": reduce file name to be relative tohome dir.":s?pat?sub?": substitute "pat" with "sub" once.":gs?pat?sub?": substitute "pat" with "sub" globally.New configure arguments: --enable-min-features and --enable-max-features.Easy way to switch to minimum or maximum features.New compile-time feature: modify_fname. For file name modifiers, e.g,"%:p:h". Can be disabled to save some code (16 bit DOS).When using whole-line completion inInsert mode, and'cindent'is set, indentthe line properly.MSDOS andWin32 console:'guicursor' sets cursor thickness. (Negri)Included new set ofFarsi fonts. (Shiran)Accelerator text now also works in Motif. Allmenus can be defined with& formnemonic and TAB for accelerator text. They are ignored on systems that don'tsupport them.When removing orreplacinga menu, compare the menu name only up to the<Tab>before the mnemonic.'i' and 'I' flags after ":substitute": ignorecase or not."makeinstall" complains if the runtime files are missing.Unix: When finding an existing swap file that can't be opened, mention theowner of the file in theATTENTION message.The 'i', 't' and 'k'options in'complete' now also print the place where theyare looking for matches. (Acevedo)"gJ" command: Join lines withoutinsertinga space.Setting'keywordprg' to "man-s"is handled specifically. The "-s"is removedwhen nocount given, thecountis added otherwise. Configure checks if "man-s 2 read" works, and sets the default for'keywordprg' accordingly.If youdoa ":bd" and thereis only onewindow open, Vim tries to move toabuffer of the same type (i.e. non-help to non-help,help to help), forconsistent behavior to :bnext/:bprev. (Negri)Allow "<Nop>" to be usedas the rhs ofa mapping. ":map xx<Nop>", maps "xx"to nothingat all.Ina ":menu" command, "<Tab>" can be used instead ofa real tab, in the menupath. This makesit moreeasy to type, nobackslash needed.POSIX compatible character classes forregexp patterns: [:alnum:], [:alpha:],[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:],[:space:],[:upper:] and [:xdigit:]. (Briscoe)regexp character classes (for fastsyntax highlight matching):digits: \d[0-9]\D not digit (Roemer)hex: \x[0-9a-fA-F]\X not hexoctal: \o[0-7]\O notoctalword: \w[a-zA-Z0-9_]\W notwordhead: \h[a-zA-Z_]\H not headalphabetic: \a[a-zA-Z]\A not alphabeticlowercase: \l[a-z]\L notlowercaseuppercase: \u[A-Z]\U notuppercase":set" now accepts "+=", |^=" and "-=": add or remove parts ofastringoption, add or subtracta number froma number option.A commaisautomagically inserted or deleted foroptions that area comma-separated list.Filetype feature, for autocommands. Usesa file type instead ofapattern tomatcha file. Currently only used for RISC OS. (Leonard)Inapattern for an autocommand, environmentvariables can be used. They areexpanded when theautocommandis defined."BufFilePre" and "BufFilePost"autocommand evens: Before and after applyingthe ":file" command to change the name ofa buffer."VimLeavePre"autocommand event: beforewriting the .viminfo file.Forautocommands argument:<abuf>is buffer number, like<afile>.Madesyntax highlightinga bit faster whenscrolling backwards, by keepingmore syncing context.Win32 GUI: Madescrolling faster by avoidinga redraw whendeleting orinserting screen lines.GUI: Madescrolling faster by not redrawing the scrollbar when the thumb movedless thana pixel.Included ":highlight" in bugreport.vim.Created install.exe program, for simplistic installation onDOS andMS-Windows.New register: '_', the black hole. Whenwriting to it, nothing happens. Whenreading from it, it's always empty. Can be used to avoida delete or changecommand to modify the registers, or reduce memory use for big changes.CTRL-V xff enters character by hex number.CTRL-V o123 enters character byoctal number. (Aaron)Improved performance ofsyntax highlighting by skipping check for "keepend"when there isn't any.Moved the mode message("-- INSERT--") to the last line of the screen. When'cmdheight'is more than one,messages will remain readable.When listing matching files, they are also sorted on'suffixes', such thatthey are listed in the same orderasCTRL-N retrieves them.synIDattr() takesa third argument (optionally), which tells for whichterminal type to get the attributes for. This makesit possible to run2html.vim outside ofgvim (using color names instead of #RRGGBB).Memory profiling, only for debugging. Printsat exit, and with "g^A" command.(Kahn)DOS: When usinga file in the current drive, remove the drive name:"A:\dir\file"-> "\dir\file". This helps when movinga session file onafloppy from "A:\dir" to "B:\dir".Increased number of remembered jumps from 30 to 50 per window.Command to temporarily disable'hls' highlighting until the next search:":nohlsearch"."gp" and "gP" commands: like "p" and "P", but leave the cursor just after theinserted text. Used for theCTRL-V command inMS-Windows mode.Fixedfixed-5.2-----Win32 GUI: Could draw text twice in one place, for fake-bold text. Removedthis, Windows will handle thebold text anyway. (Negri)patch 5.1.1: Win32s GUI: pasting causeda crash (Negri)patch 5.1.2: When entering another window, where characters before the cursorhave been deleted, could havea cursor beyond theend of the line.patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri)patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version(Scott).patch 5.1.5: Crashed when usingsyntax highlighting: cursor ona line thatdoesn't fit in the window, and splitting that line in two.patch 5.1.6:Visual highlighting bug: After ":set nowrap",go toend of line(so that thewindow scrolls horizontally), ":set wrap". FollowingVisualselection was wrong.patch 5.1.7: When'tagbsearch' off, and'ignorecase' off, still coulddobinary searching.patch 5.1.8:Win32 GUI: dragging the scrollbar didn't update the ruler.patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear.patch 5.1.10:ACTRL-N inInsert mode could causea crash, whena bufferwithouta name exists.patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted"make shadow" for the links in thectags directory.patch 5.1.12: "buf 123foo" used "123"asa count, insteadas the start ofabuffer name.patch 5.1.13: When completing file names on the command-line, reallocating thecommand-line maygo wrong.patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patchspecified.Graceful handling of NULLs in drag-dropped file list. Handle passing NULL toFullname_save(). (Negri)Win32: ":!start" to invokea program without openinga console, swappingscreens, or waiting for completion in either console orgui version, e.g. youcan type ":!start winfile". ALSO fixes "can't delete swapfile after spawninga shell" bug. (enhancement of Aaron patch) (Negri)Win32 GUI: FixCTRL-X default keymapping to be more Windows-like. (Negri)Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c"displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri)Win32 GUI: No copy to Windowsclipboard when it's not desired.Win32s: Fix pasting fromclipboard- made an assumption not valid underWin32s. (Negri)Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawingfunctions. (Negri)Win32 GUI: Middle mouse button emulation now works in GUI! (Negri)Could skipmessages when combining commands in one line, e.g.:":echo "hello" | write".Perl interpreter was disabled before executingVimLeave autocommands. Couldnot use ":perl" in them. (Aaron)Included patch for the Intellimouse (Aaron/Robinson).Could not set'ls' to one, when lastwindow has only one line. (Mitterand)Fixeda memory leak when removing menus.After ":only" the ruler could overwritea message.Dos32: removedchanging of __system_flags. It appears to work better whenit's leftat the default value.p_aleph was an int instead of along, caused trouble on systems wheresizeof(int) != sizeof(long). (Schmidt)Fixedenum problems for Ultrix. (Seibert)Small redraw problem: "dd" on last line in file cleared wrong line.Didn't interpret "cmd | endif" when "cmd" starts witha range. E.g. "if0 |.d | endif".Command "+|" on the last line of the file caused ml_get errors.Memory underrun in eval_vars(). (Aaron)Don't rename files ina difficult way, except on Windows 95 (was also done onWindows NT).Win32 GUI: An external command that produces an error codeput the errormessage inadialog box. had to close thewindow and close the dialog. Nowthe error codeis displayed in the console. (Negri)"comctl32.lib" was missing from theGUI libraries in Makefile.w32. (Battle)InInsert mode, when enteringawindow inInsert mode, allow the cursor to beone char beyond the text.Renamed machine dependentrename() to mch_rename(). Define mch_rename() torename() whenit works properly.Rename vim_chdir() to mch_chdir(), because it's machine dependent.When using an arglist, and editing file 5 of 4, ":q" could cause "-1 morefiles to edit" error.In if_python.c, VimCommand() caused an assertion whena do_cmdline() failed.Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins)Give an error message for an unknown argument after "--". E.g. for "vim--xyz".TheFileChangedShellautocommand didn't set<afile> to the name of the changedfile.When doing ":e file", causing the attention message, there sometimes was nohit-enter prompt. Caused by empty line or "endif"atend of sourced file.A large number of patches for theVMS version. (Hunsaker)WhenCTRL-L completion (find longest match) results ina shorter string, nocompletionis done (happens with ":help").Crash inWin32GUI version, when using anEx "@" command, becauseLinePointers[] was used while not initialized.Win32 GUI: allowmapping of Alt-Space.Output from "vim-h" was sent to stderr. Sendingit to stdoutis better, soone can use "vim-h | more".In command-line mode, ":vi[!]" shouldreload the file, just like ":e[!]".InEx mode, ":vi" stopsEx mode, but doesn'treload the file. ThisisVicompatible.When usinga ":set ls=1" in the.gvimrc file, would geta status line forasingle window. (Robinson)Didn't give an error message for ":set ai,xx". (Roemer)Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx".Non-Unix systems: Thata file exists butis unreadableis recognizedas "newfile". Now check for existence when file can't be opened (like Unix).Unix: osdef.sh didn't handle declarations where the function nameisat thefirst column of the line.DJGPP: Shortening of file names didn't work properly, because get_cwd()returneda path with backslashes. (Negri)When usinga'comments' part whereaspaceis required after the middle part,alwaysinsertaspace whenstartinga new line. Helps forC comments, belowaline with "/****".Replacing path ofhome directory with "~/" could be wrong for file nameswith embedded spaces or commas.A few fixes for the Sniff interface. (Leherbauer)When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse causedtrouble. Same for ":s/x/y/c" prompt.With'nowrap' and'list',aTab halfway on the screen was displayedas blanks,instead of the characters specified with'listchars'. Also for othercharacters that take more than one screen character.When setting'guifont' to an unknown font name, the previous font was lost anda default font would be used. (Steed)DOS: Filenames in the root directory didn't get shortened properly. (Negri)DJGPP: makinga full path name out ofa file name didn't work properly whenthereis no _fullpath() function. (Negri)Win32 console: ":sh" causeda crash. (Negri)Win32 console: Setting'lines' and/or'columns' in the_vimrc failed miserably(could hang Windows 95). (Negri)Win32: The change-drive function was not correct, went to the wrong drive.(Tsindlekht)GUI: When editinga command line inEx mode, Tabs were sometimes notbackspaced properly, and unprintable characters were displayed directly.non-GUI can still be wrong, becausea system functionis called for this.":set" didn't stop after an error. For example ":set no ai" gave an error for"no", but still set "ai". Now ":set" stops after the first error.When running configure for ctags, $LDFLAGS wasn't passed to it, causingtrouble for IRIX."@%" and "@#" when file name not set gave an error message. Now they justreturn an empty string. (Steed)CTRL-X andCTRL-A didn't work correctly with negative hex andoctal numbers.(Steed)":echo" always started witha blank.UpdatingGUI cursor shape didn't always work (e.g., when blinkingis off).In silentEx mode("ex-s" or "ex <file") ":s///p" didn't printa line. Alsoa few other commands that explicitly printa text line didn't work. Made thisVi compatible.Win32 version of _chdrive() didn't return correct value. (Tsindlekht)When using 't' in'complete' option, no longer give an error message foramissingtags file.Unix: tgoto() can return NULL, which was not handled correctly in configure.When doing ":help" froma buffer where'binary'is set, also edited thehelpfile in binary mode. Caused extra ^Ms forDOS systems.Cursor position ina file was reset to 1 when closinga window.":!ls" inEx mode switched off echo.When doinga double click inwindow A, while currently inwindow B, firstclick would reset double click time, had to click three times to selectaword.When using<F11> in mappings, ":mkexrc" produced anexrc file that can't beused inVi compatible mode. Added setting of'cpo' to avoid this. Also, addaCTRL-V in front ofa '<', to avoida normalstring to be interpretedasaspecial key name.Gave confusing error message for ":set guifont=-*-lucida-*": first "fontisnot fixed width", then "Unknown font".Someoptions were still completely left out, instead of includedas hiddenoptions.While running theX11 GUI, ignore SIGHUP signals. Avoidsa crash afterexecuting an external command (in rare cases).In os_unixx.h, signal() was defined to sigset(), whileit already was.Memory leak when executingautocommands (was reportedasa memory leak insyntax highlighting).Didn't print source of error sometimes, because pointers were the same,although names were different.Avoida number of UMRerrors from Purify (third argument to open()).A swap file could still be created just after setting'updatecount' to zero,when thereis an empty buffer and doing ":e file". (Kutschera)Test 35 failed on 64 bit machines. (Schild)With "p" and "P" commands, redrawing was slow.Awkscript for html documentation didn't work correctly with AIX awk.Replaced "[ ,.);\]]" with "[] ,.);]". (Briscoe)The makehtml.awkscript hada small problem, causing extra lines to beinserted. (Briscoe)"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked inawrong way. Also made "gqq" work to be consistent with "guu".C indent was wrong after "case ':':".":auBufReadPre *.cput": Line fromput text was deleted, because the bufferwas still assumed to be empty.Text pasted with the Edit/Paste menu was subject to'textwidth' and'autoindent'. That was inconsistent with using the mouse to paste. Now "*pis used.When usingCTRL-WCTRL-] onaword that's nota tag, and thenCTRL-] ona tag,window was split.":ts" got stuck onatags line that has two extra fields.InInsert mode, with'showmode' on,<C-O><C-G> message was directlyoverwritten by mode message, if preceded with search command warning message.When putting the result of anexpression with "=<expr>p, newlines wereinserted like ^@ (NUL in the file). Now thestringis split up in linesatthe newline.putenv() was declared with "const char *" in pty.c, but with "char *" inosdef2.h.in. Made the last one also "const char *".":help{word}", where +{word}isa feature, jumped to the featurelist insteadof where the command was explained. E.g., ":help browse", ":help autocmd".Using the "\<xx>" form in anexpression only got one byte, even when usingaspecial character that uses several bytes (e.g., "\<F9>").Changed "\<BS>" to produceCTRL-H instead of the special key code for thebackspace key. "\<Del>" produces 0x7f.":mkvimrc" didn't writea command to set'compatible' or'nocompatible'.The shellsyntax didn't containa "syn sync maxlines" setting. Ina long filewithout recognizable items, syncing took so longit looked like Vim hangs.Addeda maxlines setting, and made syncing interruptible.The "gs" command didn't flush output before waiting.Memory leaks for: ":if0 | leta=b.c | endif" "leta= b[c]" ":so{file}" where{file} containsa ":while"GUI: allocated fonts were never released. (Leonard)Makefile.bor:- Changed $(DEFINES) intoalist of "-D" options, so thatit can also be used for the resource compiler. (not tested!)- "bcc.cfg" was used for all configurations. When building for another configuration, the settings for the previous one would be used. Moved "bcc.cfg" to theobject directory. (Geddes)- Included targets for vimrun, install,ctags and xxd. Changed the default to use the Borland DLL Runtime Library, makes Vim.exea log smaller. (Aaron)"2*" search for theword under the cursor with "2" prepended. (Leonard)Whendeleting intoa specific register, would still overwrite the non-Win32GUI selection. Now ""x"*P works.Whendeleting into the "" register, would write to the last used register.Now ""x always writes to the unnamed register.GUI Athena:A submenu witha '.' init didn't work. E.g.,":amenu Syntax.XY\.Z.foo lll".When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order ofmatchingtags could change, because the current fileis different. Now theexisting matches are kept in the same order, newly found matches are addedafter them, not matter what the current file is.":ta" didn't find the second entry inatags file, if the second entry waslonger than the first one.When using ":set si tw=7"inserting "foo{^P}" made the "}" insertedat thewrong position. can_si was stillTRUE when the cursoris not in the indent ofthe line.Running an external command inWin32 version had the problem that Vim exitswhen theX on the consoleis hit (and confirmed). Now use the "vimrun"command to start the external command indirectly. (Negri)Win32 GUI: When running an external filter,doit ina minimizedDOS box.(Negri)":let" listedvariables without translation into printable characters.Win32 console: When resizing the window, switching back to the old size(whenexiting or executing an external command) sometimes failed. (Negri)This appears to also fixa "non fixable" problem:Win32 console in NT 4.0: When running Vim ina cmdwindow witha scrollbar,the scrollbar disappeared and was not restored when Vim exits. This does workunder NT 3.51,it appears not to bea Vim problem.When executingBufDelete andBufUnloadautocommands fora buffer withoutaname, the name of the current buffer was used for<afile>.When jumping toatagit reported "tag 1 of >2", while in fact there could beonly two matches. Changed to "tag 1 of 2 or more".":tjumptag" dida linear search in thetags file, which can be slow.Configure didn't find "LibXm.so.2.0",a Xm library witha version number.Win32 GUI: When usinga shifted key with ALT, theshift modifier would remainset, even whenit was already used bychanging the used key. E.g., "<M-S-9>"resulted in "<M-S-(>", butit should be "<M-(>". (Negri)A call to ga_init() was often followed by setting growsize and itemsize.Created ga_init2() for this, which looks better. (Aaron)Functionfilereadable() could call fopen() with an empty string, which mightbe illegal.X Windows GUI: When executing an external command that outputs text, couldwrite one character beyond theend ofa buffer, which causeda crash. (Kohan)When using "*" or "#" onastring that includes '/' or '?' (when these areincluded in'isk'), they were not escaped. (Parmelan)When addinga ToolBar menu in theMotif GUI, the submenu_id field was notcleared, causingrandom problems.When addinga menu, the check if this menu (or submenu) name already existsdidn't compare with the simplified version (no mnemonic or accelerator) of thenew menu. Could get twomenus with the same name, e.g., "File" and "&File".Breakinga line because of'textwidth'at the last line in thewindow causedaredraw of the wholewindow instead ofa scroll. Speeds up normal typing with'textwidth'a lot for slow terminals.An invalid line number produced an "invalid range" error, even whenit wasn'tto be executed (inside "if0").When the unnamed, first bufferis re-used, the "BufDelete"autocommand wasnot called. It would stick ina bufferlist menu.When doing "%" on the NUL after the line,a "{" or "}" in the last characterof the line was not found.TheInsert mode menu was not used for the "s" command, theOperator-pendingmenu was used instead.With'compatible' set, somesyntax highlighting was not correct, because ofusing "[\t]" fora search pattern. Now use the regexps forsyntaxhighlighting like the'cpoptions' optionis empty (as was documented already).When using "map<M-Space> ms" or "map<Space> sss" the output of ":map" didn'tshow any lhs for themapping (if'isprint' includes 160). Now always use<Space> and<M-Space>, even when they are printable.Adjusted theSyntax menu, so that the lowest entry fits ona small screen (forAthena, wheremenus don't wrap).When usingCTRL-E orCTRL-Y inInsert mode for characters like 'o', 'x' anddigits,repeating theinsert didn't work.The file "tools/ccfilter.README.txt" could not be unpacked when using shortfile names, because of the two dots. Renamedit to"tools/ccfilter_README.txt".Fora dark'background', using Blue for Directory and SpecialKey highlightgroupsis not very readable. Use Cyan instead.In the function uc_scan_attr() in ex_docmd.c there wasa goto that jumped intoa block witha local variable. That's illegal for some compilers.Win32 GUI: There wasa row of pixelsat the bottom of thewindow which was notdrawn. (Aaron)Under DOS, editing "filename/" createda swap file of "filename/.swp". Shouldbe "filename/_swp".Win32 GUI: pointer was hidden when executing an external command.When'so'is 999, "J" near theend of the file didn't redisplay correctly.":0a" inserted after the first line, instead of before the first line.Unix: Wildcard expansion didn't handle singlequotes and{} patterns. Now":file 'window.c'" removes thequotes and ":e 'main*.c'" works (literal'*').":file{o}{n}{e}" now results in file name "one".Memory leak when settingastring option back to its default value.==============================================================================VERSION 5.3version-5.3Version 5.3 wasa bug-fix version of 5.2. There are not many changes.Improvements made between version 5.2 and 5.3:Changedchanged-5.3-------Renamed "IDE" menu to "Tools" menu.Addedadded-5.3-----Win32 GUI: Givea warning when Vimis activated, and one of the files changedsince editing started. (Negri)Fixedfixed-5.3-----5.2.1:Win32 GUI:space for external command was not properly allocated, couldcausea crash. (Aaron) This was the reason to bring out 5.3 quickly after5.2.5.2.2: Some commands didn't complain when used without an argument, althoughthey need one: ":badd", ":browse", ":call", ":confirm", ":behave",":delfunction", ":delcommand" and ":tearoff".":endfunction" outside ofa function gave wrong error message: "Command notimplemented". Should be ":endfunction not insidea function".5.2.3:Win32 GUI: Whengvim was installed in "Program files", or another pathwithaspace in it, executing external commands with vimrun didn't work.5.2.4: Pasting with the mouse inInsert mode left the cursor on the lastpasted character, instead of behind it.5.2.5: InInsert mode, cursor after theend of the line,a shift-cursor-leftdidn't include the last character in the selection.5.2.6: Whendeleting text fromInsert mode (with "<C-O>D" or the mouse), whichincludes the last character in the line, the cursor could be left on the lastcharacter in the line, instead of just after it.5.2.7:Win32 GUI: scrollbar was one pixel too big.5.2.8: Completion of "PopUp" menu showed the derivatives "PopUpc", "PopUPi",etc. ":menu" also showed these.5.2.9: When using twoinput()functions ona row, the prompt would not bedrawn in column 0.5.2.10:A loop withinput() could not be broken withCTRL-C.5.2.11: ":call asdf" and ":call asdf(" didn't give an error message.5.2.12: Recursively using ":normal" crashes Vim aftera while. E.g.:":mapgq:normal gq<CR>"5.2.13:Syntax highlighting used'iskeyword' from wrong buffer. When using":help", then "/\k*" in anotherwindow with'hlsearch' set.5.2.14: When using ":source" froma function, globalvariables would not beavailable unless "g:" was used.5.2.15: XPM files can have the extension ".pm", whichis the sameas forPerlmodules. Added "syntax/pmfile.vim" to handle this.5.2.16: OnWin32 and Amiga, "echo expand("%:p:h")" removed one dirname in anempty buffer. mch_Fullname() didn't appenda slashat theend ofa directoryname.Should include the character under the cursor in theVisual area when using'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f".""p would alwaysput register 0, instead of the unnamed (last used) register.Reverse the change that ""x doesn't write in the unnamed (last used) register.It would always write in register 0, which isn't very useful. Use "-x for thepaste mappings inVisual mode.When thereis one long line on the screen, and'showcmd'is off, "0$" didn'tredraw the screen.Win32 GUI: When using'mousehide', the pointer would flicker when the cursorshapeis changed. (Negri)When cancellingVisual mode, and the cursor moves to the start, the wantedcolumn wasn't set, "k" or "j" moved to the wrong column.When using ":browse" or ":confirm", was checking fora comment and separatingbar, which can break some commands.Included fixes for Macintosh. (Kielhorn)==============================================================================VERSION 5.4version-5.4Version 5.4 adds new features, useful changes anda lot of bug fixes.Runtime directory introducednew-runtime-dir----------------------------The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM.You normally don't set$VIMRUNTIME but let Vim find it, by using$VIM/vim{version}, or use$VIM when that doesn't exist. This allows forseparating the user files from the distributed files and makesit moreeasy toupgrade to another version. It also makesit possible to keep two versions ofVim around, each with their own runtime files.In theUnixdistribution the runtime files have been moved to the "runtime"directory. This makesit possible to copy all the runtime filesat once,without the need to know what needs to be copied.The archives for DOS, Windows,Amiga andOS/2 now have an extra top-level"vim" directory. Thisis to make clear that user-modified files should beputhere. The directory that contains the executables doesn't have '-' or '.'characters. This avoids strange extensions.The$VIM and$VIMRUNTIMEvariables are set when they are first used. Thisallows them to be used by Perl, for example.The runtime files are also found ina directory called "$VIM/runtime". Thishelps when running Vim after just unpacking the runtime archive. When usingan executable in the "src" directory, Vim checks if "vim54" or "runtime" canbe added after removing it. This make the runtime files be found just aftercompiling.A default for$VIMRUNTIME can be given in theUnix Makefile. Thisis usefulif$VIM doesn't point to above the runtime directory but to e.g., "/etc/".Filetype introducednew-filetype-5.4-------------------Syntax files are now loaded with the newFileType autocommand. Old"mysyntaxfile" files will no longer work.filetypesThe scripts for loadingsyntax highlighting have been changed to use thenewSyntaxautocommand event.This combination of Filetype andSyntax events allows tuning thesyntaxhighlightinga bit more, also when selected from theSyntax menu. TheFileTypeautocommand can also be used to setoptions and mappings specificallyfor that type of file.The "$VIMRUNTIME/filetype.vim" fileis not loaded automatically. The":filetype on" command has been added for this. ":syntax on" also loads it.The'filetype' option has been added. Itis used to trigger theFileTypeautocommand event, like the'syntax' option does for theSyntax event.":set syntax=OFF" and ":set syntax=ON" can be used (ina modeline) to switchsyntax highlighting on/off for the current file.TheSyntax menu commands have been moved to $VIMRUNTIME/menu.vim. TheSyntaxmenuis included both when ":filetype on" and when ":syntax manual"is used.Renamed the old'filetype' option to'osfiletype'. It was only used forRISCOS.'filetype'is now used for the common file type.Added the ":syntax manual" command. Allows manual selection of thesyntax tobe used, e.g., froma modeline.Vimscript line continuationnew-line-continuation----------------------------When anEx line starts witha backslash,itis concatenated to the previousline. This avoids the need for long lines.line-continuation (Roemer)Example:if has("dialog_con") || \ has("dialog_gui") :let result = confirm("Enter your choice",\ "&Yes\n&No\n&Maybe",\ 2)endifImproved session filesimproved-sessions----------------------New words for'sessionoptions':- "help"Restore thehelp window.- "blank"Restore empty windows.- "winpos"Restore the Vimwindow position. Uses the new ":winpos"command- "buffers"Restore hidden and unloaded buffers. Withoutit only thebuffers inwindows are restored.- "slash"Replace backward by forward slashes in file names.- "globals"Store global variables.- "unix"Useunix file format (<NL> instead of<CR><NL>)The ":mksession" and'sessionoptions' are now in the+mksession feature.The top line of thewindowis also restored when usinga session file.":mksession" and ":mkvimrc" don't store'fileformat',it should be detectedwhen loadinga file.(Most of this was done by Vince Negri and Robert Webb)Autocommands improvedimproved-autocmds-5.4---------------------New events:FileType When the file type has been detected.FocusGained When Vim got input focus. (Negri)FocusLost When Vim lost input focus. (Negri)BufCreate Called just aftera new buffer has been created or has beenrenamed. (Madsen)CursorHold Triggered when no key has been typed for'updatetime'. Can beused todo something with theword under the cursor. (Negri)ImplementedCursorHoldautocommand event for Unix. (Zellner)Also forAmiga and MS-DOS.GUIEnter Can be used todo something with theGUIwindow afterit hasbeen created (e.g.,a ":winpos 100 50").BufHidden Whena buffer becomes hidden. Used to delete theoption-window whenit becomes hidden.Also triggerBufDelete just beforea bufferis going to be renamed. (Madsen)The "<amatch>"pattern can be used like "<afile>" for autocommands, exceptthatitis the matching value for theFileType andSyntax events.When ":let@/=<string>"is used in an autocommand, this last searchpatternwill be used after theautocommand finishes.Made loadingautocommandsa bit faster. Avoid doingstrlen() on eachexitingpattern for each newpattern by remembering the length.Encryptionnew-encryption----------Files can be encrypted whenwriting and decrypted when reading. Added the'key' option, "-x" command line argument and ":X" command.encryption (basedon patch from Mohsin Ahmed)When readinga file, thereis an automatic detection whetherit has beenencrypted. Vim will then prompt for the key.Note that theencryptionmethodis not compatible with Vi. Theencryptionisnot unbreakable. This allowsit to be exported from the US.GTKGUI portnew-GTK-GUI------------NewGUI port for GTK+. Includesa toolbar, menu tearoffs, etc.gui-gtkAdded the:helpfind command. (Kahn and Dalecki)Menu changesmenu-changes-5.4------------Menus can now also be used in the console. Itis enabled by the new'wildmenu' option. This shows matches for command-line completion likeamenu. This worksasa minimal file browser.The new:emenu command can be used to executea menu item.Uses the last status line tolist items, or insertsa line just above thecommand line. (Negri)The'wildcharx' option can be used to trigger'wildmenu' completion fromamapping.When compiled without menus, this can be detected with has("menu"). Also showthis in the ":version" output. Allow compilingGUI versions without menusupport. Only include toolbar support when thereis menu support.Moved the "Window" menu all the way to the right (priority 70). Looks morefamiliar for people working with MS-Windows, shouldn't matter for others.Included "Buffers" menu. Works with existingautocommands and functions. Itcan be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen)Win32 supports separators ina menu: "-.*-". (Geddes)Menu separators forMotif now work too.Made Popup menu forMotifGUI work. (Madsen)'M' flag in'guioptions': Don't source the system menu.All the menu code has been moved from gui.c to menu.c.Viminfo improvedimproved-viminfo----------------New flags for'viminfo':'!'Store globalvariables in theviminfo file if they are inuppercaseletters. (Negri)'h'Do ":nohlsearch" when loadingaviminfo file.Store search patterns in theviminfo file with their offset, magic, etc. Alsostore the flag whether'hlsearch' highlightingis on or off (whichis not usedif the 'h' flagis in'viminfo').Give an error message when setting'viminfo' without commas.Various new commandsnew-commands-5.4--------------------Operatorg?:rot13 encoding. (Negri)zH andzL commands: Horizontalscrolling by halfa page.gm move cursor to middle of screen line. (Ideas by Campbell)Operations onVisual blocks:v_b_I,v_b_A,v_b_c,v_b_C,v_b_r,v_b_< andv_b_>. (Kelly)New command:CTRL-\CTRL-N, which does nothing inNormal mode, and goes toNormal mode when inInsert orCommand-line mode. Can be used by VisVim orother OLE programs to make sure Vimis inNormal mode, without causinga beep.CTRL-\_CTRL-N":cscope kill" command to use the connection filename.:cscope (Kahn):startinsert command: StartInsert mode next.:history command, to show all four types of histories. (Roemer)[m,[M,]m and]M commands, for jumping backward/forward to start/endofmethod ina (Java) class.":@*" executes the * register.:@ (Acevedo)go and:goto commands: Jump to byte offset in the file.gR andgr command: VirtualReplace mode.Replace characters withoutchanging the layout. (Webb)":cd-" changes to the directory from before the previous ":cd" command.:cd- (Webb)Tag preview commands:ptag. Shows the result ofa ":tag" ina dedicatedwindow. Can be used to see the context of thetag (e.g., function arguments).(Negri):pclose command, andCTRL-WCTRL-Z: Close preview window. (Moore)'previewheight' option, height for the preview window.Also:ppop,:ptnext,:ptprevious,:ptNext,:ptrewind,:ptlast.:find and:sfind commands: Finda file in'path', (split window) and editit.The:options command opens an optionwindow that shows the current optionvalues. Or use ":browse set" to open it. Options are grouped by function.Offers shorthelp on each option. Hit<CR> to jump to more help. Edit theoption value and hit<CR> ona "set" line to seta new value.Various newoptionsnew-options-5.4-------------------Scroll-binding:'scrollbind' and'scrollopt' options. Added:syncbindcommand. Makeswindows scroll the same amount (horizontally and/orvertically). (Ralston)'conskey' option for MS-DOS. Use direct console I/O. This should work withtelnet (untested!).'statusline' option: Configurable contents of the status line. Also allowsshowing the byte offset in the file. Highlighting with %1* to %9*, using thenew highlight groups User1 to User9. (Madsen)'rulerformat' option: Configurable contents of the ruler, like'statusline'.(Madsen)'write' option: When off,writing filesis not allowed. Avoids overwritingafile even with ":w!". The-m command line option resets'write'.'clipboard' option: How theclipboardis used. Value "unnamed": Use unnamedregister like "*. (Cortopassi) Value "autoselect": Like what 'a' in'guioptions' does but works in the terminal.'guifontset' option: Specify fonts for the +fontset feature, for theX11GUIversions. Allows using normal fonts when vimis compiled with this feature.(Nam)'guiheadroom' option: How much room to allow above/below theGUI window.Used for Motif, Athena and GTK.Implemented'tagstack' option: When off, pushingtags onto the stackisdisabled (Vi compatible). Useful for mappings.'shellslash' option. Only for systems that useabackslashasa fileseparator. This option will usea forward slash in file names when expandingit. Useful when'shell'is sh or csh.'pastetoggle' option: Key sequence that toggles'paste'. Works around theproblem that mappings don't work inInsert mode when'paste'is set.'display' option: When set to "lastline", the last line fills the window,instead of being replaced with "@" lines. Only the last three characters arereplaced with "@@@", to indicate that the line has not finished yet.'switchbuf' option: Allows re-using existingwindows ona buffer thatis beingjumped to, or split thewindow to opena new buffer. (Roemer)'titleold' option. Replaces the fixedstring "Thanks for flying Vim", whichis used to set the title when exiting. (Schild)Vim scriptsnew-script-5.4-----------Theexists() function can also check for existence ofa function. (Roemer)An internal functionis now found witha binary search, should bea bitfaster. (Roemer)New functions:-getwinposx() andgetwinposy(): get Vimwindow position. (Webb)-histnr(),histadd(),histget() andhistdel(): Makehistory available. (Roemer)-maparg(): Returns rhs ofa mapping. Based ona patch from Vikas.-mapcheck(): Check ifa map name matches with an existing one.-visualmode(): Return type of lastVisual mode. (Webb)-libcall(): Calla function ina library. Currently only for Win32. (Negri)-bufwinnr(): findwindow that contains the specified buffer. (Roemer)-bufloaded(): Whethera buffer exists andis loaded.-localtime() andgetftime(): wall clock time and last modification time ofa file (Webb)-glob(): expand file namewildcards only.-system(): get the raw output of an external command. (based ona patch from Aaron).-strtrans(): TranslateString into printable characters. Used for2html.vim script.-append():easy way to appenda line of text ina buffer.Changed functions:- Optional argument tostrftime() to give the time in seconds. (Webb)-expand() now also returns names for files that don't exist.Allow numbers in the name ofa user command. (Webb)Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. Theones from version 5.3 can be used without "v:" too, for backwardscompatibility.New variables:"v:warningmsg" and "v:statusmsg" internal variables. Contain the last givenwarning and status message.v:warningmsgv:statusmsg (Madsen)"v:count1" variable: like "v:count", but defaults to one when nocountisused.v:count1When compiling withoutexpression evaluation, "if 1" can be used around thenot supported commands to avoidit being executed. Works like in Vim 4.x.Some of the runtime scripts gaveerrors when used witha Vim that was compiledwith minimal features. Now "if 1"is used around code thatis not alwayssupported.When evaluating anexpression with && and ||, skip the parts that will notinfluence the outcome. This makesit faster and avoids error messages. (Webb)Also optimized the skipping of expressions inside an "if0".Avoidhit-enter promptavoid-hit-enter-----------------------Added 'T' flag to'shortmess': Truncate allmessages that would cause thehit-enter prompt (unless that would happen anyway).The 'O' flag in'shortmess' now also applies toquickfix messages, e.g., fromthe ":cn" command.The default for'shortmess'is now "filnxtToO", to make mostmessages fit onthe command line, and not cause thehit-enter prompt.Previousmessages can be viewed with the new:messages command.Somemessages are shown fully, even when'shortmess' tells to shortenmessages, because the useris expected to want to see them in full:CTRL-G andsomequickfix commands.Improvedquickfiximproved-quickfix-----------------Parse change-directory lines for gmake: "make[1]: Entering directory'name'".Uses "%D" and "%X" in'errorformat'.Also parse "Making{target} in{dir}"messages from make. Helps when notusing GNU make. (Schandl)Use'isfname' for "%f" in'errorformat'.Parsing of multi-line messages.errorformat-multi-lineAllowa range for the:clist command. (Roemer)Support for "global" file names, for error formats that output the file nameonce for several errors. (Roemer):cnfile jumps to first error in next file."$*" in'makeprg'is replaced by arguments to ":make". (Roemer)Regular expressionsregexp-changes-5.4-------------------Ina regexp,a '$' before "\)"is also considered to be an end-of-line./$In patterns "^" after "\|" or "\("isa start-of-line./^ (Robinson)Ina regexp, in front of "\)" and "\|" both "$" and "\$" were consideredend-of-line. Now use "$"as end-of-line and "\$" fora literal dollar. Samefor '^' after "\(" and "\|"./\$/\^Some search patterns can be extremely slow, even though they are not reallyillegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting anyregexpsearch withCTRL-C.Register "/: last searchstring (read-only). (Kohan) Changed to use last usedsearchpattern (like what'hlsearch' uses). Can set the searchpattern with":let@/={expr}".Added character classes to search patterns, to avoid the need for removing the'l' flag from'cpoptions':[:tab:],[:return:],[:backspace:] and[:escape:].By addinga '?' aftera comparativeoperator in an expression, the comparisonis done by ignoring case.expr-==?Other improvements made between version 5.3 and 5.4---------------------------------------------------Changedchanged-5.4-------Unix: Use $TMPDIR for temporary files, ifitis set and exists.Removed "Empty buffer" message. It isn't useful and can causeahit-enterprompt. (Negri)"ex-" now reads commands from stdin and works in silent mode. Thisis to becompatible with the original "ex" command thatis used for scripts.Default range for ":tcldo"is the whole file.CancellingVisual mode with ESC moved the cursor. There appears to be noreason for this. Now leave the cursor whereit is.The ":grep" and ":make" commands see "as part of the arguments, instead ofthe start ofa comment.In expressions the "=~" and "!~" operators no longer are affected by'ignorecase'.Renamed vimrc_example tovimrc_example.vim and gvimrc_example togvimrc_example.vim. Makes them being recognizedas vim scripts."gd" no longer starts searchingat theend of the previous function, butatthe first blank line above the start of the current function. Avoids thatusing "gd" in the first function finds globala variable.Default for'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matcheswill be found,at the cost of time (the search can be interrupted).Itis no longer possible to set 'shell*'options froma modeline. Previouslyonlya warning message was given. This reduces security risks.The ordering of theindex of documentation files was changed to makeit moreeasy to finda subject.OnMS-DOS and win32, when$VIM was not set,$HOME was used. This causedtrouble if$HOME was set to e.g., "C:\" for some other tool, the runtime fileswould not be found. Now use$HOME only for _vimrc, _gvimrc, etc., not to findthe runtime file.When'tags'is "./{fname}" and thereis no file name for the current buffer,just use it. Previouslyit was skipped, causing "vim-t{tag}" not to findmany tags.When trying to select text in the'scrolloff' area by mouse dragging, theresultingscrolling made this difficult. Now'scrolloff'is temporarily setto0 or 1 to avoid this. But still allowscrolling in the top line to extendto above the displayed text.Default for'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoccomments work. Also helps forC comments that start with "/*******".CTRL-XCTRL-]Insert modetag expansion tried to expand to alltags when usedaftera non-ID character, which can takea very long time. Now limit this to200 matches. Also used for command-linetag completion.TheOS/2distribution has been split in two files. It was too big to fit onafloppy. The same runtime archiveas for the PCis now used.In the documentation, items like<a-z> have been replaced with{a-z} fornon-optional arguments. This avoids confusion with key names:<C-Z>isaCTRL-Z, nota character betweenC and Z, thatis{C-Z}.Addedadded-5.4-----Color support for the iris-ansi builtintermcap entry. (Tubman)Included VisVim version 1.3a. (Erhardt)Win32 port for SNiFF+ interface. (Leherbauer)Documentation file for sniff interface: if_sniff.txt. (Leherbauer)Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory.To be used with the OLE version ofgvim under MS-Windows. (Schaller)Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert)Whena file thatis being editedis deleted, givea warning (like when thetime stamp changed).Included newer versions of the HTML-generating Awk andPerl scripts. (Colombo)Linux console mouse support through "gpm". (Tsindlekht)Security fix: Disallowchanging'secure' and'exrc' froma modeline. When'secure'is set, givea warning forchangingoptions that containa programname.Made thePerlinterface work withPerl 5.005 and threads. (Verdoolaege)When giving an error message for an ambiguous mapping, include the offendingmapping. (Roemer)Command line editing:- Command line completion of mappings. (Roemer)- Command line completion for ":function", ":delfunction", ":let", ":call", ":if", etc. (Roemer)- When usingCTRL-D completion for user commands that have "-complete=tag_listfiles" alsolist the file names. (Madsen)- Complete the arguments of the ":command" command. (Webb)-CTRL-R. in command line inserts last inserted text.CTRL-F,CTRL-P,CTRL-W andCTRL-A afterCTRL-R are used toinsert anobject from under the cursor. (Madsen)Made the text inuganda.txt aboutcopying Vima bit more clear.Updated the Vim tutor. Added the "vimtutor" command, which copies thetutorand starts Vim on it. "makeinstall" now also copies the tutor.In the output of ":clist" the current entryis highlighted, with the 'i'highlighting (sameas used for'incsearch').For the ":clist" command, you can scroll backwards with "b" (one screenful),"u" (halfa screenful) and "k" (one line).Multi-byte support:- X-inputmethod formultibyte characters. Andvarious fixes formultibyte support. (Nam)- Hangul inputmethod feature:hangul. (Nam)- Cleaned up configuration ofmultibyte support, XIM,fontset and Hangul input. Eachis now configurable separately.- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam)- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam)-XIM support for GTK+. (Nam)- First attempt to include support for SJIS encoding. (Nagano)- Whena double-byte character doesn't fitat theend of the line,puta "~" there and printit on the next line.- Optimize output ofmultibyte text. (Park)-Win32 IME: preedit styleis like over-the-spot. (Nagano)-Win32 IME:IME mode change now done with ImmSetOpenStatus. (Nagano)-GUI Athena: file selectiondialog can displaymultibyte characters. (Nagano)- Selection reply for XA_TEXTas XA_STRING. (Nagano)"runtime/macros/diffwin.vim". Mappings to makeadiff window. (Campbell)Added ".obj" to the'suffixes' option.Reduced size of syntax/synload.vim by using the ":SynAu" user command.Automated numbering ofSyntax menu entries in menu.vim.In theSyntax menu,insert separators betweensyntax names that start witha different letter. (Geddes)Xterm:- Clipboard support when using the mouse in an xterm. (Madsen)- When using the xterm mouse, track dragging of the mouse. Use xtermescape sequences when possible. Itis more precise than other methods, but requiresa fairly recent xterm version. Itis enabled with "xterm2" in'ttymouse'. (Madsen)- Check xterm patch level, to set the value of'ttymouse'. Has only been added to xterm recently (patch level> 95). Uses the new't_RV'termcap option. Set'ttymouse' to "xterm2" whena correct responseis recognized. Will make xterm mouse dragging work better.- Support for shifted function keys on xterm. Changed codes for shifted cursor keys to what the xterm actually produces. Added codes for shifted<End> and<Home>.- Added't_WP' to set thewindow position in pixels and't_WS' to set thewindow size in characters. Xterm can now move (used for ":winpos") and resize (use for ":set lines=" and ":set columns=").X11:- When inVisual mode but not owning the selection, display theVisual area with the VisualNOS group to show this. (Madsen)- Support for requesting the type ofclipboard support. Used for AIX and dtterm. (Wittig)- Support compound_text selection (even when compiled without multibyte).Swap file:- New variation for naming swap files:Replace path separators into %, place all swap files in one directory. Used whena name in'dir' ends in two path separators. (Madsen)- Whena swap fileis found, show whetherit contains modifications or not in the informative message. (Madsen)- When dialogs are supported, useadialog to ask the user what todo whena swapfile already exists."popup_setpos" in'mousemodel' option. Allows for moving the cursor whenusing the right mouse button.Whena bufferis deleted, the selection for which buffer to display insteadnow uses the most recent entry from the jump list. (Madsen)When usingCTRL-O/CTRL-I, skip deleted buffers.A percentageis shown in the ruler, when thereis room.Used autoconf 1.13 to generate configure.Included get_lisp_indent() from Dirk van Deun. Does better Lisp indentingwhen 'p' flag in'cpoptions'is not included.Made the2html.vimscript quitea bit faster. (based on ideas from Geddes)Unix:- Included the name of the user that compiled Vim and the system nameit was compiled on in the version message.- "makeinstall" now also installs the "tools" directory. Makes them available for everybody.- "make check" now does the sameas "make test". "make test" checks forVisual block mode shift, insert, replace and change.- Speed up comparinga file name with existingbuffers by storing the device/inode number with the buffer.- Added configure arguments "--disable-gtk", "--disable-motif" and "--disable-athena", to be able to disablea specificGUI (whenit doesn't work).- Renamed the configure arguments for disabling the check for specific GUIs. Should be clearer now. (Kahn)- Ona DigitalUnix system("OSF1") check for the curses library before termlib and termcap. (Schild)- "make uninstall_runtime" will only delete the version-specific files. Can be used to delete the runtime files ofa previous version.Macintosh: (St-Amant)- Dragging the scrollbar, like it's done for theWin32 GUI. Moved common code from gui_w32.c to gui.c- Added dialogs and file browsing.- Resourcefork preserved, warning whenit will be lost.- Copy original file attributes to newly written file.- Set title/notitle bug solved.- Filename completion improved.- Grow box limit resize toa char by char size.- Use ofrgb.txt for more colors (but give back bad color).- Apple menu works (beside the about...).- Internal border now vim compliant.- Removinga menu doesn't crash anymore.- Weak-linking ofPython 1.5.1 (only on PPC).Pythonis supported when the libraryis available.- If an erroris encountered when sourcing the users .vimrc, the alert box now shows right away with the OK button defaulted. There's no more "Delete"-key signat the start of each line- Better management of environment variables. Now$VIMis calculated only once, not regenerated every timeitis used.- No more CPU hog when in background.- Ina sourced Vimscript theMac file format can be recognized, just likeDOS file format is.When both "unix" and "mac" are present in'fileformats', prefer "mac" formatwhen there are more CR than NL characters.When using "mac" fileformat, use CR instead ofa NL, because NLis used forNUL. Will preserve all characters ina file. (Madsen)TheDOS install.exe now contains checks for an existing installation. Itavoids setting$VIM and $PATH again.Theinstall program for Dos/Windows can nowinstall Vim in thepopup menu, byadding two registry keys.Port to EGCS/mingw32. New Makefile.ming. (Aaron)DOS 16 bit: Don't include cursor shape stuff. Save some bytes.TCL support to Makefile.w32. (Duperval)OS/2: Use argv[0] to find runtime files.When using "gf" togo toa buffer that has already been used, jump to theline where the cursor last was.Colored the output of ":tselect"a bit more. Different highlighting betweentag name and file name. Highlight field name("struct:") separately fromargument.Backtick expansion for non-Unix systems. Based ona patch from Aaron.Allows the use of things like ":n `grep-l test *.c`" and"echo expand('`lsm*`')".Check for the'complete' option whenitis set. (Acevedo)'d' flag in'complete' searches for defined names or macros.While searching forInsert mode completions in include files andtags files,check for typeahead, so that you can use matches early. (Webb)The '.' flag in'complete' now scans the current buffer completely, ignoring'nowrapscan'. (Webb)Added '~' flag to'whichwrap'. (Acevedo)When ending theVisual mode (e.g., with ESC) don't grab ownership of theselection.Ina color terminal, "fg" and "bg" can be usedas color names. They stand forthe "Normal" colors.A fewcscope cleanups. (Kahn)Included changed vimspell.sh from Schemenauer.Concatenation of strings in anexpression with "."isa bit faster. (Roemer)The ":redir" command can now redirect toa register: ":redir@r". (Roemer)Made the output of ":marks" and ":jumps" look similar. When themarkis inthe current file, show the textat the mark. Also for ":tags".When configure finds ftello() and fseeko(), they are used in tag.c (for whenyou have extremely bigtags files).Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow)GUI:- When using ":gui" ina non-GUI Vim, givea clear error message.- "gvim-v" doesn't start theGUI (if console supportis present).- When inEx mode, use non-Visual selection for the whole screen.- Whenstarting with "gvim-f" and using ":gui" in the.gvimrc file, Vim forked anyway. Now the "-f" flagis remembered for ":gui". Added "gui-b" to rungvim in the background anyway.Motif GUI:- Check for "-lXp" library in configure (butit doesn't work yet...).- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the order to leta localMotif version overridea system standard version.Win32 GUI:- When using "-register" or "-unregister" in the non-OLE version, give an error message.- UseGTK toolbar icons. Makewindow border look better. Use sizing handles on the lower left&right corners of the window. (Negri)- Whenstarting an external command with ":!start" and the command can not be executed, give an error message. (Webb)- Use sizing handles for the grey rectangles below the scrollbars. Can draw toolbar in flat mode now, looks better. (Negri)- Preparations forMS-Windows 3.1 addition. Mostlychanging WIN32 to MSWIN and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri)Avoid allocating the samestring four times in buflist_findpat(). (Williams)Set title and icon text withtermcapoptions't_ts','t_fs','t_IS' and't_IE'. Allows doing this on anyterminal that supports setting the titleand/or icon text. (Schild)New 'x' flag in'comments': Automaticallyinsert theend part when its lastcharacteris typed. Helps to closea/* */ comment in C. (Webb)Whenexpand() hasa second argument whichis non-zero, don't use'suffixes'and'wildignore', return all matches.'O' flag in'cpoptions' When not included, Vim will not overwritea file, ifit didn't exist when editing started butit does exist when the bufferiswritten to the file. The filemust have been created outside of Vim, possiblywithout the user knowing it. When thisis detected aftera shell command,givea warning message.When editinga new file,CTRL-G will show [New file]. When there wereerrorswhile reading the file,CTRL-G will show [Read errors].":wall" can now useadialog and file-browsing when needed.Grouped functionality into new features, mainly to reduce the size of theminimal version:+linebreak:'showbreak','breakat' and'linebreak'+visualextra:"I"nsert and "A"ppend inVisual block mode, "c"hange all linesina block, ">" and "<": Shiftinga block, "r": ReplacingaVisual area with one character.+comments:'comments'+cmdline_info:'ruler' and'showcmd'. Replaces +showcmd."+title"Don't add code to set title or icon for MSDOS, this was notpossible anyway.+cmdline_complDisable commandline completionat compile time, except forfiles, directories andhelp items.Moved features fromalist of function calls into an array. Should savea bitof space.While entering the body ofa function, adjust indent according to "if" and"while" commands.VMS: Adjusted os_vms.mmsa bit according to suggestions from Arpadffy.The flags in the'comments' option can now include an offset. This makesitpossible to align "/*****", "/* xxx" and "/*" comments with the same'comments' setting. The default value for'comments' uses this.Added 'O' flag: Don't use this part for the "O" command. Useful for "setcom=sO:*\ -,mO:*\ \ ,exO:*/"FileTypeautocommands recognize ".bak", ".orig" and "~" extensions and removethem to find the relevant extension.The tutorial forwritinga Vimscript file has been extended.Some more highlighting inhelp files, for items that are not typed literally.Can use "CTRL-WCTRL-G" like "CTRL-Wg"."make test" for OS/2.Adjusted configure to automatically use theGUI for BeOS.Fixedfixed-5.4-----5.3.1: When using anautocommand forBufWritePre that changes the name of thebuffer, freed memory would be used. (Geddes)Mac: Compiler didn't understand start of skip_class_name().Win32 GUI:- When cancelling the font requester, don't give an error message.- Whena tearoff-menuis open and its menuis deleted, Vim could crash. (Negri)- There wasa problem on Windows 95 with (un)maximizing the window. (Williams)- when'mousehide'is set, the mouse would stay hidden whena menuis dropped with the keyboard. (Ralston)- Thetempname() function already created the file. Caused problems when using ":w". Now the fileis deleted.- Cursor disappeared when ending up in the top-left character on the screen after scrolling. (Webb)- When addinga submenu fora torn-off menu,it was not updated.- Menu tooltip was using the toolbar tooltip. (Negri)- Setting'notitle' didn't remove the title. (Steed)- Using ":!start cmd" scrolled the screen one line up, and didn't wait for return when the command wasn't found.Cscope interface: Sorting of matches was wrong. Starting theinterface couldfail. (Kahn)Motif GUI: Could not compile withMotif 1.1, because some tear-offfunctionality was not in #ifdefs.Configure could sometimes not compile or link the test program for sizeof(int)properly. This caused alignment problems for theundo structure allocations.Addeda safety check that SIZEOF_INTis not zero.Added configure check to test if strings.h can be included after string.h.Some systems can't handle it.Some systems need both string.h and strings.h included. Adjusted vim.h forthat. Removed including string.h from os_unixx.h, since it's already invim.h. (Savage)AIX: defining _NO_PROTO in os_unix.h causesa conflict between string.h andstrings.h, but after the configure check saidit was OK. Also define_NO_PROTO for AIX in the configure check. (Winn)When closingawindow withCTRL-W c, the value of'hidden' was not taken intoaccount, the buffer was always unloaded. (Negri)Unix Makefile: "makeinstall" always tried to rename an older executable andremove it. This caused an error message whenit didn't exit. Addeda checkfor the existence of an old executable.The command line for "makeinstall" could get too long, because of the manysyntax files. Now firstdoa "cd" to reduce the length.OnRISCOS and MSDOS, readinga file could fail, because the short filename wasused, which can be wrong aftera ":!cd".In theDOS versions, the wrong install.exe was included (required Windows).Now the install.exe versionis included thatis the sameas the Vim version.This also supports long file names where possible.When recording, and stopping while inInsert mode withCTRL-O q, theCTRL-Owould also be recorded.32bitDOS version: "vim \file", while ina subdirectory, resulted in "newfile" for "file" in the local directory, while "\file" did exist. When"file" in the current directory existed, this didn't happen.MSDOS: Mouse could notgo beyond 80 columns in 132 columns mode. (Young)"make test" failed in the RedHat RPM, because compatibleis off by default.InInsert mode<C-O><C-W><C-W> changes to other window, but the statusbarswere not updated until another character was typed.MSDOS: environmentoptions inlowercase didn't work, although they did in theWin32 versions. (Negri)After ":nohlsearch",atag command switched highlighting back on.When using "append" commandas the last line in an autocommand, Vim wouldcrash.RISCOS: The scroll bumpers (?) were not working properly. (Leonard)"zl" and "zh" could move the cursor, but this didn't set the column in whiche.g., "k" would move the cursor.When doing ":set all&" the value of'scroll' was not set correctly. Thiscaused an error message when later setting any other number option.When'hlsearch' highlighting has been disabled with ":nohlsearch",incremental searching would switchit back on too early.When listingtags for ":tselect", and usinga non-search command, and the lastcharacter was equal to the first (e.g., "99"), the last char would not beshown.When searching fortags with ":tag" Vim would assume that all matches had beenfound when there were still more (e.g. from anothertags file).Win32: Didn't recognize "c:\" (e.g., intags file)as absolute path whenupper/lowercase was different.Some xterms (Debian) send<Esc>OH for HOME and<Esc>OF for END. Added theseto the builtin-xterm.Inex mode, any CR was seenas theend of the line. Onlya NL should behandled that way. broke ":s/foo/some^Mtext/".In menu.vim,a vmenu was used to override an amenu. That didn't work, becausethe system menu file doesn't overwrite existing menus. Added explicit vunmenuto solve this.Configure check forterminal library could finda library that doesn't workatruntime (Solaris: shared library not found). Addeda check thata programwith tgoto() can run correctly.Unix: "echo-n" in the Makefile doesn't work on all systems, causingerrorscompiling pathdef.c. Replacedit with "tr".Perl: DO_JOIN was redefined by Perl. Undefinedit in theperl files.VariousXIM andmultibyte fixes:- Fix user cannot see his language while heis typing his language with off-the-spot method. (Nagano)- Fix preedit position using text/edit area (using gui.wid). (Nagano)- remove 'fix dead key' codes. It was needed since XNFocusWindow was "x11_window", XNFocusWindowis now gui.wid. (Nagano)- Remove some compile warnings and fix typos. (Namsh)- For status area, check the gtk+ version while Vim runs.I believeitis better than compile time check. (Namsh)- Remove one FIXME for gtk+-xim. (Namsh)- XIM: Dead keys didn't work for Czech. (Vyskovsky)- Multibyte: If user input only 3byte suchas mb1_mb2_eng or eng_mb1_mb2 VIM could convertit to special character. (Nam)- Athena/Motif with XIM: fix preedit area. (Nam)- XIM: Composed strings were sometimes ignored. Vim crashed when composestring was longer than 256 bytes. IM's geometrycontrolis fixed. (Nam, Nagano)-Win32 multibyte: hollowed cursor width ona double byte char was wrong. (Nagano)- When thereis no GUI, selectingXIM caused compilation problems. Automatically disableXIM when thereis noGUI in configure.-Motif and Athena: When compiled with XIM, but the inputmethod was not enabled, there would still bea status line. Now the status lineis gone if the inputmethod doesn't work. (Nam)Win32: tooltip was not removed when selectinga parent menu (it was whenselectinga menu entry). (Negri)Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call.Removed it,it should not be necessary when exiting.Win32: Crash on keypress when compiled with Borland C++. (Aaron)When checking forMotif library files, prefer the same locationas the includefiles (with "include" replaced with "lib") above another entry.Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it'sused in gui_x11.c.Win32: Whentesting foratimestamp ofa file on floppy, would getadialogbox when the floppy has been removed. Now return with an error. (Negri)Win32 OLE: When forced to come to the foreground,a minimizedwindow was stillminimized, now it's restored. (Zivkov)There was no check fora positive'shiftwidth'.A negative value could causea hangup,a zero valuea crash.Athena GUI: horizontal scrollbar wasn't updated correctly when clicking rightor left of the thumb.When makinga Visual-block selection in one window, and trying to scrollanother, could causeerrors for accessing non-existent line numbers.When'matchpairs' contains "`:'", jumping from the` to the' didn't workproperly.Changed '\"' to'"' to makeit compatible with oldC compilers.The command line expansion for mappings causedascript witha TAB between lhsand rhs ofa map command to fail. Assume the TABis to separate lhs and rhswhen there are no mappings to expand.When editinga file with very long lines with'scrolloff' set, "j" wouldsometimesend up ina line which wasn't displayed.When editinga read-only file,it was completely read into memory, even whenit would not fit. Now createa swap file fora read-only file when runningout of memory while reading the file.When using ":set cino={s,e-s",a line after "} else{" was not indentedproperly. Also addeda check for this in test3.in.The Hebrewmapping for the command line was remembered for the next commandline. That isn't very useful,a commandis not Hebrew. (Kol)When completing file names with embedded spaces, like "Program\ files", thisdidn't work. Also for user commands. Moved backslash_halve() down tomch_expandpath().When using "set mouse=a" inEx mode, mouse events were handled like typedtext. Then typing "quit" screwed up the mouse behavior of the xterm.Whenrepeating aninsert with "." that containsaCTRL-Y,a number 5 wasinsertedas "053".YankingaVisual area, with the cursor past the line, didn't move the cursorback onto the line. Same for "~", "u", "U" and "g?"Win32: Default for'grepprg' could be "findstr /n" even though thereis nofindstr.exe (Windows 95). Check ifit exists, and fall back to "grep-n" ifit doesn't.Because gui_mouse_moved() inserteda leftmouse click in the input buffer,remappinga leftmouse click caused strange effects. NowInsert another codein the input buffer. Alsoinserta leftmouse release, to avoid the problemwith ":map<LeftMouse>l" that the next releaseis seenas the release for thefocus click.With'wrap' on, when usinga line that doesn't fit on the screen, if the startof theVisual areais before the start of the screen, there was nohighlighting. Also,'showbreak' doesn't work properly.DOS, Win32:Apattern "[0-9]\+" didn't work in autocommands.When creatinga swap file fora buffer which isn't the current buffer, couldgeta mixup of short file name, resulting ina long file name whena shortfile name was required. makeswapname() was calling modname() instead ofbuf_modname().Whena function caused an error, and the error message was very long becauseof recursiveness, this would causea crash.'suffixes' were always compared with matching case. For MS-DOS,Win32 andOS/2caseis now ignored.The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it.When generatingascript file,'cpo' was made empty. This caused backslashesto disappear from mappings. Setit to "B" to avoid that.Lots of typos in the documentation. (Campbell)When editing an existing (hidden) buffer, jump to the last used cursorposition. (Madsen)Ona Sun the xterm screen was not restored properly when suspending. (Madsen)When $VIMINITis processed,'nocompatible' was only set after processing it.Unix: Polling fora character wasn't done for GPM, Sniff and Xtermclipboardall together. Cleaned up the code for using select() too.When executing external commands from the GUI, some typeahead was lost. Addedsome code to regainas much typeaheadas possible.When thewindow heightis 5 lines or fewer,<PageDown> didn't usea one-lineoverlap, while<PageUp> does. Made sure that<PageUp> uses the same overlapas<PageDown>, so that using them both always displays the same lines.Removeda few unusedfunctions andvariables (found with lint).Dictionary completion didn't use'infercase'. (Raul)Configure tests failed when thePerl library was not in LD_LIBRARY_PATH.Don't use thePerl library for configure tests, addit to the linker line onlywhen linking Vim.When using ncurses/terminfo, could geta't_Sf' and't_Sb'termcap entry thathas "%d" instead of "%p1%d". The light background colors didn't work then.GTKGUI with ncurses: Crashed whenstarting up in tputs(). Don't use tputs()when theGUIis active.Could use the ":let" command to set the "count", "shell_error" and "version"variables, but that didn't work. Give an error message when trying to setthem.On FreeBSD 3.0, tclshis called tclsh8.0. Adjusted configure.in to find it.When Vimis linked with -lncurses, butpython uses -ltermcap, this causestrouble: "OOPS". Configure now removes the -ltermcap.:@" and:*" didn't work properly, because the " was recognizedas the start ofa comment.Win32s GUI: Minimizing the console whereafilter command runs in causedtrouble for detecting that thefilter command has finished. (Negri)After executingafilter command from an xterm, the mouse would be disabled.It would work again afterchanging the mode.Mac GUI: Crashed in newenv(). (St-Amant)Themenus and mappings inmswin.vim didn't handle text ending ina NLcorrectly. (Acevedo)The ":k" command didn't check ifit hada valid argument or extra characters.Now givea meaningful error message. (Webb)On SGI, the signal function doesn't always have three arguments. Check forstruct sigcontext to find out. Might still be wrong...Could crash when using'hlsearch' and searchpatternis "^".When search patterns were saved and restored, status of no_hlsearch was notalso saved and restored (from ":nohlsearch" command).When usingsetline() to makea line shorter, the cursor position was notadjusted.MS-DOS and Win95: When trying to edita file and accidentally addinga slashorbackslashat the end, the file was deleted. Probably when trying to createthe swap file. Explicitly check fora trailing slash orbackslash beforetrying to reada file.X11 GUI: Whenstarting theGUI failed and receiveda deadly signal whilesetting the title, would lock up when trying to exit, because the titleisreset again. Avoid using mch_settitle() recursively.X11 GUI: Whenstarting theGUI fails, and then tryingit again, would crash,because argv[] has been freed and x11_display was reset to NULL.Win32: When$HOME was set, wouldput "~user" in the swap file, which wouldnever compare witha file name, and never cause the attention message. Putthe full path in the swap file instead.Win32 console: There were funny charactersat theend of the "vim-r" swapfiles message (direct output of CR CR LF).DOS 32 bit: "vim-r"put the textat the top of the window.GUI: With'mousefocus' set, got mouse codesas text with "!sleep 100" or "Q".Motif andWin32 GUI: Whenchanging'guifont' toa font of the same size thescreen wasn't redrawn.Unix: When using ":make", jumping toa file b.c, whichis already openasasymbolic link a.c, openeda new buffer instead of using the existing one.Inserting text in the current buffer while sourcing the.vimrc file wouldcausea crash or hang. The memfile for the current buffer was neverallocated. Now it's allocatedas soonas somethingis written in the buffer.DOS 32 bit: "lightblue" background worked for text, but not drawn parts wereblack.DOS: Colors of console were not restored upon exiting.When recording, with'cmdheight' set to 2 and typing Esc> inInsert modecaused the "recording" message to be doubled.Spurious "file changed"messages could happen on Windows. Now toleratea onesecond difference, like for Linux.GUI: When returning fromEx mode, scrollbars were not updated.Win32: Copying text to theclipboard containinga<CR>, pastingit wouldreplaceit witha<NL> and drop the next character.Enteringa double byte character didn't work if the second byteis in[xXoO].(Eric Lee)vim_realloc was both defined and hada prototype in proto/misc2.pro. Causedconflicts on Solaris.Apattern in anautocommand was treated differently onDOS et al. than onUnix. Now it's the same, also when using backslashes.When using<Tab> twice for command line completion, withouta match, the<Tab>would be inserted. (Negri)Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri)Testing the result of mktemp() for failure was wrong. Could causea crash.(Peters)GUI: When checking fora ".gvimrc" file in the current directory, didn't checkfora "_gvimrc" file too.Motif GUI: When using thepopup menu and then adding an item to the menu bar,the menubar would get very high.Mouse clicks and special keys (e.g. cursor keys) quit the more prompt anddialogs. Now they are ignored.Whenat the more-prompt, xterm selection didn't work. Now use the 'r' flag in'mouse' also for the more-prompt.When selectingaVisual area of more than 1023 lines, with'guioptions' set to"a", could mess up the display because ofa message in free_yank(). Removedthat message, except for the Amiga.Moved auto-selection from ui_write() to the screen update functions. Avoidsunexpected behavior froma low-level function. Also makes the differentfeedback of owning the selection possible.Vi incompatibility: Using "i<CR>" in an indent, with'ai' set, used theoriginal indent instead of truncatingitat the cursor. (Webb)":echox" didn't stopat "q" for the more prompt.Various fixes for Macintosh. (St-Amant)When using'selectmode' set to "exclusive", selectingaword and then usingCTRL-] included the character under the cursor.Using ":let a:name" ina function causeda crash. (Webb)When using ":append", an empty line didn't scroll up.DOS etc.:A file namestarting with '!' didn't work. Added '!' to default for'isfname'.BeOS: Compilation problem with prototype of skip_class_name(). (Price)Whendeleting more than one line, e.g., with "de", could still use "U"command, which didn't work properly then.Amiga: Could not compile ex_docmd.c,it was getting too big. Moved somefunctions to ex_cmds.c.Theexpand() function would adda trailing slash for directories.Didn't give an error message when trying to assigna value to an argument ofafunction. (Webb)Moved including sys/ptem.h to after termios.h. Needed for Sinix.OLE interface: Don't delete theobject in CVimCF::Release() when thereferencecount becomes zero. (Cordell)VisVim could still crash on exit. (Erhardt)"case a:caseb:" (twocase statements in one line) aligned with the secondcase. Nowit uses one'sw' for indent. (Webb)Font initialisation wasn't right for Athena/Motif GUI. Moved the call tohighlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam)InReplace mode, backspacing overa TAB before where the replace mode startedwhile'sts'is different from'ts', would delete the TAB.Win32 console: When executing external commands and switching between the twoconsole screens, Vim would copy the text between the buffers. That caused thescreen to be messed up for backtick expansion.":winpos -1" then ":winpos" gave wrong error message.Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove thebackslash before the $. Environmentvariables were not expanded anyway,because of thebackslash before the dollar.Using "-=" with ":set" could remove halfa part whenit containsa "\,".E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b".When Visually selecting lines, with'selection' set to "inclusive", includingthe last char of the line, "<<" moved an extra line. Also for other operatorsthat always work on lines.link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed.Nowit only removes whole words.When jumped toamark or using "fz", and thereis an error, the current columnwas lost. E.g. when using "$fzj".The "gCTRL-G" command could not be interrupted, even thoughit can takealong time.Some terminalsdo have<F4> and<xF4>.<xF4> was always interpretedas<F4>.Now map<xF4> to<F4>, so that the user can override this.When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not beused. (Aaron)Thisautocommand looped forever: ":auFileChangedShell * ++nestede<afile>"Now FileChangeShell never nests. (Roemer)When evaluating an ":elseif" that was not going to matter anyway, ignoreerrors. (Roemer)GUI Lesstif: Tearoffbar was the last item, instead of the first.GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to'guioptions' afterwards. When 't' flag in'guioptions'is excluded, wouldstill geta tearoff item ina new menu.An inode number can be "long long". Use ino_t instead of long. Addedconfigure check for ino_t.Binary search fortags was usinga file offset "long" instead of "off_t".Insert mode completion oftags was not using'ignorecase' properly.InInsert mode, the<xFn> keys were not properly mapped to<Fn> for thedefault mappings. Also causederrors for ":mkvimrc" and ":mksession".When jumping to anotherwindow while inInsert mode, would get the "warning:changing readonly file" even when not makinga change.A '(' or '{' insidea trailing "//" comment would disturb C-indenting.When using two labels below each other, the second one was not indentedproperly. Comments could mess upC-indenting in many places. (Roemer)Could delete or redefinea function whileit was being used. Could causeacrash.Ina function it's logical to prepend "g:" toa system variable, but thisdidn't work. (Roemer)Hangul input: Buffer would overflow when user inputs invalid key sequence.(Nam)When BufLoad orBufEnterautocommands change the topline of the buffer in thewindow,it was overruled and the cursorput halfway the window. Now onlyputthe cursor halfway if theautocommands didn't change the topline.Calling exists("&option") always returned 1. (Roemer)Win32: Didn't take actually available memory into account. (Williams)Whitespace after an automatically inserted comment leader was not removedwhen'ai'is not set and<CR> hit just afterinserting it. (Webb)A fewmenus had duplicated accelerators. (Roemer)Spellingerrors in documentation, quitea few "the the". (Roemer)Missing prototypes for Macintosh. (Kielhorn)Win32: When using'shellquote' or'shellxquote', the "!start cmd" wasn'texecuted ina disconnected process.When resizing the window, causinga line before the cursor to wrap or unwrap,the cursor was displayed in the wrong position.There was quitea bit of dead code when compiling with minimal features.When doinga ":%s///" command that makes lines shorter, such that lines abovethe final cursor position no longer wrap, the cursor position was not updated.get_id_list() could allocate an array one too small, whena "contains=" itemhasawildcard that matchesa group name thatis added just after it. E.g.:"contains=a.*b,axb". Give an error message for it.When yankingaVisual area and using the middle mouse button-> crash. Whenclipboard doesn't work, now make "* always use "".Win32: Using ":buf a\ b\file" didn't work,it was interpretedas "ab\file".Using ":ts ident", then hit<CR>, with'cmdheight' set to 2: command line wasnot cleared, the tselect prompt was on the last but one line.mksession didn't restore the cursor column properly whenit was aftera tab.Could not get allwindows back when usinga smallerterminal screen. Didn'trestore allwindows when "winsize" was not in'sessionoptions'. (Webb)Command line completion for ":buffer" depended on'ignorecase' for Unix, butnot forDOS et al. Now don't use'ignorecase', but letit depend on whetherfile names arecase sensitive or not (like when expanding file names).Win32 GUI: (Negri)- Redrawing the background caused flicker when resizing the window. Removed _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the sndclass.style.- Some parts of thewindow were drawn in grey, instead of using the color from the user color scheme.- Droppinga file ongvim didn't activate the window.- When thereis no menu ('guioptions' excludes 'm'), never use the ALT key for it.GUI: When resizing the window, would make thewindow heighta bit smaller.Now round off to the nearest char cell size. (Negri)InVi the ")" and "(" commands don't stopata singlespace aftera dot.Added 'J' flag in'cpoptions' to make this behaveVi compatible. (Roemer)When savinga session without anybuffers loaded, there would bea ":normal"command without arguments in it. (Webb)Memory leaks fixed: (Madsen)- eval.c: forgot to release func structure when func deleted- ex_docmd.c: forgot to releasestring after "<sfile>"- misc1.c: leak when completionpattern had no matches.- os_unix.c: forgot to releaseregexp after file completionsCould crash when usinga buffer withouta name. (Madsen)Could crash when doing file name completion, because of backslash_halve().(Madsen)":@a" woulddo mappings on register a, whichis notVi compatible. (Roemer)":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar"and displayed "/foo.*()". (Roemer)OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file.Command line completion ofoptions didn't work after "+=" and "-=".Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining thesefunctions, which could fail if they are defined already. Use mch_memmove() toredefine.Unix: ":leta= expand("xterm&")" started an xterm asynchronously, but":leta= expand("xterm&")" generated an error message, because theredirection wasput after the '&'.Win32 GUI: Dialog buttons could not be selected properly with cursor keys,when the defaultis not the first button. (Webb)The "File has changed since editing started" (when regaining focus) could notalways be seen. (Webb)Whenstarting with "ex filename", the file message was overwritten withthe "enteringEx mode" message.Output of ":tselect" listed name of file directly from thetags file. Nowitis corrected for the position of thetags file.When'backspace'is 0, couldbackspace over autoindent. Nowitis no longerallowed (Vi compatible).InReplace mode, when'noexpandtab' and'smarttab' were set, andinsertingTabs, backspacing didn't work correctly for Tabs insertedat the start of theline (unless'sts' was set too). Also, whenreplacing the first non-blankafter whichisa space, rounding the indent was done on the first non-blankinstead of on the character under the cursor.When'sw'at 4,'ts'at 8 and'smarttab' set: Whenatab was appended afterfour spaces (they are replaced witha tab) couldn'tbackspace over the tab.InInsert mode, with'bs' set to 0, couldn'tbackspace to before autoindent,even whenit was removed withCTRL-D.Whenrepeating aninsert command wherea<BS>,<Left> or other key causes anerror, would flushbuffers and remain inInsert mode. No longer flushbuffers, onlybeep and continue with theinsert command.Dos andWin32 console: Settingt_me didn't work to get another color. Madethis works backwards compatible.For Turkish (LANG= "tr")uppercase 'i'is not an 'I'. Use ASCIIuppercasetranslation in vim_strup() to avoid language problems. (Komur)Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefullythis avoidsa hangup in select(0, ..) for Solaris 2.6.Vim would crash when usingascript file with 'let &sp= "| tee"',startingvim with "vim-u test", then doing ":set sp=". The P_WAS_SET flag wasn't setforastring option, could cause problems with anystring option.When using "cmd | vim-", stdinis nota terminal. This gave problems withGPM (Linux console mouse) and when executing external commands. Now closestdin and re-openitasa copy of stderr.Syntax highlighting:A "nextgroup" item was not properly stored in the statelist. This caused missing of next groups when not redrawing from start toend, butstarting halfway.Didn't check for valid values of'ttymouse'.When executing an external command from the GUI, waiting for the child toterminate might not work, causinga hang. (Parmelan)"make uninstall" didn't delete thevimrc_example.vim and gvimrc_example.vimfiles and the vimtutor.Win32: "expand("%:p:h")" with no buffer name removed the directory name."fnamemodify("", ":p")" did not adda trailing slash, fname_case() removed it.Fixed: When'hlsearch' was set and the 'c' flag was not in'cpoptions':highlighting was not correct. Now overlapping matches are handled correctly.Athena,Motif andGTK GUI: When started without focus, cursor was shownas ifwith focus.Don't include'shellpipe' when compiled without quickfix, it's not used.Don't include'dictionary' option when compiled without the+insert_expandfeature.Only include the'shelltype' option for the Amiga.When makinga change toa line, with'hlsearch' on, causingit to wrap, whileexecutinga register, the screen would not be updated correctly. This wasageneric problem in update_screenline() being called while must_redrawisVALID.Using ":bdelete" inaBufUnloadautocommand could causea crash. Thewindowheight was added to anotherwindow twice in close_window().Win32 GUI: When removinga menu item, the tearoff wasn't updated. (Negri)Some performance bottlenecks removed. Allocating memory was not efficient.ForWin32 checking for available memory was slow, don't checkit every timenow. On NT obtaining the user name takesa long time, cache the result (forall systems).fnamemodify() with an argument ":~:." or ":.:~" didn't work properly.When editinga new file and exiting, the marks for the buffer were not savedin theviminfo file.":confirm only" didn'tput upa dialog.These textobjects didn't work when'selection' was "exclusive": va( vi( va{vi{ va< vi< vi[ va[.Thedialog forwritinga readonly file didn't havea valid default. (Negri)The line number used for errormessages when sourcinga file was reset whenmodelines were inspected. It was wrong when executinga function.The file name and line number for an error message wasn't displayed whenitwas the sameas for the last error, even when this was long ago. Now resetthe name/lnum afterahit-enter prompt.Ina session file,a "%" ina file name caused trouble, because fprintf() wasused to writeit to the file.When skipping statements,amark in an address wasn't skipped correctly:"ka|if0'adelseechoendif". (Roemer)":wall" could overwriteanot-edited file without asking.GUI: When $DISPLAY was not set orstarting theGUI failed in another way, theconsole mode then started with wrong colors and skipped initializations. Nowdo an early check if theGUI can be started. Don't source themenu.vim orgvimrc whenit will not. Alsodo normalterminal initializations if theGUImight not start.When usingaBufEnterautocommand to position the cursor and scroll thewindow, the cursor was alwaysputat the last used line and halfway thewindowanyhow.When'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn'tlistthe matches. Also avoid that listing aftera "longest" lists the wrongmatches when the first expansion changed thestring in front of the cursor.When using ":insert", ":append" or ":change" insidea while loop, was not ableto break out ofit withaCTRL-C.Win32: ":e." took an awful long time before an error message when used in"C:\". Was caused by adding anotherbackslash and then trying to get the fullname for "C:\\".":winpos -10 100" was working like ":winpos -10 -10", becausea pointer wasnot advanced past the '-' sign.When obtaining the value ofa hidden option, would give an error message. Nowjust usea zero value.OS/2: Was using argv[0], even thoughit was nota useful name. It could bejust "vim", found in the search path.Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) untilaftera delay of'updatetime'. Didn't check for the size-changed signal.'scrollbind' didn't work inInsert mode.Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g.,when'showcmd' was off).When compiled with minimal features but with GUI, switching on the mouse in anxterm caused garbage, because the mouse codes were not recognized. Don'tenable the mouse whenit can't be recognized. In theGUIit also didn't work,the arguments to the mouse code were not interpreted.When'showbreak' used, inInsert mode, when the cursoris just after the lastcharacter in the line, whichis also the in the rightmost column, the cursorposition would be like the'showbreak'stringis shown, butit wasn't.Autocommands could move the cursor ina new file, so thatCTRL-Wi didn't showthe right line. Same for when usinga filemark to jump to another file.When redefining the argument list, the title used for otherwindows could beshowing the wrong info about the position in the argument list. Also updatethis fora ":split" command without arguments.When editing file 97 of 13, ":Next" didn't work. Nowit goes to the lastfile in the argument list.Insert mode completion (for dictionaries or included files) could not beinterrupted by typing an<Esc>. Could gethit-enter prompt after linecompletion, or whenever the informative message would get too long.When using the ":edit" command to re-edit the same file, anautocommand tojump to the last cursor position caused the cursor to move. Now set the lastused cursor position to avoid this.When'comments' hasa part that starts with white space,formatting thecomment didn't work.At the ":tselect" promptNormal mode mappings were used. That has beendisabled.When'selection'is not "old", some commands still didn't allow the cursorpast the end-of-line inVisual mode.Athena: Whena menu was deleted,it would appear again (but not functional)when adding another menu. Now they don't reappear anymore (although they arenot really deleted either).Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri)"ze" didn't work when'number' was on. (Davis)Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson)A few files were including proto.ha second time, after vim.h had already donethat, which could cause problems with the vim_realloc() macro.Win32 console:<M-x> orALT-x was not recognized. Also keypad '+', '-' and'*'. (Negri)MS-DOS:<M-x> didn't work, produceda two-byte code. Now the alphabetic andnumber keys work. (Negri)When findinga lot of matches foratag completion, the check for avoidingdouble matches could takea lot of time. Adda line_breakcheck() to be ableto interrupt this. (Deshpande)When the command line was getting longer than the screen, themore-promptwould be given regularly, and the cursor position would be wrong. Now onlyshow the part of the command line that fits on the screen and force the cursorto be positioned on the visible part. There can be text after the cursorwhich isn't editable.At the more prompt and with the console dialog,a cursor key was interpretedas<Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouseand scrollbar events.When typinga BS afterinsertinga middle comment leader, typing the last charof theend comment leader still changedit into theend comment leader. (Webb)Whena file systemis full,writing toa swap file failed. Now first try towrite one block to the file. Try next entry in'dir' ifit fails.When "~"is in'whichwrap', doing "~" on last char ofa line didn't update thedisplay.Unix: Expandingwildcards for ":file{\\}" didn't work, because "\}" wastranslated to "}" before the shell got it. Now don't remove backslashes whenwildcards are going to be expanded.Unix: ":e /tmp/$uid" didn't work. When expanding environmentvariables inafile name doesn't work, use the shell to expand the file name. ":e /tmp/$tty"still doesn't work though."make test" didn't always work on DOS/Windows for test30, becauseit dependedon the external "echo" command.The link.shscript used "make" instead of $MAKE from the Makefile. Causedproblems for generating pathdef.c when "make" doesn't work properly.On versions that cando console and GUI: In the consolea typed CSI code couldcause trouble.The patterns inexpression evaluation didn't ignore the 'l' flag in'cpoptions'. This broke the working of<CR> in theoptions window.When'hls' off and'ai' on, "O<Esc>" did remove the indent, butit was stillhighlighted red for trailing space.Win32 GUI: Dropping an encrypted file ona runninggvim didn't work right. Vimwould loop while outputting "*" characters. vgetc() was called recursively,thusit returns NUL. Added safe_vgetc(), which reads input directly from theuser in this situation.While reading text from stdin, only an empty screen was shown. Now show thatVimis reading from stdin.The cursor shape wasn't set properly when returning toInsert mode, afterusingaCTRL-O /asdf command which fails. It would be OK aftera few seconds.Now it's OK right away.The'isfname' default for DOS/Windows didn't include the '@' character. Filenames that contained "dir\@file" could not be edited.Win32 console:<C-S-Left> could causea crash when compiled with Borland oregcs. (Aaron)Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use"#ifdef HAVE_DIRENT_H" instead. (Jones)Whena matchingtagis in the current file but hasa searchpattern thatdoesn't match, the cursor would jump to the first line.Unix: Dependencies for pty.c were not included in Makefile. Dependency ofctags/config.h was not included (only matters for parallel make).Removeda few Uninitialized Memory Reads (potential crashes). In do_call()calling clear_var() when not evaluating. In win32_expandpath() anddos_expandpath() calling backslash_halve() past theend ofa file name.Removed memory leaks: Set_vim_var_string() never freed the value. Thenext_list forasyntax keyword was never freed.On non-Unix systems, usinga file name withwildcards withouta match wouldsilently fail. E.g., ":e *.sh". Now givea "No match" error message.The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognizedas Vim scripts. Renamed them to *.vim.[Note: some numbered patches are not relevant when upgrading from version 5.3,they have been removed]Patch 5.4m.1Problem: When editinga file witha long name, would get thehit-enter prompt, even though all settings are such that the name should be truncated to avoid that. filemess() wasprinting the file name without truncating it.Solution: Truncate the message in filemess(). Use the same codeas for msg_trunc_attr(), whichis moved to the new function msg_may_trunc().Files: src/message.c, src/proto/message.pro, src/fileio.cPatch 5.4m.3Problem: TheMotif libraries were not found by configure for Digital Unix.Solution: Add "/usr/shlib" to the search path. (Andy Kahn)Files: src/configure.in, src/configurePatch 5.4m.5Problem:Win32 GUI: When using the Save-As menu entry and selecting an existing file in the file browser, would getadialog to confirm overwriting twice. (Ed Krall)Solution: Removed thedialog from the file browser. It would be nicer to set the "forceit" flag and skip Vim's ":confirm" dialog, butit requires quitea few changes todo that.Files: src/gui_w32.cPatch 5.4m.6Problem:Win32 GUI: When reading text from stdin, e.g., "cat foo |gvim-",a message box would pop up with "-stdin-" (when exiting). (Michael Schaap)Solution: Don't switch offtermcap mode for versions that are GUI-only. They use anotherterminal to read from stdin.Files: src/main.c, src/fileio.cPatch 5.4m.7Problem: Unix: running configure with --enable-gtk-check, --enable-motif-check, --enable-athena-check or --enable-gtktest had the reverse effect. (Thomas Koehler)Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE().Files: src/configure.in, src/configurePatch 5.4m.9Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 characters to the left.Syntax highlighting was wrong whena double-byte character was split fora wrapping line. When'showbreak' was on the splitting also didn't work.Solution: Adjust getvcol() and win_line(). (Chong-Dae Park)Files: src/charset.c, src/screen.cPatch 5.4m.11Problem: The ":call" command didn't check for illegal trailing characters. (Stefan Roemer)Solution: Add the check in do_call().Files: src/eval.cPatch 5.4m.13Problem: With the ":s" command: 1. When performinga substitute command, the mouse would be disabled and enabled for every substitution. 2. The cursor position could be beyond theend of the line. Calling line_breakcheck() could try to position the cursor, which causesa crash in theWin32 GUI. 3. When using ":s" ina ":g" command, the cursor was notput on the first non-white in the line. 4. There wasahit-enter prompt when confirming the substitution and the replacement wasa bit longer.Solution: 1. Only disable/enable the mouse when asking for confirmation. 2. Alwaysput the cursor on the first character,itis going to be moved to the first non-blank anyway. Don't use the cursor position in gui_mch_draw_hollow_cursor(), get the character from the screen buffer. 3. Added global_need_beginline flag to call beginline() after ":g" has finished all substitutions. 4. Clear the need_wait_return flag after prompting the user.Files: src/ex_cmds.c, src/gui_w32.cPatch 5.4m.14Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" weend up with two swapfiles for "xxx". Thatis caused by the ":bdel" command whichis executed when unloading the option-window. Also, there was no check if closinga buffer made the new one invalid, this could causea crash.Solution: When closinga buffer causes the current buffer to be deleted, use the new buffer to replace it. Also detect that the new buffer has become invalidasa side effect of closing the current one. Makeautocommand that calls ":bdel" in optwin.vim nested, so that the buffer loadingit triggers also executes autocommands. Also addeda test for this in test13.Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h src/testdir/test13.in, src/testdir/test13.okPatch 5.4m.15Problem: When usingaBufEnterautocommand toreload thesyntax file, conversion to HTML causeda crash. (Sung-Hyun Nam)Solution: When using ":syntax clear" the current stack ofsyntax items was not cleared. This will cause memory to be used that has already been freed. Added call to invalidate_current_state() in syntax_clear().Files: src/syntax.cPatch 5.4m.17Problem: When omittinga ')' in anexpressionit would not be seenasa failure. When detecting an error inside (), there would be an error message fora missing ')' too. When using ":echo 1+|echo 2" there was no error message. (Roemer) When using ":exe 1+" there was no error message. When using ":return 1+" there was no error message.Solution: Fix do_echo(), do_execute() and do_return() to give an error message when eval1() returns FAIL. Fix eval6() to handle trailing ')' correctly and return FAIL when it's missing.Files: src/eval.cPatch 5.4m.18Problem: When usinginput() from inside anexpression entered with "CTRL-R=" on the command line, there could bea crash. And the resulting command line was wrong.Solution: Added getcmdline_prompt(), which handles recursive use ofgetcmdline() correctly. It also sets the command line prompt. Removed cmdline_prompt(). Also use getcmdline_prompt() for getting the crypt key in get_crypt_key().Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.cPatch 5.4m.21Problem: Whenstarting up, the screen structures were first allocatedat the minimal size, then initializations were done with Rows possibly different from screen_Rows. Causeda crash in rare situations (GTK withXIM and fontset).Solution: Call screenalloc() in main() only after calling ui_get_winsize(). Also avoidsa potential delay because of calling screenclear() while "starting"is non-zero.Files: src/main.cPatch 5.4m.22Problem: In theGUIit was possible that the screen was resized and the screen structures re-allocated while redrawing the screen. This could causea crash (hard to reproduce). The call sequence goes through update_screen() .. syntax_start() .. ui_breakcheck() .. gui_resize_window() .. screenalloc().Solution: Set updating_screen while redrawing. If thewindowis resized remember the new size and handleit only after redrawingis finished. This also fixes that resizing the screen while still redrawing (slowsyntax highlighting) would not work properly. Also disable display_hint,it was never used.Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.proPatch 5.4m.23Problem: When using expand("<cword>") when there was noword under the cursor, would get an error message. Same for<cWORD> and<cfile>.Solution: Don't give an error message, return an empty string.Files: src/eval.cPatch 5.4m.24Problem: ":help \|" didn't find anything. It was translated to "/\\|".Solution: Translate "\|" into "\\bar". First check the table for specific translations before checking for "\x".Files: src/ex_cmds.cPatch 5.4m.25Problem: Unix: When using command line completion on files that contain ''','"' or'|' the file name could not be used. Adding this file name to the Buffers menu caused an error message.Solution:Insertabackslash before these three characters. Adjust Mungename() function toinsertabackslash before'|'.Files: src/ex_getln.c, runtime/menu.vimPatch 5.4m.26Problem: When usingamapping of two function keys, e.g.,<F1><F1>, and only the first char of the second key has been read, themapping would not be recognized. Noticed on someUnix systems with xterm.Solution: Add 'K' flag to'cpoptions' to wait for the whole key code, even when halfwaya mapping.Files: src/option.h, src/term.cPatch 5.4m.27Problem: When making test33 without the lisp featureit hangs. Interrupting the execution of thescript then might causea crash.Solution: In inchar(), after closinga script, don't use buf[] anymore. closescript() has freed typebuf[] and buf[] might be pointing inside typebuf[]. Avoid that test33 hangs when the lisp featureis missing.Files: src/getchar.c src/testdir/test33.in"os2" was missing from the feature list. Useful for has("os2").BeOS:- Included patches from Richard Offer forBeOS R4.5.- menu code didn't work right. Crashed in the Buffers menu. Thewindow title wasn't set. (Offer)Patch 5.4n.3Problem:C-indenting was wrong after "} else". The whitespace was not skipped. Visible when'cino' has "+10".Solution: Skip whitespace before calling cin_iselse(). (Norbert Zeh)Files: src/misc1.cPatch 5.4n.4Problem: When the 't' flag in'cpoptions'is included, aftera ":nohlsearch" the search highlighting would not be enabled again afteratag search. (Norbert Zeh)Solution: When setting the new searchpattern in jumpto_tag(), don't restore no_hlsearch.Files: src/tag.cPatch 5.4n.5Problem: When using ":normal" fromaCursorHoldautocommand Vim hangs. Theautocommandis executed down from vgetc(). Calling vgetc() recursively to execute the command doesn't work then.Solution: Forbid the use of ":normal" when vgetc_busyis set. Give an error message when this happens.Files: src/ex_docmd.c, runtime/doc/autocmd.txtPatch 5.4n.6Problem: "gv" could reselectaVisual that starts and/or ends past theend ofa line. (Robert Webb)Solution: Check that the start andend of theVisual area are ona valid character by calling adjust_cursor().Files: src/normal.cPatch 5.4n.8Problem: Whenamark was ona non existing line (e.g., when the .viminfo was edited), jumping toit caused ml_get errors. (Alexey Marinichev).Solution: Added check_cursor_lnum() in nv_gomark().Files: src/normal.cPatch 5.4n.9Problem: ":-2" moved the cursor toa negative line number. (Ralf Schandl)Solution: Give an error message fora negative line number.Files: src/ex_docmd.cPatch 5.4n.10Problem:Win32 GUI: At thehit-enter prompt,it was possible to scroll the text. This erased the prompt and made Vim look likeitis inNormal mode, whileitis actually still waiting fora<CR>.Solution: Disallowscrollingat thehit-enter prompt for systems that use on the fly scrolling.Files: src/message.cPatch 5.4n.14Problem:Win32 GUI: When using ":winsize 80 46" and the heightis more than what fits on the screen, thewindow size was made smaller than asked for (that's OK) and Vim crashed (that's not OK)>Solution: Call check_winsize() from gui_set_winsize() to resize the windows.Files: src/gui.cPatch 5.4n.16Problem:Win32 GUI: The<F10> key both selected the menu and was handledasa key hit.Solution: Apply'winaltkeys' to<F10>, likeitis used for Alt keys.Files: src/gui_w32.cPatch 5.4n.17Problem: Local buffervariables were freed when the bufferis unloaded. That's not logical, sinceoptions are not freed. (Ron Aaron)Solution: Free local buffervariables only whendeleting the buffer.Files: src/buffer.cPatch 5.4n.19Problem: Doing ":e" (without argument) in anoption-window causes trouble. The mappings for<CR> and<Space> are not removed. When thereis another buffer loaded, the swap file forit gets mixed up. (Steve Mueller)Solution: Also remove the mappingsat theBufUnload event, if they are still present. When re-editing the same file causes the current buffer to be deleted, don't try editing it. Also addeda test for this situation.Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, src/testdir/test13.okPatch 5.4n.24Problem: BeOS: configure never enabled the GUI, because $with_x was "no".Unix prototypes caused problems, because Display and Widget are undefined. Freeing fonts on exit causeda crash.Solution: Only disable theGUI when $with_xis "no" and $BEOSis not "yes". Add dummy defines for Display and Widget in proto.h. Don't free the fonts in gui_exit() for BeOS.Files: src/configure.in, src/configure, src/proto.h, src/gui.c.The runtime/vim48x48.xpm icon didn't havea transparent background. (Schild)Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined.(Aaron)VMS:- mch_setenv() had two arguments instead of three.- The systemvimrc andgvimrc files were called ".vimrc" and ".gvimrc". Removed the dot.- call to RealWaitForChar() had one argument too many. (Campbell)- WaitForChar()is static, removed the prototype from proto/os_vms.pro.- Many file accesses failed, becauseUnix style file names were used. Translate file names toVMS style by using vim_fopen().- Filtering didn't work, because the temporary file name was generated wrong.- There was an extra newline every 9192 characters whenwritinga file. Work aroundit bywriting line by line. (Campbell)- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". Only mattered for generating prototypes.- Added file name translation to many places. Madeeasy by defining macros mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat().- Set default for'tagbsearch' to off, because binarytag searching apparently doesn't work for VMS.- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell)Patch 5.4o.2Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham)Solution: Fix wrong use of pointers in get_file_name_in_path().Files: src/window.cPatch 5.4o.3Problem: The horizontal scrollbar was not sized correctly when'number'is set and'wrap' not set. Athena: Horizontal scrollbar wasn't updated when the cursor was positioned witha mouse click just after dragging.Solution: Subtract 8 from the size when'number' set and'wrap' not set. Reset gui.dragged_sb whena mouse clickis received.Files: src/gui.cPatch 5.4o.4Problem: When running in an xterm and $WINDOWIDis set to an illegal value, Vim would exit with "Vim: GotX error".Solution: When using the display which was opened for the xterm clipboard, check if x11_windowis valid by trying to obtain thewindow title. Also adda check in setup_xterm_clip(), for when usingX calls to get the pointer position in an xterm.Files: src/os_unix.cPatch 5.4o.5Problem:Motif version with Lesstif: When removing the menubar and then usinga menu shortcut key, Vim would crash. (raf)Solution: Disable the menu mnemonics when the menubaris removed.Files: src/gui_motif.cPatch 5.4o.9Problem: TheDOS install.exe program used the "move" program. That doesn't work on Windows NT, where "move"is internal to cmd.exe.Solution: Don't use an external program for moving the executables. UseCfunctions to copy the file and delete the original.Files: src/dosinst.cMotif and Athena obtained the status area height differently from GTK. Movedstatus_area_enabled from global.h to gui_x11.c and callxim_get_status_area_height() to get the status area height.Patch 5.4p.1Problem: When using auto-select, and the "gv" commandis used, would not always obtain ownership of the selection. Caused by theVisual area still being the same, but ownership taken away by another program.Solution: Reset theclipboardVisual mode to force updating the selection.Files: src/normal.cPatch 5.4p.2Problem:Motif and Athena with XIM: Typing 3-byte<multibyte><multibyte><space> doesn't work correctly with Ami XIM.Solution: Avoid using key_sym XK_VoidSymbol. (Nam)Files: src/multbyte.c, src/gui_x11.cPatch 5.4p.4Problem:Win32 GUI: The scrollbar values were reduced fora file with more than 32767 lines. But this info was kept global for all scrollbars, causinga mixup between the windows. Using the down arrow ofa scrollbar ina large file didn't work. Because of round-offerrors thereis no scrollat all.Solution: Give each scrollbar its own scroll_shift field. When the down arrowis used, scroll several lines.Files: src/gui.h, src/gui_w32.cPatch 5.4p.5Problem: Whenchangingbuffers inaBufDelete autocommand, there could be ml_lineerrors and/ora crash. (Schandl) Was caused bydeleting the current buffer.Solution: When the buffer to be deleted unexpectedly becomes the current buffer, don't delete it. Also addeda check for this in test13.Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.okPatch 5.4p.7Problem:Win32 GUI: When using'mousemodel' set to "popup_setpos" and clicking the right mouse button outside of the selected area, the selected area wasn't removed until thepopup menu has gone. (Aaron)Solution: Set the cursor and update the display before showing thepopup menu.Files: src/normal.cPatch 5.4p.8Problem: The generated bugreport didn't contain information about$VIMRUNTIME and whether runtime files actually exist.Solution: Addeda few checks to the bugreport script.Files: runtime/bugreport.vimPatch 5.4p.9Problem: Thewindows install.exe createda wrong entry in thepopup menu. The "%1" was "". The full directory was included, even when the executable had been moved elsewhere. (Ott)Solution: Double the '%' to get one from printf. Only include the path to gvim.exe whenit wasn't moved and it's not in $PATH.Files: src/dosinst.cPatch 5.4p.10Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes useda short file name fora directory.Solution: Change the "%1" to "%L" in the registry entry.Files: src/dosinst.cPatch 5.4p.11Problem: Motif, Athena and GTK: When closing theGUIwindow when thereisa changed buffer, there was only an error message and Vim would not exit.Solution: Put upa dialog, like for ":confirm qa". Uses the code that was already used for MS-Windows.Files: src/gui.c, src/gui_w32.cPatch 5.4p.12Problem: Win32: Trying to expandastring thatis longer than 256 characters could causea crash. (Steed)Solution: For the buffer in win32_expandpath() don't usea fixed size array, allocate it.Files: src/os_win32.cMSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes forfname_case() and mch_update_cursor() were missing. "fd" was unused inmf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused inmch_call_shell() for DJGPP version.==============================================================================VERSION 5.5version-5.5Version 5.5isa bug-fix version of 5.4.Changedchanged-5.5-------The DJGPP versionis now compiled with "-O2" instead of "-O4" to reduce thesize of the executables.Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goalsto it.'backspace'is nowastring option. See patch 5.4.15.Addedadded-5.5-----Included Exuberant Ctags version 3.3. (Darren Hiebert)In runtime/mswin.vim, mapCTRL-Q toCTRL-V, so thatCTRL-Q can be usedeverywhere todo whatCTRL-V used to do.Support for decompression ofbzip2 files in vimrc_example.vim.Whena patchis included, the patch numberis entered ina table in version.c.This allows skippinga patch without breakinga next one.Support for mouse scroll wheel in X11. See patch 5.5a.14.line2byte() can be used to get the size of the buffer. See patch 5.4.35.TheCTRL-RCTRL-Or andCTRL-RCTRL-Pr commands inInsert mode are used toinserta register literally. See patch 5.4.48.Uninstall program for MS-Windows. To be able to remove the registry entriesfor "Edit with Vim". Itis registered to be run from the "Add/Removeprograms" application. See patch 5.4.x7.Fixedfixed-5.5-----When using vimrc_example.vim: An error message when the cursoris ona linehigher than the number of lines in the compressed file. Move theautocommandfor jumping to the last known cursor position to after the decompressingautocommands.":mkexrc" and ":mksession" wrote the current value of'textmode'. That maymarka fileas modified, which causes problems. Thisisa buffer-specificsetting,it should not affect all files."vim--version" wrote two empty lines.Unix: The alarm signal could kill Vim. Itis generated by thePerl alarm()function. Ignore SIGALRM.Win32 GUI: Toolbar still had the yellow bitmap for runninga Vim script.BeOS: "tmo"must be bigtime_t, instead of double. (Seibert)Patch 5.4.1Problem: Test11 fails when $GZIPis set to "-v". (Matthew Jackson)Solution: Set $GZIP to an empty string.Files: src/testdir/test11.inPatch 5.4.2Problem: Typing<Esc>at the crypt key prompt causeda crash. (Kallingal)Solution: Check fora NULL pointer returned from get_crypt_key().Files: src/fileio.cPatch 5.4.3Problem: Python: Trying to use the name of an unnamed buffer causeda crash. (Daniel Burrows)Solution: Check for b_fname beinga NULL pointer.Files: src/if_python.cPatch 5.4.4Problem: Win32: When compiled without toolbar, but the 'T' flagis in'guioptions', there would be an emptyspace for the toolbar.Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri)Files: src/gui.cPatch 5.4.5Problem: Athena GUI: Using the Buffers.Refresh menu entry causeda crash. Looks like any ":unmenu" command may cause trouble.Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers menu, because the Refresh item would not work.Files: src/menu.c, runtime/menu.vimPatch 5.4.6Problem:GTK GUI: Using ":gui" in the.gvimrc file caused an error. Only happens when theGUI forks.Solution: Don'tfork ina recursive call of gui_start().Files: src/gui.cPatch 5.4.7Problem: Typing 'q'at the more prompt for theATTENTION message causes the file loading to be interrupted. (Will Day)Solution: Reset got_int after showing theATTENTION message.Files: src/memline.cPatch 5.4.8Problem: Edit some file, ":he", ":opt":options fromhelpwindow are shown, but pressingspace updates from the other window. (Phillipps) Also: When there are changes in the option-window, ":q!" gives an error message.Solution: Before creating the option-window,go toa non-help window. Use ":bdel!" to delete the buffer.Files: runtime/optwin.vimPatch 5.4.9 Just updates version.h. The real patch has been moved to 5.4.x1. This patchis just to keep the version number correct.Patch 5.4.10Problem:GTK GUI: When $DISPLAYis invalid, "gvim-f" just exits. It should run in the terminal.Solution: Use gtk_init_check() instead of gtk_init().Files: src/gui_gtk_x11.cPatch 5.4.11Problem: When using the 'S' flag in'cpoptions','tabstop'is not copied to the next buffer for some commands, e.g., ":buffer".Solution: When the BCO_NOHELP flagis given to buf_copy_options(), still copy theoptions used by do_help() when neither the "from" or "to" bufferisahelp buffer.Files: src/option.cPatch 5.4.12Problem: When using'smartindent', there would be no extra indent if the current line did not have any indent already. (Hanus Adler)Solution: There wasa wrongly placed "else", that previously matched with the "if" that set trunc_line. Removed the "else" and addeda check for trunc_line to be false.Files: src/misc1.cPatch 5.4.13Problem: New SGIC compilers need another option for optimisation.Solution: Adda check in configure for "-OPT:Olimit". (ChinA Young)Files: src/configure.in, src/configurePatch 5.4.14Problem:Motif GUI: When thepopup menuis present,a tinywindow appears on the desktop for some users.Solution: Set the menu widget ID forapopup menu to 0. (Thomas Koehler)Files: src/gui_motif.cPatch 5.4.15Problem: Since'backspace' set to0 has been madeVi compatible,itis no longer possible to only allowdeleting autoindent.Solution: Make'backspace'alist of parts, to allow each kind of backspacing separately.Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, runtime/doc/option.txt, runtime/doc/insert.txtPatch 5.4.16Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure.Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang)Files: src/configure.in, src/configurePatch 5.4.17Problem: GUI: When started from insidegvim with ":!gvim", Vim would not start. ":!gvim-f" works fine.Solution: After forking, waita moment in the parent process, to give the childa chance to set its process group.Files: src/gui.cPatch 5.4.18Problem: Python: The clear_history() function also exists ina library.Solution: Rename clear_history() to clear_hist().Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.proPatch 5.4.19Problem: Inaterminal with 25 lines, thereisa more prompt after theATTENTION message. When hitting 'q' here thedialog prompt doesn't appear and file loadingis interrupted. (Will Day)Solution: Don't allow quitting theprinting ofa message for thedialog prompt. Added the msg_noquit_more flag for this.Files: src/message.cPatch 5.4.20Problem: GTK: Whenstarting gvim, would sendescape sequences to theterminal to switch the cursor off and on.Solution: Don't call msg_start() if theGUIis expected to start.Files: src/main.cPatch 5.4.21Problem: Motif: Toplevel menu ordering was wrong when using tear-off items.Solution: Don't add one to theindex fora toplevel menu.Files: src/gui_motif.cPatch 5.4.22Problem: InInsert mode,<C-Left>,<S-Left>,<C-Right> and<S-Right> didn't update the column used for vertical movement.Solution: Set curwin->w_set_curswant for those commands.Files: src/edit.cPatch 5.4.23Problem: WhenaVisual selectionis lost to another program, and then the same textis Visually selected again, theclipboard ownership wasn't regained.Solution: Set clipboard.vmode to NUL to force regaining the clipboard.Files: src/normal.cPatch 5.4.24Problem: Encryption: When using ":r file" while'key' has already entered, the'key' option would be messed up. Whenwriting the fileit would be encrypted with an unknown key and lost! (Brad Despres)Solution: Don't free cryptkey whenitis equal to the'key' option.Files: src/fileio.cPatch 5.4.25Problem: When'cindent'is set, but'autoindent' isn't, comments are not properly indented whenstartinga new line. (Mitterand)Solution: When thereisa comment leader for the new line, but'autoindent' isn't set,do C-indenting.Files: src/misc1.cPatch 5.4.26Problem: Multi-byte:amultibyte characteris never recognized ina file name, causingabackslash beforeit to be removed on Windows.Solution: Assume thata leading-byte characterisa file name character in vim_isfilec().Files: src/charset.cPatch 5.4.27Problem: Entries in the PopUp[nvic]menus were added for several modes, but only deleted for the mode they were used for. This resulted in the entry remaining in the PopUp menu. When removinga PopUp[nvic] menu, the name had been truncated, could result in greying-out the whole PopUp menu.Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove the PopUp[nvic] menu entries first, before the nameis changed.Files: src/menu.cPatch 5.4.28Problem: When usingaBufWritePreautocommand to change'fileformat', the new value would not be used forwriting the file.Solution: Check'fileformat' after executing theautocommands instead of before.Files: src/fileio.cPatch 5.4.29Problem: Athena GUI: When removing the 'g' flag from'guioptions', usinga menu can result ina crash.Solution: Always grey-outmenus for Athena, don't hide them.Files: src/menu.cPatch 5.4.30Problem: BeOS: Suspending Vim withCTRL-Z didn't work (killed Vim). The first character typed after ":sh" goes to Vim, instead of the started shell.Solution: Don'tsuspend Vim, starta new shell. Kill the async read thread whenstartinga new shell. It will be restarted later. (Will Day)Files: src/os_unix.c, src/ui.cPatch 5.4.31Problem: GUI: When'mousefocus'is set, moving the mouse over whereawindow boundary was, causesahit-enter prompt to be finished. (Jeff Walker)Solution: Don't use'mousefocus'at thehit-enter prompt. Also ignoreit for the more prompt anda few other situations. When anoperatoris pending, abortit first.Files: src/gui.cPatch 5.4.32Problem: Unix: $LDFLAGS was not passed to configure.Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner)Files: src/MakefilePatch 5.4.33Problem: Unix: After expanding an environment variable with the shell, the next expansion would also use the shell, even thoughitis not needed.Solution: Reset "recursive" before returning from gen_expand_wildcards().Files: src/misc1.cPatch 5.4.34 (also see 5.4.x5)Problem: When editinga file, and the file nameis relative toa directory above the current directory, the file name was made absolute. (Gregory Margo)Solution: Add an argument to shorten_fnames() which indicates if all file names should be shortened, or only absolute names. In main() only use shorten_fnames() to shorten absolute names.Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.proPatch 5.4.35Problem: Thereis no function to get the current file size.Solution: Allow usingline2byte() with the number of lines in the file plus one. This returns the offset of the line past theend of the file, whichis the file size plus one.Files: src/eval.c, runtime/doc/eval.txtPatch 5.4.36Problem: Comparing strings while ignoringcase didn't work correctly for some machines. (Mide Steed)Solution: vim_stricmp() and vim_strnicmp() only returned0 or 1. Changed them to return -1 when the first argumentis smaller.Files: src/misc2.cPatch 5.4.37 (also see 5.4.40 and 5.4.43)Problem: Long strings from theviminfo file are truncated.Solution: Whenwritinga longstring to theviminfo file, first writea line with the length, then thestring itself ina second line.Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vimPatch 5.4.38Problem: In the option-window, ":set go&" resulted in'go' being handled likeaboolean option. Mappings for<Space> and<CR> were overruled by the option-window.Solution: When the value of an option isn't0 or 1, don't handleit likeaboolean option. Save and restore mappings for<Space> and<CR> when entering and leaving the option-window.Files: runtime/optwin.vimPatch 5.4.39Problem: When settinga hidden option, spaces before the equal sign were not skipped and cause an error message. E.g., ":setcsprg =cmd".Solution: When skipping overa hidden option, check fora following "=val" and skipit too.Files: src/option.cPatch 5.4.40 (depends on 5.4.37)Problem: Compiler error for "atol(p+ 1)". (Axel Kielhorn)Solution: Adda typecast: "atol((char *)p+ 1)".Files: src/ex_cmds.cPatch 5.4.41Problem: Some commands that were not included would give an error message, even when after "if0".Solution: Don't give an error message for an unsupported command when not executing the command.Files: src/ex_docmd.cPatch 5.4.42Problem: ":w" would also causea truncated message to appear in the message history.Solution: Don'tputa kept message in the messagehistory whenit starts with "<".Files: src/message.cPatch 5.4.43 (depends on 5.4.37)Problem: Mixing long lines with multiple lines ina register causeserrors whenwriting theviminfo file. (Robinson)Solution: When reading theviminfo file to skip register contents, skip lines that start with "<".Files: src/ops.cPatch 5.4.44Problem: When'whichwrap' includes '~',a "~" command that goes on to the next line cannot be properly undone. (Zellner)Solution: Save each line forundo in n_swapchar().Files: src/normal.cPatch 5.4.45 (also see 5.4.x8)Problem: When expand("$ASDF") fails, thereis an error message.Solution: Remove the global expand_interactively. Passa flag down to skip the error message. Also: expand("$ASDF") returns an emptystring if $ASDF isn't set. Previouslyit returned "$ASDF" when'shell'is "sh". Also:system() doesn't print an error when the command returns an error code.Files: manyPatch 5.4.46Problem: Backspacing did not always use'softtabstop' after hitting<CR>,insertinga register, moving the cursor, etc.Solution: Reset inserted_space much more often in edit().Files: src/edit.cPatch 5.4.47Problem: When executingBufWritePre orBufWritePostautocommands fora hidden buffer, the cursor could be moved toa non-existing position. (Vince Negri)Solution: Save and restore the cursor and topline for the currentwindow whenitis going to be used to executeautocommands fora hidden buffer. Use an existingwindow for the buffer when it's not hidden.Files: src/fileio.cPatch 5.4.48Problem:A paste with the mouse inInsert mode was not repeated exactly the same with ".". For example, when'autoindent'is set and pasting text with leading indent. (Perry)Solution: Add theCTRL-RCTRL-Or andCTRL-RCTRL-Pr commands inInsert mode, whichinsert the contents ofa register literally.Files: src/edit.c, src/normal.c, runtime/doc/insert.txtPatch 5.4.49Problem: When pasting text with[<MiddleMouse>, the cursor couldend up after the last character of the line.Solution: Correct the cursor position for the change in indent.Files: src/ops.cPatch 5.4.x1 (note: Replaces patch 5.4.9)Problem:Win32 GUI: menu hints were never used, because WANT_MENUis not defined until vim.his included.Solution: Move the #ifdef WANT_MENU from where MENUHINTSis defined to whereitis used.Files: src/gui_w32.cPatch 5.4.x2Problem: BeOS: When pasting text, one character was moved to the end.Solution: Re-enable theBeOS code in fill_input_buf(), and fix timing out with acquire_sem_etc(). (Will Day)Files: src/os_beos.c, src/ui.cPatch 5.4.x3Problem:Win32 GUI: When droppinga directory ona runninggvimit crashes.Solution: Avoid usinga NULL file name. Also displaya message to indicate that the current directory was changed.Files: src/gui_w32.cPatch 5.4.x4Problem:Win32 GUI: Removing an item from thepopup menu doesn't work.Solution: Don't remove the item from the menubar, but from the parentpopup menu.Files: src/gui_w32.cPatch 5.4.x5 (addition to 5.4.34)Files: src/gui_w32.cPatch 5.4.x6Problem: Win32: Expanding (dir)namestarting witha dot doesn't work. (McCormack) Only when thereisa path before it.Solution: Fix the check, done before expansion, if the file namepattern starts witha dot.Files: src/os_win32.cPatch 5.4.x7Problem:Win32 GUI: Removing "Edit with Vim" from registryis difficult.Solution: Add uninstall program to remove the registry keys. Itis installed in the "Add/Remove programs"list for ease of use. Also: don't set$VIM when the executableis with the runtime files. Also: Adda text file witha step-by-step description of how to uninstall Vim forDOS and Windows.Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txtPatch 5.4.x8 (addition to 5.4.45)Files: manyPatch 5.4.x9Problem:Win32 GUI: After executing an external command, focusis not always regained (when using focus-follows-mouse).Solution: Add SetFocus() in mch_system(). (Mike Steed)Files: src/os_win32.cPatch 5.5a.1Problem: ":let@*=@:" did not work. The text was notput on theI clipboard. (Fisher)Solution: Own theclipboard andput the text on it.Files: src/ops.cPatch 5.5a.2Problem:append() did notmark the buffer modified. Marks below the new line were not adjusted.Solution: Fix the f_append() function.Files: src/eval.cPatch 5.5a.3Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, because thereis no "mv" command.Solution: Add therename() function and useit instead of ":!mv". Also: Disable the automatic jump to the last position, becauseit changes the jumplist.Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vimPatch 5.5a.4Problem: When using whole-line completion ininsert mode while the cursoris in the indent, get "out of memory" error. (Stekrt)Solution: Don't allocatea negative amount of memory in ins_complete().Files: src/edit.cPatch 5.5a.5Problem: Win32: The'path' option can hold only up to 256 characters, because _MAX_PATHis 256. (Robert Webb)Solution: Usea fixed path length of 1024.Files: src/os_win32.hPatch 5.5a.6Problem: Compiling with gcc on Win32, using theUnix Makefile, didn't work.Solution: Add $(SUFFIX) to all places where an executableis used. Also passit to ctags. (Reynolds)Files: src/MakefilePatch 5.5a.7Problem: When using "cat | vim-" in an xterm, the xterm version reply wouldend up in the file.Solution: Read the file from stdin before switching theterminal to RAW mode. Should also avoid problems with programs that usea specificterminal setting. Also: when using the GUI, print "Reading from stdin..." in theGUI window, to givea hint whyit doesn'tdo anything.Files: src/main.c, src/fileio.cPatch 5.5a.8Problem: On multi-threaded Solaris, suspending doesn't work.Solution: Call pause() when the SIGCONT signal was not received after sending the SIGTSTP signal. (Nagano)Files: src/os_unix.cPatch 5.5a.9Problem:'winaltkeys' could be set to an empty argument, whichis illegal.Solution: Give an error message when doing ":set winaltkeys=".Files: src/option.cPatch 5.5a.10Problem:Win32 console: Using ALTGR ona German keyboard to produce "}" doesn't work, because the 8th bitis set when ALTis pressed.Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert)Files: src/os_win32.cPatch 5.5a.11Problem: Tcl: Configure always uses tclsh8.0. Also: Loadinga library doesn't work.Solution: Add "--with-tclsh" configure argument to allow specifying another name for thetcl shell. Call Tcl_Init() in tclinit() to make loading libraries work. (Johannes Zellner)Files: src/configure.in, src/configure, src/if_tcl.cPatch 5.5a.12Problem: The "user_commands" featureis called "user-commands".Solution:Replace "user-commands" with "user_commands". (Kim Sung-bom) Keep "user-commands" for thehas() function, to remain backwards compatible with 5.4.Files: src/eval.c, src/version.cPatch 5.5a.13Problem: OS/2: When$HOMEis not defined, "C:/"is used for theviminfo file. Thatis very wrong whenOS/2is on another partition.Solution: Use$VIM for theviminfo file whenitis defined, like for MSDOS. Also: Makefile.os2 didn't depend on os_unix.h.Files: src/os_unix.h, src/Makefile.os2Patch 5.5a.14Problem: Athena,Motif and GTK: The Mouse scroll wheel doesn't work.Solution: Interpreta click of the wheelasa key press of the<MouseDown> or<MouseUp> keys. Default behavioris to scroll three lines, ora full page when Shiftis used.Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, runtime/doc/scroll.txtPatch 5.5a.15Problem: UsingCTRL-A inInsert mode doesn't work correctly when theinsert started with the<Insert> key. (Andreas Rohrschneider)Solution:Replace<Insert> with "i" before setting up theredo buffer.Files: src/normal.cPatch 5.5a.16Problem: VMS:GUI does not compile and run.Solution: Various fixes. (Zoltan Arpadffy) Movedfunctions from os_unix.c to ui.c, so thatVMS can use them too: open_app_context(), x11_setup_atoms() and clip_x11* functions. Made xterm_dpy global, it's now used by ui.c and os_unix.c. Use gethostname() always, sys_hostname doesn't exist.Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.proRenamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar()to avoid symbol length limit of 31 characters. (Steve P. Wall)Patch 5.5b.1Problem: SASC complains about dead assignments and implicit type casts.Solution: Removed the dead assignments. Added explicit type casts.Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, src/screen.cPatch 5.5b.2Problem: When using "CTRL-OO" inInsert mode, hit<Esc> and then "o" in another line truncates that line. (Devin Weaver)Solution: When usinga command that startsInsert mode fromCTRL-O, reset "restart_edit" first. This avoids that edit()is called witha mix ofstartinga new edit command and restartinga previous one.Files: src/normal.c==============================================================================VERSION 5.6version-5.6Version 5.6isa bug-fix version of 5.5.Changedchanged-5.6-------Small changes to OleVim files. (Christian Schaller)Inserted "/**/" between patch numbers in src/version.c. This allows for oneline of context, which some versions of patch need.Reordered theSyntax menu to avoid long submenus. Removed keyboard shortcutsfor alphabetical items to avoida clash with fixed items.Addedadded-5.6-----Included Exuberant Ctags version 3.4. (Darren Hiebert)OpenWithVim in Python. (Christian Schaller)Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoidsthe reported problems with the MS Office taskbar. Now it'sa Shell Extension.(Tianmiao Hu)Newsyntax files:abelAbel (John Cook)amlArc Macro Language (Nikki Knuit)apachestyleApache-style config file (Christian Hammers)cfCold Fusion (Jeff Lanzarotta)ctrlhfiles withCTRL-H sequences (Bram Moolenaar)cuplCUPL (John Cook)cuplsimCUPL simulation (John Cook)erlangErlang (Kresimir Marzic)gedcomGedcom (Paul Johnson)iconIcon (Wendell Turner)istMakeIndex style (Peter Meszaros)jspJava Server Pages (Rafael Garcia-Suarez)rcslogRcslog (Joe Karthauser)remindRemind (Davide Alberani)sqrStructured Query Report Writer (Paul Moore)tadsTADS (Amir Karger)texinfoTexinfo (Sandor Kopanyi)xpm2X Pixmap v2 (Steve Wall)The 'C' flag in'cpoptions' can be used to switch off concatenation forsourced lines. See patch 5.5.013 below.line-continuation"excludenl" argument for the ":syntax" command. See patch 5.5.032 below.:syn-excludenlImplementedz+ andz^ commands. See patch 5.5.050 below.Vim logo in Corel Draw format. Can be scaled to any resolution.Fixedfixed-5.6-----Using thismapping inSelect mode, terminated completion:":vnoremap<C-N><Esc>a<C-N>" (Benji Fisher)Ignore K_SELECT in ins_compl_prep().VMS (Zoltan Arpadffy, David Elins):- ioctl() in pty.c caused trouble, #ifndefVMS added.- Cut& paste mismatch corrected.- Popup menu line crash corrected. (Patch 5.5.047)-Motif directories during open and saveas corrected.- Handle full file names with version numbers. (Patch 5.5.046)- Directory handling (CD command etc.)- Corrected file name conversionVMS toUnix and v.v.- Recovery was not working.- Terminal and signal handling was outdated compared to os_unix.c.- Improved os_vms.txt.Configure used fprintf() instead ofprintf() to check for __DATE__ and__TIME__. (John Card II)BeOS: Adjust computing the char_height and char_ascent. Round them upseparately, avoids redrawing artifacts. (Mike Steed)Fixa fewmultibyte problems in menu_name_skip(), set_reg_ic(), searchc() andfindmatchlimit(). (Taro Muraoka)GTK GUI:- WithGTK 1.2.5 and later the scrollbars were not redrawn correctly.- Adjusted the gtk_form_draw() function.- SNiFF connection didn't work.-'mousefocus' was not working. (Dalecki)- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space andCTRL-@.Patch 5.5.001Problem: Configure in the top directory did not pass on an argument withaspace correctly. For example "./configure --previs="/Myhome". (Stephane Chazelas)Solution: Use'"$@"' instead of '$*' to pass on the arguments.Files: configurePatch 5.5.002Problem: Compilation error for using "fds[]& POLLIN". (Jeff Walker)Solution: Use "fds[].revents& POLLIN".Files: src/os_unix.cPatch 5.5.003Problem: The autoconf check for sizeof(int)is wrong on machines where sizeof(size_t) != sizeof(int).Solution: Use our own configure check. Also fixes the warning for cross-compiling.Files: src/configure.in, src/configurePatch 5.5.004Problem: OnUnix it's not possible to interrupt ":sleep 100".Solution: Switchterminal to cooked mode while asleep, to allowa SIGINT to wake us up. But switch off echo, added TMODE_SLEEP.Files: src/term.h, src/os_unix.cPatch 5.5.005Problem: When using<f-args> witha user command, an empty argument to the command resulted in one empty string, while nostring was expected.Solution: Catch an empty argument and pass no argument to the function. (Paul Moore)Files: src/ex_docmd.cPatch 5.5.006Problem: Python: When platform-dependent files are in another directory than the platform-independent filesit doesn't work.Solution: Also check the executable directory, and addit to CFLAGS. (Tessa Lau)Files: src/configure.in, src/configurePatch 5.5.007 (extra)Problem:Win32 OLE: Occasional crash whenexiting while still being used via OLE.Solution: Move OleUninitialize() to beforedeleting the application object. (Vince Negri)Files: src/if_ole.cppPatch 5.5.008Problem: 10000@@ takesa long time and cannot be interrupted.Solution: Check forCTRL-C typed while in the loop to push the register.Files: src/normal.cPatch 5.5.009Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader)Solution: Remove configure check for Sequent.Files: src/configure.in, src/configurePatch 5.5.010Problem: Ctags freeda memory block twice when exiting. When out of memory,a misleading error message was given.Solution: Update toctags 3.3.2. Also fixesa few other problems. (Darren Hiebert)Files: src/ctags/*Patch 5.5.011Problem: After "CTRL-Vs", the cursor jumps back to the start, while all other operators leave the cursor on the last changed character. (Xiangjiang Ma)Solution: Position cursor on last changed character, if possible.Files: src/ops.cPatch 5.5.012Problem: UsingCTRL-] inVisual mode doesn't work when the text includesaspace (just where it's useful). (Stefan Bittner)Solution: Don'tescape special characters inatag name witha backslash.Files: src/normal.cPatch 5.5.013Problem: The ":append" and ":insert" commands allow usinga leadingbackslash ina line. The ":source" command concatenates those lines. (Heinlein)Solution: Add the 'C' flag in'cpoptions' to switch off concatenation.Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, runtime/filetype.vim, runtime/scripts.vimPatch 5.5.014Problem: When executinga register with ":@", the ":append" command would get text lines witha ':' prepended. (Heinlein)Solution: Remove the ':' characters.Files: src/ex_docmd.c, src/ex_getln.c, src/globals.hPatch 5.5.015Problem: When using ":g/pat/p", it's hard to see where the output starts, the ":g" commandis overwritten.Vi keeps the ":g" command.Solution: Keep the ":g" command, but allow overwritingit with the report for the number of changes.Files: src/ex_cmds.cPatch 5.5.016 (extra)Problem: Win32: Using regedit toinstall Vim in thepopup menu requires the user to confirm this ina dialog.Solution: Use "regedit /s" to avoid thedialogFiles: src/dosinst.cPatch 5.5.017Problem: If an error occurs when closing the current window, Vim could get stuck in the error handling.Solution: Don't set curwin to NULL when closing the current window.Files: src/window.cPatch 5.5.018Problem: Absolute paths in shell scriptsdo not always work.Solution: Use /usr/bin/env to find out the path.Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, runtime/tools/shtags.plPatch 5.5.019Problem:A function call in'statusline' stops using ":q" twice from exiting, when the last argument hasn't been edited.Solution: Don't decrement quitmore when executinga function. (Madsen)Files: src/ex_docmd.cPatch 5.5.020Problem: When the output ofCTRL-D completion in the commandline goes all the way to the last column, thereis an empty line.Solution: Don't adda newline when the cursor wrapped already. (Madsen)Files: src/ex_getln.cPatch 5.5.021Problem: When checking ifa file name in thetags fileis relative, environmentvariables were not expanded.Solution: Expand the file name before checking ifitis relative. (Madsen)Files: src/tag.cPatch 5.5.022Problem: When setting or resetting'paste' the ruler wasn't updated.Solution: Update the status lines when'ruler' changes because of'paste'.Files: src/option.cPatch 5.5.023Problem: When editinga new file andautocommands change the cursor position, the cursor was moved back to the first non-white, unless'startofline' was reset.Solution: Keep the new column, just like the line number.Files: src/ex_cmds.cPatch 5.5.024 (extra)Problem:Win32 GUI: When usingconfirm() toput upadialog withouta default button, thedialog would not have keyboard focus. (Krishna)Solution: Always set focus to thedialog window. Only set focus toa button whena default oneis specified.Files: src/gui_w32.cPatch 5.5.025Problem: When using "keepend" inasyntax region,a contained match that includes the end-of-line could still force that region to continue, if thereis another contained match in between.Solution: Check the keepend_level in check_state_ends().Files: src/syntax.cPatch 5.5.026Problem: Whenstarting Vim ina white-on-black xterm, with'bg' set to "dark", and thenstarting theGUI with ":gui", setting'bg' to "light" in the gvimrc, the highlighting isn't set. (Tsjokwing)Solution: Set the highlighting when'bg'is changed in the gvimrc, even though full_screen isn't set.Files: src/option.cPatch 5.5.027Problem: Unix: os_unix.c doesn't compile when XTERM_CLIPis used but WANT_TITLE isn't. (Barnum)Solution: Movea fewfunctions that are used by theX11 title andclipboard andput another "#if" around it.Files: src/os_unix.cPatch 5.5.028 (extra)Problem:Win32 GUI: Whena fileis dropped onWin32gvim whileat the ":" prompt, the fileis edited but the command lineis actually still there, the cursor goes back to command line on the next command. (Krishna)Solution: When droppinga file or directory ongvim whileat the ":" prompt,insert the name of the file/directory. Allows using the file/directory name for anyEx command.Files: src/gui_w32.cPatch 5.5.029Problem: "das"at theend of the file didn't delete the last character of the sentence.Solution: When thereis no character after the sentence, make the operationinclusive in current_sent().Files: src/search.cPatch 5.5.030Problem: Unix: in os_unix.c, "term_str"is used, whichis also defined in vim.hasa macro. (wuxin)Solution: Renamed "term_str" to "buf" in do_xterm_trace().Files: src/os_unix.cPatch 5.5.031 (extra)Problem:Win32 GUI: Whenexiting Windows,gvim will leave swap files behind and will be killed ungracefully. (Krishna)Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSIONmessages and try to exit gracefully. Allow the user to cancel the shutdown if thereisa changed buffer.Files: src/gui_w32.cPatch 5.5.032Problem: Patch 5.5.025 wasn't right. AndC highlighting was still not working correctly fora #define.Solution: Added "excludenl" argument to ":syntax", to be able not to extenda containing item when thereisa match with the end-of-line.Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vimPatch 5.5.033Problem: When reading from stdin,a long line inviminfo would mess up the file message.readfile() uses IObuff for keep_msg, which could be overwritten by anyone.Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. Also change vim_fgets() to not use IObuff any longer.Files: src/fileio.cPatch 5.5.034Problem: "gvim-rv" causeda crash. Using't_Co' before it's set.Solution: Don't try to initialize the highlighting beforeit has been initialized from main().Files: src/syntax.cPatch 5.5.035Problem:GTK with XIM: Resizing with status area was messy, and ":set guioptions+=b" didn't work.Solution: Make status areaa separate widget, but nota separate window. (Chi-Deok Hwang)Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.cPatch 5.5.036Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to uncompressa file did notdo detection for'fileformat'. Thisis because the filteringis done with'binary' set.Solution: Split the filtering into separate write,filter and read commands.Files: runtime/vimrc_example.vimPatch 5.5.037Problem: The "U" command didn'tmark the bufferas changed. (McCormack)Solution: Set the'modified' flag when using "U".Files: src/undo.cPatch 5.5.038Problem: When typinga long ":" command, so that the screen scrolls up, causes thehit-enter prompt, even though the user just typed return to execute the command.Solution: Reset need_wait_return if (part of) the command was typed in getcmdline().Files: src/ex_getln.cPatch 5.5.039Problem: When usinga custom status line, "%a" (file# of #) reports theindex of the currentwindow for all windows.Solution: Passawindow pointer to append_arg_number(), and pass thewindow being updated from build_stl_str_hl(). (Stephen P. Wall)Files: src/buffer.c, src/screen.c, src/proto/buffer.proPatch 5.5.040Problem: Multi-byte: When thereis some error in xim_real_init(),it can closeXIM and return. After this there can bea segv.Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try to find more matches for supported styles. (Sung-Hyun Nam)Files: src/multbyte.cPatch 5.5.041Problem:X11 GUI:CTRL-_ requires the SHIFT key only on some machines.Solution: TranslateCTRL-- toCTRL-_. (Robert Webb)Files: src/gui_x11.cPatch 5.5.042Problem:X11 GUI: keys with ALT were assumed to be used for the menu, even when the menu has been disabled by removing 'm' from'guioptions'.Solution: Ignore keys with ALT only when gui.menu_is_activeis set. (Raf)Files: src/gui_x11.cPatch 5.5.043Problem: GTK: Handling offontset fonts was not right when'guifontset' contains exactly 14 times '-'.Solution: Avoid setting fonts when working witha fontset. (Sung-Hyun Nam)Files: src/gui_gtk_x11.cPatch 5.5.044Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That might not work everywhere.Solution: Use "/usr/bin/envperl" instead.Files: runtime/tools/pltags.plPatch 5.5.045Problem: Using "this_session" variable does not work, requires precedingit with "v:". Default filename for ":mksession" isn't mentioned in the docs. (Fisher)Solution: Support using "this_session" to be backwards compatible.Files: src/eval.c, runtime/doc/options.txtPatch 5.5.046 (extra)Problem: VMS: problems with path and filename.Solution: Truncate file nameat last ';', etc. (Zoltan Arpadffy)Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, src/proto/os_vms.proPatch 5.5.047Problem: VMS: Crash when using thepopup menuSolution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy)Files: src/structs.h, src/menu.cPatch 5.5.048Problem: HP-UX 11: Compiling doesn't work, because both string.h and strings.h are included. (Squassabia)Solution: The configure test for including both string.h and strings.hmust include <Xm/Xm.h> first, becauseit causes problems.Files: src/configure.in, src/configure, src/config.h.inPatch 5.5.049Problem: Unix: When installing Vim, the protection bits of files might be influenced by the umask.Solution: Add $(FILEMOD) to Makefile. (Shetye)Files: src/MakefilePatch 5.5.050Problem: "z+" and "z^" commands are missing.Solution: Implemented "z+" and "z^".Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txtPatch 5.5.051Problem: SeveralUnix systems havea problem with the optimizationlimits check in configure.Solution: Removed the configure check, let the user addit manually in Makefile or the environment.Files: src/configure.in, src/configure, src/MakefilePatch 5.5.052Problem: Crash when usinga cursor keyat theATTENTION prompt. (Alberani)Solution: Ignore special keysat the console dialog. Also ignore characters> 255 for other uses oftolower() and toupper().Files: src/menu.c, src/message.c, src/misc2.cPatch 5.5.053Problem: Indentingis wrong aftera function when'cino' has "fs". Another problem when'cino' has "{s".Solution: Put line after closing "}" ofa functionat the left margin. Apply ind_open_extra in the right way aftera '{'.Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.okPatch 5.5.054Problem: Unix: ":e#" doesn't work if the alternate file name containsaspace or backslash. (Hudacek)Solution: Whenreplacing "#", "%" or other items that stand fora file name, prependabackslash before special characters.Files: src/ex_docmd.cPatch 5.5.055Problem: Using "<C-V>$r-" in blockwiseVisual mode replaces one character beyond theend of the line. (Zivkov)Solution: Only replace existing characters.Files: src/ops.cPatch 5.5.056Problem: After "z20<CR>"messages were printedat the old command line position once. (Veselinovic)Solution: Set msg_row and msg_col whenchanging cmdline_row in win_setheight().Files: src/window.cPatch 5.5.057Problem: After "S<Esc>"it should be possible to restore the line with "U". (Veselinovic)Solution: Don't call u_clearline() in op_delete() whenchanging only one line.Files: src/ops.cPatch 5.5.058Problem: Usinga long searchpattern and then "n" causes thehit-enter prompt. (Krishna)Solution: Truncate the echoed pattern, like other messages. Moved code for truncating from msg_attr() to msg_strtrunc().Files: src/message.c, src/proto/message.pro, src/search.cPatch 5.5.059Problem:GTK GUI: When $termis invalid, using "gvim" gives an error message, even though $term isn't really used. (Robbins)Solution: When theGUIis about to start, skip the errormessages fora wrong $term.Files: src/term.cPatch 5.5.060 (extra)Problem: Dos 32 bit: Whena directory in'backupdir' doesn't exist, ":w" causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf)Solution: The code to work arounda LFN bug in Windows 95 doesn't handlea non-existing target name correctly. When renaming fails, make sure the file has its original name. Alsodo this for theWin32 version, although it's unlikely thatit runs into this problem.Files: src/os_msdos.c, src/os_win32.cPatch 5.5.061Problem: When using "\:" ina modeline, thebackslashis included in the option value. (Mohsin)Solution: Remove onebackslash before the ':' ina modeline.Files: src/buffer.c, runtime/doc/options.txtPatch 5.5.062 (extra)Problem:Win32 console: Temp files are created in the root of the current drive, which may be read-only. (Peterson)Solution: Use the same mechanism of theGUI version: Use $TMP, $TEMP or the current directory. Cleaned up vim_tempname()a bit.Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txtPatch 5.5.063Problem: When using whole-line completion inInsert mode,'cindent'is applied, even afterchanging the indent of the line.Solution: Don't reindent the completed line after inserting/removing indent. (Robert Webb)Files: src/edit.cPatch 5.5.064Problem: has("sniff") doesn't work correctly.Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer)Files: src/eval.cPatch 5.5.065Problem: When droppinga file on Vim, the'shellslash' optionis not effective. (Krishna)Solution: Fix the slashes in the dropped file names according to'shellslash'.Files: src/ex_docmd.c, runtime/doc/options.txtPatch 5.5.066Problem: For systems withbackslash in file name: Settinga file name option toa valuestarting with "\\machine" removeda backslash.Solution: Keep the doublebackslash for "\\machine", butdo change "\\\\machine" to "\\machine" for backwards compatibility.Files: src/option.c, runtime/doc/options.txtPatch 5.5.067Problem: With'hlsearch' set, thepattern "\>" doesn't highlight the first match ina line. (Benji Fisher)Solution: Fix highlighting an empty match. Also highlight the first character in an empty line for "$".Files: src/screen.cPatch 5.5.068Problem: Crash whena ":while"is used with an argument that has an error. (Sylvain Viart)Solution: Was using an uninitializedindex in the cs_line[] array. The crash only happened when theindex was far off. Made sure the uninitializedindex isn't used.Files: src/ex_docmd.cPatch 5.5.069Problem: Shifting lines in blockwiseVisual mode didn't set the'modified' flag.Solution: Do set the'modified' flag.Files: src/ops.cPatch 5.5.070Problem: When editinga new file, creating that file outside of Vim, then editingit again, ":w" still warns for overwriting an existing file. (Nam)Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly.Files: src/buffer.c, src/fileio.cPatch 5.5.071Problem: Usinga matchgroup ina ":syn region", whichis the samesyntax groupas the region, didn't stopa contained item from matching in the start pattern.Solution: Also push an item on the stack when thesyntax ID of the matchgroupis the sameas thesyntax ID of the region.Files: src/syntax.cPatch 5.5.072 (extra)Problem: Dos 32 bit: When setting'columns' toa too large value, Vim may crash, and theDOS console too.Solution: Check that the value of'columns' isn't larger than the number of columns that the BIOS reports.Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.cPatch 5.5.073 (extra)Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the "matchcase" checkbox. The Find/Replacedialog didn't handle the "match wholeword" checkbox.Solution: Support the "matchcase" and "match wholeword" checkboxes.Files: src/gui_w32.cPatch 5.6a.001Problem: Using<C-End> withacount doesn't work likeit does with "G". (Benji Fisher)Solution: Acceptacount for<C-End> and<C-Home>.Files: src/normal.cPatch 5.6a.002Problem: Thescript for conversion to HTML was an older version.Solution: Add support for running2html.vim ona color terminal.Files: runtime/syntax/2html.vimPatch 5.6a.003Problem: Defininga function insidea function didn't give an error message.A missing ":endfunction" doesn't give an error message.Solution: Allow defininga function insidea function.Files: src/eval.c, runtime/doc/eval.txtPatch 5.6a.004Problem:A missing ":endwhile" or ":endif" doesn't give an error message. (Johannes Zellner)Solution: Check for missing ":endwhile" and ":endif" in sourced files. Add missing ":endif" in file selection macros.Files: src/ex_docmd.c, runtime/macros/file_select.vimPatch 5.6a.005Problem:'hlsearch' was not listed alphabetically. The value of'toolbar' was changed when'compatible'is set.Solution: Moved entry of'hlsearch' in options[] table down. Don't reset'toolbar' option to the default value when'compatible'is set.Files: src/option.cPatch 5.6a.006Problem: Usinga backwards range inside ":if0" gave an error message.Solution: Don't complain abouta range whenitis not going to be used. (Stefan Roemer)Files: src/ex_docmd.cPatch 5.6a.007Problem: ":let" didn't show internal Vim variables. (Ron Aaron)Solution: Do show ":v"variables for ":let" and ":let v:name".Files: src/eval.cPatch 5.6a.008Problem: Selectingasyntax from theSyntax menu gives an error message.Solution:Replace "else if" in SetSyn() with "elseif". (Ronald Schild)Files: runtime/menu.vimPatch 5.6a.009Problem: When compiling with+extra_search but without +syntax, thereisa compilation error in screen.c. (Axel Kielhorn)Solution: Adjust the #ifdef for declaring and initializing "line" in win_line(). Also solve compilation problem when+statuslineis used without +eval. Another one when+cmdline_complis used without +eval.Files: src/screen.c, src/misc2.cPatch 5.6a.010Problem: Ina function, ":startinsert!" does not append to theend of the line ifa ":normal" command was used to move the cursor. (Fisher)Solution: Reset "w_set_curswant" to avoid that w_curswantis changed again.Files: src/ex_docmd.cPatch 5.6a.011 (depends on 5.6a.004)Problem:A missing ":endif" or ":endwhile" ina function doesn't give an error message.Solution: Give that error message.Files: src/ex_docmd.cPatch 5.6a.012 (depends on 5.6a.008)Problem: SomeSyntax menu entries causedahit-enter prompt.Solution: Calla function to make the command shorter. Also renamea fewfunctions to avoid name clashes.Files: runtime/menu.vimPatch 5.6a.013Problem: Command line completion works different when another completion was done earlier. (Johannes Zellner)Solution: Reset wim_index whenstartinga new completion.Files: src/ex_getln.cPatch 5.6a.014Problem: Various warningmessages when compiling and running lint with different combinations of features.Solution: Fix the warning messages.Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, src/option.c, src/screen.c, src/search.c, src/syntax.c, src/feature.h, src/globals.hPatch 5.6a.015Problem: Thevimtutor command doesn't always know the value of $VIMRUNTIME.Solution: Let Vim expand $VIMRUNTIME, instead of the shell.Files: src/vimtutorPatch 5.6a.016 (extra)Problem: Mac: Window sizeis restricted when starting. Cannot drag thewindow all over the desktop.Solution: Get real screen size instead of assuming 640x400. Do not usea fixed number for the drag limits. (Axel Kielhorn)Files: src/gui_mac.cPatch 5.6a.017Problem: The "Paste" entry inpopup menu for Visual,Insert andCmdline modeis in the wrong position. (Stol)Solution: Add priority numbers for all Paste menu entries.Files: runtime/menu.vimPatch 5.6a.018Problem:GTK GUI: submenu priority doesn't work. Helpdialog could be destroyed too soon. When closingadialogwindow (e.g. the "ATTENTION" one), Vim would just hang. WhenGTK themeis changed, Vim doesn't adjust to the new colors. Argument for ":promptfind" isn't used.Solution: Fixed the mentioned problems. Made the dialogs look&feel nicer. Movedfunctions to avoid the need fora forward declaration. Fixed reentrancy of the file browser dialog. Added drag&drop support for GNOME. Init the text for the Find/replacedialog from the last used search string. Set "match wholeword"toggle button correctly. Made repeat rate for drag outside ofwindow depend on the distance from the window. (Marcin Dalecki) Made the drag inVisual mode actually work. Removed recursiveness protection from gui_mch_get_rgb(),it might cause more trouble thanit solves.Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, src/proto/ui.pro, src/misc2.cPatch 5.6a.019Problem: When trying to recover through NFS, which usesa large block size, Vim might think the swap fileis empty, because mf_blocknr_maxis zero. (Scott McDermott)Solution: When computing the number of blocks of the file in mf_open(), round up instead of down.Files: src/memfile.cPatch 5.6a.020Problem:GUI GTK: Could not set display for gvim.Solution: Add "-display" and "--display" arguments. (Marcin Dalecki)Files: src/gui_gtk_x11.cPatch 5.6a.021Problem: Recovering still may not work when the block size of the device where the swap fileis locatedis larger than 4096.Solution: Read block0 with the minimal block size.Files: src/memline.c, src/memfile.c, src/vim.hPatch 5.6a.022 (extra)Problem:Win32 GUI: When an error in thevimrc causesadialog to pop up (e.g., for an existing swap file), Vim crashes. (David Elins)Solution: Before showinga dialog, open the main window.Files: src/gui_w32.cPatch 5.6a.023Problem: Using expand("%:gs??/?") causesa crash. (Ron Aaron)Solution: Check for running into theend of thestring in do_string_sub().Files: src/eval.cPatch 5.6a.024Problem: Using anautocommand to deletea buffer when leavingit can causea crash when jumping toa tag. (Franz Gorkotte)Solution: In do_tag(), store tagstacklen before jumping to another buffer. Check tagstackidx after jumping to another buffer. Add extra check in win_split() if tagname isn't NULL.Files: src/tag.c, src/window.cPatch 5.6a.025 (extra)Problem:Win32 GUI: The tables fortoupper() andtolower() are initialized too late. (Mike Steed)Solution: Move theinitialization to win32_init() and callit from main().Files: src/main.c, src/os_w32.c, src/proto/os_w32.proPatch 5.6a.026Problem: When the SNiFF connectionis open, shell commands hang. (Pruemmer)Solution: Skipa second wait() call if waitpid() already detected that the child has exited.Files: src/os_unix.cPatch 5.6a.027 (extra)Problem:Win32 GUI: The "Edit with Vim"popup menu entry causes problems for the Office toolbar.Solution: Usea shell extension dll. (Tianmiao Hu) Addedit to theinstall and uninstal programs, replaces the old "Edit with Vim" menu registry entries.Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txtPatch 5.6a.028 (extra)Problem:Win32 GUI: Dialogs and tear-offmenus can't handlemultibyte characters.Solution: Adjust nCopyAnsiToWideChar() to handlemultibyte characters correctly.Files: src/gui_w32.c==============================================================================VERSION 5.7version-5.7Version 5.7isa bug-fix version of 5.6.Changedchanged-5.7-------Renamed src/INSTALL.mac to INSTALL_mac.txt to avoidit being recognized withawrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt.Addedadded-5.7-----Newsyntax files:stpStored Procedures (Jeff Lanzarotta)snnsnet, snnspat, snnsresSNNS (Davide Alberani)melMEL (Robert Minsk)rubyRuby (Mirko Nasato)tliTealInfo (Kurt W. Andrews)oraOracle config file (Sandor Kopanyi)abaqusAbaqus (Carl Osterwisch)jpropertiesJava Properties (Simon Baldwin)apacheApache config (Allan Kelly)cspCSP (Jan Bredereke)sambaSamba config (Rafael Garcia-Suarez)kscriptKDEscript (Thomas Capricelli)hbHyper Builder (Alejandro Forero Cuervo)fortranFortran (rewritten) (Ajit J. Thakkar)smlSML (Fabrizio Zeno Cornelli)cvsCVS commit (Matt Dunford)aspperlASPPerl (Aaron Hope)bcBC calculator (Vladimir Scholtz)latteLatte (Nick Moffitt)wmlWML (Gerfried Fuchs)Included Exuberantctags 3.5.1. (Darren Hiebert)"display" and "fold" arguments forsyntax items. For future extension, theyare ignored now.strftime() function for the Macintosh.macros/explorer.vim:A file browserscript (MA Aziz Ahmed)Fixedfixed-5.7-----The 16 bitMS-DOS versionis now compiled with Bcc 3.1 instead of 4.0. Theexecutableis smaller.Whena "make test" failed, the output file was lost. Renameit totest99.failed to be able to see what went wrong.After sourcing bugreport.vim, it's not clear that bugreport.txt has beenwritten in the current directory. Edit bugreport.txt to avoid that.AddingIME support when using Makefile.w32 didn't work. (Taro Muraoka)Win32 console: Mouse drags were passed on even when the mouse didn't move.Perl interface: In Buffers(), type of argument to SvPV() was int, should beSTRLEN. (Tony Leneis)Problem with prototype forindex() on AIX 4.3.0. Added check for _AIX43 inos_unix.h. (Jake Hamby)Mappings inmswin.vim could break when some commands are mapped. Add "nore"to most mappings to avoid re-mapping.modify_fname() madea copy ofa file name for ":p" whenit already wasa fullpath name, whichisa bit slow.Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags,to avoid depending on $PATH. Fixed "make clean".Many fixes toMacintosh specific parts: (mostly by Dany StAmant)- Only one Help menu.- No more crash when removinga menu item.- Supportas External Editor for Codewarrior (still some little glitches).- Popup menu support.- Fixed crash when pasting after application switch.- Color fromrgb.txt properly displayed.-'isprint' default includes all chars above '~'. (Axel Kielhorn)- mac_expandpath() was leaking memory.- Adddigraphs table. (Axel Kielhorn)- Multi-byte support: (Kenichi Asai) Switch keyscript when going in/out ofInsert mode. Drawmultibyte character correctly. Don't use mblen() but highest bit of char to detectmultibyte char. Display value ofmultibyte in statusline (also for other systems).- mouse button was not initialized properly to MOUSE_LEFT when USE_CTRLCLICKMENU not defined.- WithJapanese SJIS characters: Make "w", "b", and "e" work properly. (Kenichi Asai)- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx.Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below)- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the tests.- Various fixes.- Set'undolevels' to 1000 by default.- Made mch_settitle() equivalent to the one in os_unix.c.RiscOS:A few prototypes for os_riscos.c were outdated. Generate prototypesautomatically.Previously released patches:Patch 5.6.001Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which reduces the indent doesn't delete the "#" or "}". (Lorton)Solution: Adjust ai_col in ins_try_si().Files: src/edit.cPatch 5.6.002Problem: When using thevim.vimsyntax file,a comment with alluppercase characters causesa hang.Solution: Adjustpattern for vimCommentTitle (Charles Campbell)Files: runtime/syntax/vim.vimPatch 5.6.003Problem:GTK GUI: Loadinga user defined toolbar bitmap givesa warning about the colormap. Probably because thewindow has not been opened yet.Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. (Keith Radebaugh)Files: src/gui_gtk.cPatch 5.6.004 (extra)Problem:Win32GUI with IME: When setting'guifont' to "*", the font requester appears twice.Solution: In gui_mch_init_font() don't call get_logfont() but copy norm_logfont from fh. (Yasuhiro Matsumoto)Files: src/gui_w32.cPatch 5.6.005Problem: When'winminheight'is zero,CTRL-W- witha big number causesa crash. (David Kotchan)Solution: Check for negativewindow height in win_setheight().Files: src/window.cPatch 5.6.006Problem:GTK GUI: Bold font cannot always be used. Memoryis freed too early in gui_mch_init_font().Solution: Move call to g_free() to after where sdupis used. (Artem Hodyush)Files: src/gui_gtk_x11.cPatch 5.6.007 (extra)Problem:Win32 IME: Fontis not changed when screen fontis changed. AndIME compositionwindow does not trace the cursor.Solution: InitializeIME font. When cursoris moved, setIME compositionwindow with ImeSetCompositionWindow(). Add call to ImmReleaseContext() in several places. (Taro Muraoka)Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.proPatch 5.6.008 (extra)Problem: Win32: When two files exist with the same name but differentcase (through NFS or Samba), fixing the file namecase could cause the wrong one to be edited.Solution: Prefera perfect match abovea match while ignoringcase in fname_case(). (Flemming Madsen)Files: src/os_win32.cPatch 5.6.009 (extra)Problem:Win32 GUI: Garbage in Windows Explorerhelp line when selecting "Edit with Vim"popup menu entry.Solution: Only return thehelp line when called with the GCS_HELPTEXT flag. (Tianmiao Hu)Files: GvimExt/gvimext.cppPatch 5.6.010Problem:A file name which containsa TAB was not read correctly from theviminfo file and the ":ls" listing was not aligned properly.Solution: Parse the bufferlist lines in theviminfo file from theend backwards. CountaTab for two characters to align the ":ls" list.Files: src/buffer.cPatch 5.6.011Problem: When'columns'is huge (usinga tiny font) and'statusline'is used, Vim can crash.Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin)Files: src/screen.cPatch 5.6.012Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit"is typed. (Kuratczyk)Solution: Add "-c exit" when checking for the shell version.Files: src/toolcheckPatch 5.6.013Problem: Multibyte char in tooltipis broken.Solution: Considermultibyte char in replace_termcodes(). (Taro Muraoka)Files: src/term.cPatch 5.6.014Problem: When cursorisat theend of line and the character under cursorisamultibyte character, "yl" doesn'tyank 1 multibyte-char. (Takuhiro Nishioka)Solution: Recognizea multibyte-charat end-of-line correctly in oneright(). (Taro Muraoka) Also: make "+quickfix" in ":version" output appear alphabetically.Files: src/edit.cPatch 5.6.015Problem: New xterm delete key sends<Esc>[3~ by default.Solution: Added<kDel> and<kIns> to make the set of keypad keys complete.Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, src/misc2.c, src/normal.c, src/os_unix.c, src/term.cPatch 5.6.016Problem: Whendeletinga searchstring fromhistory from insidea mapping, another entryis deleted too. (Benji Fisher)Solution: Reset last_maptick whendeleting the last entry of the search history. Also: Increment maptick whenstartingamapping from typed characters to avoida just added searchstring being overwritten or removed from history.Files: src/ex_getln.c, src/getchar.cPatch 5.6.017Problem: ":s/e/\^M/" should replace an "e" withaCTRL-M, not split the line. (Calder)Solution:Replace thebackslash withaCTRL-V internally. (Stephen P. Wall)Files: src/ex_cmds.cPatch 5.6.018Problem: ":help[:digit:]" takesa long time to jump to the wrong place.Solution:Insertabackslash to avoid the special meaning of '[]'.Files: src/ex_cmds.cPatch 5.6.019Problem: "snd.c", "snd.java", etc. were recognizedas "mail" filetype.Solution: Makepattern for mailfiletype more strict.Files: runtime/filetype.vimPatch 5.6.020 (extra)Problem: The DJGPP version eats processor time (Walter Briscoe).Solution: Call __dpmi_yield() in the busy-wait loop.Files: src/os_msdos.cPatch 5.6.021Problem: When'selection'is "exclusive",a double mouse click inInsert mode doesn't select last char in line. (Lutz)Solution: Allow leaving the cursor on the NUL past the line in this case.Files: src/edit.cPatch 5.6.022Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work.Solution: Re-insert thebackslash before the '~'.Files: src/ex_getln.cPatch 5.6.023 (extra)Problem: Various warnings for the Ming compiler.Solution: Changes to avoid the warnings. (Bill McCarthy)Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, src/syntax.c, src/vim.rcPatch 5.6.024 (extra)Problem:Win32 console: EnteringCTRL-_ requires theshift key. (Kotchan)Solution: Specifically catch keycode 0xBD, like the GUI.Files: src/os_win32.cPatch 5.6.025Problem:GTK GUI: Starting theGUI could be interrupted bya SIGWINCH. (Nils Lohner)Solution: Repeat the read() call to get the gui_in_use value when interrupted bya signal.Files: src/gui.cPatch 5.6.026 (extra)Problem:Win32 GUI: Toolbar bitmaps are searched for in $VIMRUNTIME/bitmaps, whileGTK looks in $VIM/bitmaps. (Keith Radebaugh)Solution: Use $VIM/bitmaps for both, because these are not part of thedistribution but defined by the user.Files: src/gui_w32.c, runtime/doc/gui.txtPatch 5.6.027Problem: TCL: Crash when usingaTclscript (reported for Win32).Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham)Files: src/main.cPatch 5.6.028Problem: Xterm patch level 126 sends codes for mouse scroll wheel. Fully works with xterm patch level 131.Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61).Files: src/term.cPatch 5.6.029Problem:GTK GUI: Shortcut keys cannot be used fora dialog. (Johannes Zellner)Solution: Add support for shortcut keys. (Marcin Dalecki)Files: src/gui_gtk.cPatch 5.6.030Problem: When closingawindow and'ea'is set, Vim can crash. (Yasuhiro Matsumoto)Solution: Set "curbuf" toa valid value in win_close().Files: src/window.cPatch 5.6.031Problem: Multi-byte: Whena double-byte character ends in CSI, Vim waits for another character to be typed.Solution: Recognize the CSIas the second byte ofa character and don't wait for another one. (Yasuhiro Matsumoto)Files: src/getchar.cPatch 5.6.032Problem: Functions with an argument thatisa line number don't all accept ".", "$", etc. (Ralf Arens)Solution: Add get_art_lnum() and useit for setline(),line2byte() and synID().Files: src/eval.cPatch 5.6.033Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun Nam)Solution: Change logic in searchc() to skip trailing byte ofa double-byte character. Also: Ask for second byte when searching for double-byte character. (Park Chong-Dae)Files: src/search.cPatch 5.6.034 (extra)Problem: Compiling with Borland C++ 5.5 fails ontolower() and toupper().Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile to make using bcc 5.5 easier.Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.borPatch 5.6.035Problem: Listing the"+comments" feature in the ":version" output depended on the wrong ID. (Stephen P. Wall)Solution: Change "CRYPTV" to "COMMENTS".Files: src/version.cPatch 5.6.036Problem:GTK GUI: Copy/paste text doesn't work betweengvim and Eterm.Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang)Files: src/gui_gtk_x11.cPatch 5.6.037Problem: Multi-byte: Can't use "f" command withmultibyte character in GUI.Solution: EnableXIM inNormal mode for the GUI. (Sung-Hyun Nam)Files: src/gui_gtk_x11.c, src/multbyte.cPatch 5.6.038Problem: Multi-clicks inGUI are interpretedasa mouse wheel click. When'ttymouse'is "xterm"a mouse clickis interpretedasa mouse wheel click.Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. Use 0x43 fora mouse drag in do_xterm_trace(), not 0x63.Files: src/term.c, src/os_unix.cPatch 5.6.039Problem:MotifGUI under KDE: When trying to logout, Vim hangs up the system. (Hermann Rochholz)Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND property of thewindow to let the session manager know we finished saving ourselves.Files: src/gui_x11.cPatch 5.6.040Problem: When using ":s" command, matching theregexpis done twice.Solution: Aftercopying the matched line, adjust the pointers instead of finding the match again. (Loic Grenie) Added vim_regnewptr().Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.proPatch 5.6.041Problem: GUI: Athena,Motif andGTK don't give more than 10dialog buttons.Solution: Remove the limit on the number of buttons. Also support the 'v' flag in'guioptions'. For GTK: Center the buttons.Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.cPatch 5.6.042Problem: When doing "vim-uvimrc" andvimrc contains ":q", the cursor in theterminal can remain off.Solution: Call cursor_on() in mch_windexit().Files: src/os_unix.cPatch 5.6.043 (extra)Problem:Win32 GUI: When selecting guifont with the dialog,'guifont' doesn't include thebold oritalic attributes.Solution: Append ":i" and/or ":b" to'guifont' in gui_mch_init_font().Files: src/gui_w32.cPatch 5.6.044 (extra)Problem:MS-DOS and Windows: The line that dosinst.exe appends to autoexec.bat to set PATHis wrong when Vimis ina directory with an embedded space.Solution: Use doublequotes for the value when thereis an embedded space.Files: src/dosinst.cPatch 5.6.045 (extra) (fixed version)Problem: VMS: Various small problems.Solution: Many small changes. (Zoltan Arpadffy) File name modifier ":h" keeps the path separator. File name modifier ":e" also removes version. Compile with MAX_FEAT by default. When checking forautocommands ignore version in file name. Be aware of file names beingcase insensitive. Added vt320 builtin termcap. Be prepared for an empty default_vim_dir.Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.cPatch 5.6.046Problem: Systems withbackslash in file name: With'shellslash' set, "vim */*.c" only usesa slash for the first file name. (Har'El)Solution: Fix slashes in file name arguments after reading thevimrc file.Files: src/option.cPatch 5.6.047Problem: $CPPFLAGSis not passed on toctags configure.Solution: Add it. (Walter Briscoe)Files: src/config.mk.in, src/MakefilePatch 5.6.048Problem:CTRL-R inCommand-line modeis documented toinsert textas typed, but inserts text literally.Solution: MakeCTRL-Rinsert textas typed, useCTRL-RCTRL-R toinsert literally. Thisis consistent withInsert mode. But characters thatendCommand-line mode are inserted literally.Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, src/ops.c, src/proto/ops.proPatch 5.6.049Problem: Documentation for [!] after ":ijump"is wrong way around. (Benji Fisher)Solution: Fix the documentation. Also improve the code to check fora match aftera/* */ comment.Files: runtime/doc/tagsearch.txt, src/search.cPatch 5.6.050Problem: Replacingis wrong whenreplacinga single-byte char with double-byte char or the other way around.Solution: Shift the text after the character whenitis replaced. (Yasuhiro Matsumoto)Files: src/normal.c, src/misc1.cPatch 5.6.051Problem: ":tprev" and ":tnext" don't give an error message when trying togo before the first or beyond the last tag. (Robert Webb)Solution: Added error messages. Also: Delaya second whenafile-read messageis going to overwrite an error message, otherwiseit won't be seen.Files: src/fileio.c, src/tag.cPatch 5.6.052Problem: Multi-byte: When anEx command hasa'|' or'"'asa second byte,it terminates the command.Solution: Skip second byte ofmultibyte char when checking for'|' and'"'. (Asai Kenichi)Files: src/ex_docmd.cPatch 5.6.053Problem:CTRL-] doesn't work onatag that containsa'|'. (Cesar Crusius)Solution: Escape'|','"' and '\' intag names when usingCTRL-] and also for command-line completion.Files: src/ex_getln.c, src/normal.cPatch 5.6.054Problem: When using ":e" and ":e#" the cursorisput in the first column when'startofline'is set. (Cordell)Solution: Use the last known column when'startofline'is set. Also, use ECMD_LAST more often to simplify the code.Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.proPatch 5.6.055Problem: When'statusline' only containsa text without "%" and doesn't fit in the window, Vim crashes. (Ron Aaron)Solution: Don't use the pointer for the first item if thereis no item.Files: src/screen.cPatch 5.6.056 (extra)Problem: MS-DOS: F11 and F12 don't work when'bioskey'is set.Solution: Use enhanced keyboard functions. (Vince Negri) Detect presence of enhanced keyboard and set bioskey_read and bioskey_ready.Files: src/os_msdos.cPatch 5.6.057 (extra)Problem:Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off menus.Solution: Use system font instead ofa fixed font. (Matsumoto, Muraoka)Files: src/gui_w32.cPatch 5.6.058Problem: When the 'a' flagis not in'guioptions', non-Windows systems copy Visually selected text to the clipboard/selection onayank or delete command anyway. On Windowsit isn't done even when the 'a' flagis included.Solution: Respect the 'a' flag in'guioptions' on all systems.Files: src/normal.cPatch 5.6.059 (extra)Problem: When moving the cursor overitalic text and the characters spill over to the cell on the right, that spill-overis deleted. Noticed in theWin32 GUI, can happen on other systems too.Solution: Redrawitalic textstarting froma blank, like thisis already done forbold text. (Vince Negri)Files: src/gui.c, src/gui.h, src/gui_w32.cPatch 5.6.060Problem: Somebold characters spill over to the cell on the left, that spill-over can remain sometimes.Solution: Redrawa character when the next character wasbold and needs redrawing. (Robert Webb)Files: src/screen.cPatch 5.6.061Problem: When xterm sends 8-bit controls, recognizing the version response doesn't work. When using CSI instead of<Esc>[ for thetermcap color codes, using 16 colors doesn't work. (Neil Bird)Solution: Also accept CSI in place of<Esc>[ for the version string. Also check for CSI when handling colors 8-15 in term_color(). Use CSI for builtin xtermtermcap entries when'term' contains "8bit".Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, src/os_unix.c, src/proto/option.pro, src/proto/term.proPatch 5.6.062Problem: The documentation says that setting'smartindent' doesn't have an effect when'cindent'is set, butit does makea difference for linesstarting with "#". (Neil Bird)Solution: Really ignore'smartindent' when'cindent'is set.Files: src/misc1.c, src/ops.cPatch 5.6.063Problem: Using "I" in Visual-block mode doesn't accepta count. (Johannes Zellner)Solution: Pass thecount on to do_insert() and edit(). (Allan Kelly)Files: src/normal.c, src/ops.c, src/proto/ops.proPatch 5.6.064Problem:MS-DOS andWin32 console: Mouse doesn't work correctly after including patch 5.6.28. (Vince Negri)Solution: Don't check for mouse scroll wheel when the mouse code contains the number of clicks.Files: src/term.cPatch 5.6.065Problem: After moving the cursor around inInsert mode, typingaspace can still trigger an abbreviation. (Benji Fisher)Solution: Don't check for an abbreviation after moving around inInsert mode.Files: src/edit.cPatch 5.6.066Problem: Stilla fewbold character spill-over remains after patch 60.Solution: Clear character just in front of blanking out rest of the line. (Robert Webb)Files: src/screen.cPatch 5.6.067Problem: Whena file name containsa NL, theviminfo fileis corrupted.Solution: Use viminfo_writestring() to convert the NL toCTRL-V n. Also fix the Buffers menu and listinga menu name witha newline.Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.cPatch 5.6.068Problem: Compiling thePerlinterface doesn't work withPerl 5.6.0. (Bernhard Rosenkraenzer)Solution: Also check xs_apiversion for the version number when prepending defines for PL_*.Files: src/MakefilePatch 5.6.069Problem: "go" doesn't alwaysend upat the right character when'fileformat'is "dos". (Bruce DeVisser)Solution: Correct computations in ml_find_line_or_offset().Files: src/memline.Patch 5.6.070 (depends on 5.6.068)Problem: Compiling thePerlinterface doesn't work withPerl 5.6.0. (Bernhard Rosenkraenzer)Solution: Simpler check instead of the one from patch 68.Files: src/MakefilePatch 5.6.071Problem: "A" inVisual block mode onaTab positions the cursor one char to the right. (Michael Haumann)Solution: Correct the column computation in op_insert().Files: src/ops.cPatch 5.6.072Problem: Whenstarting Vim with "vim +startinsert",it entersInsert mode only after typing the first command. (Andrew Pimlott)Solution:Inserta dummy command in the stuff buffer.Files: src/main.cPatch 5.6.073 (extra) (depends on 5.6.034)Problem:Win32 GUI: When compiled with Bcc 5.5menus don't work. In dosinst.ctoupper() andtolower() give an "internal compiler error" for Bcc 5.5.Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan Sharp) Also cleaned up compilation arguments. Use our own implementation oftoupper() in dosinst.c. Use mytoupper() instead of tolower().Files: src/Makefile.bor, src/dosinst.cPatch 5.6.074 (extra)Problem: Entering CSI directly doesn't always work, because it's recognizedas the start ofa special key. Mostlya problem withmultibyte in the GUI.Solution: Use K_CSI fora typed CSI character. Use<CSI> fora normal CSI,<xCSI> fora CSI typed in the GUI.Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, src/keymap.h, src/misc2.cPatch 5.6.075Problem: When using "I" or "A" inVisual block mode while'sts'is set may change spaces toaTab the inserted textis not correct. (Mike Steed) And some other problems when using "A" to append after theend of the line.Solution: Check for change in spaces/tabs afterinserting the text. Append spaces to fill the gap between the end-of-line and the right edge of the block.Files: src/ops.cPatch 5.6.076Problem:GTK GUI: Mapping<M-Space> doesn't work.Solution: Don't use the "Alt" modifier twice in key_press_event().Files: src/gui_gtk_x11.cPatch 5.6.077Problem: GUI: When interrupting an external program withCTRL-C,gvim might crash. (Benjamin Korvemaker)Solution: Avoid usinga NULL pointer in ui_inchar_undo().Files: src/ui.cPatch 5.6.078Problem: Locale doesn't always work on FreeBSD. (David O'Brien)Solution: Link with the "xpg4" library when available.Files: src/configure.in, src/configurePatch 5.6.079Problem: Vim could crash when severalTcl interpreters are created and destroyed.Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo Wilken)Files: runtime/doc/if_tcl.txt, src/if_tcl.cPatch 5.6.080Problem: When jumping toa tag, generating thetags file and jumping to the sametag again uses the old search pattern. (Sung-Hyun Nam)Solution: Flush cachedtag matches when executing an external command.Files: src/misc2.c, src/proto/tag.pro, src/tag.cPatch 5.6.081Problem: ":syn include" usesa level for the included file, this confuses contained items includedat the same level.Solution: Useauniquetag for each included file. Changed sp_syn_inc_lvl to sp_syn_inc_tag. (Scott Bigham)Files: src/syntax.c, src/structs.hPatch 5.6.082Problem: When using cscope, Vim can crash.Solution: Initialize tag_fname in find_tags(). (Anton Blanchard)Files: src/tag.cPatch 5.6.083 (extra)Problem: Win32: The visualbeep can't be seen. (Eric Roesinger)Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) Also: Allow specifying the delay int_vb for the GUI.Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, src/proto/gui_mac.pro, src/proto/gui_riscos.pro, src/proto/gui_w32.pro, src/proto/gui_x11.pro, src/proto/gui_beos.proPatch 5.6.084 (depends on 5.6.074)Problem: GUI: Entering CSI doesn't always work for Athena and Motif.Solution: Handle typed CSIas<xCSI> (forgot this bit in 5.6.074).Files: src/gui_x11.cPatch 5.6.085Problem: Multi-byte: Using "r" to replacea double-byte char witha single-byte char moved the cursor one character. (Matsumoto) Also, usingacount whenreplacinga single-byte char witha double-byte char didn't work.Solution: Don't use del_char() to delete the second byte. Get "ptr" again after calling ins_char().Files: src/normal.cPatch 5.6.086 (extra)Problem: Win32: When usinglibcall() and the returned valueis nota valid pointer, Vim crashes.Solution: Use IsBadStringPtr() to check if the pointeris valid.Files: src/os_win32.cPatch 5.6.087Problem: Multi-byte: Commands andmessages withmultibyte characters are displayed wrong.Solution: Detect double-byte characters. (Yasuhiro Matsumoto)Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.cPatch 5.6.088Problem: Multi-byte withMotif or Athena: The message "XIM requiresfontset"is annoying when Vim was compiled withXIM support butitis not being used.Solution: Remove that message.Files: src/multbyte.cPatch 5.6.089Problem: On non-Unix systems it's possible to overwritea read-only file without using "!".Solution: Check if the file permissions allow overwriting before moving the file to become thebackup file.Files: src/fileio.cPatch 5.6.090Problem: When editinga file in "/home/dir/home/dir" this was replaced with "~~". (Andreas Jellinghaus)Solution:Replace thehome directory only once in home_replace().Files: src/misc1.cPatch 5.6.091Problem: When editing many "no file" files, can't create swap file, because .sw[a-p] have all been used. (Neil Bird)Solution: Also use ".sv[a-z]", ".su[a-z]", etc.Files: src/memline.cPatch 5.6.092Problem: FreeBSD: When setting $TERM toa non-validterminal name, Vim hangs in tputs().Solution: After tgetent() returns an error code, callit again with theterminal name "dumb". This apparently creates an environment in which tputs() doesn't fail.Files: src/term.cPatch 5.6.093 (extra)Problem:Win32 GUI: "ls |gvim-" will showa message box about reading stdin when Vim exits. (Donohue)Solution: Don't writea message about the file read from stdin until theGUI has started.Files: src/fileio.cPatch 5.6.094Problem: Problem withmultibytestring for ":echo var".Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) Also make do_echo() aware ofmultibyte characters.Files: src/eval.c, src/message.cPatch 5.6.095Problem: With an Emacs TAGS file that include anothera relative path doesn't always work.Solution: Use expand_tag_fname() on the name of the included file. (Utz-Uwe Haus)Files: src/tag.cPatch 5.6.096Problem: Unix: When editing many files,startup can be slow. (Paul Ackersviller)Solution: Halve the number of stat() calls used to adda file to the buffer list.Files: src/buffer.cPatch 5.7a.001Problem:GTK doesn't respond on drag&drop from ROX-Filer.Solution: Add "text/uri-list" target. (Thomas Leonard) Also: fix problem with checking for trash arguments.Files: src/gui_gtk_x11.cPatch 5.7a.002Problem: Multi-byte:'showmatch'is performed when second byte of an inserted double-byte charisa paren or brace.Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka)Files: src/misc1.cPatch 5.7a.003Problem: Multi-byte: After usingCTRL-O inInsert mode with the cursorat theend of the line onamultibyte character the cursor moves to the left.Solution: Check formultibyte characterat end-of-line. (Taro Muraoka) Also: fix cls() to detecta double-byte character. (Chong-Dae Park)Files: src/edit.c, src/search.cPatch 5.7a.004Problem: When reporting the searchpattern offset, thestring could be unterminated, which may causea crash.Solution: Terminate thestring for the search offset. (Stephen P. Wall)Files: src/search.cPatch 5.7a.005Problem: When ":s//~/" doesn't finda matchit reports "[NULL]" for the pattern.Solution: Use get_search_pat() to obtain the actually used pattern.Files: src/ex_cmds.c, src/proto/search.pro, src/search.cPatch 5.7a.006 (extra)Problem: VMS: Various problems, also with the VAXC compiler.Solution: In many places use theUnix code forVMS too. Added time, date and compiler version to version message. (Zoltan Arpadffy)Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, src/main.c, src/message.c, src/misc1.c, src/os_vms.c, src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, src/proto/os_vms.pro, src/proto/version.pro, src/term.c, src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.cPatch 5.7a.007Problem:Motif and Athena GUI:CTRL-@is interpretedasCTRL-C.Solution: Only use "intr_char" whenit has been set.Files: src/gui_x11.cPatch 5.7a.008Problem:GTK GUI: When usingCTRL-L the screenis redrawn twice, causing trouble forbold characters. Also happens when moving with the scrollbar. Best seen when'writedelay'is non-zero. Whenstarting theGUI with ":gui" the screenis redrawn once with the wrong colors.Solution: Only set the geometry hints when thewindow size really changed. This avoids settingit each time the scrollbaris forcefully redrawn. Don't redraw in expose_event() when gui.startingis still set.Files: src/gui_gtk_x11.c==============================================================================VERSION 5.8version-5.8Version 5.8isa bug-fix version of 5.7.Changedchanged-5.8-------Ctagsis no longer included with Vim. It has grown intoa project of its own.You can findit here:http://ctags.sf.net. Itis highly recommendedasa Vimcompanion when you arewriting programs.Addedadded-5.8-----Newsyntax files:acedbAceDB (Stewart Morris)aflexAflex (Mathieu Clabaut)antlrAntlr (Mathieu Clabaut)asm68k68000 Assembly (Steve Wall)automakeAutomake (John Williams)ayaccAyacc (Mathieu Clabaut)bB (Mathieu Clabaut)bindzoneBIND zone (glory hump)blankBlank (Rafal Sulejman)cfgConfigure files (Igor Prischepoff)changelogChangeLog (Gediminas Paulauskas)clClever (Phil Uren)crontabCrontab (John Hoelzel)cscEssbasescript (Raul Segura Acevedo)cynlibCynlib(C++) (Phil Derrick)cynppCyn++ (Phil Derrick)debchangelogDebian Changelog (Wichert Akkerman)debcontrolDebian Control (Wichert Akkerman)dnsDNS zone file (Jehsom)dtmlZope's DTML (Jean Jordaan)dylanDylan, Dylan-intr and Dylan-lid (Brent Fulgham)ecdEmbedix Component Description (John Beppu)fglInformix 4GL (Rafal Sulejman)foxproFoxPro (Powing Tse)gspGNU Server Pages (Nathaniel Harward)gtkrcGTK rc (David Necas)herculesHercules (Avant! Corporation) (Dana Edwards)htmlosHTML/OS by Aestiva (Jason Rust)inittabSysV processcontrol (David Necas)issInno Setup (Dominique Stephan)jamJam (Ralf Lemke)jessJess (Paul Baleme)lprologLambdaProlog (Markus Mottl)ia64Intel Itanium (parth malwankar)kixKixtart (Nigel Gibbs)mgpMaGic Point (Gerfried Fuchs)masonMason (HTML with Perl) (Andrew Smith)mmaMathematica (Wolfgang Waltenberger)nqcNot QuiteC (Stefan Scherer)omnimarkOmnimark (Paul Terray)openroadOpenROAD (Luis Moreno Serrano)namedBIND configuration (glory hump)pappPApp (Marc Lehmann)pfmainPostfix main config (Peter Kelemen)picPIC assembly (Aleksandar Veselinovic)ppwizPPWizard (Stefan Schwarzer)progressProgress (Phil Uren)psfProduct Specification File (Rex Barzee)rR (Tom Payne)registryMS-Windows registry (Dominique Stephan)robotsRobots.txt (Dominique Stephan)rtfRich Text Format (Dominique Stephan)setlSETL (Alex Poylisher)sgmldeclSGML Declarations (Daniel A. Molina W.)sindaSinda input (Adrian Nagle)sindacmpSinda compare (Adrian Nagle)sindaoutSinda output (Adrian Nagle)smithSMITH (Rafal Sulejman)snobol4Snobol 4 (Rafal Sulejman)straceStrace (David Necas)takTAK input (Adrian Nagle)takcmpTAK compare (Adrian Nagle)takoutTAK output (Adrian Nagle)tasmTurbo assembly (FooLman)texmfTeX configuration (David Necas)trasysTrasys input (Adrian Nagle)tssgmTSS Geometry (Adrian Nagle)tssopTSS Optics (Adrian Nagle)tssclTSS Command line (Adrian Nagle)virataVirata Configuration Script (Manuel M.H. Stol)vsejclVSE JCL (David Ondrejko)wdiffWordwisediff (Gerfried Fuchs)wshWindows Scripting Host (Paul Moore)xkbX Keyboard Extension (David Necas)Renamed php3 to php,it now also supports php4 (Lutz Eymers)Patch 5.7.015Problem:Syntax files for Vim 6.0 can't be used with 5.x.Solution: Add the "default" argument to the ":highlight" command: Ignore the command if highlighting was already specified.Files: src/syntax.cGenerate theSyntax menu with makemenu.vim, so thatit doesn't have to be donewhen Vimisstarting up. Reduces thestartup time of the GUI.Fixedfixed-5.8-----Conversion of docs to HTML didn't convert "tags" toa hyperlink.Fixed compiling under NeXT. (Jeroen C.M. Goudswaard)optwin.vim gave an error when used inVi compatible mode ('cpo' contains 'C').Tcl interpreter: "buffer" command didn't check for presence of an argument.(Dave Bodenstab)dosinst.c: Added checks for too long file name.Amiga:a file namestarting witha colon was considered absolute butit isn't.Amiga: ":pwd" addeda slash when in the root ofa drive.Macintosh: Warnings for unused variables. (Bernhard Pruemmer)Unix: When catchinga deadly signal, handleit in sucha way that it'sunlikely that Vim will hang. Call _exit() instead of exit() incase ofasevere problem.Setting thewindow title from nothing to something didn't work after patch 29.Check for ownership of.exrc and.vimrc was done with stat(). Use lstat()aswell for extra security.Win32 GUI: Printinga file with'fileformat' "unix" didn't work. Set'fileformat' to "dos" beforewriting the temp file.Unix: Could start waiting fora character when checking foraCTRL-C typedwhen anX eventis received.Could not usePerl andPythonat the same time on FreeBSD, becausePerl used"-lc" andPython used the threadedC library.Win32: The Mingw compiler gavea few warning messages.When using "ZZ" and anautocommand forwriting uses an abbreviationit didn'twork. Don't stuff the ":x" command but executeit directly. (Mikael Berthe)VMS doesn't always have lstat(), added an #ifdef around it.Addeda few corrections for the Macintosh. (Axel Kielhorn)Win32: GvimExt could not edit more thana few filesat once, the length of theargument was fixed.Previously released patches for Vim 5.7:Patch 5.7.001Problem: When the current bufferis encrypted, and another modified buffer isn't, ":wall" will encrypt the other buffer.Solution: In buf_write() use "buf" instead of "curbuf" to check for the crypt key.Files: src/fileio.cPatch 5.7.002Problem: When'showmode'is set, using "CTRL-O:r file" waits three seconds before displaying the read text. (Wichert Akkerman)Solution: Set "keep_msg" to the file message so that the screenis redrawn before the three seconds wait for displaying the mode message.Files: src/fileio.cPatch 5.7.003Problem: Searching for "[[:cntrl:]]" doesn't work.Solution: Exclude NUL from the matching characters,it terminates the list.Files: src/regexp.cPatch 5.7.004Problem: GTK: When selectinga new font, Vim can crash.Solution: In gui_mch_init_font() unreference the old font, not the new one.Files: src/gui_gtk_x11.cPatch 5.7.005Problem: Multibyte: Insertinga wrapped line corrupts kterm screen. Pasting TEXT/COMPOUND_TEXT into Vim does not work. OnMotif noXIM status lineis displayed even thoughitis available.Solution: Don't use xterm trick for wrapping lines formultibyte mode. Correcta missing "break", added TEXT/COMPOUND_TEXT selection request. Add XIMStatusArea fallback code. (Katsuhito Nagano)Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.cPatch 5.7.006Problem: GUI: redrawing the non-Visual selectionis wrong when thewindowis unobscured. (Jean-Pierre Etienne)Solution: Redraw the selection properly and don't clear it. Added "len" argument to clip_may_redraw_selection().Files: src/gui.c, src/ui.c, src/proto/ui.proPatch 5.7.007Problem: Python: Crash when using the current buffer twice.Solution: Increase thereferencecount for buffer andwindow objects. (Johannes Zellner)Files: src/if_python.cPatch 5.7.008Problem: InEx mode, backspacing over the first TAB doesn't work properly. (Wichert Akkerman)Solution: Switch the cursor on beforeprinting the newline.Files: src/ex_getln.cPatch 5.7.009 (extra)Problem: Mac: Crash when usinga long file.Solution: Don't redefine malloc() and free(), becauseit will break using realloc().Files: src/os_mac.hPatch 5.7.010Problem: When usingCTRL-A ona very long number Vim can crash. (Michael Naumann)Solution: Truncate the length of the new number to avoida buffer overflow.Files: src/ops.cPatch 5.7.011 (extra)Problem:Win32GUI on NT 5 and Win98: Displaying Hebrewis reversed.Solution: Output each character separately, to avoid that Windows reverses the text for some fonts. (Ron Aaron)Files: src/gui_w32.cPatch 5.7.012Problem: When using "-complete=buffer" for ":command" the user command fails.Solution: Ina user command don't replace the buffer name withacount for the buffer number.Files: src/ex_docmd.cPatch 5.7.013Problem: "gD" didn't always finda match in the first line, depending on the column the search started at.Solution: Reset the column to zero beforestarting to search.Files: src/normal.cPatch 5.7.014Problem: Rot13 encoding was done on characters with accents, whichis wrong. (Sven Gottwald)Solution: Onlydorot13 encoding on ASCII characters.Files: src/ops.cPatch 5.7.016Problem: When hitting 'n' fora ":s///c" command, the ignore-case flag was not restored, some matches were skipped. (Daniel Blaustein)Solution: Restore the reg_ic variable when 'n' was hit.Files: src/ex_cmds.cPatch 5.7.017Problem: When usinga Vimscript for Vim 6.0 with<SID> beforea function name,it produces an error message even when inside an "if version >= 600". (Charles Campbell)Solution: Ignoreerrors in the function name when the functionis not going to be defined.Files: src/eval.cPatch 5.7.018Problem: When running "rvim" or "vim-Z"it was still possible to executea shell command withsystem() and backtick-expansion. (Antonios A. Kavarnos)Solution: Disallow executinga shell command in get_cmd_output() and mch_expand_wildcards().Files: src/misc1.c, src/os_unix.cPatch 5.7.019Problem: Multibyte: Ina substitute string,amultibyte character isn't skipped properly, can bea problem when the second byteisa backslash.Solution: Skip an extra byte fora double-byte character. (Muraoka Taro)Files: src/ex_cmds.cPatch 5.7.020Problem: Compilation doesn't work on MacOS-X.Solution: Adda couple of #ifdefs. (Jamie Curmi)Files: src/regexp.c, src/ctags/general.hPatch 5.7.021Problem: Vim sometimes producesabeep when started in an xterm. Only happens when compiled without mouse support.Solution: Requesting the xterm version results ina K_IGNORE. This wasn't handled when mouse supportis disabled. Accept K_IGNORE always.Files: src/normal.cPatch 5.7.022Problem: %v in'statusline'is not displayed when it's equal to %c.Solution: Check if %V or %vis used and handle them differently.Files: src/screen.cPatch 5.7.023Problem: Crash whenaWinLeaveautocommand deletes the buffer in the other window.Solution: Check that after executing theWinLeaveautocommands there stillisawindow to be closed. Also update the test that was supposed to check for this problem.Files: src/window.c, testdir/test13.in, testdir/test13.okPatch 5.7.024Problem: Evaluating anexpression for'statusline' can have side effects.Solution: Evaluate theexpression ina sandbox.Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, src/screen.c, src/undo.cPatch 5.7.025 (fixed)Problem: Creatinga temp file hasa race condition.Solution: Createa private directory to write the temp files in.Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, src/proto/fileio.pro, src/memline.c, src/os_unix.hPatch 5.7.026 (extra)Problem: Creatinga temp file hasa race condition.Solution: Createa private directory to write the temp files in. Thisis the extra part of patch 5.7.025.Files: src/os_msdos.hPatch 5.7.027Problem: Starting to edita file can causea crash. For example when inInsert mode, usingCTRL-O:help abbr<Tab> to scroll the screen and then<CR>, which editsahelp file. (Robert Bogomip)Solution: Check if keep_msgis NULL beforecopying it.Files: src/fileio.cPatch 5.7.028Problem: Creatingabackup or swap file could fail in rare situations.Solution: Use O_EXCL for open().Files: src/fileio.c, src/memfile.cPatch 5.7.029Problem: Editinga file with an extremely long name crashed Vim.Solution: Check for length of the name when setting thewindow title.Files: src/buffer.cPatch 5.7.030Problem:A ":make" or ":grep" command witha very long argument could causea crash.Solution: Allocate the buffer for the shell command.Files: src/ex_docmd.c vim:tw=78:ts=8:noet:ft=help:norl: