1*version5.txt* For Vim version 7.3. Last change: 2008 Dec 17 2 3 4 VIM REFERENCE MANUAL by Bram Moolenaar 5 6Welcome to Vim Version 5.0! 7 8This document lists the differences between Vim 4.x and Vim 5.0. 9Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc.. 10See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0. 11See |version4.txt| for differences between Vim 3.0 and Vim 4.0. 12 13INCOMPATIBLE: |incompatible-5| 14 15Default value for 'compatible' changed |cp-default| 16Text formatting command "Q" changed |Q-command-changed| 17Command-line arguments changed |cmdline-changed| 18Autocommands are kept |autocmds-kept| 19Use of 'hidden' changed |hidden-changed| 20Text object commands changed |text-objects-changed| 21X-Windows Resources removed |x-resources| 22Use of $VIM |$VIM-use| 23Use of $HOME for MS-DOS and Win32 |$HOME-use| 24Tags file format changed |tags-file-changed| 25Options changed |options-changed| 26CTRL-B in Insert mode gone |i_CTRL-B-gone| 27 28NEW FEATURES: |new-5| 29 30Syntax highlighting |new-highlighting| 31Built-in script language |new-script| 32Perl and Python support |new-perl-python| 33Win32 GUI version |added-win32-GUI| 34VMS version |added-VMS| 35BeOS version |added-BeOS| 36Macintosh GUI version |added-Mac| 37More Vi compatible |more-compatible| 38Read input from stdin |read-stdin| 39Regular expression patterns |added-regexp| 40Overloaded tags |tag-overloaded| 41New commands |new-commands| 42New options |added-options| 43New command-line arguments |added-cmdline-args| 44Various additions |added-various| 45 46IMPROVEMENTS |improvements-5| 47 48COMPILE TIME CHANGES |compile-changes-5| 49 50BUG FIXES |bug-fixes-5| 51 52VERSION 5.1 |version-5.1| 53Changed |changed-5.1| 54Added |added-5.1| 55Fixed |fixed-5.1| 56 57VERSION 5.2 |version-5.2| 58Long lines editable |long-lines| 59File browser added |file-browser-5.2| 60Dialogs added |dialogs-added| 61Popup menu added |popup-menu-added| 62Select mode added |new-Select-mode| 63Session files added |new-session-files| 64User defined functions and commands |new-user-defined| 65New interfaces |interfaces-5.2| 66New ports |ports-5.2| 67Multi-byte support |new-multi-byte| 68New functions |new-functions-5.2| 69New options |new-options-5.2| 70New Ex commands |new-ex-commands-5.2| 71Changed |changed-5.2| 72Added |added-5.2| 73Fixed |fixed-5.2| 74 75VERSION 5.3 |version-5.3| 76Changed |changed-5.3| 77Added |added-5.3| 78Fixed |fixed-5.3| 79 80VERSION 5.4 |version-5.4| 81Runtime directory introduced |new-runtime-dir| 82Filetype introduced |new-filetype-5.4| 83Vim script line continuation |new-line-continuation| 84Improved session files |improved-sessions| 85Autocommands improved |improved-autocmds-5.4| 86Encryption |new-encryption| 87GTK GUI port |new-GTK-GUI| 88Menu changes |menu-changes-5.4| 89Viminfo improved |improved-viminfo| 90Various new commands |new-commands-5.4| 91Various new options |new-options-5.4| 92Vim scripts |new-script-5.4| 93Avoid hit-enter prompt |avoid-hit-enter| 94Improved quickfix |improved-quickfix| 95Regular expressions |regexp-changes-5.4| 96Changed |changed-5.4| 97Added |added-5.4| 98Fixed |fixed-5.4| 99 100VERSION 5.5 |version-5.5| 101Changed |changed-5.5| 102Added |added-5.5| 103Fixed |fixed-5.5| 104 105VERSION 5.6 |version-5.6| 106Changed |changed-5.6| 107Added |added-5.6| 108Fixed |fixed-5.6| 109 110VERSION 5.7 |version-5.7| 111Changed |changed-5.7| 112Added |added-5.7| 113Fixed |fixed-5.7| 114 115VERSION 5.8 |version-5.8| 116Changed |changed-5.8| 117Added |added-5.8| 118Fixed |fixed-5.8| 119 120============================================================================== 121 INCOMPATIBLE *incompatible-5* 122 123Default value for 'compatible' changed *cp-default* 124-------------------------------------- 125 126Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim 127as a drop-in replacement for Vi, but causes some things to be incompatible 128with version 4.x. 129 130In version 4.x the default value for the 'compatible' option was off. Now the 131default is on. The first thing you will notice is that the "u" command undoes 132itself. Other side effects will be that mappings may work differently or not 133work at all. 134 135Since a lot of people switching from Vim 4.x to 5.0 will find this annoying, 136the 'compatible' option is switched off if Vim finds a vimrc file. This is a 137bit of magic to make sure that 90% of the Vim users will not be bitten by 138this change. 139 140What does this mean? 141- If you prefer to run in 'compatible' mode and don't have a vimrc file, you 142 don't have to do anything. 143- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you 144 don't have to do anything. 145- If you prefer to run in 'compatible' mode and do have a vimrc file, you 146 should put this line first in your vimrc file: > 147 :set compatible 148- If you prefer to run in 'nocompatible' mode and don't have a vimrc file, 149 you can do one of the following: 150 - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix). 151 - Put this command in your .exrc file or $EXINIT: > 152 :set nocompatible 153< - Start Vim with the "-N" argument. 154 155If you are new to Vi and Vim, using 'nocompatible' is strongly recommended, 156because Vi has a lot of unexpected side effects, which are avoided by this 157setting. See 'compatible'. 158 159If you like some things from 'compatible' and some not, you can tune the 160compatibility with 'cpoptions'. 161 162When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode. 163 164 165Text formatting command "Q" changed *Q-command-changed* 166----------------------------------- 167 168The "Q" command formerly formatted lines to the width the 'textwidth' option 169specifies. The command for this is now "gq" (see |gq| for more info). The 170reason for this change is that "Q" is the standard Vi command to enter "Ex" 171mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info). 172 173If you still want to use "Q" for formatting, use this mapping: > 174 :noremap Q gq 175And if you also want to use the functionality of "Q": > 176 :noremap gQ Q 177 178 179Command-line arguments changed *cmdline-changed* 180------------------------------ 181 182Command-line file-arguments and option-arguments can now be mixed. You can 183give options after the file names. Example: > 184 vim main.c -g 185 186This is not possible when editing a file that starts with a '-'. Use the "--" 187argument then |---|: > 188 vim -g -- -main.c 189 190"-v" now means to start Ex in Vi mode, use "-R" for read-only mode. 191old: "vim -v file" |-v| 192new: "vim -R file" |-R| 193 194"-e" now means to start Vi in Ex mode, use "-q" for quickfix. 195old: "vim -e errorfile" |-e| 196new: "vim -q errorfile" |-q| 197 198"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex| 199 200"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga). 201old: "vim -x file" |-x| 202new: "vim -f file" |-f| 203 204Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed 205only the last one. 206 207"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in 208a gvimrc file. 209 210 211Autocommands are kept *autocmds-kept* 212--------------------- 213 214Before version 5.0, autocommands with the same event, file name pattern, and 215command could appear only once. This was fine for simple autocommands (like 216setting option values), but for more complicated autocommands, where the same 217command might appear twice, this restriction caused problems. Therefore 218Vim stores all autocommands and keeps them in the order that they are defined. 219 220The most obvious side effect of this change is that when you source a vimrc 221file twice, the autocommands in it will be defined twice. To avoid this, do 222one of these: 223 224- Remove any autocommands that might potentially defined twice before 225 defining them. Example: > 226 :au! * *.ext 227 :au BufEnter *.ext ... 228 229- Put the autocommands inside an ":if" command. Example: > 230 if !exists("did_ext_autocmds") 231 let did_ext_autocmds = 1 232 autocmd BufEnter *.ext ... 233 endif 234 235- Put your autocommands in a different autocommand group so you can remove 236 them before defining them |:augroup|: > 237 augroup uncompress 238 au! 239 au BufReadPost *.gz ... 240 augroup END 241 242 243Use of 'hidden' changed *hidden-changed* 244----------------------- 245 246In version 4.x, only some commands used the 'hidden' option. Now all commands 247uses it whenever a buffer disappears from a window. 248 249Previously you could do ":buf xxx" in a changed buffer and that buffer would 250then become hidden. Now you must set the 'hidden' option for this to work. 251 252The new behavior is simpler: whether Vim hides buffers no longer depends on 253the specific command that you use. 254- with 'hidden' not set, you never get hidden buffers. Exceptions are the 255 ":hide" and ":close!" commands and, in rare cases, where you would otherwise 256 lose changes to the buffer. 257- With 'hidden' set, you almost never unload a buffer. Exceptions are the 258 ":bunload" or ":bdel" commands. 259 260":buffer" now supports a "!": abandon changes in current buffer. So do 261":bnext", ":brewind", etc. 262 263 264Text object commands changed *text-objects-changed* 265---------------------------- 266 267Text object commands have new names. This allows more text objects and makes 268characters available for other Visual mode commands. Since no more single 269characters were available, text objects names now require two characters. 270The first one is always 'i' or 'a'. 271 OLD NEW ~ 272 a aw a word |v_aw| 273 A aW a WORD |v_aW| 274 s as a sentence |v_as| 275 p ap a paragraph |v_ap| 276 S ab a () block |v_ab| 277 P aB a {} block |v_aB| 278 279There is another set of text objects that starts with "i", for "inner". These 280select the same objects, but exclude white space. 281 282 283X-Windows Resources removed *x-resources* 284-------------------------- 285 286Vim no longer supports the following X resources: 287- boldColor 288- italicColor 289- underlineColor 290- cursorColor 291 292Vim now uses highlight groups to set colors. This avoids the confusion of 293using a bold Font, which would imply a certain color. See |:highlight| and 294|gui-resources|. 295 296 297Use of $VIM *$VIM-use* 298----------- 299 300Vim now uses the VIM environment variable to find all Vim system files. This 301includes the global vimrc, gvimrc, and menu.vim files and all on-line help 302and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can 303also be used. 304For Unix, Vim sets a default value for $VIM when doing "make install". 305When $VIM is not set, its default value is the directory from 'helpfile', 306excluding "/doc/help.txt". 307 308 309Use of $HOME for MS-DOS and Win32 *$HOME-use* 310--------------------------------- 311 312The MS-DOS and Win32 versions of Vim now first check $HOME when searching for 313a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim 314used $VIM for these systems, but this causes trouble on a system with several 315users. Now Vim uses $VIM only when $HOME is not set or the file is not found 316in $HOME. See |_vimrc|. 317 318 319Tags file format changed *tags-file-changed* 320------------------------ 321 322Only tabs are allowed to separate fields in a tags file. This allows for 323spaces in a file name and is still Vi compatible. In previous versions of 324Vim, any white space was allowed to separate the fields. If you have a file 325which doesn't use a single tab between fields, edit the tags file and execute 326this command: > 327 :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/ 328 329 330Options changed *options-changed* 331--------------- 332 333The default value of 'errorfile' has changed from "errors.vim" to "errors.err". 334The reason is that only Vim scripts should have the ".vim" extensions. 335 336The ":make" command no longer uses the 'errorfile' option. This prevents the 337output of the ":make" command from overwriting a manually saved error file. 338":make" uses the 'makeef' option instead. This also allows for generating a 339unique name, to prevent concurrently running ":make" commands from overwriting 340each other's files. 341 342With 'insertmode' set, a few more things change: 343- <Esc> in Normal mode goes to Insert mode. 344- <Esc> in Insert mode doesn't leave Insert mode. 345- When doing ":set im", go to Insert mode immediately. 346 347Vim considers a buffer to be changed when the 'fileformat' (formerly the 348'textmode' option) is different from the buffer's initial format. 349 350 351CTRL-B in Insert mode gone *i_CTRL-B-gone* 352-------------------------- 353 354When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to 355toggle the 'revins' option. Unfortunately, some people hit the 'B' key 356accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to 357undo this. Since toggling the 'revins' option can easily be done with the 358mapping below, this use of the CTRL-B key is disabled. You can still use the 359CTRL-_ key for this |i_CTRL-_|. > 360 :imap <C-B> <C-O>:set revins!<CR> 361 362============================================================================== 363 NEW FEATURES *new-5* 364 365Syntax highlighting *new-highlighting* 366------------------- 367 368Vim now has a very flexible way to highlighting just about any type of file. 369See |syntax|. Summary: > 370 :syntax on 371 372Colors and attributes can be set for the syntax highlighting, and also for 373other highlighted items with the ':' flag in the 'highlight' option. All 374highlighted items are assigned a highlight group which specifies their 375highlighting. See |:highlight|. The default colors have been improved. 376 377You can use the "Normal" group to set the default fore/background colors for a 378color terminal. For the GUI, you can use this group to specify the font, too. 379 380The "2html.vim" script can be used to convert any file that has syntax 381highlighting to HTML. The colors will be exactly the same as how you see them 382in Vim. With a HTML viewer you can also print the file with colors. 383 384 385Built-in script language *new-script* 386------------------------ 387 388A few extra commands and an expression evaluator enable you to write simple 389but powerful scripts. Commands include ":if" and ":while". Expressions can 390manipulate numbers and strings. You can use the '=' register to insert 391directly the result of an expression. See |expression|. 392 393 394Perl and Python support *new-perl-python* 395----------------------- 396 397Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|. 398Patches made by Sven Verdoolaege and Matt Gerassimoff. 399 400Vim can call Python commands with ":python" and ":pyfile". See |python|. 401 402Both of these are only available when enabled at compile time. 403 404 405Win32 GUI version *added-win32-GUI* 406----------------- 407 408The GUI has been ported to MS Windows 95 and NT. All the features of the X11 409GUI are available to Windows users now. |gui-w32| 410This also fixes problems with running the Win32 console version under Windows 41195, where console support has always been bad. 412There is also a version that supports OLE automation interface. |if_ole.txt| 413Vim can be integrated with Microsoft Developer Studio using the VisVim DLL. 414It is possible to produce a DLL version of gvim with Borland C++ (Aaron). 415 416 417VMS version *added-VMS* 418----------- 419 420Vim can now also be used on VMS systems. Port done by Henk Elbers. 421This has not been tested much, but it should work. 422Sorry, no documentation! 423 424 425BeOS version *added-BeOS* 426------------ 427 428Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert) 429See |os_beos.txt|. 430 431 432Macintosh GUI version *added-Mac* 433--------------------- 434 435Vim can now be used on the Macintosh. (Dany St-Amant) 436It has not been tested much yet, be careful! 437See |os_mac.txt|. 438 439 440More Vi compatible *more-compatible* 441------------------ 442 443There is now a real Ex mode. Started with the "Q" command, or by calling the 444executable "ex" or "gex". |Ex-mode| 445 446Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag 447in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo 448(like "." in Nvi). 449 450 451Read input from stdin *read-stdin* 452--------------------- 453 454When using the "-" command-line argument, Vim reads its text input from stdin. 455This can be used for putting Vim at the end of a pipe: > 456 grep "^a.*" *.c | vim - 457See |--|. 458 459 460Regular expression patterns *added-regexp* 461--------------------------- 462 463Added specifying a range for the number of matches of an atom: "\{a,b}". |/\{| 464Added the "shortest match" regexp "\{-}" (Webb). 465Added "\s", matches a white character. Can replace "[ \t]". |/\s| 466Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S| 467 468 469Overloaded tags *tag-overloaded* 470--------------- 471 472When using a language like C++, there can be several tags for the same 473tagname. Commands have been added to be able to jump to any of these 474overloaded tags: 475|:tselect| List matching tags, and jump to one of them. 476|:stselect| Idem, and split window. 477|g_CTRL-]| Do ":tselect" with the word under the cursor. 478 479 After ":ta {tagname}" with multiple matches: 480|:tnext| Go to next matching tag. 481|:tprevious| Go to previous matching tag. 482|:trewind| Go to first matching tag. 483|:tlast| Go to last matching tag. 484 485The ":tag" command now also accepts wildcards. When doing command-line 486completion on tags, case-insensitive matching is also available (at the end). 487 488 489New commands *new-commands* 490------------ 491 492|:amenu| Define menus for all modes, inserting a CTRL-O for Insert 493 mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is 494 used for the default menus and the Syntax menu. 495 496|:augroup| Set group to be used for following autocommands. Allows the 497 grouping of autocommands to enable deletion of a specific 498 group. 499 500|:crewind| Go to first error. 501|:clast| Go to last error. 502 503|:doautoall| Execute autocommands for all loaded buffers. 504 505|:echo| Echo its argument, which is an expression. Can be used to 506 display messages which include variables. 507 508|:execute| Execute its argument, which is an expression. Can be used to 509 built up an Ex command with anything. 510 511|:hide| Works like ":close". 512 513|:if| Conditional execution, for built-in script language. 514 515|:intro| Show introductory message. This is always executed when Vim 516 is started without file arguments. 517 518|:let| Assign a value to an internal variable. 519 520|:omap| Map only in operator-pending mode. Makes it possible to map 521 text-object commands. 522 523|:redir| Redirect output of messages to a file. 524 525|:update| Write when buffer has changed. 526 527|:while| While-loop for built-in script language. 528 529Visual mode: 530|v_O| "O" in Visual block mode, moves the cursor to the other corner 531 horizontally. 532|v_D| "D" in Visual block mode deletes till end of line. 533 534Insert mode: 535|i_CTRL-]| Triggers abbreviation, without inserting any character. 536 537 538New options *added-options* 539----------- 540 541'background' Used for selecting highlight color defaults. Also used in 542 "syntax.vim" for selecting the syntax colors. Often set 543 automatically, depending on the terminal used. 544 545'complete' Specifies how Insert mode completion works. 546 547'eventignore' Makes it possible to ignore autocommands temporarily. 548 549'fileformat' Current file format. Replaces 'textmode'. 550'fileformats' Possible file formats. Replaces 'textauto'. 551 New is that this also supports Macintosh format: A single <CR> 552 separates lines. 553 The default for 'fileformats' for MS-DOS, Win32 and OS/2 is 554 "dos,unix", also when 'compatible' set. Unix type files 555 didn't work anyway when 'fileformats' was empty. 556 557'guicursor' Set the cursor shape and blinking in various modes. 558 Default is to adjust the cursor for Insert and Replace mode, 559 and when an operator is pending. Blinking is default on. 560 561'fkmap' Farsi key mapping. 562 563'hlsearch' Highlight all matches with the last used search pattern. 564 565'hkmapp' Phonetic Hebrew mapping. (Ilya Dogolazky) 566 567'iconstring' Define the name of the icon, when not empty. (Version 5.2: the 568 string is used literally, a newline can be used to make two 569 lines.) 570 571'lazyredraw' Don't redraw the screen while executing macros, registers or 572 other not typed commands. 573 574'makeef' Errorfile to be used for ":make". "##" is replaced with a 575 unique number. Avoids that two Vim sessions overwrite each 576 others errorfile. The Unix default is "/tmp/vim##.err"; for 577 Amiga "t:vim##.Err, for others "vim##.err". 578 579'matchtime' 1/10s of a second to show a matching paren, when 'showmatch' 580 is set. Like Nvi. 581 582'mousehide' Hide mouse pointer in GUI when typing text. 583 584'nrformats' Defines what bases Vim will consider for numbers when using 585 the CTRL-A and CTRL-X commands. Default: "hex,octal". 586 587'shellxquote' Add extra quotes around the whole shell command, including 588 redirection. 589 590'softtabstop' Make typing behave like tabstop is set at this value, without 591 changing the value of 'tabstop'. Makes it more easy to keep 592 'ts' at 8, while still getting four spaces for a <Tab>. 593 594'titlestring' String for the window title, when not empty. (Version 5.2: 595 this string is used literally, a newline can be used to make 596 two lines.) 597 598'verbose' Level of verbosity. Makes it possible to show which .vimrc, 599 .exrc, .viminfo files etc. are used for initializing. Also 600 to show autocommands that are being executed. Can also be set 601 by using the "-V" command-line argument. 602 603 604New command-line arguments *added-cmdline-args* 605-------------------------- 606 607|-U| Set the gvimrc file to be used. Like "-u" for the vimrc. 608 609|-V| Set the 'verbose' option. E.g. "vim -V10". 610 611|-N| Start in non-compatible mode. 612 613|-C| Start in compatible mode. 614 615|-Z| Start in restricted mode, disallow shell commands. Can also 616 be done by calling the executable "rvim". 617 618|-h| Show usage information and exit. 619 620 621Various additions *added-various* 622----------------- 623 624Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can 625be used as an editor for SNiFF. No documentation available... 626 627For producing a bug report, the bugreport.vim script has been included. 628Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file 629"bugreport.txt" in the current directory. |bugs| 630 631Added range to ":normal" command. Now you can repeat the same command for 632each line in the range. |:normal-range| 633 634Included support for the Farsi language (Shiran). Only when enabled at 635compile time. See |farsi|. 636 637============================================================================== 638 IMPROVEMENTS *improvements-5* 639 640Performance: 641- When 'showcmd' was set, mappings would execute much more slowly because the 642 output would be flushed very often. Helps a lot when executing the "life" 643 macros with 'showcmd' set. 644- Included patches for binary searching in tags file (David O'Neill). 645 Can be disabled by resetting the 'tagbsearch' option. 646- Don't update the ruler when repeating insert (slowed it down a lot). 647- For Unix, file name expansion is now done internally instead of starting a 648 shell for it. 649- Expand environment variables with expand_env(), instead of calling the 650 shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster. 651- Reduced output for cursor positioning: Use CR-LF for moving to first few 652 columns in next few lines; Don't output CR twice when using termios. 653- Optimized cursor positioning. Use CR, BS and NL when it's shorter than 654 absolute cursor positioning. 655- Disable redrawing while repeating insert "1000ii<Esc>". 656- Made "d$" or "D" for long lines a lot faster (delete all characters at once, 657 instead of one by one). 658- Access option table by first letter, instead of searching from start. 659- Made setting special highlighting attributes a lot faster by using 660 highlight_attr[], instead of searching in the 'highlight' string. 661- Don't show the mode when redrawing is disabled. 662- When setting an option, only redraw the screen when required. 663- Improved performance of Ex commands by using a lookup table for the first 664 character. 665 666Options: 667'cinoptions' Added 'g' flag, for C++ scope declarations. 668'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text 669 area. Default is to allow empty yanks. When 'E' is included, 670 "y$" in an empty line now is handled as an error (Vi 671 compatible). 672 Added 'j' flag: Only add two spaces for a join after a '.', 673 not after a '?' or '!'. 674 Added 'A' flag: don't give ATTENTION message. 675 Added 'L' flag: When not included, and 'list' is set, 676 'textwidth' formatting works like 'list' is not set. 677 Added 'W' flag: Let ":w!" behave like Vi: don't overwrite 678 readonly files, or a file owned by someone else. 679'highlight' Added '@' flag, for '@' characters after the last line on the 680 screen, and '$' at the end of the line when 'list' is set. 681 Added 'i' flag: Set highlighting for 'incsearch'. Default 682 uses "IncSearch" highlight group, which is linked to "Visual". 683 Disallow 'h' flag in 'highlight' (wasn't used anymore since 684 3.0). 685'guifont' Win32 GUI only: When set to "*" brings up a font requester. 686'guipty' Default on, because so many people need it. 687'path' Can contain wildcards, and "**" for searching a whole tree. 688'shortmess' Added 'I' flag to avoid the intro message. 689'viminfo' Added '%' flag: Store buffer list in viminfo file. 690 691- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most 692 machines have much more RAM now that prices have dropped. 693- Implemented ":set all&", set all options to their default value. |:set| 694 695Swap file: 696- Don't create a swap file for a readonly file. Then create one on the first 697 change. Also create a swapfile when the amount of memory used is getting 698 too high. |swap-file| 699- Make swap file "hidden", if possible. On Unix this is done by prepending a 700 dot to the swap file name. When long file names are used, the DJGPP and 701 Win32 versions also prepend a dot, in case a file on a mounted Unix file 702 system is edited. |:swapname| On MSDOS the hidden file attribute is NOT 703 set, because this causes problems with share.exe. 704- 'updatecount' always defaults to non-zero, also for Vi compatible mode. 705 This means there is a swap file, which can be used for recovery. 706 707Tags: 708- Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed 709 from 710 {tag}:{fname} {fname} {command} 711 to 712 {tag} {fname} {command};" file: 713 Which is both faster to parse, shorter and Vi compatible. The old format is 714 also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS). 715 |tags-file-format| 716- Completion of tags now also includes static tags for other files, at the 717 end. 718- Included "shtags" from Stephen Riehm. 719- When finding a matching tag, but the file doesn't exist, continue searching 720 for another match. Helps when using the same tags file (with links) for 721 different versions of source code. 722- Give a tag with a global match in the current file a higher priority than a 723 global match in another file. 724 725Included xxd version V1.8 (Juergen Weigert). 726 727Autocommands: 728- VimLeave autocommands are executed after writing the viminfo file, instead 729 of before. |VimLeave| 730- Allow changing autocommands while executing them. This allows for 731 self-modifying autocommands. (idea from Goldberg) 732- When using autocommands with two or more patterns, could not split 733 ":if/:endif" over two lines. Now all matching autocommands are executed in 734 one do_cmdline(). 735- Autocommands no longer change the command repeated with ".". 736- Search patterns are restored after executing autocommands. This avoids 737 that the 'hlsearch' highlighting is messed up by autocommands. 738- When trying to execute an autocommand, also try matching the pattern with 739 the short file name. Helps when short file name is different from full 740 file name (expanded symbolic links). |autocmd-patterns| 741- Made the output of ":autocmd" shorter and look better. 742- Expand <sfile> in an ":autocmd" when it is defined. |<sfile>| 743- Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested| 744- Added [group] argument to ":autocmd". Overrides the currently set group. 745 |autocmd-groups| 746- new events: 747 |BufUnload| before a buffer is unloaded 748 |BufDelete| before a buffer is deleted from the buffer list 749 |FileChangedShell| when a file's modification time has changed after 750 executing a shell command 751 |User| user-defined autocommand 752- When 'modified' was set by a BufRead* autocommand, it was reset again 753 afterwards. Now the ":set modified" is remembered. 754 755GUI: 756- Improved GUI scrollbar handling when redrawing is slower than the scrollbar 757 events are generated. 758- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u| 759 Use "-U" to use another gvimrc file. |-U| 760- Handle CTRL-C for external command, also for systems where "setsid()" is 761 supported. 762- When starting the GUI, restrict the window size to the screen size. 763- The default menus are read from $VIMRUNTIME/menu.vim. This allows for a 764 customized default menu. |menu.vim| 765- Improved the default menus. Added File/Print, a Window menu, Syntax menu, 766 etc. 767- Added priority to the ":menu" command. Now each menu can be put in a place 768 where you want it, independent of the order in which the menus are defined. 769 |menu-priority| 770 771Give a warning in the intro screen when running the Win32 console version on 772Windows 95 because there are problems using this version under Windows 95. 773|win32-problems| 774 775Added 'e' flag for ":substitute" command: Don't complain when not finding a 776match (Campbell). |:s| 777 778When using search commands in a mapping, only the last one is kept in the 779history. Avoids that the history is trashed by long mappings. 780 781Ignore characters after "ex", "view" and "gvim" when checking startup mode. 782Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly 783mode. |gview| 784 785When resizing windows, the cursor is kept in the same relative position, if 786possible. (Webb) 787 788":all" and ":ball" no longer close and then open a window for the same buffer. 789Avoids losing options, jumplist, and other info. 790 791"-f" command-line argument is now ignored if Vim was compiled without GUI. 792|-f| 793 794In Visual block mode, the right mouse button picks up the nearest corner. 795 796Changed default mappings for DOS et al. Removed the DOS-specific mappings, 797only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and 798Shift-Del. 799 800Changed the numbers in the output of ":jumps", so you can see where {count} 801CTRL-O takes you. |:jumps| 802 803Using "~" for $HOME now works for all systems. |$HOME| 804 805Unix: Besides using CTRL-C, also use the INTR character from the tty settings. 806Somebody has INTR set to DEL. 807 808Allow a <LF> in a ":help" command argument to end the help command, so another 809command can follow. 810 811Doing "%" on a line that starts with " #if" didn't jump to matching "#else". 812Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag. 813|%| 814 815Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved 816|ins-completion|: 817- 'complete' option added. 818- When 'nowrapscan' is set, and no match found, report the searched direction 819 in the error message. 820- Repeating CTRL-X commands adds following words/lines after the match. 821- When adding-expansions, accept single character matches. 822- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole 823 insertion. Also fixes not being able to backspace over a word that has been 824 inserted with CTRL-N. 825 826When copying characters in Insert mode from previous/next line, with CTRL-E or 827CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E| 828 829Commands that move in the arglist, like ":n" and ":rew", keep the old cursor 830position of the file (this is mostly Vi compatible). 831 832Vim now remembers the '< and '> marks for each buffer. This fixes a problem 833that a line-delete in one buffer invalidated the '< and '> marks in another 834buffer. |'<| 835 836For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable. 837When using the executable path for $VIM, remove "src/" when present. Should 838make Vim find the docs and syntax files when it is run directly after 839compiling. |$VIM| 840 841When quitting Visual mode with <Esc>, the cursor is put at start of the Visual 842area (like after executing an operator). 843 844Win32 and Unix version: Removed 1100 character limit on external commands. 845 846Added possibility to include a space in a ":edit +command" argument, by 847putting a backslash before it. |+cmd| 848 849After recovery, BufReadPost autocommands are applied. |:recover| 850 851Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi| 852 853Allow "%:p:h" when % is empty. |:_%| 854 855Included "<sfile>": file name from the ":source" command. |<sfile>| 856 857Added "<Bslash>" special character. Helps for avoiding multiple backslashes 858in mappings and menus. 859 860In a help window, a double-click jumps to the tag under the cursor (like 861CTRL-]). 862 863<C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word 864forward/backward (Windows compatible). |<C-Left>| 865 866Removed the requirement for a ":version" command in a .vimrc file. It wasn't 867used for anything. You can use ":if" to handle differences between versions. 868|:version| 869 870For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't 871make a difference between '/' and '\' for path separator. 872 873New termcap options: 874"mb": blink. Can only be used by assigning it to one of the other highlight 875 options. |t_mb| 876"bc": backspace character. |t_bc| 877"nd": Used for moving the cursor right in the GUI, to avoid removing one line 878 of pixels from the last bold character. |t_nd| 879"xs": highlighting not erased by overwriting, for hpterm. Combined with 880 'weirdinvert'. Visual mode works on hpterm now. |t_xs| 881 882Unix: Set time of patch and backup file same as original file. (Hiebert). 883 884Amiga: In QuickFix mode no longer opens another window. Shell commands can be 885used now. 886 887Added decmouse patches from David Binette. Can now use Dec and Netterm mouse. 888But only when enabled at compile time. 889 890Added '#' register: Alternate file name |quote#|. Display '#' register with 891":dis" command. |:display| 892 893Removed ':' from 'isfname' default for Unix. Check for "://" in a file name 894anyway. Also check for ":\\", for MS-DOS. 895 896Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in 897the man command. "2K" results in "!man 2 <cword>". |K| 898 899When using "gf" on a relative path name, remove "../" from the file name, like 900it's done for file names in the tags file. |gf| 901 902When finishing recording, don't make the recorded register the default put 903register. 904 905When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some 906other enhancements to replace the line number with "." or "$" when possible. 907 908MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent: 909.vimrc/_vimrc and .viminfo/_viminfo 910 911For systems where case doesn't matter in file names (MSDOS, Amiga), ignore 912case while sorting file names. For buffer names too. 913 914When reading from stdin doesn't work, read from stderr (helps for "foo | xargs 915vim"). 916 91732 bit MS-DOS version: Replaced csdpmi3 by csdpmi4. 918 919Changed <C-Left> and <C-Right> to skip a WORD instead of a word. 920 921Warning for changed modified time when overwriting a file now also works on 922other systems than Unix. 923 924Unix: Changed the defaults for configure to be the same as the defaults for 925Makefile: include GUI, Perl, and Python. 926 927Some versions of Motif require "-lXpm". Added check for this in configure. 928 929Don't add "-L/usr/lib" to the link line, causes problems on a few systems. 930 931============================================================================== 932 COMPILE TIME CHANGES *compile-changes-5* 933 934When compiling, allow a choice for minimal, normal or maximal features in an 935easy way, by changing a single line in src/feature.h. 936The DOS16 version has been compiled with minimal features to avoid running 937out of memory too quickly. |dos16| 938The Win32, DJGPP, and OS/2 versions use maximal features, because they have 939enough memory. 940The Amiga version is available with normal and maximal features. 941 942Added "make test" to Unix version Makefile. Allows for a quick check if most 943"normal" commands work properly. Also tests a few specific commands. 944 945Added setlocale() with codepage support for DJGPP version. 946 947autoconf: 948- Added autoconf check for -lXdmcp. 949- Included check for -lXmu, no longer needed to edit the Makefile for this. 950- Switched to autoconf 2.12. 951- Added configure check for <poll.h>. Seems to be needed when including 952 Perl on Linux? 953- termlib is now checked before termcap. 954- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added 955 vim_stricmp() for when there's no library function for stricmp(). 956- Use "datadir" in configure, instead of our own check for HELPDIR. 957 958Removed "make proto" from Makefile.manx. Could not make it work without a lot 959of #ifdefs. 960 961Removed "proto/" from paths in proto.h. Needed for the Mac port. 962 963Drastically changed Makefile.mint. Now it includes the Unix Makefile. 964 965Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor) 966 967All source files are now edited with a tabstop of 8 instead of 4, which is 968better when debugging and using other tools. 'softtabstop' is set to 4, to 969make editing easier. 970 971Unix: Added "link.sh" script, which removes a few unnecessary libraries from 972the link command. 973 974Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined. 975|digraphs-default| 976 977============================================================================== 978 BUG FIXES *bug-fixes-5* 979 980Note: Some of these fixes may only apply to test versions which were 981 created after version 4.6, but before 5.0. 982 983 984When doing ":bdel", try going to the next loaded buffer. Don't rewind to the 985start of the buffer list. 986 987mch_isdir() for Unix returned TRUE for "" on some systems. 988 989Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use 990backslashes in the temp file names. 991 992On linux, with a FAT file system, could get spurious "file xxx changed since 993editing started" messages, because the time is rounded off to two seconds 994unexpectedly. 995 996Crash in GUI, when selecting a word (double click) and then extend until an 997empty line. 998 999For systems where isdigit() can't handle characters > 255, get_number() caused 1000a crash when moving the mouse during the prompt for recovery. 1001 1002In Insert mode, "CTRL-O P" left the cursor on the last inserted character. 1003Now the cursor is left after the last putted character. 1004 1005When quickfix found an error type other than 'e' or 'w', it was never printed. 1006 1007A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument. 1008 1009Some systems create a file when generating a temp file name. Filtering would 1010then create a backup file for this, which was never deleted. Now no backup 1011file is made when filtering. 1012 1013simplify_filename() could remove a ".." after a link, resulting in the wrong 1014file name. Made simplify_filename also work for MSDOS. Don't use it for 1015Amiga, since it doesn't have "../". 1016 1017otherfile() was unreliable when using links. Could think that reading/writing 1018was for a different file, when it was the same. 1019 1020Pasting with mouse in Replace mode didn't replace anything. 1021 1022Window height computed wrong when resizing a window with an autocommand (could 1023cause a crash). 1024 1025":s!foo!bar!" wasn't possible (Vi compatible). 1026 1027do_bang() freed memory twice when called recursively, because of autocommands 1028(test11). Thanks to Electric Fence! 1029 1030"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the 1031command-line, and inverted the cursor. 1032 1033":mkexrc" didn't check for failure to open the file, causing a crash. 1034(Felderhoff). 1035 1036Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to 1037be recognized. Both console and GUI version. 1038 1039Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the 1040reversing of the menu item is still wrong. 1041 1042Always reset 'list' option for the help window. 1043 1044When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be 1045in the wrong line and the window to be scrolled (Acevedo). 1046 1047After ":set all&", 'lines' and 'ttytype' were still non-default, because the 1048defaults never got set. Now the defaults for 'lines' and 'columns' are set 1049after detecting the window size. 'term' and 'ttytype' defaults are set when 1050detecting the terminal type. 1051 1052For (most) non-Unix systems, don't add file names with illegal characters when 1053expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when 1054there is no match. 1055 1056In X11 GUI, drawing part of the cursor obscured the text. Now the text is 1057drawn over the cursor, like when it fills the block. (Seibert) 1058 1059when started with "-c cmd -q errfile", the cursor would be left in line 1. 1060Now a ":cc" is done after executing "cmd". 1061 1062":ilist" never ignored case, even when 'ignorecase' set. 1063 1064"vim -r file" for a readonly file, then making a change, got ATTENTION message 1065in insert mode, display mixed up until <Esc> typed. Also don't give ATTENTION 1066message after recovering a file. 1067 1068The abbreviation ":ab #i #include" could not be removed. 1069 1070CTRL-L completion (longest common match) on command-line didn't work properly 1071for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard 1072Kilgore). 1073 1074For terminals that can hide the cursor ("vi" termcap entry), resizing the 1075window caused the cursor to disappear. 1076 1077Using an invalid mark in an Ex address didn't abort the command. 1078 1079When 'smarttab' set, would use 'shiftround' when inserting a TAB after a 1080space. Now it always rounds to a tabstop. 1081 1082Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute" 1083and ":change". (Acevedo). 1084 1085"d$" in an empty line still caused an error, even when 'E' is not in 1086'cpoptions'. 1087 1088Help files were stored in the viminfo buffer list without a path. 1089 1090GUI: Displaying cursor was not synchronized with other displaying. Caused 1091several display errors. For example, when the last two lines in the file 1092start with spaces, "dd" on the last line copied text to the (then) last line. 1093 1094Win32: Needed to type CTRL-SHIFT-- to get CTRL-_. 1095 1096GUI: Moving the cursor forwards over bold text would remove one column of bold 1097pixels. 1098 1099X11 GUI: When a bold character in the last column was scrolled up or down, one 1100column of pixels would not be copied. 1101 1102Using <BS> to move the cursor left can sometimes erase a character. Now use 1103"le" termcap entry for this. 1104 1105Keyword completion with regexp didn't work. e.g., for "b.*crat". 1106 1107Fixed: With CTRL-O that jumps to another file, cursor could end up just after 1108the line. 1109 1110Amiga: '$' was missing from character recognized as wildcards, causing $VIM 1111sometimes not to be expanded. 1112 1113":change" didn't adjust marks for deleted lines. 1114 1115":help [range]" didn't work. Also for [pattern], [count] and [quotex]. 1116 1117For 'cindent'ing, typing "class::method" doesn't align like a label when the 1118second ':' is typed. 1119When inserting a CR with 'cindent' set (and a bunch of other conditions) the 1120cursor went to a wrong location. 1121'cindent' was wrong for a line that ends in '}'. 1122'cindent' was wrong after "else {". 1123 1124While editing the cmdline in the GUI, could not use the mouse to select text 1125from the command-line itself. 1126 1127When deleting lines, marks in tag stack were only adjusted for the current 1128window, not for other windows on the same buffer. 1129 1130Tag guessing could find a function "some_func" instead of the "func" we were 1131looking for. 1132 1133Tags file name relative to the current file didn't work. 1134 1135":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause 1136a scroll up. Now you no longer have to hit <CR>. 1137 1138X11 GUI: Selecting text could cause a crash. 1139 114032 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set 1141to "sh.exe", external commands didn't work. Removed using of command.com, no 1142longer need to set 'shellquote'. 1143 1144Fixed crash when using ":g/pat/i". 1145 1146Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a 1147pointer on the stack to a callback function, now it's static. 1148 1149Using "#" and "*" with an operator didn't work. E.g. "c#". 1150 1151Command-line expansion didn't work properly after ":*". (Acevedo) 1152 1153Setting 'weirdinvert' caused highlighting to be wrong in the GUI. 1154 1155":e +4 #" didn't work, because the "4" was in unallocated memory (could cause 1156a crash). 1157 1158Cursor position was wrong for ":e #", after ":e #" failed, because of changes 1159to the buffer. 1160 1161When doing ":buf N", going to a buffer that was edited with ":view", the 1162readonly flag was reset. Now make a difference between ":e file" and ":buf 1163file": Only set/reset 'ro' for the first one. 1164 1165Avoid |hit-enter| prompt when not able to write viminfo on exit. 1166 1167When giving error messages in the terminal where the GUI was started, GUI 1168escape codes would be written to the terminal. In an xterm this could be seen 1169as a '$' after the message. 1170 1171Mouse would not work directly after ":gui", because full_screen isn't set, 1172which causes starttermcap() not to do its work. 1173 1174'incsearch' did not scroll the window in the same way as the actual search. 1175When 'nowrap' set, incsearch didn't show a match when it was off the side of 1176the screen. Now it also shows the whole match, instead of just the cursor 1177position (if possible). 1178 1179":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as 1180the start of a comment. Now it's Vi compatible. 1181 1182Using <Up><Left><Left><Up> in the command-line, when there is no previous 1183cmdline in the history, inserted a NUL on the command-line. 1184 1185"i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place. 1186 1187GUI Motif: When adding a lot of menu items, the menu bar goes into two rows. 1188Deleting menu items, reducing the number of rows, now also works. 1189 1190With ":g/pat/s//foo/c", a match in the first line was scrolled off of the 1191screen, so you could not see it. 1192When using ":s//c", with 'nowrap' set, a match could be off the side of the 1193screen, so you could not see it. 1194 1195When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would 1196crash. mch_Fullname can now handle file names in read-only memory. (Lottem) 1197 1198When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects 1199when using CTRL-D next. Also, when repeating inserted text that included "0 1200CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo) 1201Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0' 1202or '^', removed the '0' or '^' and more indent. 1203 1204The command "2".p" caused the last inserted text to be executed as commands. 1205(Acevedo) 1206 1207Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted. 1208 1209Repeating Insert completion could fail if there are special characters in the 1210text. (Acevedo) 1211 1212":normal /string<CR>" caused the window to scroll. Now all ":normal" commands 1213are executed without scrolling messages. 1214 1215Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as 1216commands. 1217 1218Line wrapping for 'tw' was done one character off for insert expansion 1219inserts. 1220 1221buffer_exists() function didn't work properly for buffer names with a symbolic 1222link in them (e.g. when using buffer_exists(#)). 1223 1224Removed the "MOTIF_COMMENT" construction from Makefile. It now works with 1225FreeBSD make, and probably with NeXT make too. 1226 1227Matching the 'define' and 'include' arguments now honor the settings for 1228'ignorecase'. (Acevedo) 1229 1230When one file shown in two windows, Visual selection mixed up cursor position 1231in current window and other window. 1232 1233When doing ":e file" from a help file, the 'isk' option wasn't reset properly, 1234because of a modeline in the help file. 1235 1236When doing ":e!", a cursor in another window on the same buffer could become 1237invalid, leading to "ml_get: invalid lnum" errors. 1238 1239Matching buffer name for when expanded name has a different path from not 1240expanded name (Brugnara). 1241 1242Normal mappings didn't work after an operator. For example, with ":map Q gq", 1243"QQ" didn't work. 1244 1245When ":make" resulted in zero errors, a "No Errors" error message was given 1246(which breaks mappings). 1247 1248When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V 1249before <EOL> was not handled Vi compatible. (Acevedo) 1250 1251Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann) 1252 1253CTRL-X CTRL-I only found one match per line. (Acevedo) 1254When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message 1255was stuck. 1256 1257Finally managed to ignore the "Quit" menu entry of the Window manager! Now 1258Vim only exists when there are no changed buffers. 1259 1260Trying to start the GUI when $DISPLAY is not set resulted in a crash. 1261When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks 1262for flying Vim". 1263When $DISPLAY not set, starting "gvim" (dropping back to vim) and then 1264selecting text with the mouse caused a crash. 1265 1266"J", with 'joinspaces' set, on a line ending in ". ", caused one space too 1267many to be added. (Acevedo) 1268 1269In insert mode, a CTRL-R {regname} which didn't insert anything left the '"' 1270on the screen. 1271 1272":z10" didn't work. (Clapp) 1273 1274"Help "*" didn't work. 1275 1276Renamed a lot of functions, to avoid clashes with POSIX name space. 1277 1278When adding characters to a line, making it wrap, the following lines were 1279sometimes not shifted down (e.g. after a tag jump). 1280 1281CTRL-E, with 'so' set and cursor on last line, now does not move cursor as 1282long as the last line is on the screen. 1283 1284When there are two windows, doing "^W+^W-" in the bottom window could cause 1285the status line to be doubled (not redrawn correctly). 1286 1287This command would hang: ":n `cat`". Now connect stdin of the external 1288command to /dev/null, when expanding. 1289 1290Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo) 1291 1292The "+command" argument to ":split" didn't work when there was no file name. 1293 1294When selecting text in the GUI, which is the output of a command-line command 1295or an external command, the inversion would sometimes remain. 1296 1297GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is 1298not changed anymore. 1299 1300GUI: When using the scrollbar or mouse while executing an external command, 1301this caused garbage characters. 1302 1303Showmatch sometimes jumped to the wrong position. Was caused by a call to 1304findmatch() when redrawing the display (when syntax highlighting is on). 1305 1306Search pattern "\(a *\)\{3} did not work correctly, also matched "a a". 1307Problem with brace_count not being decremented. 1308 1309Wildcard expansion added too many non-matching file names. 1310 1311When 'iskeyword' contains characters like '~', "*" and "#" didn't work 1312properly. (Acevedo) 1313 1314On Linux, on a FAT file system, modification time can change by one second. 1315Avoid a "file has changed" warning for a one second difference. 1316 1317When using the page-switching in an xterm, Vim would position the cursor on 1318the last line of the window on exit. Also removed the cursor positioning for 1319":!" commands. 1320 1321":g/pat/p" command (partly) overwrote the command. Now the output is on a 1322separate line. 1323 1324With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were 1325highlighted too. 1326 1327"^" on a line with only white space, put cursor beyond the end of the line. 1328 1329When deleting characters before where insertion started ('bs' == 2), could not 1330use abbreviations. 1331 1332CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is 1333non-zero. CTRL-E didn't work when 'so' is big and the line below the window 1334wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping 1335up-down. 1336 1337":retab" didn't work well when 'list' is set. 1338 1339Amiga: When inserting characters at the last line on the screen, causing it 1340to wrap, messed up the display. It appears that a '\n' on the last line 1341doesn't always cause a scroll up. 1342 1343In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought 1344that the "0" was still there. (Acevedo) 1345 1346"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo) 1347 1348"S" when 'autoindent' is off didn't delete leading white space. 1349 1350"/<Tab>" landed on the wrong character when 'incsearch' is set. 1351 1352Asking a yes/no question could cause a |hit-enter| prompt. 1353 1354When the file consists of one long line (>4100 characters), making changes 1355caused various errors and a crash. 1356 1357DJGPP version could not save long lines (>64000) for undo. 1358 1359"yw" on the last char in the file didn't work. Also fixed "6x" at the end of 1360the line. "6X" at the start of a line fails, but does not break a mapping. In 1361general, a movement for an operator doesn't beep or flush a mapping, but when 1362there is nothing to operate on it beeps (this is Vi compatible). 1363 1364"m'" and "m`" now set the '' mark at the cursor position. 1365 1366Unix: Resetting of signals for external program didn't work, because SIG_DFL 1367and NULL are the same! For "!!yes|dd count=1|, the yes command kept on 1368running. 1369 1370Partly fixed: Unix GUI: Typeahead while executing an external command was lost. 1371Now it's not lost while the command is producing output. 1372 1373Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>". Now 1374it works like a normal <Tab>, just like <C-Tab> and <M-Tab>. 1375 1376Redrawing ruler didn't check for old value correctly (caused UMR warnings in 1377Purify). 1378 1379Negative array index in finish_viminfo_history(). 1380 1381":g/^/d|mo $" deleted all the lines. The ":move" command now removes the 1382:global mark from the moved lines. 1383 1384Using "vG" while the last line in the window is a "@" line, didn't update 1385correctly. Just the "v" showed "~" lines. 1386 1387"daw" on the last char of the file, when it's a space, moved the cursor beyond 1388the end of the line. 1389 1390When 'hlsearch' was set or reset, only the current buffer was redrawn, while 1391this affects all windows. 1392 1393CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the 1394file, put the cursor at the bottom of the window, instead of halfway. 1395 1396When scrolling up for ":append" command, not all windows were updated 1397correctly. 1398 1399When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc> 1400didn't remove the highlighting, although the indent was deleted. 1401 1402When 'ru' set and 'nosc', using "$j" showed a wrong ruler. 1403 1404Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used). 1405 1406Mapping <S-Tab> didn't work. Changed the key translations to use the shortest 1407key code possible. This makes the termcode translations and mappings more 1408consistent. Now all modifiers work in all combinations, not only with <Tab>, 1409but also with <Space>, <CR>, etc. 1410 1411For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C 1412in Ex mode doesn't make Vim exit. 1413 1414""a5Y" yanked 25 lines instead of 5. 1415 1416"vrxxx<Esc>" in an empty line could not be undone. 1417 1418A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying 1419when you want to handle what ":make" produced so far). 1420 1421":0;/pat" didn't find "pat" in line 1. 1422 1423Search for "/test/s+1" at first char of file gave bottom-top message, or 1424didn't work at all with 'nowrapscan'. 1425 1426Bug in viminfo history. Could cause a crash on exit. 1427 1428":print" didn't put cursor on first non-blank in line. 1429 1430":0r !cat </dev/null" left cursor in line zero, with very strange effects. 1431 1432With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position 1433the cursor leftwards didn't work. 1434 1435AIX stty settings were restored to cs5 instead of cs8 (Winn). 1436 1437File name completion didn't work for "zsh" versions that put spaces between 1438file names, instead of NULs. 1439 1440Changed "XawChain*" to "XtChain*", should work for more systems. 1441 1442Included quite a few fixes for rightleft mode (Lottem). 1443 1444Didn't ask to |hit-enter| when GUI is started and error messages are printed. 1445 1446When trying to edit a file in a non-existent directory, ended up with editing 1447"No file". 1448 1449"gqap" to format a paragraph did too much redrawing. 1450 1451When 'hlsearch' set, only the current window was updated for a new search 1452pattern. 1453 1454Sometimes error messages on startup didn't cause a |hit-enter| prompt, 1455because of autocommands containing an empty line. 1456 1457Was possible to select part of the window in the border, below the command 1458line. 1459 1460'< and '> marks were not at the correct position after linewise Visual 1461selection. 1462 1463When translating a help argument to "CTRL-x", prepend or append a '_', when 1464applicable. 1465 1466Blockwise visual mode wasn't correct when moving vertically over a special 1467character (displayed as two screen characters). 1468 1469Renamed "struct option" to "struct vimoption" to avoid name clash with GNU 1470getopt(). 1471 1472":abclear" didn't work (but ":iabclear" and ":cabclear" did work). 1473 1474When 'nowrap' used, screen wasn't always updated correctly. 1475 1476"vim -c split file" displayed extra lines. 1477 1478After starting the GUI, searched the termcap for a "gui" term. 1479 1480When 'hls' used, search for "^$" caused a hang. 1481When 'hls' was set, an error in the last regexp caused trouble. 1482 1483Unix: Only output an extra <EOL> on exit when outputted something in the 1484alternate screen, or when there is a message that needs to be cleared. 1485 1486"/a\{" did strange things, depending on previous search. 1487 1488"c}" only redrew one line (with -u NONE). 1489 1490For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map 1491only accepts <MC-A>. Now <M-C-A> is shown. 1492 1493Unix: When using full path name in a tags file, which contains a link, and 1494'hidden' set and jumping to a tag in the current file, would get bogus 1495ATTENTION message. Solved by always expanding file names, even when starting 1496with '/'. 1497 1498'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight 1499the whole thing. 1500 1501"r<CR>" didn't work correctly on the last char of a line. 1502 1503Sometimes a window resize or other signal caused an endless loop, involving 1504set_winsize(). 1505 1506"vim -r" didn't work, it would just hang (using tgetent() while 'term' is 1507empty). 1508 1509"gk" while 'nowrap' set moved two lines up. 1510 1511When windows are split, a message that causes a scroll-up messed up one of the 1512windows, which required a CTRL-L to be typed. 1513 1514Possible endless loop when using shell command in the GUI. 1515 1516Menus defined in the .vimrc were removed when GUI started. 1517 1518Crash when pasting with the mouse in insert mode. 1519 1520Crash with ":unmenu *" in .gvimrc for Athena. 1521 1522"5>>" shifted 5 lines 5 times, instead of 1 time. 1523 1524CTRL-C when getting a prompt in ":global" didn't interrupt. 1525 1526When 'so' is non-zero, and moving the scrollbar completely to the bottom, 1527there was a lot of flashing. 1528 1529GUI: Scrollbar ident must be long for DEC Alpha. 1530 1531Some functions called vim_regcomp() without setting reg_magic, which could 1532lead to unpredictable magicness. 1533 1534Crash when clicking around the status line, could get a selection with a 1535backwards range. 1536 1537When deleting more than one line characterwise, the last character wasn't 1538deleted. 1539 1540GUI: Status line could be overwritten when moving the scrollbar quickly (or 1541when 'wd' is non-zero). 1542 1543An ESC at the end of a ":normal" command caused a wait for a terminal code to 1544finish. Now, a terminal code is not recognized when its start comes from a 1545mapping or ":normal" command. 1546 1547Included patches from Robert Webb for GUI. Layout of the windows is now done 1548inside Vim, instead of letting the layout manager do this. Makes Vim work 1549with Lesstif! 1550 1551UMR warning in set_expand_context(). 1552 1553Memory leak: b_winlnum list was never freed. 1554 1555Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the 1556terminal settings, and looked like it wasn't doing anything good. (suggested 1557by Juergen Weigert). 1558 1559Ruler overwrote "is a directory" message. When starting up, and 'cmdheight' 1560set to > 1, first message could still be in the last line. 1561 1562Removed prototype for putenv() from proto.h, it's already in osdef2.h.in. 1563 1564In replace mode, when moving the cursor and then backspacing, wrong characters 1565were inserted. 1566 1567Win32 GUI was checking for a CTRL-C too often, making it slow. 1568 1569Removed mappings for MS-DOS that were already covered by commands. 1570 1571When visually selecting all lines in a file, cursor at last line, then "J". 1572Gave ml_get errors. Was a problem with scrolling down during redrawing. 1573 1574When doing a linewise operator, and then an operator with a mouse click, it 1575was also linewise, instead of characterwise. 1576 1577When 'list' is set, the column of the ruler was wrong. 1578 1579Spurious error message for "/\(b\+\)*". 1580 1581When visually selected many lines, message from ":w file" disappeared when 1582redrawing the screen. 1583 1584":set <M-b>=^[b", then insert "^[b", waited for another character. And then 1585inserted "<M-b>" instead of the real <M-b> character. Was trying to insert 1586K_SPECIAL x NUL. 1587 1588CTRL-W ] didn't use count to set window height. 1589 1590GUI: "-font" command-line argument didn't override 'guifont' setting from 1591.gvimrc. (Acevedo) 1592 1593GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences 1594fixed for the clipboard (Webb). 1595 1596Jumping from one help file to another help file, with 'compatible' set, 1597removed the 'help' flag from the buffer. 1598 1599File-writable bit could be reset when using ":w!" for a readonly file. 1600 1601There was a wait for CTRL-O n in Insert mode, because the search pattern was 1602shown. 1603Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed 1604nothing was happening. 1605 1606":recover" found same swap file twice. 1607 1608GUI: "*yy only worked the second time (when pasting to an xterm)." 1609 1610DJGPP version (dos32): The system flags were cleared. 1611 1612Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin). 1613 1614Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with 1615an empty string. 1616 1617<S-Tab> in the command-line worked like CTRL-P when no completion started yet. 1618Now it does completion, last match first. 1619 1620Unix: Could get annoying "can't write viminfo" message after doing "su". Now 1621the viminfo file is overwritten, and the user set back to the original one. 1622 1623":set term=builtin_gui" started the GUI in a wrong way. Now it's not 1624allowed anymore. But "vim -T gui" does start the GUI correctly now. 1625 1626GUI: Triple click after a line only put last char in selection, when it is a 1627single character word. 1628 1629When the window is bigger than the screen, the scrolling up of messages was 1630wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was 1631obscured by another window. 1632 1633When using a wrong option only an error message is printed, to avoid that the 1634usage information makes it scroll off the screen. 1635 1636When exiting because of not being able to read from stdin, didn't preserve the 1637swap files properly. 1638 1639Visual selecting all chars in more than one line, then hit "x" didn't leave an 1640empty line. For one line it did leave an empty line. 1641 1642Message for which autocommand is executing messed up file write message (for 1643FileWritePost event). 1644 1645"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is 1646not available. 1647 1648Crash for ":he <C-A>" (command-line longer than screen). 1649 1650":s/this/that/gc", type "y" two times, then undo, did reset the modified 1651option, even though the file is still modified. 1652 1653Empty lines in a tags file caused a ":tag" to be aborted. 1654 1655When hitting 'q' at the more prompt for ":menu", still scrolled a few lines. 1656 1657In an xterm that uses the bold trick a single row of characters could remain 1658after an erased bold character. Now erase one extra char after the bold char, 1659like for the GUI. 1660 1661":pop!" didn't work. 1662 1663When the reading a buffer was interrupted, ":w" should not be able to 1664overwrite the file, ":w!" is required. 1665 1666":cf%" caused a crash. 1667 1668":gui longfilename", when forking is enabled, could leave part of the 1669longfilename at the shell prompt. 1670 1671============================================================================== 1672VERSION 5.1 *version-5.1* 1673 1674Improvements made between version 5.0 and 5.1. 1675 1676This was mostly a bug-fix release, not many new features. 1677 1678 1679Changed *changed-5.1* 1680------- 1681 1682The expand() function now separates file names with <NL> instead of a space. 1683This avoids problems for file names with embedded spaces. To get the old 1684result, use substitute(expand(foo), "\n", " ", "g"). 1685 1686For Insert-expanding dictionaries allow a backslash to be used for 1687wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash. 1688 1689New icon for the Win32 GUI. 1690 1691":tag", ":tselect" etc. only use the argument as a regexp when it starts 1692with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub. 1693regexp". Also, when the :tag argument contained wildcard characters, it was 1694not Vi compatible. 1695When using '/', the argument is taken literally too, with a higher priority, 1696so it's found before wildcard matches. 1697Only when the '/' is used are matches with different case found, even though 1698'ignorecase' isn't set. 1699Changed "g^]" to only do ":tselect" when there is more than on matching tag. 1700 1701Changed some of the default colors, because they were not very readable on a 1702dark background. 1703 1704A character offset to a search pattern can move the cursor to the next or 1705previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the 1706end of a line. 1707 1708Double-clicks in the status line do no longer start Visual mode. Dragging a 1709status line no longer stops Visual mode. 1710 1711Perl interface: Buffers() and Windows() now use more logical arguments, like 1712they are used in the rest of Vim (Moore). 1713 1714Init '" mark to the first character of the first line. Makes it possible to 1715use '" in an autocommand without getting an error message. 1716 1717 1718Added *added-5.1* 1719----- 1720 1721"shell_error" internal variable: result of last shell command. 1722 1723":echohl" command: Set highlighting for ":echo". 1724 1725'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for 1726status line of not-current window. Default is to use bold for current 1727window. 1728 1729Added buffer_name() and buffer_number() functions (Aaron). 1730Added flags argument "g" to substitute() function (Aaron). 1731Added winheight() function. 1732 1733Win32: When an external command starts with "start ", no console is opened 1734for it (Aaron). 1735 1736Win32 console: Use termcap codes for bold/reverse based on the current 1737console attributes. 1738 1739Configure check for "strip". (Napier) 1740 1741CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally, 1742instead of as typed. 1743 1744Made a few "No match" error messages more informative by adding the pattern 1745that didn't match. 1746 1747"make install" now also copies the macro files. 1748 1749tools/tcltags, a shell script to generate a tags file from a TCL file. 1750 1751"--with-tlib" setting for configure. Easy way to use termlib: "./configure 1752--with-tlib=termlib". 1753 1754'u' flag in 'cino' for setting the indent for contained () parts. 1755 1756When Win32 OLE version can't load the registered type library, ask the user 1757if he wants to register Vim now. (Erhardt) 1758Win32 with OLE: When registered automatically, exit Vim. 1759Included VisVim 1.1b, with a few enhancements and the new icon (Heiko 1760Erhardt). 1761 1762Added patch from Vince Negri for Win32s support. Needs to be compiled with 1763VC 4.1! 1764 1765Perl interface: Added $curbuf. Rationalized Buffers() and Windows(). 1766(Moore) Added "group" argument to Msg(). 1767 1768Included Perl files in DOS source archive. Changed Makefile.bor and 1769Makefile.w32 to support building a Win32 version with Perl included. 1770 1771Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32 1772versions, including OLE, Perl and Python. 1773 1774Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^]. 1775 1776Added "g]" to always do ":tselect" for the ident under the cursor. 1777Added ":tjump" and ":stjump" commands. 1778Improved listing of ":tselect" when tag names are a bit long. 1779 1780Included patches for the Macintosh version. Also for Python interface. 1781(St-Amant) 1782 1783":buf foo" now also restores cursor column, when the buffer was used before. 1784 1785Adjusted the Makefile for different final destinations for the syntax files 1786and scripts (for Debian Linux). 1787 1788Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is 1789used. This fixes that "VIM:" had to be assigned for the help files, and 1790$VIM set for the syntax files. Now either of these work. 1791 1792Some xterms send vt100 compatible function keys F1-F4. Since it's not 1793possible to detect this, recognize both type of keys and translate them to 1794<F1> - <F4>. 1795 1796Added "VimEnter" autocommand. Executed after loading all the startup stuff. 1797 1798BeOS version now also runs on Intel CPUs (Seibert). 1799 1800 1801Fixed *fixed-5.1* 1802----- 1803 1804":ts" changed position in the tag stack when cancelled with <CR>. 1805":ts" changed the cursor position for CTRL-T when cancelled with <CR>. 1806":tn" would always jump to the second match. Was using the wrong entry in 1807the tag stack. 1808Doing "tag foo", then ":tselect", overwrote the original cursor position in 1809the tag stack. 1810 1811"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc" 1812to appear for the documentation files. 1813 1814When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC 1815mouse handling interfering. 1816 1817Was leaking memory when using selection in X11. 1818 1819CTRL-D halfway a command-line left some characters behind the first line(s) 1820of the listing. 1821 1822When expanding directories for ":set path=", put two extra backslashes 1823before a space in a directory name. 1824 1825When 'lisp' set, first line of a function would be indented. Now its indent 1826is set to zero. And use the indent of the first previous line that is at 1827the same () level. Added test33. 1828 1829"so<Esc>u" in an empty file didn't work. 1830 1831DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe, 1832because the swap file was made hidden. It's no longer hidden. 1833 1834":global" command would sometimes not execute on a matching line. Happened 1835when a data block is full in ml_replace(). 1836 1837For AIX use a tgetent buffer of 2048 bytes, instead of 1024. 1838 1839Win32 gvim now only sets the console size for external commands to 25x80 1840on Windows 95, not on NT. 1841 1842Win32 console: Dead key could cause a crash, because of a missing "WINAPI" 1843(Deshpande). 1844 1845The right mouse button started Visual mode, even when 'mouse' is empty, and 1846in the command-line, a left click moved the cursor when 'mouse' is empty. 1847In Visual mode, 'n' in 'mouse' would be used instead of 'v'. 1848 1849A blinking cursor or focus change cleared a non-Visual selection. 1850 1851CTRL-Home and CTRL-End didn't work for MS-DOS versions. 1852 1853Could include NUL in 'iskeyword', causing a crash when doing insert mode 1854completion. 1855 1856Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version. 1857 1858In mappings, CTRL-H was replaced by the backspace key code. This caused 1859problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>". 1860 1861":set t_Co=0" was not handled like a normal term. Now it's translated into 1862":set t_Co=", which works. 1863 1864For ":syntax keyword" the "transparent" option did work, although not 1865mentioned in the help. But synID() returned wrong name. 1866 1867"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and 1868not interruptible. 1869 1870"gq" operator inserted screen lines in the wrong situation. Now screen 1871lines are inserted or deleted when this speeds up displaying. 1872 1873cindent was wrong when an "if" contained "((". 1874 1875'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer 1876list from removable media. 1877 1878Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project. 1879Hand-edited to fix this... 1880 1881With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at 1882the end of the line. 1883 1884Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP 1885bug. That bug appears to have been fixed, therefore this translation has 1886been removed. 1887 1888"/^*" didn't work (find '*' in first column). 1889 1890"<afile>" was not always set for autocommands. E.g., for ":au BufEnter * 1891let &tags = expand("<afile>:p:h") . "/tags". 1892 1893In an xterm, the window may be a child of the outer xterm window. Use the 1894parent window when getting the title and icon names. (Smith) 1895 1896When starting with "gvim -bg black -fg white", the value of 'background' is 1897only set after reading the .gvimrc file. This causes a ":syntax on" to use 1898the wrong colors. Now allow using ":gui" to open the GUI window and set the 1899colors. Previously ":gui" in a gvimrc crashed Vim. 1900 1901tempname() returned the same name all the time, unless the file was actually 1902created. Now there are at least 26 different names. 1903 1904File name used for <afile> was sometimes full path, sometimes file name 1905relative to current directory. 1906 1907When 'background' was set after the GUI window was opened, it could change 1908colors that were set by the user in the .gvimrc file. Now it only changes 1909colors that have not been set by the user. 1910 1911Ignore special characters after a CSI in the GUI version. These could be 1912interpreted as special characters in a wrong way. (St-Amant) 1913 1914Memory leak in farsi code, when using search or ":s" command. 1915Farsi string reversing for a mapping was only done for new mappings. Now it 1916also works for replacing a mapping. 1917 1918Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron) 1919 1920When BufDelete autocommands were executed, some things for the buffer were 1921already deleted (esp. Perl stuff). 1922 1923Perl interface: Buffer specific items were deleted too soon; fixes "screen 1924no longer exists" messages. (Moore) 1925 1926The Perl functions didn't set the 'modified' flag. 1927 1928link.sh did not return an error on exit, which may cause Vim to start 1929installing, even though there is no executable to install. (Riehm) 1930 1931Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to 1932'cpoptions'. Only for 'compatible' mode. 1933 1934":echohl" defined a new group, when the argument was not an existing group. 1935 1936"syn on" and ":syn off" could move the cursor, if there is a hidden buffer 1937that is shorter that the current cursor position. 1938 1939The " mark was not set when doing ":b file". 1940 1941When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at 1942the end of the line made the nextgroup also be found in the next line. 1943 1944":he g<CTRL-D>", then ":" and backspace to the start didn't redraw. 1945 1946X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the 1947result is really reverse video (background darker than foreground). 1948 1949"cat link.sh | vim -" didn't set syntax highlighting. 1950 1951Win32: Expanding "file.sw?" matched ".file.swp". This is an error of 1952FindnextFile() that we need to work around. (Kilgore) 1953 1954"gqgq" gave an "Invalid lnum" error on the last line. 1955Formatting with "gq" didn't format the first line after a change of comment 1956leader. 1957 1958There was no check for out-of-memory in win_alloc(). 1959 1960"vim -h" didn't mention "-register" and "-unregister" for the OLE version. 1961 1962Could not increase 'cmdheight' when the last window is only one line. Now 1963other windows are also made smaller, when necessary. 1964 1965Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x. 1966Changed return type of main() from void to int. (Nam) 1967 1968Using '~' twice in a substitute pattern caused a crash. 1969 1970"syn on" and ":syn off" could scroll the window, if there is a hidden buffer 1971that is shorter that the current cursor position. 1972 1973":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif". 1974 1975With two windows on modified files, with 'autowrite' set, cursor in second 1976window, ":qa" gave a warning for the file in the first window, but then 1977auto-wrote the file in the second window. (Webb) 1978 1979Win32 GUI scrollbar could only handle 32767 lines. Also makes the 1980intellimouse wheel use the configurable number of scrolls. (Robinson) 1981 1982When using 'patchmode', and the backup file is on another partition, the file 1983copying messed up the write-file message. 1984 1985GUI X11: Alt-Backspace and Alt-Delete didn't work. 1986 1987"`0" could put the cursor after the last character in the line, causing 1988trouble for other commands, like "i". 1989 1990When completing tags in insert mode with ^X^], some matches were skipped, 1991because the compare with other tags was wrong. E.g., when "mnuFileSave" was 1992already there, "mnuFile" would be skipped. (Negri) 1993 1994When scrolling up/down, a syntax item with "keepend" didn't work properly. 1995Now the flags are also stored for the syntax state at the start of each line. 1996 1997When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the 1998effect. 1999 2000Win32 GUI: Don't display "No write since last chance" in a message box, but in 2001the Vim window. 2002 2003============================================================================== 2004VERSION 5.2 *version-5.2* 2005 2006Improvements made between version 5.1 and 5.2. 2007 2008 2009Long lines editable *long-lines* 2010------------------- 2011 2012A single long line that doesn't fit in the window doesn't show a line of @@@ 2013anymore. Redrawing starts at a character further on in the line, such that 2014the text around the cursor can be seen. This makes it possible to edit these 2015long lines when wrapping is on. 2016 2017 2018File browser added *file-browser-5.2* 2019------------------ 2020 2021The Win32, Athena and Motif GUI bring up a file requester if the user asks to 2022":browse" for the ":e", ":w", ":r", ":so", ":redirect" and 2023":mkexrc/vimrc/vsess" commands. ::browse e /foo/bar" opens the requester in 2024the /foo/bar directory, so you can have nice mapping rhs's like ":browse so 2025$vim/macros". If no initial dir specified for ":browse e", can be compiled to 2026either begin in the current directory, or that of the current buffer. (Negri 2027and Kahn) 2028Added the 'browsedir' option, with value "current", "last" or "buffer". Tells 2029whether a browse dialog starts in last used dir, dir of current buffer, or 2030current dir. ":browse w" is unaffected. 2031The default menus have been changed to use the ":browse" command. 2032 2033 2034Dialogs added *dialogs-added* 2035------------- 2036 2037Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32, 2038Athena and Motif GUI uses a window-dialog. All other platforms can use 2039prompt in command-line. ":confirm qa" offers a choice to save all modified 2040files. 2041 2042confirm() function: allows user access to the confirm engine. 2043 2044Added 'v' flag to 'guioptions'. When included, a vertical button layout is 2045always used for the Win32 GUI dialog. Otherwise, a horizontal layout is 2046preferred. 2047 2048Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace. 2049To be used from a menu entry. (Negri) 2050 2051 2052Popup menu added *popup-menu-added* 2053---------------- 2054 2055When the 'mousemodel' option is set to "popup", the right mouse button 2056displays the top level menu headed with "PopUp" as pop-up context menu. The 2057"PopUp" menu is not displayed in the normal menu bar. This currently only 2058works for Win32 and Athena GUI. 2059 2060 2061Select mode added *new-Select-mode* 2062----------------- 2063 2064A new mode has been added: "Select mode". It is like Visual mode, but typing 2065a printable character replaces the selection. 2066- CTRL-G can be used to toggle between Visual mode and Select mode. 2067- CTRL-O can be used to switch from Select mode to Visual mode for one command. 2068- Added 'selectmode' option: tells when to start Select mode instead of Visual 2069 mode. 2070- Added 'mousemodel' option: Change use of mouse buttons. 2071- Added 'keymodel' option: tells to use shifted special keys to start a 2072 Visual or Select mode selection. 2073- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' 2074 and 'keymodel' for MS-Windows and xterm behavior. 2075- The xterm-like selection is now called modeless selection. 2076- Visual mode mappings and menus are used in Select mode. They automatically 2077 switch to Visual mode first. Afterwards, reselect the area, unless it was 2078 deleted. The "gV" command can be used in a mapping to skip the reselection. 2079- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode. 2080- Backspace in Select mode deletes the selected area. 2081 2082"mswin.vim" script. Sets behavior mostly like MS-Windows. 2083 2084 2085Session files added *new-session-files* 2086------------------- 2087 2088":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the 2089currently loaded buffers and current directory, so that :so'ing the file 2090re-loads those files and cd's to that directory. Also stores and restores 2091windows. File names are made relative to session file. 2092The 'sessionoptions' option sets behavior of ":mksession". (Negri) 2093 2094 2095User defined functions and commands *new-user-defined* 2096----------------------------------- 2097 2098Added user defined functions. Defined with ":function" until ":endfunction". 2099Called with "Func()". Allows the use of a variable number of arguments. 2100Included support for local variables "l:name". Return a value with ":return". 2101See |:function|. 2102Call a function with ":call". When using a range, the function is called for 2103each line in the range. |:call| 2104"macros/justify.vim" is an example of using user defined functions. 2105User functions do not change the last used search pattern or the command to be 2106redone with ".". 2107'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble 2108(crash because of out-of-memory) when a function uses endless recursion. 2109 2110User definable Ex commands: ":command", ":delcommand" and ":comclear". 2111(Moore) See |user-commands|. 2112 2113 2114New interfaces *interfaces-5.2* 2115-------------- 2116 2117Tcl interface. (Wilken) See |tcl|. 2118Uses the ":tcl", ":tcldo" and "tclfile" commands. 2119 2120Cscope support. (Kahn) (Sekera) See |cscope|. 2121Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg', 2122'cscopetag', 'cscopetagorder' and 'cscopeverbose'. 2123 2124 2125New ports *ports-5.2* 2126--------- 2127 2128Amiga GUI port. (Nielsen) Not tested much yet! 2129 2130RISC OS version. (Thomas Leonard) See |riscos|. 2131This version can run either with a GUI or in text mode, depending upon where 2132it is invoked. 2133Deleted the "os_archie" files, they were not working anyway. 2134 2135 2136Multi-byte support *new-multi-byte* 2137------------------ 2138 2139MultiByte support for Win32 GUI. (Baek) 2140The 'fileencoding' option decides how the text in the file is encoded. 2141":ascii" works for multi-byte characters. Multi-byte characters work on 2142Windows 95, even when using the US version. (Aaron) 2143Needs to be enabled in feature.h. 2144This has not been tested much yet! 2145 2146 2147New functions *new-functions-5.2* 2148------------- 2149 2150|browse()| puts up a file requester when available. (Negri) 2151|escape()| escapes characters in a string with a backslash. 2152|fnamemodify()| modifies a file name. 2153|input()| asks the user to enter a line. (Aaron) There is a separate 2154 history for lines typed for the input() function. 2155|argc()| 2156|argv()| can be used to access the argument list. 2157|winbufnr()| buffer number of a window. (Aaron) 2158|winnr()| window number. (Aaron) 2159|matchstr()| Return matched string. 2160|setline()| Set a line to a string value. 2161 2162 2163New options *new-options-5.2* 2164----------- 2165 2166'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode. 2167'browsedir' Tells in which directory a browse dialog starts. 2168'confirm' when set, :q :w and :e commands always act as if ":confirm" 2169 is used. (Negri) 2170'cscopeprg' 2171'cscopetag' 2172'cscopetagorder' 2173'cscopeverbose' Set the |cscope| behavior. 2174'filetype' RISC-OS specific type of file. 2175'grepformat' 2176'grepprg' For the |:grep| command. 2177'keymodel' Tells to use shifted special keys to start a Visual or Select 2178 mode selection. 2179'listchars' Set character to show in 'list' mode for end-of-line, tabs and 2180 trailing spaces. (partly by Smith) Also sets character to 2181 display if a line doesn't fit when 'nowrap' is set. 2182'matchpairs' Allows matching '<' with '>', and other single character 2183 pairs. 2184'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the 2185 focus with a keyboard command moves the pointer to that 2186 window. Also move the pointer when changing the window layout 2187 (split window, change window height, etc.). 2188'mousemodel' Change use of mouse buttons. 2189'selection' When set to "inclusive" or "exclusive", the cursor can go one 2190 character past the end of the line in Visual or Select mode. 2191 When set to "old" the old behavior is used. When 2192 "inclusive", the character under the cursor is included in the 2193 operation. When using "exclusive", the new "ve" entry of 2194 'guicursor' is used. The default is a vertical bar. 2195'selectmode' Tells when to start Select mode instead of Visual mode. 2196'sessionoptions' Sets behavior of ":mksession". (Negri) 2197'showfulltag' When completing a tag in Insert mode, show the tag search 2198 pattern (tidied up) as a choice as well (if there is one). 2199'swapfile' Whether to use a swap file for a buffer. 2200'syntax' When it is set, the syntax by that name is loaded. Allows for 2201 setting a specific syntax from a modeline. 2202'ttymouse' Allows using xterm mouse codes for terminals which name 2203 doesn't start with "xterm". 2204'wildignore' List of patterns for files that should not be completed at 2205 all. 2206'wildmode' Can be used to set the type of expansion for 'wildchar'. 2207 Replaces the CTRL-T command for command line completion. 2208 Don't beep when listing all matches. 2209'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled 2210 entirely by the window system. When "no", ALT keys are never 2211 used by the window system. When "menu" it depends on whether 2212 a key is a menu shortcut. 2213'winminheight' Minimal height for each window. Default is 1. Set to 0 if 2214 you want zero-line windows. Scrollbar is removed for 2215 zero-height windows. (Negri) 2216 2217 2218 2219New Ex commands *new-ex-commands-5.2* 2220--------------- 2221 2222|:badd| Add file name to buffer list without side effects. (Negri) 2223|:behave| Quickly set MS-Windows or xterm behavior. 2224|:browse| Use file selection dialog. 2225|:call| Call a function, optionally with a range. 2226|:cnewer| 2227|:colder| To access a stack of quickfix error lists. 2228|:comclear| Clear all user-defined commands. 2229|:command| Define a user command. 2230|:continue| Go back to ":while". 2231|:confirm| Ask confirmation if something unexpected happens. 2232|:cscope| Execute cscope command. 2233|:cstag| Use cscope to jump to a tag. 2234|:delcommand| Delete a user-defined command. 2235|:delfunction| Delete a user-defined function. 2236|:endfunction| End of user-defined function. 2237|:function| Define a user function. 2238|:grep| Works similar to ":make". (Negri) 2239|:mksession| Create a session file. 2240|:nohlsearch| Stop 'hlsearch' highlighting for a moment. 2241|:Print| This is Vi compatible. Does the same as ":print". 2242|:promptfind| Search dialog (Win32 GUI). 2243|:promptrepl| Search/replace dialog (Win32 GUI). 2244|:return| Return from a user-defined function. 2245|:simalt| Win32 GUI: Simulate alt-key pressed. (Negri) 2246|:smagic| Like ":substitute", but always use 'magic'. 2247|:snomagic| Like ":substitute", but always use 'nomagic'. 2248|:tcl| Execute TCL command. 2249|:tcldo| Execute TCL command for a range of lines. 2250|:tclfile| Execute a TCL script file. 2251|:tearoff| Tear-off a menu (Win32 GUI). 2252|:tmenu| 2253|:tunmenu| Win32 GUI: menu tooltips. (Negri) 2254|:star| :* Execute a register. 2255 2256 2257Changed *changed-5.2* 2258------- 2259 2260Renamed functions: 2261 buffer_exists() -> bufexists() 2262 buffer_name() -> bufname() 2263 buffer_number() -> bufnr() 2264 file_readable() -> filereadable() 2265 highlight_exists() -> hlexists() 2266 highlightID() -> hlID() 2267 last_buffer_nr() -> bufnr("$") 2268The old ones are still there, for backwards compatibility. 2269 2270The CTRL-_ command in Insert and Command-line mode is only available when the 2271new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_ 2272accidentally enter reverse Insert mode, and don't know how to get out. 2273 2274When a file name path in ":tselect" listing is too long, remove a part in the 2275middle and put "..." there. 2276 2277Win32 GUI: Made font selector appear inside Vim window, not just any odd 2278place. (Negri) 2279 2280":bn" skips help buffers, unless currently in a help buffer. (Negri) 2281 2282When there is a status line and only one window, don't show '^' in the status 2283line of the current window. 2284 2285":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an 2286alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible. 2287 2288When 'insertmode' is set, using CTRL-O to execute a mapping will work like 2289'insertmode' was not set. This allows "normal" mappings to be used even when 2290'insertmode' is set. 2291 2292When 'mouse' was set already (e.g., in the .vimrc file), don't automatically 2293set 'mouse' when the GUI starts. 2294 2295Removed the 'N', 'I' and 'A' flags from the 'mouse' option. 2296 2297Renamed "toggle option" to "boolean option". Some people thought that ":set 2298xyz" would toggle 'xyz' on/off each time. 2299 2300The internal variable "shell_error" contains the error code from the shell, 2301instead of just 0 or 1. 2302 2303When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>". 2304That is not very useful. Now the CTRL key is ignored and a <CR> is inserted. 2305Same for all other "normal" keys with modifiers. Mapping these modified key 2306combinations is still possible. 2307In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then 2308the special character. 2309 2310Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They 2311are now installed like other documentation files. 2312 2313winheight() function returns -1 for a non-existing window. It used to be 2314zero, but that is a valid height now. 2315 2316The default for 'selection' is "inclusive", which makes a difference when 2317using "$" or the mouse to move the cursor in Visual mode. 2318 2319":q!" does not exit when there are changed buffers which are hidden. Use 2320":qa!" to exit anyway. 2321 2322Disabled the Perl/Python/Tcl interfaces by default. Not many people use them 2323and they make the executable a lot bigger. The internal scripting language is 2324now powerful enough for most tasks. 2325 2326The strings from the 'titlestring' and 'iconstring' options are used 2327untranslated for the Window title and icon. This allows for including a <CR>. 2328Previously a <CR> would be shown as "^M" (two characters). 2329 2330When a mapping is started in Visual or Select mode which was started from 2331Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode 2332until the mapping has ended. Makes it possible to use a mapping in Visual 2333mode that also works when the Visual mode was started from Select mode. 2334 2335Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps 2336when defining menus in the .vimrc file, or when sourcing mswin.vim. 2337 2338Unix: Use /var/tmp for .swp files, if it exists. Files there survive a 2339reboot (at least on Linux). 2340 2341 2342Added *added-5.2* 2343----- 2344 2345--with-motif-lib configure argument. Allows for using a static Motif library. 2346 2347Support for mapping numeric keypad +,-,*,/ keys. (Negri) 2348When not mapped, they produce the normal character. 2349 2350Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer. 2351(Negri) 2352 2353Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be 2354used for mappings. 2355 2356In the output of ":map", highlight the "*" to make clear it's not part of the 2357rhs. (Roemer) 2358 2359When showing the Visual area, the cursor is not switched off, so that it can 2360be located. The Visual area is now highlighted with a grey background in the 2361GUI. This makes the cursor visible when it's also reversed. 2362 2363Win32: When started with single full pathname (e.g. via double-clicked file), 2364cd to that file's directory. (Negri) 2365 2366Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri) 2367't' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif. 2368It's included by default. 2369Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri) 2370 2371Added ^Kaa and ^KAA digraphs. 2372Added "euro" symbol to digraph.c. (Corry) 2373 2374Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis). 2375Other GUIs ignore '&' in a menu name. 2376 2377DJGPP: Faster screen updating (John Lange). 2378 2379Clustering of syntax groups ":syntax cluster" (Bigham). 2380Including syntax files: ":syntax include" (Bigham). 2381 2382Keep column when switching buffers, when 'nosol' is set (Radics). 2383 2384Number function for Perl interface. 2385 2386Support for Intellimouse in Athena GUI. (Jensen) 2387 2388":sleep" also accepts an argument in milliseconds, when "m" is used. 2389 2390Added 'p' flag in 'guioptions': Install callbacks for enter/leave window 2391events. Makes cursor blinking work for Terhaar, breaks it for me. 2392 2393"--help" and "--version" command-line arguments. 2394 2395Non-text in ":list" output is highlighted with NonText. 2396 2397Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as 2398synonym for "iB". New: "i<" and "i>", to select <thing>. All this also for 2399"a" objects. 2400 2401'O' flag in 'shortmess': message for reading a file overwrites any previous 2402message. (Negri) 2403 2404Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off. 2405Included a list with self-made toolbar bitmaps. (Negri) 2406 2407Added menu priority for sub-menus. Implemented for Win32 and Motif GUI. 2408Display menu priority with ":menu" command. 2409Default and Syntax menus now include priority for items. Allows inserting 2410menu items in between the default ones. 2411 2412When the 'number' option is on, highlight line numbers with the LineNr group. 2413 2414"Ignore" highlight group: Text highlighted with this is made blank. It is 2415used to hide special characters in the help text. 2416 2417Included Exuberant Ctags version 2.3, with C++ support, Java support and 2418recurse into directories. (Hiebert) 2419 2420When a tags file is not sorted, and this is detected (in a simplistic way), an 2421error message is given. 2422 2423":unlet" accepts a "!", to ignore non-existing variables, and accepts more 2424than one argument. (Roemer) 2425Completion of variable names for ":unlet". (Roemer) 2426 2427When there is an error in a function which is called by another function, show 2428the call stack in the error message. 2429 2430New file name modifiers: 2431":.": reduce file name to be relative to current dir. 2432":~": reduce file name to be relative to home dir. 2433":s?pat?sub?": substitute "pat" with "sub" once. 2434":gs?pat?sub?": substitute "pat" with "sub" globally. 2435 2436New configure arguments: --enable-min-features and --enable-max-features. 2437Easy way to switch to minimum or maximum features. 2438 2439New compile-time feature: modify_fname. For file name modifiers, e.g, 2440"%:p:h". Can be disabled to save some code (16 bit DOS). 2441 2442When using whole-line completion in Insert mode, and 'cindent' is set, indent 2443the line properly. 2444 2445MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri) 2446 2447Included new set of Farsi fonts. (Shiran) 2448 2449Accelerator text now also works in Motif. All menus can be defined with & for 2450mnemonic and TAB for accelerator text. They are ignored on systems that don't 2451support them. 2452When removing or replacing a menu, compare the menu name only up to the <Tab> 2453before the mnemonic. 2454 2455'i' and 'I' flags after ":substitute": ignore case or not. 2456 2457"make install" complains if the runtime files are missing. 2458 2459Unix: When finding an existing swap file that can't be opened, mention the 2460owner of the file in the ATTENTION message. 2461 2462The 'i', 't' and 'k' options in 'complete' now also print the place where they 2463are looking for matches. (Acevedo) 2464 2465"gJ" command: Join lines without inserting a space. 2466 2467Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed 2468when no count given, the count is added otherwise. Configure checks if "man 2469-s 2 read" works, and sets the default for 'keywordprg' accordingly. 2470 2471If you do a ":bd" and there is only one window open, Vim tries to move to a 2472buffer of the same type (i.e. non-help to non-help, help to help), for 2473consistent behavior to :bnext/:bprev. (Negri) 2474 2475Allow "<Nop>" to be used as the rhs of a mapping. ":map xx <Nop>", maps "xx" 2476to nothing at all. 2477 2478In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu 2479path. This makes it more easy to type, no backslash needed. 2480 2481POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:], 2482[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], 2483[:space:], [:upper:] and [:xdigit:]. (Briscoe) 2484 2485regexp character classes (for fast syntax highlight matching): 2486 digits: \d [0-9] \D not digit (Roemer) 2487 hex: \x [0-9a-fA-F] \X not hex 2488 octal: \o [0-7] \O not octal 2489 word: \w [a-zA-Z0-9_] \W not word 2490 head: \h [a-zA-Z_] \H not head 2491 alphabetic: \a [a-zA-Z] \A not alphabetic 2492 lowercase: \l [a-z] \L not lowercase 2493 uppercase: \u [A-Z] \U not uppercase 2494 2495":set" now accepts "+=", |^=" and "-=": add or remove parts of a string 2496option, add or subtract a number from a number option. A comma is 2497automagically inserted or deleted for options that are a comma separated list. 2498 2499Filetype feature, for autocommands. Uses a file type instead of a pattern to 2500match a file. Currently only used for RISC OS. (Leonard) 2501 2502In a pattern for an autocommand, environment variables can be used. They are 2503expanded when the autocommand is defined. 2504 2505"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying 2506the ":file" command to change the name of a buffer. 2507"VimLeavePre" autocommand event: before writing the .viminfo file. 2508 2509For autocommands argument: <abuf> is buffer number, like <afile>. 2510 2511Made syntax highlighting a bit faster when scrolling backwards, by keeping 2512more syncing context. 2513 2514Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or 2515inserting screen lines. 2516 2517GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved 2518less than a pixel. 2519 2520Included ":highlight" in bugreport.vim. 2521 2522Created install.exe program, for simplistic installation on DOS and 2523MS-Windows. 2524 2525New register: '_', the black hole. When writing to it, nothing happens. When 2526reading from it, it's always empty. Can be used to avoid a delete or change 2527command to modify the registers, or reduce memory use for big changes. 2528 2529CTRL-V xff enters character by hex number. CTRL-V o123 enters character by 2530octal number. (Aaron) 2531 2532Improved performance of syntax highlighting by skipping check for "keepend" 2533when there isn't any. 2534 2535Moved the mode message ("-- INSERT --") to the last line of the screen. When 2536'cmdheight' is more than one, messages will remain readable. 2537 2538When listing matching files, they are also sorted on 'suffixes', such that 2539they are listed in the same order as CTRL-N retrieves them. 2540 2541synIDattr() takes a third argument (optionally), which tells for which 2542terminal type to get the attributes for. This makes it possible to run 25432html.vim outside of gvim (using color names instead of #RRGGBB). 2544 2545Memory profiling, only for debugging. Prints at exit, and with "g^A" command. 2546(Kahn) 2547 2548DOS: When using a file in the current drive, remove the drive name: 2549"A:\dir\file" -> "\dir\file". This helps when moving a session file on a 2550floppy from "A:\dir" to "B:\dir". 2551 2552Increased number of remembered jumps from 30 to 50 per window. 2553 2554Command to temporarily disable 'hls' highlighting until the next search: 2555":nohlsearch". 2556 2557"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the 2558inserted text. Used for the CTRL-V command in MS-Windows mode. 2559 2560 2561Fixed *fixed-5.2* 2562----- 2563 2564Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed 2565this, Windows will handle the bold text anyway. (Negri) 2566 2567patch 5.1.1: Win32s GUI: pasting caused a crash (Negri) 2568 2569patch 5.1.2: When entering another window, where characters before the cursor 2570have been deleted, could have a cursor beyond the end of the line. 2571 2572patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri) 2573 2574patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version 2575(Scott). 2576 2577patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that 2578doesn't fit in the window, and splitting that line in two. 2579 2580patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line 2581(so that the window scrolls horizontally), ":set wrap". Following Visual 2582selection was wrong. 2583 2584patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do 2585binary searching. 2586 2587patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler. 2588 2589patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear. 2590 2591patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer 2592without a name exists. 2593 2594patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted 2595"make shadow" for the links in the ctags directory. 2596 2597patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a 2598buffer name. 2599 2600patch 5.1.13: When completing file names on the command-line, reallocating the 2601command-line may go wrong. 2602 2603patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch 2604specified. 2605 2606Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to 2607Fullname_save(). (Negri) 2608 2609Win32: ":!start" to invoke a program without opening a console, swapping 2610screens, or waiting for completion in either console or gui version, e.g. you 2611can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning 2612a shell" bug. (enhancement of Aaron patch) (Negri) 2613 2614Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri) 2615 2616Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c" 2617displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri) 2618 2619Win32 GUI: No copy to Windows clipboard when it's not desired. 2620 2621Win32s: Fix pasting from clipboard - made an assumption not valid under 2622Win32s. (Negri) 2623 2624Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing 2625functions. (Negri) 2626 2627Win32 GUI: Middle mouse button emulation now works in GUI! (Negri) 2628 2629Could skip messages when combining commands in one line, e.g.: 2630":echo "hello" | write". 2631 2632Perl interpreter was disabled before executing VimLeave autocommands. Could 2633not use ":perl" in them. (Aaron) 2634 2635Included patch for the Intellimouse (Aaron/Robinson). 2636 2637Could not set 'ls' to one, when last window has only one line. (Mitterand) 2638 2639Fixed a memory leak when removing menus. 2640 2641After ":only" the ruler could overwrite a message. 2642 2643Dos32: removed changing of __system_flags. It appears to work better when 2644it's left at the default value. 2645 2646p_aleph was an int instead of along, caused trouble on systems where 2647sizeof(int) != sizeof(long). (Schmidt) 2648 2649Fixed enum problems for Ultrix. (Seibert) 2650 2651Small redraw problem: "dd" on last line in file cleared wrong line. 2652 2653Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 | 2654.d | endif". 2655 2656Command "+|" on the last line of the file caused ml_get errors. 2657 2658Memory underrun in eval_vars(). (Aaron) 2659 2660Don't rename files in a difficult way, except on Windows 95 (was also done on 2661Windows NT). 2662 2663Win32 GUI: An external command that produces an error code put the error 2664message in a dialog box. had to close the window and close the dialog. Now 2665the error code is displayed in the console. (Negri) 2666 2667"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle) 2668 2669In Insert mode, when entering a window in Insert mode, allow the cursor to be 2670one char beyond the text. 2671 2672Renamed machine dependent rename() to mch_rename(). Define mch_rename() to 2673rename() when it works properly. 2674 2675Rename vim_chdir() to mch_chdir(), because it's machine dependent. 2676 2677When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more 2678files to edit" error. 2679 2680In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed. 2681Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins) 2682 2683Give an error message for an unknown argument after "--". E.g. for "vim 2684--xyz". 2685 2686The FileChangedShell autocommand didn't set <afile> to the name of the changed 2687file. 2688 2689When doing ":e file", causing the attention message, there sometimes was no 2690hit-enter prompt. Caused by empty line or "endif" at end of sourced file. 2691 2692A large number of patches for the VMS version. (Hunsaker) 2693 2694When CTRL-L completion (find longest match) results in a shorter string, no 2695completion is done (happens with ":help"). 2696 2697Crash in Win32 GUI version, when using an Ex "@" command, because 2698LinePointers[] was used while not initialized. 2699 2700Win32 GUI: allow mapping of Alt-Space. 2701 2702Output from "vim -h" was sent to stderr. Sending it to stdout is better, so 2703one can use "vim -h | more". 2704 2705In command-line mode, ":vi[!]" should reload the file, just like ":e[!]". 2706In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi 2707compatible. 2708 2709When using a ":set ls=1" in the .gvimrc file, would get a status line for a 2710single window. (Robinson) 2711 2712Didn't give an error message for ":set ai,xx". (Roemer) 2713Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx". 2714 2715Non-Unix systems: That a file exists but is unreadable is recognized as "new 2716file". Now check for existence when file can't be opened (like Unix). 2717 2718Unix: osdef.sh didn't handle declarations where the function name is at the 2719first column of the line. 2720 2721DJGPP: Shortening of file names didn't work properly, because get_cwd() 2722returned a path with backslashes. (Negri) 2723 2724When using a 'comments' part where a space is required after the middle part, 2725always insert a space when starting a new line. Helps for C comments, below a 2726line with "/****". 2727 2728Replacing path of home directory with "~/" could be wrong for file names 2729with embedded spaces or commas. 2730 2731A few fixes for the Sniff interface. (Leherbauer) 2732 2733When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused 2734trouble. Same for ":s/x/y/c" prompt. 2735 2736With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks, 2737instead of the characters specified with 'listchars'. Also for other 2738characters that take more than one screen character. 2739 2740When setting 'guifont' to an unknown font name, the previous font was lost and 2741a default font would be used. (Steed) 2742 2743DOS: Filenames in the root directory didn't get shortened properly. (Negri) 2744 2745DJGPP: making a full path name out of a file name didn't work properly when 2746there is no _fullpath() function. (Negri) 2747 2748Win32 console: ":sh" caused a crash. (Negri) 2749 2750Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably 2751(could hang Windows 95). (Negri) 2752 2753Win32: The change-drive function was not correct, went to the wrong drive. 2754(Tsindlekht) 2755 2756GUI: When editing a command line in Ex mode, Tabs were sometimes not 2757backspaced properly, and unprintable characters were displayed directly. 2758non-GUI can still be wrong, because a system function is called for this. 2759 2760":set" didn't stop after an error. For example ":set no ai" gave an error for 2761"no", but still set "ai". Now ":set" stops after the first error. 2762 2763When running configure for ctags, $LDFLAGS wasn't passed to it, causing 2764trouble for IRIX. 2765 2766"@%" and "@#" when file name not set gave an error message. Now they just 2767return an empty string. (Steed) 2768 2769CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers. 2770(Steed) 2771 2772":echo" always started with a blank. 2773 2774Updating GUI cursor shape didn't always work (e.g., when blinking is off). 2775 2776In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line. Also 2777a few other commands that explicitly print a text line didn't work. Made this 2778Vi compatible. 2779 2780Win32 version of _chdrive() didn't return correct value. (Tsindlekht) 2781 2782When using 't' in 'complete' option, no longer give an error message for a 2783missing tags file. 2784 2785Unix: tgoto() can return NULL, which was not handled correctly in configure. 2786 2787When doing ":help" from a buffer where 'binary' is set, also edited the help 2788file in binary mode. Caused extra ^Ms for DOS systems. 2789 2790Cursor position in a file was reset to 1 when closing a window. 2791 2792":!ls" in Ex mode switched off echo. 2793 2794When doing a double click in window A, while currently in window B, first 2795click would reset double click time, had to click three times to select a 2796word. 2797 2798When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be 2799used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add 2800a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a 2801special key name. 2802 2803Gave confusing error message for ":set guifont=-*-lucida-*": first "font is 2804not fixed width", then "Unknown font". 2805 2806Some options were still completely left out, instead of included as hidden 2807options. 2808 2809While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after 2810executing an external command (in rare cases). 2811 2812In os_unixx.h, signal() was defined to sigset(), while it already was. 2813 2814Memory leak when executing autocommands (was reported as a memory leak in 2815syntax highlighting). 2816 2817Didn't print source of error sometimes, because pointers were the same, 2818although names were different. 2819 2820Avoid a number of UMR errors from Purify (third argument to open()). 2821 2822A swap file could still be created just after setting 'updatecount' to zero, 2823when there is an empty buffer and doing ":e file". (Kutschera) 2824 2825Test 35 failed on 64 bit machines. (Schild) 2826 2827With "p" and "P" commands, redrawing was slow. 2828 2829Awk script for html documentation didn't work correctly with AIX awk. 2830Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe) 2831The makehtml.awk script had a small problem, causing extra lines to be 2832inserted. (Briscoe) 2833 2834"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a 2835wrong way. Also made "gqq" work to be consistent with "guu". 2836 2837C indent was wrong after "case ':':". 2838 2839":au BufReadPre *.c put": Line from put text was deleted, because the buffer 2840was still assumed to be empty. 2841 2842Text pasted with the Edit/Paste menu was subject to 'textwidth' and 2843'autoindent'. That was inconsistent with using the mouse to paste. Now "*p 2844is used. 2845 2846When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag, 2847window was split. 2848 2849":ts" got stuck on a tags line that has two extra fields. 2850 2851In Insert mode, with 'showmode' on, <C-O><C-G> message was directly 2852overwritten by mode message, if preceded with search command warning message. 2853 2854When putting the result of an expression with "=<expr>p, newlines were 2855inserted like ^@ (NUL in the file). Now the string is split up in lines at 2856the newline. 2857 2858putenv() was declared with "const char *" in pty.c, but with "char *" in 2859osdef2.h.in. Made the last one also "const char *". 2860 2861":help {word}", where +{word} is a feature, jumped to the feature list instead 2862of where the command was explained. E.g., ":help browse", ":help autocmd". 2863 2864Using the "\<xx>" form in an expression only got one byte, even when using a 2865special character that uses several bytes (e.g., "\<F9>"). 2866Changed "\<BS>" to produce CTRL-H instead of the special key code for the 2867backspace key. "\<Del>" produces 0x7f. 2868 2869":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'. 2870 2871The shell syntax didn't contain a "syn sync maxlines" setting. In a long file 2872without recognizable items, syncing took so long it looked like Vim hangs. 2873Added a maxlines setting, and made syncing interruptible. 2874 2875The "gs" command didn't flush output before waiting. 2876 2877Memory leaks for: 2878 ":if 0 | let a = b . c | endif" 2879 "let a = b[c]" 2880 ":so {file}" where {file} contains a ":while" 2881 2882GUI: allocated fonts were never released. (Leonard) 2883 2884Makefile.bor: 2885- Changed $(DEFINES) into a list of "-D" options, so that it can also be used 2886 for the resource compiler. (not tested!) 2887- "bcc.cfg" was used for all configurations. When building for another 2888 configuration, the settings for the previous one would be used. Moved 2889 "bcc.cfg" to the object directory. (Geddes) 2890- Included targets for vimrun, install, ctags and xxd. Changed the default to 2891 use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron) 2892 2893"2*" search for the word under the cursor with "2" prepended. (Leonard) 2894 2895When deleting into a specific register, would still overwrite the non-Win32 2896GUI selection. Now ""x"*P works. 2897 2898When deleting into the "" register, would write to the last used register. 2899Now ""x always writes to the unnamed register. 2900 2901GUI Athena: A submenu with a '.' in it didn't work. E.g., 2902":amenu Syntax.XY\.Z.foo lll". 2903 2904When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of 2905matching tags could change, because the current file is different. Now the 2906existing matches are kept in the same order, newly found matches are added 2907after them, not matter what the current file is. 2908 2909":ta" didn't find the second entry in a tags file, if the second entry was 2910longer than the first one. 2911 2912When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the 2913wrong position. can_si was still TRUE when the cursor is not in the indent of 2914the line. 2915 2916Running an external command in Win32 version had the problem that Vim exits 2917when the X on the console is hit (and confirmed). Now use the "vimrun" 2918command to start the external command indirectly. (Negri) 2919 2920Win32 GUI: When running an external filter, do it in a minimized DOS box. 2921(Negri) 2922 2923":let" listed variables without translation into printable characters. 2924 2925Win32 console: When resizing the window, switching back to the old size 2926(when exiting or executing an external command) sometimes failed. (Negri) 2927This appears to also fix a "non fixable" problem: 2928Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar, 2929the scrollbar disappeared and was not restored when Vim exits. This does work 2930under NT 3.51, it appears not to be a Vim problem. 2931 2932When executing BufDelete and BufUnload autocommands for a buffer without a 2933name, the name of the current buffer was used for <afile>. 2934 2935When jumping to a tag it reported "tag 1 of >2", while in fact there could be 2936only two matches. Changed to "tag 1 of 2 or more". 2937 2938":tjump tag" did a linear search in the tags file, which can be slow. 2939 2940Configure didn't find "LibXm.so.2.0", a Xm library with a version number. 2941 2942Win32 GUI: When using a shifted key with ALT, the shift modifier would remain 2943set, even when it was already used by changing the used key. E.g., "<M-S-9>" 2944resulted in "<M-S-(>", but it should be "<M-(>". (Negri) 2945 2946A call to ga_init() was often followed by setting growsize and itemsize. 2947Created ga_init2() for this, which looks better. (Aaron) 2948 2949Function filereadable() could call fopen() with an empty string, which might 2950be illegal. 2951 2952X Windows GUI: When executing an external command that outputs text, could 2953write one character beyond the end of a buffer, which caused a crash. (Kohan) 2954 2955When using "*" or "#" on a string that includes '/' or '?' (when these are 2956included in 'isk'), they were not escaped. (Parmelan) 2957 2958When adding a ToolBar menu in the Motif GUI, the submenu_id field was not 2959cleared, causing random problems. 2960 2961When adding a menu, the check if this menu (or submenu) name already exists 2962didn't compare with the simplified version (no mnemonic or accelerator) of the 2963new menu. Could get two menus with the same name, e.g., "File" and "&File". 2964 2965Breaking a line because of 'textwidth' at the last line in the window caused a 2966redraw of the whole window instead of a scroll. Speeds up normal typing with 2967'textwidth' a lot for slow terminals. 2968 2969An invalid line number produced an "invalid range" error, even when it wasn't 2970to be executed (inside "if 0"). 2971 2972When the unnamed, first buffer is re-used, the "BufDelete" autocommand was 2973not called. It would stick in a buffer list menu. 2974 2975When doing "%" on the NUL after the line, a "{" or "}" in the last character 2976of the line was not found. 2977 2978The Insert mode menu was not used for the "s" command, the Operator-pending 2979menu was used instead. 2980 2981With 'compatible' set, some syntax highlighting was not correct, because of 2982using "[\t]" for a search pattern. Now use the regexps for syntax 2983highlighting like the 'cpoptions' option is empty (as was documented already). 2984 2985When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't 2986show any lhs for the mapping (if 'isprint' includes 160). Now always use 2987<Space> and <M-Space>, even when they are printable. 2988 2989Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for 2990Athena, where menus don't wrap). 2991 2992When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and 2993digits, repeating the insert didn't work. 2994 2995The file "tools/ccfilter.README.txt" could not be unpacked when using short 2996file names, because of the two dots. Renamed it to 2997"tools/ccfilter_README.txt". 2998 2999For a dark 'background', using Blue for Directory and SpecialKey highlight 3000groups is not very readable. Use Cyan instead. 3001 3002In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into 3003a block with a local variable. That's illegal for some compilers. 3004 3005Win32 GUI: There was a row of pixels at the bottom of the window which was not 3006drawn. (Aaron) 3007 3008Under DOS, editing "filename/" created a swap file of "filename/.swp". Should 3009be "filename/_swp". 3010 3011Win32 GUI: pointer was hidden when executing an external command. 3012 3013When 'so' is 999, "J" near the end of the file didn't redisplay correctly. 3014 3015":0a" inserted after the first line, instead of before the first line. 3016 3017Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now 3018":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*'). 3019":file {o}{n}{e}" now results in file name "one". 3020 3021Memory leak when setting a string option back to its default value. 3022 3023============================================================================== 3024VERSION 5.3 *version-5.3* 3025 3026Version 5.3 was a bug-fix version of 5.2. There are not many changes. 3027Improvements made between version 5.2 and 5.3: 3028 3029Changed *changed-5.3* 3030------- 3031 3032Renamed "IDE" menu to "Tools" menu. 3033 3034 3035Added *added-5.3* 3036----- 3037 3038Win32 GUI: Give a warning when Vim is activated, and one of the files changed 3039since editing started. (Negri) 3040 3041 3042Fixed *fixed-5.3* 3043----- 3044 30455.2.1: Win32 GUI: space for external command was not properly allocated, could 3046cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after 30475.2. 3048 30495.2.2: Some commands didn't complain when used without an argument, although 3050they need one: ":badd", ":browse", ":call", ":confirm", ":behave", 3051":delfunction", ":delcommand" and ":tearoff". 3052":endfunction" outside of a function gave wrong error message: "Command not 3053implemented". Should be ":endfunction not inside a function". 3054 30555.2.3: Win32 GUI: When gvim was installed in "Program files", or another path 3056with a space in it, executing external commands with vimrun didn't work. 3057 30585.2.4: Pasting with the mouse in Insert mode left the cursor on the last 3059pasted character, instead of behind it. 3060 30615.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left 3062didn't include the last character in the selection. 3063 30645.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which 3065includes the last character in the line, the cursor could be left on the last 3066character in the line, instead of just after it. 3067 30685.2.7: Win32 GUI: scrollbar was one pixel too big. 3069 30705.2.8: Completion of "PopUp" menu showed the derivatives "PopUpc", "PopUPi", 3071etc. ":menu" also showed these. 3072 30735.2.9: When using two input() functions on a row, the prompt would not be 3074drawn in column 0. 3075 30765.2.10: A loop with input() could not be broken with CTRL-C. 3077 30785.2.11: ":call asdf" and ":call asdf(" didn't give an error message. 3079 30805.2.12: Recursively using ":normal" crashes Vim after a while. E.g.: 3081":map gq :normal gq<CR>" 3082 30835.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using 3084":help", then "/\k*" in another window with 'hlsearch' set. 3085 30865.2.14: When using ":source" from a function, global variables would not be 3087available unless "g:" was used. 3088 30895.2.15: XPM files can have the extension ".pm", which is the same as for Perl 3090modules. Added "syntax/pmfile.vim" to handle this. 3091 30925.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an 3093empty buffer. mch_Fullname() didn't append a slash at the end of a directory 3094name. 3095 3096Should include the character under the cursor in the Visual area when using 3097'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f". 3098 3099""p would always put register 0, instead of the unnamed (last used) register. 3100Reverse the change that ""x doesn't write in the unnamed (last used) register. 3101It would always write in register 0, which isn't very useful. Use "-x for the 3102paste mappings in Visual mode. 3103 3104When there is one long line on the screen, and 'showcmd' is off, "0$" didn't 3105redraw the screen. 3106 3107Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor 3108shape is changed. (Negri) 3109 3110When cancelling Visual mode, and the cursor moves to the start, the wanted 3111column wasn't set, "k" or "j" moved to the wrong column. 3112 3113When using ":browse" or ":confirm", was checking for a comment and separating 3114bar, which can break some commands. 3115 3116Included fixes for Macintosh. (Kielhorn) 3117 3118============================================================================== 3119VERSION 5.4 *version-5.4* 3120 3121Version 5.4 adds new features, useful changes and a lot of bug fixes. 3122 3123 3124Runtime directory introduced *new-runtime-dir* 3125---------------------------- 3126 3127The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM. 3128You normally don't set $VIMRUNTIME but let Vim find it, by using 3129$VIM/vim{version}, or use $VIM when that doesn't exist. This allows for 3130separating the user files from the distributed files and makes it more easy to 3131upgrade to another version. It also makes it possible to keep two versions of 3132Vim around, each with their own runtime files. 3133 3134In the Unix distribution the runtime files have been moved to the "runtime" 3135directory. This makes it possible to copy all the runtime files at once, 3136without the need to know what needs to be copied. 3137 3138The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level 3139"vim" directory. This is to make clear that user-modified files should be put 3140here. The directory that contains the executables doesn't have '-' or '.' 3141characters. This avoids strange extensions. 3142 3143The $VIM and $VIMRUNTIME variables are set when they are first used. This 3144allows them to be used by Perl, for example. 3145 3146The runtime files are also found in a directory called "$VIM/runtime". This 3147helps when running Vim after just unpacking the runtime archive. When using 3148an executable in the "src" directory, Vim checks if "vim54" or "runtime" can 3149be added after removing it. This make the runtime files be found just after 3150compiling. 3151 3152A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful 3153if $VIM doesn't point to above the runtime directory but to e.g., "/etc/". 3154 3155 3156Filetype introduced *new-filetype-5.4* 3157------------------- 3158 3159Syntax files are now loaded with the new FileType autocommand. Old 3160"mysyntaxfile" files will no longer work. |filetypes| 3161 3162The scripts for loading syntax highlighting have been changed to use the 3163new Syntax autocommand event. 3164 3165This combination of Filetype and Syntax events allows tuning the syntax 3166highlighting a bit more, also when selected from the Syntax menu. The 3167FileType autocommand can also be used to set options and mappings specifically 3168for that type of file. 3169 3170The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The 3171":filetype on" command has been added for this. ":syntax on" also loads it. 3172 3173The 'filetype' option has been added. It is used to trigger the FileType 3174autocommand event, like the 'syntax' option does for the Syntax event. 3175 3176":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch 3177syntax highlighting on/off for the current file. 3178 3179The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax 3180menu is included both when ":filetype on" and when ":syntax manual" is used. 3181 3182Renamed the old 'filetype' option to 'osfiletype'. It was only used for 3183RISCOS. 'filetype' is now used for the common file type. 3184 3185Added the ":syntax manual" command. Allows manual selection of the syntax to 3186be used, e.g., from a modeline. 3187 3188 3189Vim script line continuation *new-line-continuation* 3190---------------------------- 3191 3192When an Ex line starts with a backslash, it is concatenated to the previous 3193line. This avoids the need for long lines. |line-continuation| (Roemer) 3194Example: > 3195 if has("dialog_con") || 3196 \ has("dialog_gui") 3197 :let result = confirm("Enter your choice", 3198 \ "&Yes\n&No\n&Maybe", 3199 \ 2) 3200 endif 3201 3202 3203Improved session files *improved-sessions* 3204---------------------- 3205 3206New words for 'sessionoptions': 3207- "help" Restore the help window. 3208- "blank" Restore empty windows. 3209- "winpos" Restore the Vim window position. Uses the new ":winpos" 3210 command 3211- "buffers" Restore hidden and unloaded buffers. Without it only the 3212 buffers in windows are restored. 3213- "slash" Replace backward by forward slashes in file names. 3214- "globals" Store global variables. 3215- "unix" Use unix file format (<NL> instead of <CR><NL>) 3216 3217The ":mksession" and 'sessionoptions' are now in the +mksession feature. 3218 3219The top line of the window is also restored when using a session file. 3220 3221":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected 3222when loading a file. 3223 3224(Most of this was done by Vince Negri and Robert Webb) 3225 3226 3227Autocommands improved *improved-autocmds-5.4* 3228--------------------- 3229 3230New events: 3231|FileType| When the file type has been detected. 3232|FocusGained| When Vim got input focus. (Negri) 3233|FocusLost| When Vim lost input focus. (Negri) 3234|BufCreate| Called just after a new buffer has been created or has been 3235 renamed. (Madsen) 3236|CursorHold| Triggered when no key has been typed for 'updatetime'. Can be 3237 used to do something with the word under the cursor. (Negri) 3238 Implemented CursorHold autocommand event for Unix. (Zellner) 3239 Also for Amiga and MS-DOS. 3240|GUIEnter| Can be used to do something with the GUI window after it has 3241 been created (e.g., a ":winpos 100 50"). 3242|BufHidden| When a buffer becomes hidden. Used to delete the 3243 option-window when it becomes hidden. 3244 3245Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen) 3246 3247The "<amatch>" pattern can be used like "<afile>" for autocommands, except 3248that it is the matching value for the FileType and Syntax events. 3249 3250When ":let @/ = <string>" is used in an autocommand, this last search pattern 3251will be used after the autocommand finishes. 3252 3253Made loading autocommands a bit faster. Avoid doing strlen() on each exiting 3254pattern for each new pattern by remembering the length. 3255 3256 3257Encryption *new-encryption* 3258---------- 3259 3260Files can be encrypted when writing and decrypted when reading. Added the 3261'key' option, "-x" command line argument and ":X" command. |encryption| (based 3262on patch from Mohsin Ahmed) 3263 3264When reading a file, there is an automatic detection whether it has been 3265crypted. Vim will then prompt for the key. 3266 3267Note that the encryption method is not compatible with Vi. The encryption is 3268not unbreakable. This allows it to be exported from the US. 3269 3270 3271GTK GUI port *new-GTK-GUI* 3272------------ 3273 3274New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk| 3275Added the |:helpfind| command. (Kahn and Dalecki) 3276 3277 3278Menu changes *menu-changes-5.4* 3279------------ 3280 3281Menus can now also be used in the console. It is enabled by the new 3282'wildmenu' option. This shows matches for command-line completion like a 3283menu. This works as a minimal file browser. 3284 3285The new |:emenu| command can be used to execute a menu item. 3286 3287Uses the last status line to list items, or inserts a line just above the 3288command line. (Negri) 3289 3290The 'wildcharx' option can be used to trigger 'wildmenu' completion from a 3291mapping. 3292 3293When compiled without menus, this can be detected with has("menu"). Also show 3294this in the ":version" output. Allow compiling GUI versions without menu 3295support. Only include toolbar support when there is menu support. 3296 3297Moved the "Window" menu all the way to the right (priority 70). Looks more 3298familiar for people working with MS-Windows, shouldn't matter for others. 3299 3300Included "Buffers" menu. Works with existing autocommands and functions. It 3301can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen) 3302 3303Win32 supports separators in a menu: "-.*-". (Geddes) 3304Menu separators for Motif now work too. 3305 3306Made Popup menu for Motif GUI work. (Madsen) 3307 3308'M' flag in 'guioptions': Don't source the system menu. 3309 3310All the menu code has been moved from gui.c to menu.c. 3311 3312 3313Viminfo improved *improved-viminfo* 3314---------------- 3315 3316New flags for 'viminfo': 3317'!' Store global variables in the viminfo file if they are in uppercase 3318 letters. (Negri) 3319'h' Do ":nohlsearch" when loading a viminfo file. 3320 3321Store search patterns in the viminfo file with their offset, magic, etc. Also 3322store the flag whether 'hlsearch' highlighting is on or off (which is not used 3323if the 'h' flag is in 'viminfo'). 3324 3325Give an error message when setting 'viminfo' without commas. 3326 3327 3328Various new commands *new-commands-5.4* 3329-------------------- 3330 3331Operator |g?|: rot13 encoding. (Negri) 3332 3333|zH| and |zL| commands: Horizontal scrolling by half a page. 3334|gm| move cursor to middle of screen line. (Ideas by Campbell) 3335 3336Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|, 3337|v_b_<| and |v_b_>|. (Kelly) 3338 3339New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to 3340Normal mode when in Insert or Command-line mode. Can be used by VisVim or 3341other OLE programs to make sure Vim is in Normal mode, without causing a beep. 3342|CTRL-\_CTRL-N| 3343 3344":cscope kill" command to use the connection filename. |:cscope| (Kahn) 3345 3346|:startinsert| command: Start Insert mode next. 3347 3348|:history| command, to show all four types of histories. (Roemer) 3349 3350|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end 3351of method in a (Java) class. 3352 3353":@*" executes the * register. |:@| (Acevedo) 3354 3355|go| and |:goto| commands: Jump to byte offset in the file. 3356 3357|gR| and |gr| command: Virtual Replace mode. Replace characters without 3358changing the layout. (Webb) 3359 3360":cd -" changes to the directory from before the previous ":cd" command. 3361|:cd-| (Webb) 3362 3363Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated 3364window. Can be used to see the context of the tag (e.g., function arguments). 3365(Negri) 3366|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore) 3367'previewheight' option, height for the preview window. 3368Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|. 3369 3370|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit 3371it. 3372 3373The |:options| command opens an option window that shows the current option 3374values. Or use ":browse set" to open it. Options are grouped by function. 3375Offers short help on each option. Hit <CR> to jump to more help. Edit the 3376option value and hit <CR> on a "set" line to set a new value. 3377 3378 3379Various new options *new-options-5.4* 3380------------------- 3381 3382Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind| 3383command. Makes windows scroll the same amount (horizontally and/or 3384vertically). (Ralston) 3385 3386'conskey' option for MS-DOS. Use direct console I/O. This should work with 3387telnet (untested!). 3388 3389'statusline' option: Configurable contents of the status line. Also allows 3390showing the byte offset in the file. Highlighting with %1* to %9*, using the 3391new highlight groups User1 to User9. (Madsen) 3392 3393'rulerformat' option: Configurable contents of the ruler, like 'statusline'. 3394(Madsen) 3395 3396'write' option: When off, writing files is not allowed. Avoids overwriting a 3397file even with ":w!". The |-m| command line option resets 'write'. 3398 3399'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed 3400register like "*. (Cortopassi) Value "autoselect": Like what 'a' in 3401'guioptions' does but works in the terminal. 3402 3403'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI 3404versions. Allows using normal fonts when vim is compiled with this feature. 3405(Nam) 3406 3407'guiheadroom' option: How much room to allow above/below the GUI window. 3408Used for Motif, Athena and GTK. 3409 3410Implemented 'tagstack' option: When off, pushing tags onto the stack is 3411disabled (Vi compatible). Useful for mappings. 3412 3413'shellslash' option. Only for systems that use a backslash as a file 3414separator. This option will use a forward slash in file names when expanding 3415it. Useful when 'shell' is sh or csh. 3416 3417'pastetoggle' option: Key sequence that toggles 'paste'. Works around the 3418problem that mappings don't work in Insert mode when 'paste' is set. 3419 3420'display' option: When set to "lastline", the last line fills the window, 3421instead of being replaced with "@" lines. Only the last three characters are 3422replaced with "@@@", to indicate that the line has not finished yet. 3423 3424'switchbuf' option: Allows re-using existing windows on a buffer that is being 3425jumped to, or split the window to open a new buffer. (Roemer) 3426 3427'titleold' option. Replaces the fixed string "Thanks for flying Vim", which 3428is used to set the title when exiting. (Schild) 3429 3430 3431Vim scripts *new-script-5.4* 3432----------- 3433 3434The |exists()| function can also check for existence of a function. (Roemer) 3435An internal function is now found with a binary search, should be a bit 3436faster. (Roemer) 3437 3438New functions: 3439- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb) 3440- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history 3441 available. (Roemer) 3442- |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas. 3443- |mapcheck()|: Check if a map name matches with an existing one. 3444- |visualmode()|: Return type of last Visual mode. (Webb) 3445- |libcall()|: Call a function in a library. Currently only for Win32. (Negri) 3446- |bufwinnr()|: find window that contains the specified buffer. (Roemer) 3447- |bufloaded()|: Whether a buffer exists and is loaded. 3448- |localtime()| and |getftime()|: wall clock time and last modification time 3449 of a file (Webb) 3450- |glob()|: expand file name wildcards only. 3451- |system()|: get the raw output of an external command. (based on a patch 3452 from Aaron). 3453- |strtrans()|: Translate String into printable characters. Used for 3454 2html.vim script. 3455- |append()|: easy way to append a line of text in a buffer. 3456 3457Changed functions: 3458- Optional argument to |strftime()| to give the time in seconds. (Webb) 3459- |expand()| now also returns names for files that don't exist. 3460 3461Allow numbers in the name of a user command. (Webb) 3462 3463Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The 3464ones from version 5.3 can be used without "v:" too, for backwards 3465compatibility. 3466 3467New variables: 3468"v:warningmsg" and "v:statusmsg" internal variables. Contain the last given 3469warning and status message. |v:warningmsg| |v:statusmsg| (Madsen) 3470"v:count1" variable: like "v:count", but defaults to one when no count is 3471used. |v:count1| 3472 3473When compiling without expression evaluation, "if 1" can be used around the 3474not supported commands to avoid it being executed. Works like in Vim 4.x. 3475Some of the runtime scripts gave errors when used with a Vim that was compiled 3476with minimal features. Now "if 1" is used around code that is not always 3477supported. 3478 3479When evaluating an expression with && and ||, skip the parts that will not 3480influence the outcome. This makes it faster and avoids error messages. (Webb) 3481Also optimized the skipping of expressions inside an "if 0". 3482 3483 3484Avoid hit-enter prompt *avoid-hit-enter* 3485----------------------- 3486 3487Added 'T' flag to 'shortmess': Truncate all messages that would cause the 3488hit-enter prompt (unless that would happen anyway). 3489The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from 3490the ":cn" command. 3491 3492The default for 'shortmess' is now "filnxtToO", to make most messages fit on 3493the command line, and not cause the hit-enter prompt. 3494 3495Previous messages can be viewed with the new |:messages| command. 3496 3497Some messages are shown fully, even when 'shortmess' tells to shorten 3498messages, because the user is expected to want to see them in full: CTRL-G and 3499some quickfix commands. 3500 3501 3502Improved quickfix *improved-quickfix* 3503----------------- 3504 3505Parse change-directory lines for gmake: "make[1]: Entering directory 'name'". 3506Uses "%D" and "%X" in 'errorformat'. 3507Also parse "Making {target} in {dir}" messages from make. Helps when not 3508using GNU make. (Schandl) 3509 3510Use 'isfname' for "%f" in 'errorformat'. 3511 3512Parsing of multi-line messages. |errorformat-multi-line| 3513 3514Allow a range for the |:clist| command. (Roemer) 3515 3516Support for "global" file names, for error formats that output the file name 3517once for several errors. (Roemer) 3518 3519|:cnfile| jumps to first error in next file. 3520 3521"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer) 3522 3523 3524Regular expressions *regexp-changes-5.4* 3525------------------- 3526 3527In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$| 3528In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson) 3529 3530In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered 3531end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same 3532for '^' after "\(" and "\|". |/\$| |/\^| 3533 3534Some search patterns can be extremely slow, even though they are not really 3535illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp 3536search with CTRL-C. 3537 3538Register "/: last search string (read-only). (Kohan) Changed to use last used 3539search pattern (like what 'hlsearch' uses). Can set the search pattern with 3540":let @/ = {expr}". 3541 3542Added character classes to search patterns, to avoid the need for removing the 3543'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and 3544|[:escape:]|. 3545 3546By adding a '?' after a comparative operator in an expression, the comparison 3547is done by ignoring case. |expr-==?| 3548 3549 3550Other improvements made between version 5.3 and 5.4 3551--------------------------------------------------- 3552 3553Changed *changed-5.4* 3554------- 3555 3556Unix: Use $TMPDIR for temporary files, if it is set and exists. 3557 3558Removed "Empty buffer" message. It isn't useful and can cause a hit-enter 3559prompt. (Negri) 3560 3561"ex -" now reads commands from stdin and works in silent mode. This is to be 3562compatible with the original "ex" command that is used for scripts. 3563 3564Default range for ":tcldo" is the whole file. 3565 3566Cancelling Visual mode with ESC moved the cursor. There appears to be no 3567reason for this. Now leave the cursor where it is. 3568 3569The ":grep" and ":make" commands see " as part of the arguments, instead of 3570the start of a comment. 3571 3572In expressions the "=~" and "!~" operators no longer are affected by 3573'ignorecase'. 3574 3575Renamed vimrc_example to vimrc_example.vim and gvimrc_example to 3576gvimrc_example.vim. Makes them being recognized as vim scripts. 3577 3578"gd" no longer starts searching at the end of the previous function, but at 3579the first blank line above the start of the current function. Avoids that 3580using "gd" in the first function finds global a variable. 3581 3582Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches 3583will be found, at the cost of time (the search can be interrupted). 3584 3585It is no longer possible to set 'shell*' options from a modeline. Previously 3586only a warning message was given. This reduces security risks. 3587 3588The ordering of the index of documentation files was changed to make it more 3589easy to find a subject. 3590 3591On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused 3592trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files 3593would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find 3594the runtime file. 3595 3596When 'tags' is "./{fname}" and there is no file name for the current buffer, 3597just use it. Previously it was skipped, causing "vim -t {tag}" not to find 3598many tags. 3599 3600When trying to select text in the 'scrolloff' area by mouse dragging, the 3601resulting scrolling made this difficult. Now 'scrolloff' is temporarily set 3602to 0 or 1 to avoid this. But still allow scrolling in the top line to extend 3603to above the displayed text. 3604 3605Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc 3606comments work. Also helps for C comments that start with "/*******". 3607 3608CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used 3609after a non-ID character, which can take a very long time. Now limit this to 3610200 matches. Also used for command-line tag completion. 3611 3612The OS/2 distribution has been split in two files. It was too big to fit on a 3613floppy. The same runtime archive as for the PC is now used. 3614 3615In the documentation, items like <a-z> have been replaced with {a-z} for 3616non-optional arguments. This avoids confusion with key names: <C-Z> is a 3617CTRL-Z, not a character between C and Z, that is {C-Z}. 3618 3619 3620Added *added-5.4* 3621----- 3622 3623Color support for the iris-ansi builtin termcap entry. (Tubman) 3624 3625Included VisVim version 1.3a. (Erhardt) 3626 3627Win32 port for SNiFF+ interface. (Leherbauer) 3628Documentation file for sniff interface: if_sniff.txt. (Leherbauer) 3629 3630Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory. 3631To be used with the OLE version of gvim under MS-Windows. (Schaller) 3632 3633Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert) 3634 3635When a file that is being edited is deleted, give a warning (like when the 3636time stamp changed). 3637 3638Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo) 3639 3640Linux console mouse support through "gpm". (Tsindlekht) 3641 3642Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When 3643'secure' is set, give a warning for changing options that contain a program 3644name. 3645 3646Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege) 3647 3648When giving an error message for an ambiguous mapping, include the offending 3649mapping. (Roemer) 3650 3651Command line editing: 3652- Command line completion of mappings. (Roemer) 3653- Command line completion for ":function", ":delfunction", ":let", ":call", 3654 ":if", etc. (Roemer) 3655- When using CTRL-D completion for user commands that have 3656 "-complete=tag_listfiles" also list the file names. (Madsen) 3657- Complete the arguments of the ":command" command. (Webb) 3658- CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W 3659 and CTRL-A after CTRL-R are used to insert an object from under the cursor. 3660 (Madsen) 3661 3662Made the text in uganda.txt about copying Vim a bit more clear. 3663 3664Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor 3665and starts Vim on it. "make install" now also copies the tutor. 3666 3667In the output of ":clist" the current entry is highlighted, with the 'i' 3668highlighting (same as used for 'incsearch'). 3669 3670For the ":clist" command, you can scroll backwards with "b" (one screenful), 3671"u" (half a screenful) and "k" (one line). 3672 3673Multi-byte support: 3674- X-input method for multi-byte characters. And various fixes for multi-byte 3675 support. (Nam) 3676- Hangul input method feature: |hangul|. (Nam) 3677- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul 3678 input. Each is now configurable separately. 3679- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam) 3680- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam) 3681- XIM support for GTK+. (Nam) 3682- First attempt to include support for SJIS encoding. (Nagano) 3683- When a double-byte character doesn't fit at the end of the line, put a "~" 3684 there and print it on the next line. 3685- Optimize output of multi-byte text. (Park) 3686- Win32 IME: preedit style is like over-the-spot. (Nagano) 3687- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano) 3688- GUI Athena: file selection dialog can display multi-byte characters. 3689 (Nagano) 3690- Selection reply for XA_TEXT as XA_STRING. (Nagano) 3691 3692"runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell) 3693 3694Added ".obj" to the 'suffixes' option. 3695 3696Reduced size of syntax/synload.vim by using the ":SynAu" user command. 3697Automated numbering of Syntax menu entries in menu.vim. 3698In the Syntax menu, insert separators between syntax names that start with 3699a different letter. (Geddes) 3700 3701Xterm: 3702- Clipboard support when using the mouse in an xterm. (Madsen) 3703- When using the xterm mouse, track dragging of the mouse. Use xterm escape 3704 sequences when possible. It is more precise than other methods, but 3705 requires a fairly recent xterm version. It is enabled with "xterm2" in 3706 'ttymouse'. (Madsen) 3707- Check xterm patch level, to set the value of 'ttymouse'. Has only been 3708 added to xterm recently (patch level > 95). Uses the new 't_RV' termcap 3709 option. Set 'ttymouse' to "xterm2" when a correct response is recognized. 3710 Will make xterm mouse dragging work better. 3711- Support for shifted function keys on xterm. Changed codes for shifted 3712 cursor keys to what the xterm actually produces. Added codes for shifted 3713 <End> and <Home>. 3714- Added 't_WP' to set the window position in pixels and 't_WS' to set the 3715 window size in characters. Xterm can now move (used for ":winpos") and 3716 resize (use for ":set lines=" and ":set columns="). 3717 3718X11: 3719- When in Visual mode but not owning the selection, display the Visual area 3720 with the VisualNOS group to show this. (Madsen) 3721- Support for requesting the type of clipboard support. Used for AIX and 3722 dtterm. (Wittig) 3723- Support compound_text selection (even when compiled without multi-byte). 3724 3725Swap file: 3726- New variation for naming swap files: Replace path separators into %, place 3727 all swap files in one directory. Used when a name in 'dir' ends in two path 3728 separators. (Madsen) 3729- When a swap file is found, show whether it contains modifications or not in 3730 the informative message. (Madsen) 3731- When dialogs are supported, use a dialog to ask the user what to do when a 3732 swapfile already exists. 3733 3734"popup_setpos" in 'mousemodel' option. Allows for moving the cursor when 3735using the right mouse button. 3736 3737When a buffer is deleted, the selection for which buffer to display instead 3738now uses the most recent entry from the jump list. (Madsen) 3739 3740When using CTRL-O/CTRL-I, skip deleted buffers. 3741 3742A percentage is shown in the ruler, when there is room. 3743 3744Used autoconf 1.13 to generate configure. 3745 3746Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting 3747when 'p' flag in 'cpoptions' is not included. 3748 3749Made the 2html.vim script quite a bit faster. (based on ideas from Geddes) 3750 3751Unix: 3752- Included the name of the user that compiled Vim and the system name it was 3753 compiled on in the version message. 3754- "make install" now also installs the "tools" directory. Makes them 3755 available for everybody. 3756- "make check" now does the same as "make test". "make test" checks for 3757 Visual block mode shift, insert, replace and change. 3758- Speed up comparing a file name with existing buffers by storing the 3759 device/inode number with the buffer. 3760- Added configure arguments "--disable-gtk", "--disable-motif" and 3761 "--disable-athena", to be able to disable a specific GUI (when it doesn't 3762 work). 3763- Renamed the configure arguments for disabling the check for specific GUIs. 3764 Should be clearer now. (Kahn) 3765- On a Digital Unix system ("OSF1") check for the curses library before 3766 termlib and termcap. (Schild) 3767- "make uninstall_runtime" will only delete the version-specific files. Can 3768 be used to delete the runtime files of a previous version. 3769 3770Macintosh: (St-Amant) 3771- Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code 3772 from gui_w32.c to gui.c 3773- Added dialogs and file browsing. 3774- Resource fork preserved, warning when it will be lost. 3775- Copy original file attributes to newly written file. 3776- Set title/notitle bug solved. 3777- Filename completion improved. 3778- Grow box limit resize to a char by char size. 3779- Use of rgb.txt for more colors (but give back bad color). 3780- Apple menu works (beside the about...). 3781- Internal border now vim compliant. 3782- Removing a menu doesn't crash anymore. 3783- Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the 3784 library is available. 3785- If an error is encountered when sourcing the users .vimrc, the alert box now 3786 shows right away with the OK button defaulted. There's no more "Delete"-key 3787 sign at the start of each line 3788- Better management of environment variables. Now $VIM is calculated only 3789 once, not regenerated every time it is used. 3790- No more CPU hog when in background. 3791- In a sourced Vim script the Mac file format can be recognized, just like DOS 3792 file format is. 3793 3794When both "unix" and "mac" are present in 'fileformats', prefer "mac" format 3795when there are more CR than NL characters. 3796When using "mac" fileformat, use CR instead of a NL, because NL is used for 3797NUL. Will preserve all characters in a file. (Madsen) 3798 3799The DOS install.exe now contains checks for an existing installation. It 3800avoids setting $VIM and $PATH again. 3801The install program for Dos/Windows can now install Vim in the popup menu, by 3802adding two registry keys. 3803 3804Port to EGCS/mingw32. New Makefile.ming. (Aaron) 3805 3806DOS 16 bit: Don't include cursor shape stuff. Save some bytes. 3807 3808TCL support to Makefile.w32. (Duperval) 3809 3810OS/2: Use argv[0] to find runtime files. 3811 3812When using "gf" to go to a buffer that has already been used, jump to the 3813line where the cursor last was. 3814 3815Colored the output of ":tselect" a bit more. Different highlighting between 3816tag name and file name. Highlight field name ("struct:") separately from 3817argument. 3818 3819Backtick expansion for non-Unix systems. Based on a patch from Aaron. 3820Allows the use of things like ":n `grep -l test *.c`" and 3821"echo expand('`ls m*`')". 3822 3823Check for the 'complete' option when it is set. (Acevedo) 3824'd' flag in 'complete' searches for defined names or macros. 3825While searching for Insert mode completions in include files and tags files, 3826check for typeahead, so that you can use matches early. (Webb) 3827The '.' flag in 'complete' now scans the current buffer completely, ignoring 3828'nowrapscan'. (Webb) 3829 3830Added '~' flag to 'whichwrap'. (Acevedo) 3831 3832When ending the Visual mode (e.g., with ESC) don't grab ownership of the 3833selection. 3834 3835In a color terminal, "fg" and "bg" can be used as color names. They stand for 3836the "Normal" colors. 3837 3838A few cscope cleanups. (Kahn) 3839 3840Included changed vimspell.sh from Schemenauer. 3841 3842Concatenation of strings in an expression with "." is a bit faster. (Roemer) 3843 3844The ":redir" command can now redirect to a register: ":redir @r". (Roemer) 3845 3846Made the output of ":marks" and ":jumps" look similar. When the mark is in 3847the current file, show the text at the mark. Also for ":tags". 3848 3849When configure finds ftello() and fseeko(), they are used in tag.c (for when 3850you have extremely big tags files). 3851 3852Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow) 3853 3854GUI: 3855- When using ":gui" in a non-GUI Vim, give a clear error message. 3856- "gvim -v" doesn't start the GUI (if console support is present). 3857- When in Ex mode, use non-Visual selection for the whole screen. 3858- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim 3859 forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b" 3860 to run gvim in the background anyway. 3861 3862Motif GUI: 3863- Check for "-lXp" library in configure (but it doesn't work yet...). 3864- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the 3865 order to let a local Motif version override a system standard version. 3866 3867Win32 GUI: 3868- When using "-register" or "-unregister" in the non-OLE version, give an 3869 error message. 3870- Use GTK toolbar icons. Make window border look better. Use sizing handles 3871 on the lower left&right corners of the window. (Negri) 3872- When starting an external command with ":!start" and the command can not be 3873 executed, give an error message. (Webb) 3874- Use sizing handles for the grey rectangles below the scrollbars. Can draw 3875 toolbar in flat mode now, looks better. (Negri) 3876- Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN 3877 and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri) 3878 3879Avoid allocating the same string four times in buflist_findpat(). (Williams) 3880 3881Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and 3882't_IE'. Allows doing this on any terminal that supports setting the title 3883and/or icon text. (Schild) 3884 3885New 'x' flag in 'comments': Automatically insert the end part when its last 3886character is typed. Helps to close a /* */ comment in C. (Webb) 3887 3888When expand() has a second argument which is non-zero, don't use 'suffixes' 3889and 'wildignore', return all matches. 3890 3891'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if 3892it didn't exist when editing started but it does exist when the buffer is 3893written to the file. The file must have been created outside of Vim, possibly 3894without the user knowing it. When this is detected after a shell command, 3895give a warning message. 3896 3897When editing a new file, CTRL-G will show [New file]. When there were errors 3898while reading the file, CTRL-G will show [Read errors]. 3899 3900":wall" can now use a dialog and file-browsing when needed. 3901 3902Grouped functionality into new features, mainly to reduce the size of the 3903minimal version: 3904+linebreak: 'showbreak', 'breakat' and 'linebreak' 3905+visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines 3906 in a block, ">" and "<": Shifting a block, "r": Replacing a 3907 Visual area with one character. 3908+comments: 'comments' 3909+cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd. 3910"+title" Don't add code to set title or icon for MSDOS, this was not 3911 possible anyway. 3912+cmdline_compl Disable commandline completion at compile time, except for 3913 files, directories and help items. 3914 3915Moved features from a list of function calls into an array. Should save a bit 3916of space. 3917 3918While entering the body of a function, adjust indent according to "if" and 3919"while" commands. 3920 3921VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy. 3922 3923The flags in the 'comments' option can now include an offset. This makes it 3924possible to align "/*****", "/* xxx" and "/*" comments with the same 3925'comments' setting. The default value for 'comments' uses this. 3926Added 'O' flag: Don't use this part for the "O" command. Useful for "set 3927com=sO:*\ -,mO:*\ \ ,exO:*/" 3928 3929FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove 3930them to find the relevant extension. 3931 3932The tutorial for writing a Vim script file has been extended. 3933 3934Some more highlighting in help files, for items that are not typed literally. 3935 3936Can use "CTRL-W CTRL-G" like "CTRL-W g". 3937 3938"make test" for OS/2. 3939 3940Adjusted configure to automatically use the GUI for BeOS. 3941 3942 3943Fixed *fixed-5.4* 3944----- 3945 39465.3.1: When using an autocommand for BufWritePre that changes the name of the 3947buffer, freed memory would be used. (Geddes) 3948 3949Mac: Compiler didn't understand start of skip_class_name(). 3950 3951Win32 GUI: 3952- When cancelling the font requester, don't give an error message. 3953- When a tearoff-menu is open and its menu is deleted, Vim could crash. 3954 (Negri) 3955- There was a problem on Windows 95 with (un)maximizing the window. 3956 (Williams) 3957- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped 3958 with the keyboard. (Ralston) 3959- The tempname() function already created the file. Caused problems when 3960 using ":w". Now the file is deleted. 3961- Cursor disappeared when ending up in the top-left character on the screen 3962 after scrolling. (Webb) 3963- When adding a submenu for a torn-off menu, it was not updated. 3964- Menu tooltip was using the toolbar tooltip. (Negri) 3965- Setting 'notitle' didn't remove the title. (Steed) 3966- Using ":!start cmd" scrolled the screen one line up, and didn't wait for 3967 return when the command wasn't found. 3968 3969Cscope interface: Sorting of matches was wrong. Starting the interface could 3970fail. (Kahn) 3971 3972Motif GUI: Could not compile with Motif 1.1, because some tear-off 3973functionality was not in #ifdefs. 3974 3975Configure could sometimes not compile or link the test program for sizeof(int) 3976properly. This caused alignment problems for the undo structure allocations. 3977Added a safety check that SIZEOF_INT is not zero. 3978 3979Added configure check to test if strings.h can be included after string.h. 3980Some systems can't handle it. 3981Some systems need both string.h and strings.h included. Adjusted vim.h for 3982that. Removed including string.h from os_unixx.h, since it's already in 3983vim.h. (Savage) 3984AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and 3985strings.h, but after the configure check said it was OK. Also define 3986_NO_PROTO for AIX in the configure check. (Winn) 3987 3988When closing a window with CTRL-W c, the value of 'hidden' was not taken into 3989account, the buffer was always unloaded. (Negri) 3990 3991Unix Makefile: "make install" always tried to rename an older executable and 3992remove it. This caused an error message when it didn't exit. Added a check 3993for the existence of an old executable. 3994The command line for "make install" could get too long, because of the many 3995syntax files. Now first do a "cd" to reduce the length. 3996 3997On RISCOS and MSDOS, reading a file could fail, because the short filename was 3998used, which can be wrong after a ":!cd". 3999 4000In the DOS versions, the wrong install.exe was included (required Windows). 4001Now the install.exe version is included that is the same as the Vim version. 4002This also supports long file names where possible. 4003 4004When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O 4005would also be recorded. 4006 400732bit DOS version: "vim \file", while in a subdirectory, resulted in "new 4008file" for "file" in the local directory, while "\file" did exist. When 4009"file" in the current directory existed, this didn't happen. 4010 4011MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young) 4012 4013"make test" failed in the RedHat RPM, because compatible is off by default. 4014 4015In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars 4016were not updated until another character was typed. 4017 4018MSDOS: environment options in lowercase didn't work, although they did in the 4019Win32 versions. (Negri) 4020 4021After ":nohlsearch", a tag command switched highlighting back on. 4022 4023When using "append" command as the last line in an autocommand, Vim would 4024crash. 4025 4026RISCOS: The scroll bumpers (?) were not working properly. (Leonard) 4027 4028"zl" and "zh" could move the cursor, but this didn't set the column in which 4029e.g., "k" would move the cursor. 4030 4031When doing ":set all&" the value of 'scroll' was not set correctly. This 4032caused an error message when later setting any other number option. 4033 4034When 'hlsearch' highlighting has been disabled with ":nohlsearch", 4035incremental searching would switch it back on too early. 4036 4037When listing tags for ":tselect", and using a non-search command, and the last 4038character was equal to the first (e.g., "99"), the last char would not be 4039shown. 4040 4041When searching for tags with ":tag" Vim would assume that all matches had been 4042found when there were still more (e.g. from another tags file). 4043 4044Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when 4045upper/lowercase was different. 4046 4047Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END. Added these 4048to the builtin-xterm. 4049 4050In ex mode, any CR was seen as the end of the line. Only a NL should be 4051handled that way. broke ":s/foo/some^Mtext/". 4052 4053In menu.vim, a vmenu was used to override an amenu. That didn't work, because 4054the system menu file doesn't overwrite existing menus. Added explicit vunmenu 4055to solve this. 4056 4057Configure check for terminal library could find a library that doesn't work at 4058runtime (Solaris: shared library not found). Added a check that a program 4059with tgoto() can run correctly. 4060 4061Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors 4062compiling pathdef.c. Replaced it with "tr". 4063 4064Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files. 4065 4066Various XIM and multi-byte fixes: 4067- Fix user cannot see his language while he is typing his language with 4068 off-the-spot method. (Nagano) 4069- Fix preedit position using text/edit area (using gui.wid). (Nagano) 4070- remove 'fix dead key' codes. It was needed since XNFocusWindow was 4071 "x11_window", XNFocusWindow is now gui.wid. (Nagano) 4072- Remove some compile warnings and fix typos. (Namsh) 4073- For status area, check the gtk+ version while Vim runs. I believe it is 4074 better than compile time check. (Namsh) 4075- Remove one FIXME for gtk+-xim. (Namsh) 4076- XIM: Dead keys didn't work for Czech. (Vyskovsky) 4077- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM 4078 could convert it to special character. (Nam) 4079- Athena/Motif with XIM: fix preedit area. (Nam) 4080- XIM: Composed strings were sometimes ignored. Vim crashed when compose 4081 string was longer than 256 bytes. IM's geometry control is fixed. (Nam, 4082 Nagano) 4083- Win32 multi-byte: hollowed cursor width on a double byte char was wrong. 4084 (Nagano) 4085- When there is no GUI, selecting XIM caused compilation problems. 4086 Automatically disable XIM when there is no GUI in configure. 4087- Motif and Athena: When compiled with XIM, but the input method was not 4088 enabled, there would still be a status line. Now the status line is gone if 4089 the input method doesn't work. (Nam) 4090 4091Win32: tooltip was not removed when selecting a parent menu (it was when 4092selecting a menu entry). (Negri) 4093 4094Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call. 4095Removed it, it should not be necessary when exiting. 4096 4097Win32: Crash on keypress when compiled with Borland C++. (Aaron) 4098 4099When checking for Motif library files, prefer the same location as the include 4100files (with "include" replaced with "lib") above another entry. 4101 4102Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's 4103used in gui_x11.c. 4104 4105Win32: When testing for a timestamp of a file on floppy, would get a dialog 4106box when the floppy has been removed. Now return with an error. (Negri) 4107 4108Win32 OLE: When forced to come to the foreground, a minimized window was still 4109minimized, now it's restored. (Zivkov) 4110 4111There was no check for a positive 'shiftwidth'. A negative value could cause 4112a hangup, a zero value a crash. 4113 4114Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right 4115or left of the thumb. 4116 4117When making a Visual-block selection in one window, and trying to scroll 4118another, could cause errors for accessing non-existent line numbers. 4119 4120When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work 4121properly. 4122 4123Changed '\"' to '"' to make it compatible with old C compilers. 4124 4125The command line expansion for mappings caused a script with a TAB between lhs 4126and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs 4127when there are no mappings to expand. 4128 4129When editing a file with very long lines with 'scrolloff' set, "j" would 4130sometimes end up in a line which wasn't displayed. 4131 4132When editing a read-only file, it was completely read into memory, even when 4133it would not fit. Now create a swap file for a read-only file when running 4134out of memory while reading the file. 4135 4136When using ":set cino={s,e-s", a line after "} else {" was not indented 4137properly. Also added a check for this in test3.in. 4138 4139The Hebrew mapping for the command line was remembered for the next command 4140line. That isn't very useful, a command is not Hebrew. (Kol) 4141 4142When completing file names with embedded spaces, like "Program\ files", this 4143didn't work. Also for user commands. Moved backslash_halve() down to 4144mch_expandpath(). 4145 4146When using "set mouse=a" in Ex mode, mouse events were handled like typed 4147text. Then typing "quit" screwed up the mouse behavior of the xterm. 4148 4149When repeating an insert with "." that contains a CTRL-Y, a number 5 was 4150inserted as "053". 4151 4152Yanking a Visual area, with the cursor past the line, didn't move the cursor 4153back onto the line. Same for "~", "u", "U" and "g?" 4154 4155Win32: Default for 'grepprg' could be "findstr /n" even though there is no 4156findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if 4157it doesn't. 4158 4159Because gui_mouse_moved() inserted a leftmouse click in the input buffer, 4160remapping a leftmouse click caused strange effects. Now Insert another code 4161in the input buffer. Also insert a leftmouse release, to avoid the problem 4162with ":map <LeftMouse> l" that the next release is seen as the release for the 4163focus click. 4164 4165With 'wrap' on, when using a line that doesn't fit on the screen, if the start 4166of the Visual area is before the start of the screen, there was no 4167highlighting. Also, 'showbreak' doesn't work properly. 4168 4169DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands. 4170 4171When creating a swap file for a buffer which isn't the current buffer, could 4172get a mixup of short file name, resulting in a long file name when a short 4173file name was required. makeswapname() was calling modname() instead of 4174buf_modname(). 4175 4176When a function caused an error, and the error message was very long because 4177of recursiveness, this would cause a crash. 4178 4179'suffixes' were always compared with matching case. For MS-DOS, Win32 and 4180OS/2 case is now ignored. 4181 4182The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it. 4183 4184When generating a script file, 'cpo' was made empty. This caused backslashes 4185to disappear from mappings. Set it to "B" to avoid that. 4186 4187Lots of typos in the documentation. (Campbell) 4188 4189When editing an existing (hidden) buffer, jump to the last used cursor 4190position. (Madsen) 4191 4192On a Sun the xterm screen was not restored properly when suspending. (Madsen) 4193 4194When $VIMINIT is processed, 'nocompatible' was only set after processing it. 4195 4196Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard 4197all together. Cleaned up the code for using select() too. 4198 4199When executing external commands from the GUI, some typeahead was lost. Added 4200some code to regain as much typeahead as possible. 4201 4202When the window height is 5 lines or fewer, <PageDown> didn't use a one-line 4203overlap, while <PageUp> does. Made sure that <PageUp> uses the same overlap 4204as <PageDown>, so that using them both always displays the same lines. 4205 4206Removed a few unused functions and variables (found with lint). 4207 4208Dictionary completion didn't use 'infercase'. (Raul) 4209 4210Configure tests failed when the Perl library was not in LD_LIBRARY_PATH. 4211Don't use the Perl library for configure tests, add it to the linker line only 4212when linking Vim. 4213 4214When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that 4215has "%d" instead of "%p1%d". The light background colors didn't work then. 4216 4217GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs() 4218when the GUI is active. 4219 4220Could use the ":let" command to set the "count", "shell_error" and "version" 4221variables, but that didn't work. Give an error message when trying to set 4222them. 4223 4224On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it. 4225 4226When Vim is linked with -lncurses, but python uses -ltermcap, this causes 4227trouble: "OOPS". Configure now removes the -ltermcap. 4228 4229:@" and :*" didn't work properly, because the " was recognized as the start of 4230a comment. 4231 4232Win32s GUI: Minimizing the console where a filter command runs in caused 4233trouble for detecting that the filter command has finished. (Negri) 4234 4235After executing a filter command from an xterm, the mouse would be disabled. 4236It would work again after changing the mode. 4237 4238Mac GUI: Crashed in newenv(). (St-Amant) 4239 4240The menus and mappings in mswin.vim didn't handle text ending in a NL 4241correctly. (Acevedo) 4242 4243The ":k" command didn't check if it had a valid argument or extra characters. 4244Now give a meaningful error message. (Webb) 4245 4246On SGI, the signal function doesn't always have three arguments. Check for 4247struct sigcontext to find out. Might still be wrong... 4248 4249Could crash when using 'hlsearch' and search pattern is "^". 4250 4251When search patterns were saved and restored, status of no_hlsearch was not 4252also saved and restored (from ":nohlsearch" command). 4253 4254When using setline() to make a line shorter, the cursor position was not 4255adjusted. 4256 4257MS-DOS and Win95: When trying to edit a file and accidentally adding a slash 4258or backslash at the end, the file was deleted. Probably when trying to create 4259the swap file. Explicitly check for a trailing slash or backslash before 4260trying to read a file. 4261 4262X11 GUI: When starting the GUI failed and received a deadly signal while 4263setting the title, would lock up when trying to exit, because the title is 4264reset again. Avoid using mch_settitle() recursively. 4265 4266X11 GUI: When starting the GUI fails, and then trying it again, would crash, 4267because argv[] has been freed and x11_display was reset to NULL. 4268 4269Win32: When $HOME was set, would put "~user" in the swap file, which would 4270never compare with a file name, and never cause the attention message. Put 4271the full path in the swap file instead. 4272 4273Win32 console: There were funny characters at the end of the "vim -r" swap 4274files message (direct output of CR CR LF). 4275 4276DOS 32 bit: "vim -r" put the text at the top of the window. 4277 4278GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q". 4279 4280Motif and Win32 GUI: When changing 'guifont' to a font of the same size the 4281screen wasn't redrawn. 4282 4283Unix: When using ":make", jumping to a file b.c, which is already open as a 4284symbolic link a.c, opened a new buffer instead of using the existing one. 4285 4286Inserting text in the current buffer while sourcing the .vimrc file would 4287cause a crash or hang. The memfile for the current buffer was never 4288allocated. Now it's allocated as soon as something is written in the buffer. 4289 4290DOS 32 bit: "lightblue" background worked for text, but not drawn parts were 4291black. 4292 4293DOS: Colors of console were not restored upon exiting. 4294 4295When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode 4296caused the "recording" message to be doubled. 4297 4298Spurious "file changed" messages could happen on Windows. Now tolerate a one 4299second difference, like for Linux. 4300 4301GUI: When returning from Ex mode, scrollbars were not updated. 4302 4303Win32: Copying text to the clipboard containing a <CR>, pasting it would 4304replace it with a <NL> and drop the next character. 4305 4306Entering a double byte character didn't work if the second byte is in [xXoO]. 4307(Eric Lee) 4308 4309vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused 4310conflicts on Solaris. 4311 4312A pattern in an autocommand was treated differently on DOS et al. than on 4313Unix. Now it's the same, also when using backslashes. 4314 4315When using <Tab> twice for command line completion, without a match, the <Tab> 4316would be inserted. (Negri) 4317 4318Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri) 4319 4320Testing the result of mktemp() for failure was wrong. Could cause a crash. 4321(Peters) 4322 4323GUI: When checking for a ".gvimrc" file in the current directory, didn't check 4324for a "_gvimrc" file too. 4325 4326Motif GUI: When using the popup menu and then adding an item to the menu bar, 4327the menu bar would get very high. 4328 4329Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and 4330dialogs. Now they are ignored. 4331 4332When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in 4333'mouse' also for the more-prompt. 4334 4335When selecting a Visual area of more than 1023 lines, with 'guioptions' set to 4336"a", could mess up the display because of a message in free_yank(). Removed 4337that message, except for the Amiga. 4338 4339Moved auto-selection from ui_write() to the screen update functions. Avoids 4340unexpected behavior from a low-level function. Also makes the different 4341feedback of owning the selection possible. 4342 4343Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the 4344original indent instead of truncating it at the cursor. (Webb) 4345 4346":echo x" didn't stop at "q" for the more prompt. 4347 4348Various fixes for Macintosh. (St-Amant) 4349 4350When using 'selectmode' set to "exclusive", selecting a word and then using 4351CTRL-] included the character under the cursor. 4352 4353Using ":let a:name" in a function caused a crash. (Webb) 4354 4355When using ":append", an empty line didn't scroll up. 4356 4357DOS etc.: A file name starting with '!' didn't work. Added '!' to default for 4358'isfname'. 4359 4360BeOS: Compilation problem with prototype of skip_class_name(). (Price) 4361 4362When deleting more than one line, e.g., with "de", could still use "U" 4363command, which didn't work properly then. 4364 4365Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some 4366functions to ex_cmds.c. 4367 4368The expand() function would add a trailing slash for directories. 4369 4370Didn't give an error message when trying to assign a value to an argument of a 4371function. (Webb) 4372 4373Moved including sys/ptem.h to after termios.h. Needed for Sinix. 4374 4375OLE interface: Don't delete the object in CVimCF::Release() when the reference 4376count becomes zero. (Cordell) 4377VisVim could still crash on exit. (Erhardt) 4378 4379"case a: case b:" (two case statements in one line) aligned with the second 4380case. Now it uses one 'sw' for indent. (Webb) 4381 4382Font initialisation wasn't right for Athena/Motif GUI. Moved the call to 4383highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam) 4384 4385In Replace mode, backspacing over a TAB before where the replace mode started 4386while 'sts' is different from 'ts', would delete the TAB. 4387 4388Win32 console: When executing external commands and switching between the two 4389console screens, Vim would copy the text between the buffers. That caused the 4390screen to be messed up for backtick expansion. 4391 4392":winpos -1" then ":winpos" gave wrong error message. 4393 4394Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the 4395backslash before the $. Environment variables were not expanded anyway, 4396because of the backslash before the dollar. 4397 4398Using "-=" with ":set" could remove half a part when it contains a "\,". 4399E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b". 4400 4401When Visually selecting lines, with 'selection' set to "inclusive", including 4402the last char of the line, "<<" moved an extra line. Also for other operators 4403that always work on lines. 4404 4405link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed. 4406Now it only remove whole words. 4407 4408When jumped to a mark or using "fz", and there is an error, the current column 4409was lost. E.g. when using "$fzj". 4410 4411The "g CTRL-G" command could not be interrupted, even though it can take a 4412long time. 4413 4414Some terminals do have <F4> and <xF4>. <xF4> was always interpreted as <F4>. 4415Now map <xF4> to <F4>, so that the user can override this. 4416 4417When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be 4418used. (Aaron) 4419 4420This autocommand looped forever: ":au FileChangedShell * nested e <afile>" 4421Now FileChangeShell never nests. (Roemer) 4422 4423When evaluating an ":elseif" that was not going to matter anyway, ignore 4424errors. (Roemer) 4425 4426GUI Lesstif: Tearoff bar was the last item, instead of the first. 4427 4428GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to 4429'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would 4430still get a tearoff item in a new menu. 4431 4432An inode number can be "long long". Use ino_t instead of long. Added 4433configure check for ino_t. 4434 4435Binary search for tags was using a file offset "long" instead of "off_t". 4436 4437Insert mode completion of tags was not using 'ignorecase' properly. 4438 4439In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the 4440default mappings. Also caused errors for ":mkvimrc" and ":mksession". 4441 4442When jumping to another window while in Insert mode, would get the "warning: 4443changing readonly file" even when not making a change. 4444 4445A '(' or '{' inside a trailing "//" comment would disturb C-indenting. 4446When using two labels below each other, the second one was not indented 4447properly. Comments could mess up C-indenting in many places. (Roemer) 4448 4449Could delete or redefine a function while it was being used. Could cause a 4450crash. 4451In a function it's logical to prepend "g:" to a system variable, but this 4452didn't work. (Roemer) 4453 4454Hangul input: Buffer would overflow when user inputs invalid key sequence. 4455(Nam) 4456 4457When BufLoad or BufEnter autocommands change the topline of the buffer in the 4458window, it was overruled and the cursor put halfway the window. Now only put 4459the cursor halfway if the autocommands didn't change the topline. 4460 4461Calling exists("&option") always returned 1. (Roemer) 4462 4463Win32: Didn't take actually available memory into account. (Williams) 4464 4465White space after an automatically inserted comment leader was not removed 4466when 'ai' is not set and <CR> hit just after inserting it. (Webb) 4467 4468A few menus had duplicated accelerators. (Roemer) 4469 4470Spelling errors in documentation, quite a few "the the". (Roemer) 4471 4472Missing prototypes for Macintosh. (Kielhorn) 4473 4474Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't 4475executed in a disconnected process. 4476 4477When resizing the window, causing a line before the cursor to wrap or unwrap, 4478the cursor was displayed in the wrong position. 4479 4480There was quite a bit of dead code when compiling with minimal features. 4481 4482When doing a ":%s///" command that makes lines shorter, such that lines above 4483the final cursor position no longer wrap, the cursor position was not updated. 4484 4485get_id_list() could allocate an array one too small, when a "contains=" item 4486has a wildcard that matches a group name that is added just after it. E.g.: 4487"contains=a.*b,axb". Give an error message for it. 4488 4489When yanking a Visual area and using the middle mouse button -> crash. When 4490clipboard doesn't work, now make "* always use "". 4491 4492Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file". 4493 4494Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was 4495not cleared, the tselect prompt was on the last but one line. 4496 4497mksession didn't restore the cursor column properly when it was after a tab. 4498Could not get all windows back when using a smaller terminal screen. Didn't 4499restore all windows when "winsize" was not in 'sessionoptions'. (Webb) 4500 4501Command line completion for ":buffer" depended on 'ignorecase' for Unix, but 4502not for DOS et al.. Now don't use 'ignorecase', but let it depend on whether 4503file names are case sensitive or not (like when expanding file names). 4504 4505Win32 GUI: (Negri) 4506- Redrawing the background caused flicker when resizing the window. Removed 4507 _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the 4508 sndclass.style. 4509- Some parts of the window were drawn in grey, instead of using the color from 4510 the user color scheme. 4511- Dropping a file on gvim didn't activate the window. 4512- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for 4513 it. 4514 4515GUI: When resizing the window, would make the window height a bit smaller. 4516Now round off to the nearest char cell size. (Negri) 4517 4518In Vi the ")" and "(" commands don't stop at a single space after a dot. 4519Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer) 4520 4521When saving a session without any buffers loaded, there would be a ":normal" 4522command without arguments in it. (Webb) 4523 4524Memory leaks fixed: (Madsen) 4525- eval.c: forgot to release func structure when func deleted 4526- ex_docmd.c: forgot to release string after "<sfile>" 4527- misc1.c: leak when completion pattern had no matches. 4528- os_unix.c: forgot to release regexp after file completions 4529 4530Could crash when using a buffer without a name. (Madsen) 4531Could crash when doing file name completion, because of backslash_halve(). 4532(Madsen) 4533 4534":@a" would do mappings on register a, which is not Vi compatible. (Roemer) 4535 4536":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar" 4537and displayed "/foo.*()". (Roemer) 4538 4539OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file. 4540 4541Command line completion of options didn't work after "+=" and "-=". 4542 4543Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these 4544functions, which could fail if they are defined already. Use mch_memmove() to 4545redefine. 4546 4547Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but 4548":let a = expand("`xterm&`")" generated an error message, because the 4549redirection was put after the '&'. 4550 4551Win32 GUI: Dialog buttons could not be selected properly with cursor keys, 4552when the default is not the first button. (Webb) 4553 4554The "File has changed since editing started" (when regaining focus) could not 4555always be seen. (Webb) 4556 4557When starting with "ex filename", the file message was overwritten with 4558the "entering Ex mode" message. 4559 4560Output of ":tselect" listed name of file directly from the tags file. Now it 4561is corrected for the position of the tags file. 4562 4563When 'backspace' is 0, could backspace over autoindent. Now it is no longer 4564allowed (Vi compatible). 4565 4566In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting 4567Tabs, backspacing didn't work correctly for Tabs inserted at the start of the 4568line (unless 'sts' was set too). Also, when replacing the first non-blank 4569after which is a space, rounding the indent was done on the first non-blank 4570instead of on the character under the cursor. 4571 4572When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after 4573four spaces (they are replaced with a tab) couldn't backspace over the tab. 4574 4575In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent, 4576even when it was removed with CTRL-D. 4577 4578When repeating an insert command where a <BS>, <Left> or other key causes an 4579error, would flush buffers and remain in Insert mode. No longer flush 4580buffers, only beep and continue with the insert command. 4581 4582Dos and Win32 console: Setting t_me didn't work to get another color. Made 4583this works backwards compatible. 4584 4585For Turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase 4586translation in vim_strup() to avoid language problems. (Komur) 4587 4588Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully 4589this avoids a hangup in select(0, ..) for Solaris 2.6. 4590 4591Vim would crash when using a script file with 'let &sp = "| tee"', starting 4592vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set 4593for a string option, could cause problems with any string option. 4594 4595When using "cmd | vim -", stdin is not a terminal. This gave problems with 4596GPM (Linux console mouse) and when executing external commands. Now close 4597stdin and re-open it as a copy of stderr. 4598 4599Syntax highlighting: A "nextgroup" item was not properly stored in the state 4600list. This caused missing of next groups when not redrawing from start to 4601end, but starting halfway. 4602 4603Didn't check for valid values of 'ttymouse'. 4604 4605When executing an external command from the GUI, waiting for the child to 4606terminate might not work, causing a hang. (Parmelan) 4607 4608"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim 4609files and the vimtutor. 4610 4611Win32: "expand("%:p:h")" with no buffer name removed the directory name. 4612"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. 4613 4614Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': 4615highlighting was not correct. Now overlapping matches are handled correctly. 4616 4617Athena, Motif and GTK GUI: When started without focus, cursor was shown as if 4618with focus. 4619 4620Don't include 'shellpipe' when compiled without quickfix, it's not used. 4621Don't include 'dictionary' option when compiled without the +insert_expand 4622feature. 4623Only include the 'shelltype' option for the Amiga. 4624 4625When making a change to a line, with 'hlsearch' on, causing it to wrap, while 4626executing a register, the screen would not be updated correctly. This was a 4627generic problem in update_screenline() being called while must_redraw is 4628VALID. 4629 4630Using ":bdelete" in a BufUnload autocommand could cause a crash. The window 4631height was added to another window twice in close_window(). 4632 4633Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) 4634 4635Some performance bottlenecks removed. Allocating memory was not efficient. 4636For Win32 checking for available memory was slow, don't check it every time 4637now. On NT obtaining the user name takes a long time, cache the result (for 4638all systems). 4639 4640fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. 4641 4642When editing a new file and exiting, the marks for the buffer were not saved 4643in the viminfo file. 4644 4645":confirm only" didn't put up a dialog. 4646 4647These text objects didn't work when 'selection' was "exclusive": va( vi( va{ 4648vi{ va< vi< vi[ va[. 4649 4650The dialog for writing a readonly file didn't have a valid default. (Negri) 4651 4652The line number used for error messages when sourcing a file was reset when 4653modelines were inspected. It was wrong when executing a function. 4654 4655The file name and line number for an error message wasn't displayed when it 4656was the same as for the last error, even when this was long ago. Now reset 4657the name/lnum after a hit-enter prompt. 4658 4659In a session file, a "%" in a file name caused trouble, because fprintf() was 4660used to write it to the file. 4661 4662When skipping statements, a mark in an address wasn't skipped correctly: 4663"ka|if 0|'ad|else|echo|endif". (Roemer) 4664 4665":wall" could overwrite a not-edited file without asking. 4666 4667GUI: When $DISPLAY was not set or starting the GUI failed in another way, the 4668console mode then started with wrong colors and skipped initializations. Now 4669do an early check if the GUI can be started. Don't source the menu.vim or 4670gvimrc when it will not. Also do normal terminal initializations if the GUI 4671might not start. 4672 4673When using a BufEnter autocommand to position the cursor and scroll the 4674window, the cursor was always put at the last used line and halfway the window 4675anyhow. 4676 4677When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list 4678the matches. Also avoid that listing after a "longest" lists the wrong 4679matches when the first expansion changed the string in front of the cursor. 4680 4681When using ":insert", ":append" or ":change" inside a while loop, was not able 4682to break out of it with a CTRL-C. 4683 4684Win32: ":e ." took an awful long time before an error message when used in 4685"C:\". Was caused by adding another backslash and then trying to get the full 4686name for "C:\\". 4687 4688":winpos -10 100" was working like ":winpos -10 -10", because a pointer was 4689not advanced past the '-' sign. 4690 4691When obtaining the value of a hidden option, would give an error message. Now 4692just use a zero value. 4693 4694OS/2: Was using argv[0], even though it was not a useful name. It could be 4695just "vim", found in the search path. 4696 4697Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until 4698after a delay of 'updatetime'. Didn't check for the size-changed signal. 4699 4700'scrollbind' didn't work in Insert mode. 4701Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g., 4702when 'showcmd' was off). 4703 4704When compiled with minimal features but with GUI, switching on the mouse in an 4705xterm caused garbage, because the mouse codes were not recognized. Don't 4706enable the mouse when it can't be recognized. In the GUI it also didn't work, 4707the arguments to the mouse code were not interpreted. 4708 4709When 'showbreak' used, in Insert mode, when the cursor is just after the last 4710character in the line, which is also the in the rightmost column, the cursor 4711position would be like the 'showbreak' string is shown, but it wasn't. 4712 4713Autocommands could move the cursor in a new file, so that CTRL-W i didn't show 4714the right line. Same for when using a filemark to jump to another file. 4715 4716When redefining the argument list, the title used for other windows could be 4717showing the wrong info about the position in the argument list. Also update 4718this for a ":split" command without arguments. 4719 4720When editing file 97 of 13, ":Next" didn't work. Now it goes to the last 4721file in the argument list. 4722 4723Insert mode completion (for dictionaries or included files) could not be 4724interrupted by typing an <Esc>. Could get hit-enter prompt after line 4725completion, or whenever the informative message would get too long. 4726 4727When using the ":edit" command to re-edit the same file, an autocommand to 4728jump to the last cursor position caused the cursor to move. Now set the last 4729used cursor position to avoid this. 4730 4731When 'comments' has a part that starts with white space, formatting the 4732comment didn't work. 4733 4734At the ":tselect" prompt Normal mode mappings were used. That has been 4735disabled. 4736 4737When 'selection' is not "old", some commands still didn't allow the cursor 4738past the end-of-line in Visual mode. 4739 4740Athena: When a menu was deleted, it would appear again (but not functional) 4741when adding another menu. Now they don't reappear anymore (although they are 4742not really deleted either). 4743 4744Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri) 4745 4746"ze" didn't work when 'number' was on. (Davis) 4747 4748Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson) 4749 4750A few files were including proto.h a second time, after vim.h had already done 4751that, which could cause problems with the vim_realloc() macro. 4752 4753Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and 4754'*'. (Negri) 4755MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and 4756number keys work. (Negri) 4757 4758When finding a lot of matches for a tag completion, the check for avoiding 4759double matches could take a lot of time. Add a line_breakcheck() to be able 4760to interrupt this. (Deshpande) 4761 4762When the command line was getting longer than the screen, the more-prompt 4763would be given regularly, and the cursor position would be wrong. Now only 4764show the part of the command line that fits on the screen and force the cursor 4765to be positioned on the visible part. There can be text after the cursor 4766which isn't editable. 4767 4768At the more prompt and with the console dialog, a cursor key was interpreted 4769as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse 4770and scrollbar events. 4771 4772When typing a BS after inserting a middle comment leader, typing the last char 4773of the end comment leader still changed it into the end comment leader. (Webb) 4774 4775When a file system is full, writing to a swap file failed. Now first try to 4776write one block to the file. Try next entry in 'dir' if it fails. 4777 4778When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the 4779display. 4780 4781Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was 4782translated to "}" before the shell got it. Now don't remove backslashes when 4783wildcards are going to be expanded. 4784 4785Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a 4786file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" 4787still doesn't work though. 4788 4789"make test" didn't always work on DOS/Windows for test30, because it depended 4790on the external "echo" command. 4791 4792The link.sh script used "make" instead of $MAKE from the Makefile. Caused 4793problems for generating pathdef.c when "make" doesn't work properly. 4794 4795On versions that can do console and GUI: In the console a typed CSI code could 4796cause trouble. 4797 4798The patterns in expression evaluation didn't ignore the 'l' flag in 4799'cpoptions'. This broke the working of <CR> in the options window. 4800 4801When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still 4802highlighted red for trailing space. 4803 4804Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim 4805would loop while outputting "*" characters. vgetc() was called recursively, 4806thus it returns NUL. Added safe_vgetc(), which reads input directly from the 4807user in this situation. 4808 4809While reading text from stdin, only an empty screen was shown. Now show that 4810Vim is reading from stdin. 4811 4812The cursor shape wasn't set properly when returning to Insert mode, after 4813using a CTRL-O /asdf command which fails. It would be OK after a few seconds. 4814Now it's OK right away. 4815 4816The 'isfname' default for DOS/Windows didn't include the '@' character. File 4817names that contained "dir\@file" could not be edited. 4818 4819Win32 console: <C-S-Left> could cause a crash when compiled with Borland or 4820egcs. (Aaron) 4821 4822Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use 4823"#ifdef HAVE_DIRENT_H" instead. (Jones) 4824 4825When a matching tag is in the current file but has a search pattern that 4826doesn't match, the cursor would jump to the first line. 4827 4828Unix: Dependencies for pty.c were not included in Makefile. Dependency of 4829ctags/config.h was not included (only matters for parallel make). 4830 4831Removed a few Uninitialized Memory Reads (potential crashes). In do_call() 4832calling clear_var() when not evaluating. In win32_expandpath() and 4833dos_expandpath() calling backslash_halve() past the end of a file name. 4834 4835Removed memory leaks: Set_vim_var_string() never freed the value. The 4836next_list for a syntax keyword was never freed. 4837 4838On non-Unix systems, using a file name with wildcards without a match would 4839silently fail. E.g., ":e *.sh". Now give a "No match" error message. 4840 4841The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized 4842as Vim scripts. Renamed them to *.vim. 4843 4844[Note: some numbered patches are not relevant when upgrading from version 5.3, 4845they have been removed] 4846 4847Patch 5.4m.1 4848Problem: When editing a file with a long name, would get the hit-enter 4849 prompt, even though all settings are such that the name should be 4850 truncated to avoid that. filemess() was printing the file name 4851 without truncating it. 4852Solution: Truncate the message in filemess(). Use the same code as for 4853 msg_trunc_attr(), which is moved to the new function 4854 msg_may_trunc(). 4855Files: src/message.c, src/proto/message.pro, src/fileio.c 4856 4857Patch 5.4m.3 4858Problem: The Motif libraries were not found by configure for Digital Unix. 4859Solution: Add "/usr/shlib" to the search path. (Andy Kahn) 4860Files: src/configure.in, src/configure 4861 4862Patch 5.4m.5 4863Problem: Win32 GUI: When using the Save-As menu entry and selecting an 4864 existing file in the file browser, would get a dialog to confirm 4865 overwriting twice. (Ed Krall) 4866Solution: Removed the dialog from the file browser. It would be nicer to 4867 set the "forceit" flag and skip Vim's ":confirm" dialog, but it 4868 requires quite a few changes to do that. 4869Files: src/gui_w32.c 4870 4871Patch 5.4m.6 4872Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -", 4873 a message box would pop up with "-stdin-" (when exiting). (Michael 4874 Schaap) 4875Solution: Don't switch off termcap mode for versions that are GUI-only. 4876 They use another terminal to read from stdin. 4877Files: src/main.c, src/fileio.c 4878 4879Patch 5.4m.7 4880Problem: Unix: running configure with --enable-gtk-check, 4881 --enable-motif-check, --enable-athena-check or --enable-gtktest 4882 had the reverse effect. (Thomas Koehler) 4883Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE(). 4884Files: src/configure.in, src/configure 4885 4886Patch 5.4m.9 4887Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 4888 characters to the left. Syntax highlighting was wrong when a 4889 double-byte character was split for a wrapping line. When 4890 'showbreak' was on the splitting also didn't work. 4891Solution: Adjust getvcol() and win_line(). (Chong-Dae Park) 4892Files: src/charset.c, src/screen.c 4893 4894Patch 5.4m.11 4895Problem: The ":call" command didn't check for illegal trailing characters. 4896 (Stefan Roemer) 4897Solution: Add the check in do_call(). 4898Files: src/eval.c 4899 4900Patch 5.4m.13 4901Problem: With the ":s" command: 4902 1. When performing a substitute command, the mouse would be 4903 disabled and enabled for every substitution. 4904 2. The cursor position could be beyond the end of the line. 4905 Calling line_breakcheck() could try to position the cursor, 4906 which causes a crash in the Win32 GUI. 4907 3. When using ":s" in a ":g" command, the cursor was not put on 4908 the first non-white in the line. 4909 4. There was a hit-enter prompt when confirming the substitution 4910 and the replacement was a bit longer. 4911Solution: 1. Only disable/enable the mouse when asking for confirmation. 4912 2. Always put the cursor on the first character, it is going to be 4913 moved to the first non-blank anyway. 4914 Don't use the cursor position in gui_mch_draw_hollow_cursor(), 4915 get the character from the screen buffer. 4916 3. Added global_need_beginline flag to call beginline() after ":g" 4917 has finished all substitutions. 4918 4. Clear the need_wait_return flag after prompting the user. 4919Files: src/ex_cmds.c, src/gui_w32.c 4920 4921Patch 5.4m.14 4922Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end 4923 up with two swapfiles for "xxx". That is caused by the ":bdel" 4924 command which is executed when unloading the option-window. 4925 Also, there was no check if closing a buffer made the new one 4926 invalid, this could cause a crash. 4927Solution: When closing a buffer causes the current buffer to be deleted, 4928 use the new buffer to replace it. Also detect that the new buffer 4929 has become invalid as a side effect of closing the current one. 4930 Make autocommand that calls ":bdel" in optwin.vim nested, so that 4931 the buffer loading it triggers also executes autocommands. 4932 Also added a test for this in test13. 4933Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h 4934 src/testdir/test13.in, src/testdir/test13.ok 4935 4936Patch 5.4m.15 4937Problem: When using a BufEnter autocommand to reload the syntax file, 4938 conversion to HTML caused a crash. (Sung-Hyun Nam) 4939Solution: When using ":syntax clear" the current stack of syntax items was 4940 not cleared. This will cause memory to be used that has already 4941 been freed. Added call to invalidate_current_state() in 4942 syntax_clear(). 4943Files: src/syntax.c 4944 4945Patch 5.4m.17 4946Problem: When omitting a ')' in an expression it would not be seen as a 4947 failure. 4948 When detecting an error inside (), there would be an error message 4949 for a missing ')' too. 4950 When using ":echo 1+|echo 2" there was no error message. (Roemer) 4951 When using ":exe 1+" there was no error message. 4952 When using ":return 1+" there was no error message. 4953Solution: Fix do_echo(), do_execute() and do_return() to give an error 4954 message when eval1() returns FAIL. 4955 Fix eval6() to handle trailing ')' correctly and return FAIL when 4956 it's missing. 4957Files: src/eval.c 4958 4959Patch 5.4m.18 4960Problem: When using input() from inside an expression entered with 4961 "CTRL-R =" on the command line, there could be a crash. And the 4962 resulting command line was wrong. 4963Solution: Added getcmdline_prompt(), which handles recursive use of 4964 getcmdline() correctly. It also sets the command line prompt. 4965 Removed cmdline_prompt(). Also use getcmdline_prompt() for 4966 getting the crypt key in get_crypt_key(). 4967Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c 4968 4969Patch 5.4m.21 4970Problem: When starting up, the screen structures were first allocated at 4971 the minimal size, then initializations were done with Rows 4972 possibly different from screen_Rows. Caused a crash in rare 4973 situations (GTK with XIM and fontset). 4974Solution: Call screenalloc() in main() only after calling ui_get_winsize(). 4975 Also avoids a potential delay because of calling screenclear() 4976 while "starting" is non-zero. 4977Files: src/main.c 4978 4979Patch 5.4m.22 4980Problem: In the GUI it was possible that the screen was resized and the 4981 screen structures re-allocated while redrawing the screen. This 4982 could cause a crash (hard to reproduce). The call sequence goes 4983 through update_screen() .. syntax_start() .. ui_breakcheck() .. 4984 gui_resize_window() .. screenalloc(). 4985Solution: Set updating_screen while redrawing. If the window is resized 4986 remember the new size and handle it only after redrawing is 4987 finished. 4988 This also fixes that resizing the screen while still redrawing 4989 (slow syntax highlighting) would not work properly. 4990 Also disable display_hint, it was never used. 4991Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro 4992 4993Patch 5.4m.23 4994Problem: When using expand("<cword>") when there was no word under the 4995 cursor, would get an error message. Same for <cWORD> and <cfile>. 4996Solution: Don't give an error message, return an empty string. 4997Files: src/eval.c 4998 4999Patch 5.4m.24 5000Problem: ":help \|" didn't find anything. It was translated to "/\\|". 5001Solution: Translate "\|" into "\\bar". First check the table for specific 5002 translations before checking for "\x". 5003Files: src/ex_cmds.c 5004 5005Patch 5.4m.25 5006Problem: Unix: When using command line completion on files that contain 5007 ''', '"' or '|' the file name could not be used. 5008 Adding this file name to the Buffers menu caused an error message. 5009Solution: Insert a backslash before these three characters. 5010 Adjust Mungename() function to insert a backslash before '|'. 5011Files: src/ex_getln.c, runtime/menu.vim 5012 5013Patch 5.4m.26 5014Problem: When using a mapping of two function keys, e.g., <F1><F1>, and 5015 only the first char of the second key has been read, the mapping 5016 would not be recognized. Noticed on some Unix systems with xterm. 5017Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even 5018 when halfway a mapping. 5019Files: src/option.h, src/term.c 5020 5021Patch 5.4m.27 5022Problem: When making test33 without the lisp feature it hangs. Interrupting 5023 the execution of the script then might cause a crash. 5024Solution: In inchar(), after closing a script, don't use buf[] anymore. 5025 closescript() has freed typebuf[] and buf[] might be pointing 5026 inside typebuf[]. 5027 Avoid that test33 hangs when the lisp feature is missing. 5028Files: src/getchar.c src/testdir/test33.in 5029 5030"os2" was missing from the feature list. Useful for has("os2"). 5031 5032BeOS: 5033- Included patches from Richard Offer for BeOS R4.5. 5034- menu code didn't work right. Crashed in the Buffers menu. The window title 5035 wasn't set. (Offer) 5036 5037Patch 5.4n.3 5038Problem: C-indenting was wrong after " } else". The white space was not 5039 skipped. Visible when 'cino' has "+10". 5040Solution: Skip white space before calling cin_iselse(). (Norbert Zeh) 5041Files: src/misc1.c 5042 5043Patch 5.4n.4 5044Problem: When the 't' flag in 'cpoptions' is included, after a 5045 ":nohlsearch" the search highlighting would not be enabled again 5046 after a tag search. (Norbert Zeh) 5047Solution: When setting the new search pattern in jumpto_tag(), don't restore 5048 no_hlsearch. 5049Files: src/tag.c 5050 5051Patch 5.4n.5 5052Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The 5053 autocommand is executed down from vgetc(). Calling vgetc() 5054 recursively to execute the command doesn't work then. 5055Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error 5056 message when this happens. 5057Files: src/ex_docmd.c, runtime/doc/autocmd.txt 5058 5059Patch 5.4n.6 5060Problem: "gv" could reselect a Visual that starts and/or ends past the end 5061 of a line. (Robert Webb) 5062Solution: Check that the start and end of the Visual area are on a valid 5063 character by calling adjust_cursor(). 5064Files: src/normal.c 5065 5066Patch 5.4n.8 5067Problem: When a mark was on a non existing line (e.g., when the .viminfo 5068 was edited), jumping to it caused ml_get errors. (Alexey 5069 Marinichev). 5070Solution: Added check_cursor_lnum() in nv_gomark(). 5071Files: src/normal.c 5072 5073Patch 5.4n.9 5074Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) 5075Solution: Give an error message for a negative line number. 5076Files: src/ex_docmd.c 5077 5078Patch 5.4n.10 5079Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the 5080 text. This erased the prompt and made Vim look like it is in 5081 Normal mode, while it is actually still waiting for a <CR>. 5082Solution: Disallow scrolling at the hit-enter prompt for systems that use 5083 on the fly scrolling. 5084Files: src/message.c 5085 5086Patch 5.4n.14 5087Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than 5088 what fits on the screen, the window size was made smaller than 5089 asked for (that's OK) and Vim crashed (that's not OK)> 5090Solution: Call check_winsize() from gui_set_winsize() to resize the windows. 5091Files: src/gui.c 5092 5093Patch 5.4n.16 5094Problem: Win32 GUI: The <F10> key both selected the menu and was handled as 5095 a key hit. 5096Solution: Apply 'winaltkeys' to <F10>, like it is used for Alt keys. 5097Files: src/gui_w32.c 5098 5099Patch 5.4n.17 5100Problem: Local buffer variables were freed when the buffer is unloaded. 5101 That's not logical, since options are not freed. (Ron Aaron) 5102Solution: Free local buffer variables only when deleting the buffer. 5103Files: src/buffer.c 5104 5105Patch 5.4n.19 5106Problem: Doing ":e" (without argument) in an option-window causes trouble. 5107 The mappings for <CR> and <Space> are not removed. When there is 5108 another buffer loaded, the swap file for it gets mixed up. 5109 (Steve Mueller) 5110Solution: Also remove the mappings at the BufUnload event, if they are still 5111 present. 5112 When re-editing the same file causes the current buffer to be 5113 deleted, don't try editing it. 5114 Also added a test for this situation. 5115Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, 5116 src/testdir/test13.ok 5117 5118Patch 5.4n.24 5119Problem: BeOS: configure never enabled the GUI, because $with_x was "no". 5120 Unix prototypes caused problems, because Display and Widget are 5121 undefined. 5122 Freeing fonts on exit caused a crash. 5123Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes". 5124 Add dummy defines for Display and Widget in proto.h. 5125 Don't free the fonts in gui_exit() for BeOS. 5126Files: src/configure.in, src/configure, src/proto.h, src/gui.c. 5127 5128 5129The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild) 5130 5131Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined. 5132(Aaron) 5133 5134VMS: 5135- mch_setenv() had two arguments instead of three. 5136- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc". 5137 Removed the dot. 5138- call to RealWaitForChar() had one argument too many. (Campbell) 5139- WaitForChar() is static, removed the prototype from proto/os_vms.pro. 5140- Many file accesses failed, because Unix style file names were used. 5141 Translate file names to VMS style by using vim_fopen(). 5142- Filtering didn't work, because the temporary file name was generated wrong. 5143- There was an extra newline every 9192 characters when writing a file. Work 5144 around it by writing line by line. (Campbell) 5145- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". 5146 Only mattered for generating prototypes. 5147- Added file name translation to many places. Made easy by defining macros 5148 mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat(). 5149- Set default for 'tagbsearch' to off, because binary tag searching apparently 5150 doesn't work for VMS. 5151- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell) 5152 5153 5154Patch 5.4o.2 5155Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham) 5156Solution: Fix wrong use of pointers in get_file_name_in_path(). 5157Files: src/window.c 5158 5159Patch 5.4o.3 5160Problem: The horizontal scrollbar was not sized correctly when 'number' is 5161 set and 'wrap' not set. 5162 Athena: Horizontal scrollbar wasn't updated when the cursor was 5163 positioned with a mouse click just after dragging. 5164Solution: Subtract 8 from the size when 'number' set and 'wrap' not set. 5165 Reset gui.dragged_sb when a mouse click is received. 5166Files: src/gui.c 5167 5168Patch 5.4o.4 5169Problem: When running in an xterm and $WINDOWID is set to an illegal value, 5170 Vim would exit with "Vim: Got X error". 5171Solution: When using the display which was opened for the xterm clipboard, 5172 check if x11_window is valid by trying to obtain the window title. 5173 Also add a check in setup_xterm_clip(), for when using X calls to 5174 get the pointer position in an xterm. 5175Files: src/os_unix.c 5176 5177Patch 5.4o.5 5178Problem: Motif version with Lesstif: When removing the menubar and then 5179 using a menu shortcut key, Vim would crash. (raf) 5180Solution: Disable the menu mnemonics when the menu bar is removed. 5181Files: src/gui_motif.c 5182 5183Patch 5.4o.9 5184Problem: The DOS install.exe program used the "move" program. That doesn't 5185 work on Windows NT, where "move" is internal to cmd.exe. 5186Solution: Don't use an external program for moving the executables. Use C 5187 functions to copy the file and delete the original. 5188Files: src/dosinst.c 5189 5190Motif and Athena obtained the status area height differently from GTK. Moved 5191status_area_enabled from global.h to gui_x11.c and call 5192xim_get_status_area_height() to get the status area height. 5193 5194Patch 5.4p.1 5195Problem: When using auto-select, and the "gv" command is used, would not 5196 always obtain ownership of the selection. Caused by the Visual 5197 area still being the same, but ownership taken away by another 5198 program. 5199Solution: Reset the clipboard Visual mode to force updating the selection. 5200Files: src/normal.c 5201 5202Patch 5.4p.2 5203Problem: Motif and Athena with XIM: Typing 3-byte 5204 <multibyte><multibyte><space> doesn't work correctly with Ami XIM. 5205Solution: Avoid using key_sym XK_VoidSymbol. (Nam) 5206Files: src/multbyte.c, src/gui_x11.c 5207 5208Patch 5.4p.4 5209Problem: Win32 GUI: The scrollbar values were reduced for a file with more 5210 than 32767 lines. But this info was kept global for all 5211 scrollbars, causing a mixup between the windows. 5212 Using the down arrow of a scrollbar in a large file didn't work. 5213 Because of round-off errors there is no scroll at all. 5214Solution: Give each scrollbar its own scroll_shift field. When the down 5215 arrow is used, scroll several lines. 5216Files: src/gui.h, src/gui_w32.c 5217 5218Patch 5.4p.5 5219Problem: When changing buffers in a BufDelete autocommand, there could be 5220 ml_line errors and/or a crash. (Schandl) Was caused by deleting 5221 the current buffer. 5222Solution: When the buffer to be deleted unexpectedly becomes the current 5223 buffer, don't delete it. 5224 Also added a check for this in test13. 5225Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok 5226 5227Patch 5.4p.7 5228Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and 5229 clicking the right mouse button outside of the selected area, the 5230 selected area wasn't removed until the popup menu has gone. 5231 (Aaron) 5232Solution: Set the cursor and update the display before showing the popup 5233 menu. 5234Files: src/normal.c 5235 5236Patch 5.4p.8 5237Problem: The generated bugreport didn't contain information about 5238 $VIMRUNTIME and whether runtime files actually exist. 5239Solution: Added a few checks to the bugreport script. 5240Files: runtime/bugreport.vim 5241 5242Patch 5.4p.9 5243Problem: The windows install.exe created a wrong entry in the popup menu. 5244 The "%1" was "". The full directory was included, even when the 5245 executable had been moved elsewhere. (Ott) 5246Solution: Double the '%' to get one from printf. Only include the path to 5247 gvim.exe when it wasn't moved and it's not in $PATH. 5248Files: src/dosinst.c 5249 5250Patch 5.4p.10 5251Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used 5252 a short file name for a directory. 5253Solution: Change the "%1" to "%L" in the registry entry. 5254Files: src/dosinst.c 5255 5256Patch 5.4p.11 5257Problem: Motif, Athena and GTK: When closing the GUI window when there is a 5258 changed buffer, there was only an error message and Vim would not 5259 exit. 5260Solution: Put up a dialog, like for ":confirm qa". Uses the code that was 5261 already used for MS-Windows. 5262Files: src/gui.c, src/gui_w32.c 5263 5264Patch 5.4p.12 5265Problem: Win32: Trying to expand a string that is longer than 256 5266 characters could cause a crash. (Steed) 5267Solution: For the buffer in win32_expandpath() don't use a fixed size array, 5268 allocate it. 5269Files: src/os_win32.c 5270 5271MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for 5272fname_case() and mch_update_cursor() were missing. "fd" was unused in 5273mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in 5274mch_call_shell() for DJGPP version. 5275 5276============================================================================== 5277VERSION 5.5 *version-5.5* 5278 5279Version 5.5 is a bug-fix version of 5.4. 5280 5281 5282Changed *changed-5.5* 5283------- 5284 5285The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the 5286size of the executables. 5287 5288Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals 5289to it. 5290 5291'backspace' is now a string option. See patch 5.4.15. 5292 5293 5294Added *added-5.5* 5295----- 5296 5297Included Exuberant Ctags version 3.3. (Darren Hiebert) 5298 5299In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used 5300everywhere to do what CTRL-V used to do. 5301 5302Support for decompression of bzip2 files in vimrc_example.vim. 5303 5304When a patch is included, the patch number is entered in a table in version.c. 5305This allows skipping a patch without breaking a next one. 5306 5307Support for mouse scroll wheel in X11. See patch 5.5a.14. 5308 5309line2byte() can be used to get the size of the buffer. See patch 5.4.35. 5310 5311The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to 5312insert a register literally. See patch 5.4.48. 5313 5314Uninstall program for MS-Windows. To be able to remove the registry entries 5315for "Edit with Vim". It is registered to be run from the "Add/Remove 5316programs" application. See patch 5.4.x7. 5317 5318 5319Fixed *fixed-5.5* 5320----- 5321 5322When using vimrc_example.vim: An error message when the cursor is on a line 5323higher than the number of lines in the compressed file. Move the autocommand 5324for jumping to the last known cursor position to after the decompressing 5325autocommands. 5326 5327":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may 5328mark a file as modified, which causes problems. This is a buffer-specific 5329setting, it should not affect all files. 5330 5331"vim --version" wrote two empty lines. 5332 5333Unix: The alarm signal could kill Vim. It is generated by the Perl alarm() 5334function. Ignore SIGALRM. 5335 5336Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script. 5337 5338BeOS: "tmo" must be bigtime_t, instead of double. (Seibert) 5339 5340Patch 5.4.1 5341Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson) 5342Solution: Set $GZIP to an empty string. 5343Files: src/testdir/test11.in 5344 5345Patch 5.4.2 5346Problem: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal) 5347Solution: Check for a NULL pointer returned from get_crypt_key(). 5348Files: src/fileio.c 5349 5350Patch 5.4.3 5351Problem: Python: Trying to use the name of an unnamed buffer caused a 5352 crash. (Daniel Burrows) 5353Solution: Check for b_fname being a NULL pointer. 5354Files: src/if_python.c 5355 5356Patch 5.4.4 5357Problem: Win32: When compiled without toolbar, but the 'T' flag is in 5358 'guioptions', there would be an empty space for the toolbar. 5359Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri) 5360Files: src/gui.c 5361 5362Patch 5.4.5 5363Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash. 5364 Looks like any ":unmenu" command may cause trouble. 5365Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers 5366 menu, because the Refresh item would not work. 5367Files: src/menu.c, runtime/menu.vim 5368 5369Patch 5.4.6 5370Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only 5371 happens when the GUI forks. 5372Solution: Don't fork in a recursive call of gui_start(). 5373Files: src/gui.c 5374 5375Patch 5.4.7 5376Problem: Typing 'q' at the more prompt for the ATTENTION message causes the 5377 file loading to be interrupted. (Will Day) 5378Solution: Reset got_int after showing the ATTENTION message. 5379Files: src/memline.c 5380 5381Patch 5.4.8 5382Problem: Edit some file, ":he", ":opt": options from help window are shown, 5383 but pressing space updates from the other window. (Phillipps) 5384 Also: When there are changes in the option-window, ":q!" gives an 5385 error message. 5386Solution: Before creating the option-window, go to a non-help window. 5387 Use ":bdel!" to delete the buffer. 5388Files: runtime/optwin.vim 5389 5390Patch 5.4.9 5391 Just updates version.h. The real patch has been moved to 5.4.x1. 5392 This patch is just to keep the version number correct. 5393 5394Patch 5.4.10 5395Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It 5396 should run in the terminal. 5397Solution: Use gtk_init_check() instead of gtk_init(). 5398Files: src/gui_gtk_x11.c 5399 5400Patch 5.4.11 5401Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to 5402 the next buffer for some commands, e.g., ":buffer". 5403Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still 5404 copy the options used by do_help() when neither the "from" or "to" 5405 buffer is a help buffer. 5406Files: src/option.c 5407 5408Patch 5.4.12 5409Problem: When using 'smartindent', there would be no extra indent if the 5410 current line did not have any indent already. (Hanus Adler) 5411Solution: There was a wrongly placed "else", that previously matched with 5412 the "if" that set trunc_line. Removed the "else" and added a 5413 check for trunc_line to be false. 5414Files: src/misc1.c 5415 5416Patch 5.4.13 5417Problem: New SGI C compilers need another option for optimisation. 5418Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young) 5419Files: src/configure.in, src/configure 5420 5421Patch 5.4.14 5422Problem: Motif GUI: When the popup menu is present, a tiny window appears 5423 on the desktop for some users. 5424Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler) 5425Files: src/gui_motif.c 5426 5427Patch 5.4.15 5428Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no 5429 longer possible to only allow deleting autoindent. 5430Solution: Make 'backspace' a list of parts, to allow each kind of 5431 backspacing separately. 5432Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, 5433 runtime/doc/option.txt, runtime/doc/insert.txt 5434 5435Patch 5.4.16 5436Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure. 5437Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang) 5438Files: src/configure.in, src/configure 5439 5440Patch 5.4.17 5441Problem: GUI: When started from inside gvim with ":!gvim", Vim would not 5442 start. ":!gvim -f" works fine. 5443Solution: After forking, wait a moment in the parent process, to give the 5444 child a chance to set its process group. 5445Files: src/gui.c 5446 5447Patch 5.4.18 5448Problem: Python: The clear_history() function also exists in a library. 5449Solution: Rename clear_history() to clear_hist(). 5450Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro 5451 5452Patch 5.4.19 5453Problem: In a terminal with 25 lines, there is a more prompt after the 5454 ATTENTION message. When hitting 'q' here the dialog prompt 5455 doesn't appear and file loading is interrupted. (Will Day) 5456Solution: Don't allow quitting the printing of a message for the dialog 5457 prompt. Added the msg_noquit_more flag for this. 5458Files: src/message.c 5459 5460Patch 5.4.20 5461Problem: GTK: When starting gvim, would send escape sequences to the 5462 terminal to switch the cursor off and on. 5463Solution: Don't call msg_start() if the GUI is expected to start. 5464Files: src/main.c 5465 5466Patch 5.4.21 5467Problem: Motif: Toplevel menu ordering was wrong when using tear-off items. 5468Solution: Don't add one to the index for a toplevel menu. 5469Files: src/gui_motif.c 5470 5471Patch 5.4.22 5472Problem: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't 5473 update the column used for vertical movement. 5474Solution: Set curwin->w_set_curswant for those commands. 5475Files: src/edit.c 5476 5477Patch 5.4.23 5478Problem: When a Visual selection is lost to another program, and then the 5479 same text is Visually selected again, the clipboard ownership 5480 wasn't regained. 5481Solution: Set clipboard.vmode to NUL to force regaining the clipboard. 5482Files: src/normal.c 5483 5484Patch 5.4.24 5485Problem: Encryption: When using ":r file" while 'key' has already entered, 5486 the 'key' option would be messed up. When writing the file it 5487 would be encrypted with an unknown key and lost! (Brad Despres) 5488Solution: Don't free cryptkey when it is equal to the 'key' option. 5489Files: src/fileio.c 5490 5491Patch 5.4.25 5492Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not 5493 properly indented when starting a new line. (Mitterand) 5494Solution: When there is a comment leader for the new line, but 'autoindent' 5495 isn't set, do C-indenting. 5496Files: src/misc1.c 5497 5498Patch 5.4.26 5499Problem: Multi-byte: a multi-byte character is never recognized in a file 5500 name, causing a backslash before it to be removed on Windows. 5501Solution: Assume that a leading-byte character is a file name character in 5502 vim_isfilec(). 5503Files: src/charset.c 5504 5505Patch 5.4.27 5506Problem: Entries in the PopUp[nvic] menus were added for several modes, but 5507 only deleted for the mode they were used for. This resulted in 5508 the entry remaining in the PopUp menu. 5509 When removing a PopUp[nvic] menu, the name had been truncated, 5510 could result in greying-out the whole PopUp menu. 5511Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove 5512 the PopUp[nvic] menu entries first, before the name is changed. 5513Files: src/menu.c 5514 5515Patch 5.4.28 5516Problem: When using a BufWritePre autocommand to change 'fileformat', the 5517 new value would not be used for writing the file. 5518Solution: Check 'fileformat' after executing the autocommands instead of 5519 before. 5520Files: src/fileio.c 5521 5522Patch 5.4.29 5523Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a 5524 menu can result in a crash. 5525Solution: Always grey-out menus for Athena, don't hide them. 5526Files: src/menu.c 5527 5528Patch 5.4.30 5529Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The 5530 first character typed after ":sh" goes to Vim, instead of the 5531 started shell. 5532Solution: Don't suspend Vim, start a new shell. Kill the async read thread 5533 when starting a new shell. It will be restarted later. (Will Day) 5534Files: src/os_unix.c, src/ui.c 5535 5536Patch 5.4.31 5537Problem: GUI: When 'mousefocus' is set, moving the mouse over where a 5538 window boundary was, causes a hit-enter prompt to be finished. 5539 (Jeff Walker) 5540Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it 5541 for the more prompt and a few other situations. When an operator 5542 is pending, abort it first. 5543Files: src/gui.c 5544 5545Patch 5.4.32 5546Problem: Unix: $LDFLAGS was not passed to configure. 5547Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner) 5548Files: src/Makefile 5549 5550Patch 5.4.33 5551Problem: Unix: After expanding an environment variable with the shell, the 5552 next expansion would also use the shell, even though it is not 5553 needed. 5554Solution: Reset "recursive" before returning from gen_expand_wildcards(). 5555Files: src/misc1.c 5556 5557Patch 5.4.34 (also see 5.4.x5) 5558Problem: When editing a file, and the file name is relative to a directory 5559 above the current directory, the file name was made absolute. 5560 (Gregory Margo) 5561Solution: Add an argument to shorten_fnames() which indicates if all file 5562 names should be shortened, or only absolute names. In main() only 5563 use shorten_fnames() to shorten absolute names. 5564Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro 5565 5566Patch 5.4.35 5567Problem: There is no function to get the current file size. 5568Solution: Allow using line2byte() with the number of lines in the file plus 5569 one. This returns the offset of the line past the end of the 5570 file, which is the file size plus one. 5571Files: src/eval.c, runtime/doc/eval.txt 5572 5573Patch 5.4.36 5574Problem: Comparing strings while ignoring case didn't work correctly for 5575 some machines. (Mide Steed) 5576Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed 5577 them to return -1 when the first argument is smaller. 5578Files: src/misc2.c 5579 5580Patch 5.4.37 (also see 5.4.40 and 5.4.43) 5581Problem: Long strings from the viminfo file are truncated. 5582Solution: When writing a long string to the viminfo file, first write a line 5583 with the length, then the string itself in a second line. 5584Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, 5585 src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim 5586 5587Patch 5.4.38 5588Problem: In the option-window, ":set go&" resulted in 'go' being handled 5589 like a boolean option. 5590 Mappings for <Space> and <CR> were overruled by the option-window. 5591Solution: When the value of an option isn't 0 or 1, don't handle it like a 5592 boolean option. 5593 Save and restore mappings for <Space> and <CR> when entering and 5594 leaving the option-window. 5595Files: runtime/optwin.vim 5596 5597Patch 5.4.39 5598Problem: When setting a hidden option, spaces before the equal sign were 5599 not skipped and cause an error message. E.g., ":set csprg =cmd". 5600Solution: When skipping over a hidden option, check for a following "=val" 5601 and skip it too. 5602Files: src/option.c 5603 5604Patch 5.4.40 (depends on 5.4.37) 5605Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn) 5606Solution: Add a typecast: "atol((char *)p + 1)". 5607Files: src/ex_cmds.c 5608 5609Patch 5.4.41 5610Problem: Some commands that were not included would give an error message, 5611 even when after "if 0". 5612Solution: Don't give an error message for an unsupported command when not 5613 executing the command. 5614Files: src/ex_docmd.c 5615 5616Patch 5.4.42 5617Problem: ":w" would also cause a truncated message to appear in the message 5618 history. 5619Solution: Don't put a kept message in the message history when it starts 5620 with "<". 5621Files: src/message.c 5622 5623Patch 5.4.43 (depends on 5.4.37) 5624Problem: Mixing long lines with multiple lines in a register causes errors 5625 when writing the viminfo file. (Robinson) 5626Solution: When reading the viminfo file to skip register contents, skip 5627 lines that start with "<". 5628Files: src/ops.c 5629 5630Patch 5.4.44 5631Problem: When 'whichwrap' includes '~', a "~" command that goes on to the 5632 next line cannot be properly undone. (Zellner) 5633Solution: Save each line for undo in n_swapchar(). 5634Files: src/normal.c 5635 5636Patch 5.4.45 (also see 5.4.x8) 5637Problem: When expand("$ASDF") fails, there is an error message. 5638Solution: Remove the global expand_interactively. Pass a flag down to skip 5639 the error message. 5640 Also: expand("$ASDF") returns an empty string if $ASDF isn't set. 5641 Previously it returned "$ASDF" when 'shell' is "sh". 5642 Also: system() doesn't print an error when the command returns an 5643 error code. 5644Files: many 5645 5646Patch 5.4.46 5647Problem: Backspacing did not always use 'softtabstop' after hitting <CR>, 5648 inserting a register, moving the cursor, etc. 5649Solution: Reset inserted_space much more often in edit(). 5650Files: src/edit.c 5651 5652Patch 5.4.47 5653Problem: When executing BufWritePre or BufWritePost autocommands for a 5654 hidden buffer, the cursor could be moved to a non-existing 5655 position. (Vince Negri) 5656Solution: Save and restore the cursor and topline for the current window 5657 when it is going to be used to execute autocommands for a hidden 5658 buffer. Use an existing window for the buffer when it's not 5659 hidden. 5660Files: src/fileio.c 5661 5662Patch 5.4.48 5663Problem: A paste with the mouse in Insert mode was not repeated exactly the 5664 same with ".". For example, when 'autoindent' is set and pasting 5665 text with leading indent. (Perry) 5666Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert 5667 mode, which insert the contents of a register literally. 5668Files: src/edit.c, src/normal.c, runtime/doc/insert.txt 5669 5670Patch 5.4.49 5671Problem: When pasting text with [ <MiddleMouse>, the cursor could end up 5672 after the last character of the line. 5673Solution: Correct the cursor position for the change in indent. 5674Files: src/ops.c 5675 5676Patch 5.4.x1 (note: Replaces patch 5.4.9) 5677Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not 5678 defined until vim.h is included. 5679Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where 5680 it is used. 5681Files: src/gui_w32.c 5682 5683Patch 5.4.x2 5684Problem: BeOS: When pasting text, one character was moved to the end. 5685Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out 5686 with acquire_sem_etc(). (Will Day) 5687Files: src/os_beos.c, src/ui.c 5688 5689Patch 5.4.x3 5690Problem: Win32 GUI: When dropping a directory on a running gvim it crashes. 5691Solution: Avoid using a NULL file name. Also display a message to indicate 5692 that the current directory was changed. 5693Files: src/gui_w32.c 5694 5695Patch 5.4.x4 5696Problem: Win32 GUI: Removing an item from the popup menu doesn't work. 5697Solution: Don't remove the item from the menubar, but from the parent popup 5698 menu. 5699Files: src/gui_w32.c 5700 5701Patch 5.4.x5 (addition to 5.4.34) 5702Files: src/gui_w32.c 5703 5704Patch 5.4.x6 5705Problem: Win32: Expanding (dir)name starting with a dot doesn't work. 5706 (McCormack) Only when there is a path before it. 5707Solution: Fix the check, done before expansion, if the file name pattern 5708 starts with a dot. 5709Files: src/os_win32.c 5710 5711Patch 5.4.x7 5712Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult. 5713Solution: Add uninstall program to remove the registry keys. It is installed 5714 in the "Add/Remove programs" list for ease of use. 5715 Also: don't set $VIM when the executable is with the runtime files. 5716 Also: Add a text file with a step-by-step description of how to 5717 uninstall Vim for DOS and Windows. 5718Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt 5719 5720Patch 5.4.x8 (addition to 5.4.45) 5721Files: many 5722 5723Patch 5.4.x9 5724Problem: Win32 GUI: After executing an external command, focus is not 5725 always regained (when using focus-follows-mouse). 5726Solution: Add SetFocus() in mch_system(). (Mike Steed) 5727Files: src/os_win32.c 5728 5729 5730Patch 5.5a.1 5731Problem: ":let @* = @:" did not work. The text was not put on the 5732 I clipboard. (Fisher) 5733Solution: Own the clipboard and put the text on it. 5734Files: src/ops.c 5735 5736Patch 5.5a.2 5737Problem: append() did not mark the buffer modified. Marks below the 5738 new line were not adjusted. 5739Solution: Fix the f_append() function. 5740Files: src/eval.c 5741 5742Patch 5.5a.3 5743Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, 5744 because there is no "mv" command. 5745Solution: Add the rename() function and use it instead of ":!mv". 5746 Also: Disable the automatic jump to the last position, because it 5747 changes the jumplist. 5748Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim 5749 5750Patch 5.5a.4 5751Problem: When using whole-line completion in insert mode while the cursor 5752 is in the indent, get "out of memory" error. (Stekrt) 5753Solution: Don't allocate a negative amount of memory in ins_complete(). 5754Files: src/edit.c 5755 5756Patch 5.5a.5 5757Problem: Win32: The 'path' option can hold only up to 256 characters, 5758 because _MAX_PATH is 256. (Robert Webb) 5759Solution: Use a fixed path length of 1024. 5760Files: src/os_win32.h 5761 5762Patch 5.5a.6 5763Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work. 5764Solution: Add $(SUFFIX) to all places where an executable is used. Also 5765 pass it to ctags. (Reynolds) 5766Files: src/Makefile 5767 5768Patch 5.5a.7 5769Problem: When using "cat | vim -" in an xterm, the xterm version reply 5770 would end up in the file. 5771Solution: Read the file from stdin before switching the terminal to RAW 5772 mode. Should also avoid problems with programs that use a 5773 specific terminal setting. 5774 Also: when using the GUI, print "Reading from stdin..." in the GUI 5775 window, to give a hint why it doesn't do anything. 5776Files: src/main.c, src/fileio.c 5777 5778Patch 5.5a.8 5779Problem: On multi-threaded Solaris, suspending doesn't work. 5780Solution: Call pause() when the SIGCONT signal was not received after 5781 sending the SIGTSTP signal. (Nagano) 5782Files: src/os_unix.c 5783 5784Patch 5.5a.9 5785Problem: 'winaltkeys' could be set to an empty argument, which is illegal. 5786Solution: Give an error message when doing ":set winaltkeys=". 5787Files: src/option.c 5788 5789Patch 5.5a.10 5790Problem: Win32 console: Using ALTGR on a German keyboard to produce "}" 5791 doesn't work, because the 8th bit is set when ALT is pressed. 5792Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert) 5793Files: src/os_win32.c 5794 5795Patch 5.5a.11 5796Problem: Tcl: Configure always uses tclsh8.0. 5797 Also: Loading a library doesn't work. 5798Solution: Add "--with-tclsh" configure argument to allow specifying another 5799 name for the tcl shell. 5800 Call Tcl_Init() in tclinit() to make loading libraries work. 5801 (Johannes Zellner) 5802Files: src/configure.in, src/configure, src/if_tcl.c 5803 5804Patch 5.5a.12 5805Problem: The "user_commands" feature is called "user-commands". 5806Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom) 5807 Keep "user-commands" for the has() function, to remain backwards 5808 compatible with 5.4. 5809Files: src/eval.c, src/version.c 5810 5811Patch 5.5a.13 5812Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo 5813 file. That is very wrong when OS/2 is on another partition. 5814Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS. 5815 Also: Makefile.os2 didn't depend on os_unix.h. 5816Files: src/os_unix.h, src/Makefile.os2 5817 5818Patch 5.5a.14 5819Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work. 5820Solution: Interpret a click of the wheel as a key press of the <MouseDown> 5821 or <MouseUp> keys. Default behavior is to scroll three lines, or 5822 a full page when Shift is used. 5823Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, 5824 src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, 5825 src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, 5826 runtime/doc/scroll.txt 5827 5828Patch 5.5a.15 5829Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert 5830 started with the <Insert> key. (Andreas Rohrschneider) 5831Solution: Replace <Insert> with "i" before setting up the redo buffer. 5832Files: src/normal.c 5833 5834Patch 5.5a.16 5835Problem: VMS: GUI does not compile and run. 5836Solution: Various fixes. (Zoltan Arpadffy) 5837 Moved functions from os_unix.c to ui.c, so that VMS can use them 5838 too: open_app_context(), x11_setup_atoms() and clip_x11* functions. 5839 Made xterm_dpy global, it's now used by ui.c and os_unix.c. 5840 Use gethostname() always, sys_hostname doesn't exist. 5841Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, 5842 src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro 5843 5844Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar() 5845to avoid symbol length limit of 31 characters. (Steve P. Wall) 5846 5847Patch 5.5b.1 5848Problem: SASC complains about dead assignments and implicit type casts. 5849Solution: Removed the dead assignments. Added explicit type casts. 5850Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, 5851 src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, 5852 src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, 5853 src/screen.c 5854 5855Patch 5.5b.2 5856Problem: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in 5857 another line truncates that line. (Devin Weaver) 5858Solution: When using a command that starts Insert mode from CTRL-O, reset 5859 "restart_edit" first. This avoids that edit() is called with a 5860 mix of starting a new edit command and restarting a previous one. 5861Files: src/normal.c 5862 5863============================================================================== 5864VERSION 5.6 *version-5.6* 5865 5866Version 5.6 is a bug-fix version of 5.5. 5867 5868 5869Changed *changed-5.6* 5870------- 5871 5872Small changes to OleVim files. (Christian Schaller) 5873 5874Inserted "/**/" between patch numbers in src/version.c. This allows for one 5875line of context, which some versions of patch need. 5876 5877Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts 5878for alphabetical items to avoid a clash with fixed items. 5879 5880 5881Added *added-5.6* 5882----- 5883 5884Included Exuberant Ctags version 3.4. (Darren Hiebert) 5885 5886OpenWithVim in Python. (Christian Schaller) 5887 5888Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids 5889the reported problems with the MS Office taskbar. Now it's a Shell Extension. 5890(Tianmiao Hu) 5891 5892New syntax files: 5893abel Abel (John Cook) 5894aml Arc Macro Language (Nikki Knuit) 5895apachestyle Apache-style config file (Christian Hammers) 5896cf Cold Fusion (Jeff Lanzarotta) 5897ctrlh files with CTRL-H sequences (Bram Moolenaar) 5898cupl CUPL (John Cook) 5899cuplsim CUPL simulation (John Cook) 5900erlang Erlang (Kresimir Marzic) 5901gedcom Gedcom (Paul Johnson) 5902icon Icon (Wendell Turner) 5903ist MakeIndex style (Peter Meszaros) 5904jsp Java Server Pages (Rafael Garcia-Suarez) 5905rcslog Rcslog (Joe Karthauser) 5906remind Remind (Davide Alberani) 5907sqr Structured Query Report Writer (Paul Moore) 5908tads TADS (Amir Karger) 5909texinfo Texinfo (Sandor Kopanyi) 5910xpm2 X Pixmap v2 (Steve Wall) 5911 5912The 'C' flag in 'cpoptions' can be used to switch off concatenation for 5913sourced lines. See patch 5.5.013 below. |line-continuation| 5914 5915"excludenl" argument for the ":syntax" command. See patch 5.5.032 below. 5916|:syn-excludenl| 5917 5918Implemented |z+| and |z^| commands. See patch 5.5.050 below. 5919 5920Vim logo in Corel Draw format. Can be scaled to any resolution. 5921 5922 5923Fixed *fixed-5.6* 5924----- 5925 5926Using this mapping in Select mode, terminated completion: 5927":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher) 5928Ignore K_SELECT in ins_compl_prep(). 5929 5930VMS (Zoltan Arpadffy, David Elins): 5931- ioctl() in pty.c caused trouble, #ifndef VMS added. 5932- Cut & paste mismatch corrected. 5933- Popup menu line crash corrected. (Patch 5.5.047) 5934- Motif directories during open and save as corrected. 5935- Handle full file names with version numbers. (Patch 5.5.046) 5936- Directory handling (CD command etc.) 5937- Corrected file name conversion VMS to Unix and v.v. 5938- Recovery was not working. 5939- Terminal and signal handling was outdated compared to os_unix.c. 5940- Improved os_vms.txt. 5941 5942Configure used fprintf() instead of printf() to check for __DATE__ and 5943__TIME__. (John Card II) 5944 5945BeOS: Adjust computing the char_height and char_ascent. Round them up 5946separately, avoids redrawing artifacts. (Mike Steed) 5947 5948Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and 5949findmatchlimit(). (Taro Muraoka) 5950 5951GTK GUI: 5952- With GTK 1.2.5 and later the scrollbars were not redrawn correctly. 5953- Adjusted the gtk_form_draw() function. 5954- SNiFF connection didn't work. 5955- 'mousefocus' was not working. (Dalecki) 5956- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@. 5957 5958 5959Patch 5.5.001 5960Problem: Configure in the top directory did not pass on an argument with a 5961 space correctly. For example "./configure --previs="/My home". 5962 (Stephane Chazelas) 5963Solution: Use '"$@"' instead of '$*' to pass on the arguments. 5964Files: configure 5965 5966Patch 5.5.002 5967Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker) 5968Solution: Use "fds[].revents & POLLIN". 5969Files: src/os_unix.c 5970 5971Patch 5.5.003 5972Problem: The autoconf check for sizeof(int) is wrong on machines where 5973 sizeof(size_t) != sizeof(int). 5974Solution: Use our own configure check. Also fixes the warning for 5975 cross-compiling. 5976Files: src/configure.in, src/configure 5977 5978Patch 5.5.004 5979Problem: On Unix it's not possible to interrupt ":sleep 100". 5980Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to 5981 wake us up. But switch off echo, added TMODE_SLEEP. 5982Files: src/term.h, src/os_unix.c 5983 5984Patch 5.5.005 5985Problem: When using <f-args> with a user command, an empty argument to the 5986 command resulted in one empty string, while no string was 5987 expected. 5988Solution: Catch an empty argument and pass no argument to the function. 5989 (Paul Moore) 5990Files: src/ex_docmd.c 5991 5992Patch 5.5.006 5993Problem: Python: When platform-dependent files are in another directory 5994 than the platform-independent files it doesn't work. 5995Solution: Also check the executable directory, and add it to CFLAGS. (Tessa 5996 Lau) 5997Files: src/configure.in, src/configure 5998 5999Patch 5.5.007 (extra) 6000Problem: Win32 OLE: Occasional crash when exiting while still being used 6001 via OLE. 6002Solution: Move OleUninitialize() to before deleting the application object. 6003 (Vince Negri) 6004Files: src/if_ole.cpp 6005 6006Patch 5.5.008 6007Problem: 10000@@ takes a long time and cannot be interrupted. 6008Solution: Check for CTRL-C typed while in the loop to push the register. 6009Files: src/normal.c 6010 6011Patch 5.5.009 6012Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader) 6013Solution: Remove configure check for Sequent. 6014Files: src/configure.in, src/configure 6015 6016Patch 5.5.010 6017Problem: Ctags freed a memory block twice when exiting. When out of 6018 memory, a misleading error message was given. 6019Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren 6020 Hiebert) 6021Files: src/ctags/* 6022 6023Patch 5.5.011 6024Problem: After "CTRL-V s", the cursor jumps back to the start, while all 6025 other operators leave the cursor on the last changed character. 6026 (Xiangjiang Ma) 6027Solution: Position cursor on last changed character, if possible. 6028Files: src/ops.c 6029 6030Patch 5.5.012 6031Problem: Using CTRL-] in Visual mode doesn't work when the text includes a 6032 space (just where it's useful). (Stefan Bittner) 6033Solution: Don't escape special characters in a tag name with a backslash. 6034Files: src/normal.c 6035 6036Patch 5.5.013 6037Problem: The ":append" and ":insert" commands allow using a leading 6038 backslash in a line. The ":source" command concatenates those 6039 lines. (Heinlein) 6040Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation. 6041Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, 6042 runtime/filetype.vim, runtime/scripts.vim 6043 6044Patch 5.5.014 6045Problem: When executing a register with ":@", the ":append" command would 6046 get text lines with a ':' prepended. (Heinlein) 6047Solution: Remove the ':' characters. 6048Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h 6049 6050Patch 5.5.015 6051Problem: When using ":g/pat/p", it's hard to see where the output starts, 6052 the ":g" command is overwritten. Vi keeps the ":g" command. 6053Solution: Keep the ":g" command, but allow overwriting it with the report 6054 for the number of changes. 6055Files: src/ex_cmds.c 6056 6057Patch 5.5.016 (extra) 6058Problem: Win32: Using regedit to install Vim in the popup menu requires the 6059 user to confirm this in a dialog. 6060Solution: Use "regedit /s" to avoid the dialog 6061Files: src/dosinst.c 6062 6063Patch 5.5.017 6064Problem: If an error occurs when closing the current window, Vim could get 6065 stuck in the error handling. 6066Solution: Don't set curwin to NULL when closing the current window. 6067Files: src/window.c 6068 6069Patch 5.5.018 6070Problem: Absolute paths in shell scripts do not always work. 6071Solution: Use /usr/bin/env to find out the path. 6072Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, 6073 runtime/tools/shtags.pl 6074 6075Patch 5.5.019 6076Problem: A function call in 'statusline' stops using ":q" twice from 6077 exiting, when the last argument hasn't been edited. 6078Solution: Don't decrement quitmore when executing a function. (Madsen) 6079Files: src/ex_docmd.c 6080 6081Patch 5.5.020 6082Problem: When the output of CTRL-D completion in the commandline goes all 6083 the way to the last column, there is an empty line. 6084Solution: Don't add a newline when the cursor wrapped already. (Madsen) 6085Files: src/ex_getln.c 6086 6087Patch 5.5.021 6088Problem: When checking if a file name in the tags file is relative, 6089 environment variables were not expanded. 6090Solution: Expand the file name before checking if it is relative. (Madsen) 6091Files: src/tag.c 6092 6093Patch 5.5.022 6094Problem: When setting or resetting 'paste' the ruler wasn't updated. 6095Solution: Update the status lines when 'ruler' changes because of 'paste'. 6096Files: src/option.c 6097 6098Patch 5.5.023 6099Problem: When editing a new file and autocommands change the cursor 6100 position, the cursor was moved back to the first non-white, unless 6101 'startofline' was reset. 6102Solution: Keep the new column, just like the line number. 6103Files: src/ex_cmds.c 6104 6105Patch 5.5.024 (extra) 6106Problem: Win32 GUI: When using confirm() to put up a dialog without a 6107 default button, the dialog would not have keyboard focus. 6108 (Krishna) 6109Solution: Always set focus to the dialog window. Only set focus to a button 6110 when a default one is specified. 6111Files: src/gui_w32.c 6112 6113Patch 5.5.025 6114Problem: When using "keepend" in a syntax region, a contained match that 6115 includes the end-of-line could still force that region to 6116 continue, if there is another contained match in between. 6117Solution: Check the keepend_level in check_state_ends(). 6118Files: src/syntax.c 6119 6120Patch 5.5.026 6121Problem: When starting Vim in a white-on-black xterm, with 'bg' set to 6122 "dark", and then starting the GUI with ":gui", setting 'bg' to 6123 "light" in the gvimrc, the highlighting isn't set. (Tsjokwing) 6124Solution: Set the highlighting when 'bg' is changed in the gvimrc, even 6125 though full_screen isn't set. 6126Files: src/option.c 6127 6128Patch 5.5.027 6129Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but 6130 WANT_TITLE isn't. (Barnum) 6131Solution: Move a few functions that are used by the X11 title and clipboard 6132 and put another "#if" around it. 6133Files: src/os_unix.c 6134 6135Patch 5.5.028 (extra) 6136Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":" 6137 prompt, the file is edited but the command line is actually still 6138 there, the cursor goes back to command line on the next command. 6139 (Krishna) 6140Solution: When dropping a file or directory on gvim while at the ":" prompt, 6141 insert the name of the file/directory. Allows using the 6142 file/directory name for any Ex command. 6143Files: src/gui_w32.c 6144 6145Patch 5.5.029 6146Problem: "das" at the end of the file didn't delete the last character of 6147 the sentence. 6148Solution: When there is no character after the sentence, make the operation 6149 inclusive in current_sent(). 6150Files: src/search.c 6151 6152Patch 5.5.030 6153Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in 6154 vim.h as a macro. (wuxin) 6155Solution: Renamed "term_str" to "buf" in do_xterm_trace(). 6156Files: src/os_unix.c 6157 6158Patch 5.5.031 (extra) 6159Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind 6160 and will be killed ungracefully. (Krishna) 6161Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to 6162 exit gracefully. Allow the user to cancel the shutdown if there 6163 is a changed buffer. 6164Files: src/gui_w32.c 6165 6166Patch 5.5.032 6167Problem: Patch 5.5.025 wasn't right. And C highlighting was still not 6168 working correctly for a #define. 6169Solution: Added "excludenl" argument to ":syntax", to be able not to extend 6170 a containing item when there is a match with the end-of-line. 6171Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim 6172 6173Patch 5.5.033 6174Problem: When reading from stdin, a long line in viminfo would mess up the 6175 file message. readfile() uses IObuff for keep_msg, which could be 6176 overwritten by anyone. 6177Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. 6178 Also change vim_fgets() to not use IObuff any longer. 6179Files: src/fileio.c 6180 6181Patch 5.5.034 6182Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set. 6183Solution: Don't try to initialize the highlighting before it has been 6184 initialized from main(). 6185Files: src/syntax.c 6186 6187Patch 5.5.035 6188Problem: GTK with XIM: Resizing with status area was messy, and 6189 ":set guioptions+=b" didn't work. 6190Solution: Make status area a separate widget, but not a separate window. 6191 (Chi-Deok Hwang) 6192Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c 6193 6194Patch 5.5.036 6195Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to 6196 uncompress a file did not do detection for 'fileformat'. This is 6197 because the filtering is done with 'binary' set. 6198Solution: Split the filtering into separate write, filter and read commands. 6199Files: runtime/vimrc_example.vim 6200 6201Patch 5.5.037 6202Problem: The "U" command didn't mark the buffer as changed. (McCormack) 6203Solution: Set the 'modified' flag when using "U". 6204Files: src/undo.c 6205 6206Patch 5.5.038 6207Problem: When typing a long ":" command, so that the screen scrolls up, 6208 causes the hit-enter prompt, even though the user just typed 6209 return to execute the command. 6210Solution: Reset need_wait_return if (part of) the command was typed in 6211 getcmdline(). 6212Files: src/ex_getln.c 6213 6214Patch 5.5.039 6215Problem: When using a custom status line, "%a" (file # of #) reports the 6216 index of the current window for all windows. 6217Solution: Pass a window pointer to append_arg_number(), and pass the window 6218 being updated from build_stl_str_hl(). (Stephen P. Wall) 6219Files: src/buffer.c, src/screen.c, src/proto/buffer.pro 6220 6221Patch 5.5.040 6222Problem: Multi-byte: When there is some error in xim_real_init(), it can 6223 close XIM and return. After this there can be a segv. 6224Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try 6225 to find more matches for supported styles. (Sung-Hyun Nam) 6226Files: src/multbyte.c 6227 6228Patch 5.5.041 6229Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines. 6230Solution: Translate CTRL-- to CTRL-_. (Robert Webb) 6231Files: src/gui_x11.c 6232 6233Patch 5.5.042 6234Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even 6235 when the menu has been disabled by removing 'm' from 'guioptions'. 6236Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf) 6237Files: src/gui_x11.c 6238 6239Patch 5.5.043 6240Problem: GTK: Handling of fontset fonts was not right when 'guifontset' 6241 contains exactly 14 times '-'. 6242Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam) 6243Files: src/gui_gtk_x11.c 6244 6245Patch 5.5.044 6246Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That 6247 might not work everywhere. 6248Solution: Use "/usr/bin/env perl" instead. 6249Files: runtime/tools/pltags.pl 6250 6251Patch 5.5.045 6252Problem: Using "this_session" variable does not work, requires preceding it 6253 with "v:". Default filename for ":mksession" isn't mentioned 6254 in the docs. (Fisher) 6255Solution: Support using "this_session" to be backwards compatible. 6256Files: src/eval.c, runtime/doc/options.txt 6257 6258Patch 5.5.046 (extra) 6259Problem: VMS: problems with path and filename. 6260Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy) 6261Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, 6262 src/proto/os_vms.pro 6263 6264Patch 5.5.047 6265Problem: VMS: Crash when using the popup menu 6266Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy) 6267Files: src/structs.h, src/menu.c 6268 6269Patch 5.5.048 6270Problem: HP-UX 11: Compiling doesn't work, because both string.h and 6271 strings.h are included. (Squassabia) 6272Solution: The configure test for including both string.h and strings.h 6273 must include <Xm/Xm.h> first, because it causes problems. 6274Files: src/configure.in, src/configure, src/config.h.in 6275 6276Patch 5.5.049 6277Problem: Unix: When installing Vim, the protection bits of files might be 6278 influenced by the umask. 6279Solution: Add $(FILEMOD) to Makefile. (Shetye) 6280Files: src/Makefile 6281 6282Patch 5.5.050 6283Problem: "z+" and "z^" commands are missing. 6284Solution: Implemented "z+" and "z^". 6285Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt 6286 6287Patch 5.5.051 6288Problem: Several Unix systems have a problem with the optimization limits 6289 check in configure. 6290Solution: Removed the configure check, let the user add it manually in 6291 Makefile or the environment. 6292Files: src/configure.in, src/configure, src/Makefile 6293 6294Patch 5.5.052 6295Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani) 6296Solution: Ignore special keys at the console dialog. Also ignore characters 6297 > 255 for other uses of tolower() and toupper(). 6298Files: src/menu.c, src/message.c, src/misc2.c 6299 6300Patch 5.5.053 6301Problem: Indenting is wrong after a function when 'cino' has "fs". Another 6302 problem when 'cino' has "{s". 6303Solution: Put line after closing "}" of a function at the left margin. 6304 Apply ind_open_extra in the right way after a '{'. 6305Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok 6306 6307Patch 5.5.054 6308Problem: Unix: ":e #" doesn't work if the alternate file name contains a 6309 space or backslash. (Hudacek) 6310Solution: When replacing "#", "%" or other items that stand for a file name, 6311 prepend a backslash before special characters. 6312Files: src/ex_docmd.c 6313 6314Patch 5.5.055 6315Problem: Using "<C-V>$r-" in blockwise Visual mode replaces one character 6316 beyond the end of the line. (Zivkov) 6317Solution: Only replace existing characters. 6318Files: src/ops.c 6319 6320Patch 5.5.056 6321Problem: After "z20<CR>" messages were printed at the old command line 6322 position once. (Veselinovic) 6323Solution: Set msg_row and msg_col when changing cmdline_row in 6324 win_setheight(). 6325Files: src/window.c 6326 6327Patch 5.5.057 6328Problem: After "S<Esc>" it should be possible to restore the line with "U". 6329 (Veselinovic) 6330Solution: Don't call u_clearline() in op_delete() when changing only one 6331 line. 6332Files: src/ops.c 6333 6334Patch 5.5.058 6335Problem: Using a long search pattern and then "n" causes the hit-enter 6336 prompt. (Krishna) 6337Solution: Truncate the echoed pattern, like other messages. Moved code for 6338 truncating from msg_attr() to msg_strtrunc(). 6339Files: src/message.c, src/proto/message.pro, src/search.c 6340 6341Patch 5.5.059 6342Problem: GTK GUI: When $term is invalid, using "gvim" gives an error 6343 message, even though $term isn't really used. (Robbins) 6344Solution: When the GUI is about to start, skip the error messages for a 6345 wrong $term. 6346Files: src/term.c 6347 6348Patch 5.5.060 (extra) 6349Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w" 6350 causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf) 6351Solution: The code to work around a LFN bug in Windows 95 doesn't handle a 6352 non-existing target name correctly. When renaming fails, make 6353 sure the file has its original name. Also do this for the Win32 6354 version, although it's unlikely that it runs into this problem. 6355Files: src/os_msdos.c, src/os_win32.c 6356 6357Patch 5.5.061 6358Problem: When using "\:" in a modeline, the backslash is included in the 6359 option value. (Mohsin) 6360Solution: Remove one backslash before the ':' in a modeline. 6361Files: src/buffer.c, runtime/doc/options.txt 6362 6363Patch 5.5.062 (extra) 6364Problem: Win32 console: Temp files are created in the root of the current 6365 drive, which may be read-only. (Peterson) 6366Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the 6367 current directory. Cleaned up vim_tempname() a bit. 6368Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt 6369 6370Patch 5.5.063 6371Problem: When using whole-line completion in Insert mode, 'cindent' is 6372 applied, even after changing the indent of the line. 6373Solution: Don't reindent the completed line after inserting/removing indent. 6374 (Robert Webb) 6375Files: src/edit.c 6376 6377Patch 5.5.064 6378Problem: has("sniff") doesn't work correctly. 6379Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer) 6380Files: src/eval.c 6381 6382Patch 5.5.065 6383Problem: When dropping a file on Vim, the 'shellslash' option is not 6384 effective. (Krishna) 6385Solution: Fix the slashes in the dropped file names according to 6386 'shellslash'. 6387Files: src/ex_docmd.c, runtime/doc/options.txt 6388 6389Patch 5.5.066 6390Problem: For systems with backslash in file name: Setting a file name 6391 option to a value starting with "\\machine" removed a backslash. 6392Solution: Keep the double backslash for "\\machine", but do change 6393 "\\\\machine" to "\\machine" for backwards compatibility. 6394Files: src/option.c, runtime/doc/options.txt 6395 6396Patch 5.5.067 6397Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first 6398 match in a line. (Benji Fisher) 6399Solution: Fix highlighting an empty match. Also highlight the first 6400 character in an empty line for "$". 6401Files: src/screen.c 6402 6403Patch 5.5.068 6404Problem: Crash when a ":while" is used with an argument that has an error. 6405 (Sylvain Viart) 6406Solution: Was using an uninitialized index in the cs_line[] array. The 6407 crash only happened when the index was far off. Made sure the 6408 uninitialized index isn't used. 6409Files: src/ex_docmd.c 6410 6411Patch 5.5.069 6412Problem: Shifting lines in blockwise Visual mode didn't set the 'modified' 6413 flag. 6414Solution: Do set the 'modified' flag. 6415Files: src/ops.c 6416 6417Patch 5.5.070 6418Problem: When editing a new file, creating that file outside of Vim, then 6419 editing it again, ":w" still warns for overwriting an existing 6420 file. (Nam) 6421Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly. 6422Files: src/buffer.c, src/fileio.c 6423 6424Patch 5.5.071 6425Problem: Using a matchgroup in a ":syn region", which is the same syntax 6426 group as the region, didn't stop a contained item from matching in 6427 the start pattern. 6428Solution: Also push an item on the stack when the syntax ID of the 6429 matchgroup is the same as the syntax ID of the region. 6430Files: src/syntax.c 6431 6432Patch 5.5.072 (extra) 6433Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may 6434 crash, and the DOS console too. 6435Solution: Check that the value of 'columns' isn't larger than the number of 6436 columns that the BIOS reports. 6437Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c 6438 6439Patch 5.5.073 (extra) 6440Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the 6441 "match case" checkbox. The Find/Replace dialog didn't handle the 6442 "match whole word" checkbox. 6443Solution: Support the "match case" and "match whole word" checkboxes. 6444Files: src/gui_w32.c 6445 6446Patch 5.6a.001 6447Problem: Using <C-End> with a count doesn't work like it does with "G". 6448 (Benji Fisher) 6449Solution: Accept a count for <C-End> and <C-Home>. 6450Files: src/normal.c 6451 6452Patch 5.6a.002 6453Problem: The script for conversion to HTML was an older version. 6454Solution: Add support for running 2html.vim on a color terminal. 6455Files: runtime/syntax/2html.vim 6456 6457Patch 5.6a.003 6458Problem: Defining a function inside a function didn't give an error 6459 message. A missing ":endfunction" doesn't give an error message. 6460Solution: Allow defining a function inside a function. 6461Files: src/eval.c, runtime/doc/eval.txt 6462 6463Patch 5.6a.004 6464Problem: A missing ":endwhile" or ":endif" doesn't give an error message. 6465 (Johannes Zellner) 6466Solution: Check for missing ":endwhile" and ":endif" in sourced files. 6467 Add missing ":endif" in file selection macros. 6468Files: src/ex_docmd.c, runtime/macros/file_select.vim 6469 6470Patch 5.6a.005 6471Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar' 6472 was changed when 'compatible' is set. 6473Solution: Moved entry of 'hlsearch' in options[] table down. 6474 Don't reset 'toolbar' option to the default value when 6475 'compatible' is set. 6476Files: src/option.c 6477 6478Patch 5.6a.006 6479Problem: Using a backwards range inside ":if 0" gave an error message. 6480Solution: Don't complain about a range when it is not going to be used. 6481 (Stefan Roemer) 6482Files: src/ex_docmd.c 6483 6484Patch 5.6a.007 6485Problem: ":let" didn't show internal Vim variables. (Ron Aaron) 6486Solution: Do show ":v" variables for ":let" and ":let v:name". 6487Files: src/eval.c 6488 6489Patch 5.6a.008 6490Problem: Selecting a syntax from the Syntax menu gives an error message. 6491Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild) 6492Files: runtime/menu.vim 6493 6494Patch 5.6a.009 6495Problem: When compiling with +extra_search but without +syntax, there is a 6496 compilation error in screen.c. (Axel Kielhorn) 6497Solution: Adjust the #ifdef for declaring and initializing "line" in 6498 win_line(). Also solve compilation problem when +statusline is 6499 used without +eval. Another one when +cmdline_compl is used 6500 without +eval. 6501Files: src/screen.c, src/misc2.c 6502 6503Patch 5.6a.010 6504Problem: In a function, ":startinsert!" does not append to the end of the 6505 line if a ":normal" command was used to move the cursor. (Fisher) 6506Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again. 6507Files: src/ex_docmd.c 6508 6509Patch 5.6a.011 (depends on 5.6a.004) 6510Problem: A missing ":endif" or ":endwhile" in a function doesn't give an 6511 error message. 6512Solution: Give that error message. 6513Files: src/ex_docmd.c 6514 6515Patch 5.6a.012 (depends on 5.6a.008) 6516Problem: Some Syntax menu entries caused a hit-enter prompt. 6517Solution: Call a function to make the command shorter. Also rename a few 6518 functions to avoid name clashes. 6519Files: runtime/menu.vim 6520 6521Patch 5.6a.013 6522Problem: Command line completion works different when another completion 6523 was done earlier. (Johannes Zellner) 6524Solution: Reset wim_index when starting a new completion. 6525Files: src/ex_getln.c 6526 6527Patch 5.6a.014 6528Problem: Various warning messages when compiling and running lint with 6529 different combinations of features. 6530Solution: Fix the warning messages. 6531Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, 6532 src/option.c, src/screen.c, src/search.c, src/syntax.c, 6533 src/feature.h, src/globals.h 6534 6535Patch 5.6a.015 6536Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME. 6537Solution: Let Vim expand $VIMRUNTIME, instead of the shell. 6538Files: src/vimtutor 6539 6540Patch 5.6a.016 (extra) 6541Problem: Mac: Window size is restricted when starting. Cannot drag the 6542 window all over the desktop. 6543Solution: Get real screen size instead of assuming 640x400. Do not use a 6544 fixed number for the drag limits. (Axel Kielhorn) 6545Files: src/gui_mac.c 6546 6547Patch 5.6a.017 6548Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline 6549 mode is in the wrong position. (Stol) 6550Solution: Add priority numbers for all Paste menu entries. 6551Files: runtime/menu.vim 6552 6553Patch 5.6a.018 6554Problem: GTK GUI: submenu priority doesn't work. 6555 Help dialog could be destroyed too soon. 6556 When closing a dialog window (e.g. the "ATTENTION" one), Vim would 6557 just hang. 6558 When GTK theme is changed, Vim doesn't adjust to the new colors. 6559 Argument for ":promptfind" isn't used. 6560Solution: Fixed the mentioned problems. 6561 Made the dialogs look&feel nicer. 6562 Moved functions to avoid the need for a forward declaration. 6563 Fixed reentrancy of the file browser dialog. 6564 Added drag&drop support for GNOME. 6565 Init the text for the Find/replace dialog from the last used 6566 search string. Set "match whole word" toggle button correctly. 6567 Made repeat rate for drag outside of window depend on the 6568 distance from the window. (Marcin Dalecki) 6569 Made the drag in Visual mode actually work. 6570 Removed recursiveness protection from gui_mch_get_rgb(), it might 6571 cause more trouble than it solves. 6572Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, 6573 src/proto/ui.pro, src/misc2.c 6574 6575Patch 5.6a.019 6576Problem: When trying to recover through NFS, which uses a large block size, 6577 Vim might think the swap file is empty, because mf_blocknr_max is 6578 zero. (Scott McDermott) 6579Solution: When computing the number of blocks of the file in mf_open(), 6580 round up instead of down. 6581Files: src/memfile.c 6582 6583Patch 5.6a.020 6584Problem: GUI GTK: Could not set display for gvim. 6585Solution: Add "-display" and "--display" arguments. (Marcin Dalecki) 6586Files: src/gui_gtk_x11.c 6587 6588Patch 5.6a.021 6589Problem: Recovering still may not work when the block size of the device 6590 where the swap file is located is larger than 4096. 6591Solution: Read block 0 with the minimal block size. 6592Files: src/memline.c, src/memfile.c, src/vim.h 6593 6594Patch 5.6a.022 (extra) 6595Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up 6596 (e.g., for an existing swap file), Vim crashes. (David Elins) 6597Solution: Before showing a dialog, open the main window. 6598Files: src/gui_w32.c 6599 6600Patch 5.6a.023 6601Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron) 6602Solution: Check for running into the end of the string in do_string_sub(). 6603Files: src/eval.c 6604 6605Patch 5.6a.024 6606Problem: Using an autocommand to delete a buffer when leaving it can cause 6607 a crash when jumping to a tag. (Franz Gorkotte) 6608Solution: In do_tag(), store tagstacklen before jumping to another buffer. 6609 Check tagstackidx after jumping to another buffer. 6610 Add extra check in win_split() if tagname isn't NULL. 6611Files: src/tag.c, src/window.c 6612 6613Patch 5.6a.025 (extra) 6614Problem: Win32 GUI: The tables for toupper() and tolower() are initialized 6615 too late. (Mike Steed) 6616Solution: Move the initialization to win32_init() and call it from main(). 6617Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro 6618 6619Patch 5.6a.026 6620Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) 6621Solution: Skip a second wait() call if waitpid() already detected that the 6622 child has exited. 6623Files: src/os_unix.c 6624 6625Patch 5.6a.027 (extra) 6626Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems 6627 for the Office toolbar. 6628Solution: Use a shell extension dll. (Tianmiao Hu) 6629 Added it to the install and uninstal programs, replaces the old 6630 "Edit with Vim" menu registry entries. 6631Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt 6632 6633Patch 5.6a.028 (extra) 6634Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte 6635 characters. 6636Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters 6637 correctly. 6638Files: src/gui_w32.c 6639 6640============================================================================== 6641VERSION 5.7 *version-5.7* 6642 6643Version 5.7 is a bug-fix version of 5.6. 6644 6645Changed *changed-5.7* 6646------- 6647 6648Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a 6649wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt. 6650 6651 6652Added *added-5.7* 6653----- 6654 6655New syntax files: 6656stp Stored Procedures (Jeff Lanzarotta) 6657snnsnet, snnspat, snnsres SNNS (Davide Alberani) 6658mel MEL (Robert Minsk) 6659ruby Ruby (Mirko Nasato) 6660tli TealInfo (Kurt W. Andrews) 6661ora Oracle config file (Sandor Kopanyi) 6662abaqus Abaqus (Carl Osterwisch) 6663jproperties Java Properties (Simon Baldwin) 6664apache Apache config (Allan Kelly) 6665csp CSP (Jan Bredereke) 6666samba Samba config (Rafael Garcia-Suarez) 6667kscript KDE script (Thomas Capricelli) 6668hb Hyper Builder (Alejandro Forero Cuervo) 6669fortran Fortran (rewritten) (Ajit J. Thakkar) 6670sml SML (Fabrizio Zeno Cornelli) 6671cvs CVS commit (Matt Dunford) 6672aspperl ASP Perl (Aaron Hope) 6673bc BC calculator (Vladimir Scholtz) 6674latte Latte (Nick Moffitt) 6675wml WML (Gerfried Fuchs) 6676 6677Included Exuberant ctags 3.5.1. (Darren Hiebert) 6678 6679"display" and "fold" arguments for syntax items. For future extension, they 6680are ignored now. 6681 6682strftime() function for the Macintosh. 6683 6684macros/explorer.vim: A file browser script (M A Aziz Ahmed) 6685 6686 6687Fixed *fixed-5.7* 6688----- 6689 6690The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The 6691executable is smaller. 6692 6693When a "make test" failed, the output file was lost. Rename it to 6694test99.failed to be able to see what went wrong. 6695 6696After sourcing bugreport.vim, it's not clear that bugreport.txt has been 6697written in the current directory. Edit bugreport.txt to avoid that. 6698 6699Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka) 6700 6701Win32 console: Mouse drags were passed on even when the mouse didn't move. 6702 6703Perl interface: In Buffers(), type of argument to SvPV() was int, should be 6704STRLEN. (Tony Leneis) 6705 6706Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in 6707os_unix.h. (Jake Hamby) 6708 6709Mappings in mswin.vim could break when some commands are mapped. Add "nore" 6710to most mappings to avoid re-mapping. 6711 6712modify_fname() made a copy of a file name for ":p" when it already was a full 6713path name, which is a bit slow. 6714 6715Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags, 6716to avoid depending on $PATH. Fixed "make clean". 6717 6718Many fixes to Macintosh specific parts: (mostly by Dany StAmant) 6719- Only one Help menu. 6720- No more crash when removing a menu item. 6721- Support as External Editor for Codewarrior (still some little glitches). 6722- Popup menu support. 6723- Fixed crash when pasting after application switch. 6724- Color from rgb.txt properly displayed. 6725- 'isprint' default includes all chars above '~'. (Axel Kielhorn) 6726- mac_expandpath() was leaking memory. 6727- Add digraphs table. (Axel Kielhorn) 6728- Multi-byte support: (Kenichi Asai) 6729 Switch keyscript when going in/out of Insert mode. 6730 Draw multi-byte character correctly. 6731 Don't use mblen() but highest bit of char to detect multi-byte char. 6732 Display value of multi-byte in statusline (also for other systems). 6733- mouse button was not initialized properly to MOUSE_LEFT when 6734 USE_CTRLCLICKMENU not defined. 6735- With Japanese SJIS characters: Make "w", "b", and "e" work 6736 properly. (Kenichi Asai) 6737- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx. 6738 6739Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below) 6740- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the 6741 tests. 6742- Various fixes. 6743- Set 'undolevels' to 1000 by default. 6744- Made mch_settitle() equivalent to the one in os_unix.c. 6745 6746RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes 6747automatically. 6748 6749 6750Previously released patches: 6751 6752Patch 5.6.001 6753Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which 6754 reduces the indent doesn't delete the "#" or "}". (Lorton) 6755Solution: Adjust ai_col in ins_try_si(). 6756Files: src/edit.c 6757 6758Patch 5.6.002 6759Problem: When using the vim.vim syntax file, a comment with all uppercase 6760 characters causes a hang. 6761Solution: Adjust pattern for vimCommentTitle (Charles Campbell) 6762Files: runtime/syntax/vim.vim 6763 6764Patch 5.6.003 6765Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning 6766 about the colormap. Probably because the window has not been 6767 opened yet. 6768Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. 6769 (Keith Radebaugh) 6770Files: src/gui_gtk.c 6771 6772Patch 5.6.004 (extra) 6773Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font 6774 requester appears twice. 6775Solution: In gui_mch_init_font() don't call get_logfont() but copy 6776 norm_logfont from fh. (Yasuhiro Matsumoto) 6777Files: src/gui_w32.c 6778 6779Patch 5.6.005 6780Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a 6781 crash. (David Kotchan) 6782Solution: Check for negative window height in win_setheight(). 6783Files: src/window.c 6784 6785Patch 5.6.006 6786Problem: GTK GUI: Bold font cannot always be used. Memory is freed too 6787 early in gui_mch_init_font(). 6788Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush) 6789Files: src/gui_gtk_x11.c 6790 6791Patch 5.6.007 (extra) 6792Problem: Win32 IME: Font is not changed when screen font is changed. And 6793 IME composition window does not trace the cursor. 6794Solution: Initialize IME font. When cursor is moved, set IME composition 6795 window with ImeSetCompositionWindow(). Add call to 6796 ImmReleaseContext() in several places. (Taro Muraoka) 6797Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro 6798 6799Patch 5.6.008 (extra) 6800Problem: Win32: When two files exist with the same name but different case 6801 (through NFS or Samba), fixing the file name case could cause the 6802 wrong one to be edited. 6803Solution: Prefer a perfect match above a match while ignoring case in 6804 fname_case(). (Flemming Madsen) 6805Files: src/os_win32.c 6806 6807Patch 5.6.009 (extra) 6808Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting 6809 "Edit with Vim" popup menu entry. 6810Solution: Only return the help line when called with the GCS_HELPTEXT flag. 6811 (Tianmiao Hu) 6812Files: GvimExt/gvimext.cpp 6813 6814Patch 5.6.010 6815Problem: A file name which contains a TAB was not read correctly from the 6816 viminfo file and the ":ls" listing was not aligned properly. 6817Solution: Parse the buffer list lines in the viminfo file from the end 6818 backwards. Count a Tab for two characters to align the ":ls" list. 6819Files: src/buffer.c 6820 6821Patch 5.6.011 6822Problem: When 'columns' is huge (using a tiny font) and 'statusline' is 6823 used, Vim can crash. 6824Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin) 6825Files: src/screen.c 6826 6827Patch 5.6.012 6828Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is 6829 typed. (Kuratczyk) 6830Solution: Add "-c exit" when checking for the shell version. 6831Files: src/toolcheck 6832 6833Patch 5.6.013 6834Problem: Multibyte char in tooltip is broken. 6835Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka) 6836Files: src/term.c 6837 6838Patch 5.6.014 6839Problem: When cursor is at the end of line and the character under cursor 6840 is a multibyte character, "yl" doesn't yank 1 multibyte-char. 6841 (Takuhiro Nishioka) 6842Solution: Recognize a multibyte-char at end-of-line correctly in oneright(). 6843 (Taro Muraoka) 6844 Also: make "+quickfix" in ":version" output appear alphabetically. 6845Files: src/edit.c 6846 6847Patch 5.6.015 6848Problem: New xterm delete key sends <Esc>[3~ by default. 6849Solution: Added <kDel> and <kIns> to make the set of keypad keys complete. 6850Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, 6851 src/misc2.c, src/normal.c, src/os_unix.c, src/term.c 6852 6853Patch 5.6.016 6854Problem: When deleting a search string from history from inside a mapping, 6855 another entry is deleted too. (Benji Fisher) 6856Solution: Reset last_maptick when deleting the last entry of the search 6857 history. Also: Increment maptick when starting a mapping from 6858 typed characters to avoid a just added search string being 6859 overwritten or removed from history. 6860Files: src/ex_getln.c, src/getchar.c 6861 6862Patch 5.6.017 6863Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the 6864 line. (Calder) 6865Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall) 6866Files: src/ex_cmds.c 6867 6868Patch 5.6.018 6869Problem: ":help [:digit:]" takes a long time to jump to the wrong place. 6870Solution: Insert a backslash to avoid the special meaning of '[]'. 6871Files: src/ex_cmds.c 6872 6873Patch 5.6.019 6874Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype. 6875Solution: Make pattern for mail filetype more strict. 6876Files: runtime/filetype.vim 6877 6878Patch 5.6.020 (extra) 6879Problem: The DJGPP version eats processor time (Walter Briscoe). 6880Solution: Call __dpmi_yield() in the busy-wait loop. 6881Files: src/os_msdos.c 6882 6883Patch 5.6.021 6884Problem: When 'selection' is "exclusive", a double mouse click in Insert 6885 mode doesn't select last char in line. (Lutz) 6886Solution: Allow leaving the cursor on the NUL past the line in this case. 6887Files: src/edit.c 6888 6889Patch 5.6.022 6890Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work. 6891Solution: Re-insert the backslash before the '~'. 6892Files: src/ex_getln.c 6893 6894Patch 5.6.023 (extra) 6895Problem: Various warnings for the Ming compiler. 6896Solution: Changes to avoid the warnings. (Bill McCarthy) 6897Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, 6898 src/syntax.c, src/vim.rc 6899 6900Patch 5.6.024 (extra) 6901Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan) 6902Solution: Specifically catch keycode 0xBD, like the GUI. 6903Files: src/os_win32.c 6904 6905Patch 5.6.025 6906Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH. 6907 (Nils Lohner) 6908Solution: Repeat the read() call to get the gui_in_use value when 6909 interrupted by a signal. 6910Files: src/gui.c 6911 6912Patch 5.6.026 (extra) 6913Problem: Win32 GUI: Toolbar bitmaps are searched for in 6914 $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith 6915 Radebaugh) 6916Solution: Use $VIM/bitmaps for both, because these are not part of the 6917 distribution but defined by the user. 6918Files: src/gui_w32.c, runtime/doc/gui.txt 6919 6920Patch 5.6.027 6921Problem: TCL: Crash when using a Tcl script (reported for Win32). 6922Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham) 6923Files: src/main.c 6924 6925Patch 5.6.028 6926Problem: Xterm patch level 126 sends codes for mouse scroll wheel. 6927 Fully works with xterm patch level 131. 6928Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61). 6929Files: src/term.c 6930 6931Patch 5.6.029 6932Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes 6933 Zellner) 6934Solution: Add support for shortcut keys. (Marcin Dalecki) 6935Files: src/gui_gtk.c 6936 6937Patch 5.6.030 6938Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro 6939 Matsumoto) 6940Solution: Set "curbuf" to a valid value in win_close(). 6941Files: src/window.c 6942 6943Patch 5.6.031 6944Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits 6945 for another character to be typed. 6946Solution: Recognize the CSI as the second byte of a character and don't wait 6947 for another one. (Yasuhiro Matsumoto) 6948Files: src/getchar.c 6949 6950Patch 5.6.032 6951Problem: Functions with an argument that is a line number don't all accept 6952 ".", "$", etc. (Ralf Arens) 6953Solution: Add get_art_lnum() and use it for setline(), line2byte() and 6954 synID(). 6955Files: src/eval.c 6956 6957Patch 5.6.033 6958Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun 6959 Nam) 6960Solution: Change logic in searchc() to skip trailing byte of a double-byte 6961 character. 6962 Also: Ask for second byte when searching for double-byte 6963 character. (Park Chong-Dae) 6964Files: src/search.c 6965 6966Patch 5.6.034 (extra) 6967Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper(). 6968Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile 6969 to make using bcc 5.5 easier. 6970Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor 6971 6972Patch 5.6.035 6973Problem: Listing the"+comments" feature in the ":version" output depended 6974 on the wrong ID. (Stephen P. Wall) 6975Solution: Change "CRYPTV" to "COMMENTS". 6976Files: src/version.c 6977 6978Patch 5.6.036 6979Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm. 6980Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang) 6981Files: src/gui_gtk_x11.c 6982 6983Patch 5.6.037 6984Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI. 6985Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam) 6986Files: src/gui_gtk_x11.c, src/multbyte.c 6987 6988Patch 5.6.038 6989Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When 6990 'ttymouse' is "xterm" a mouse click is interpreted as a mouse 6991 wheel click. 6992Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. 6993 Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63. 6994Files: src/term.c, src/os_unix.c 6995 6996Patch 5.6.039 6997Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the 6998 system. (Hermann Rochholz) 6999Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND 7000 property of the window to let the session manager know we finished 7001 saving ourselves. 7002Files: src/gui_x11.c 7003 7004Patch 5.6.040 7005Problem: When using ":s" command, matching the regexp is done twice. 7006Solution: After copying the matched line, adjust the pointers instead of 7007 finding the match again. (Loic Grenie) Added vim_regnewptr(). 7008Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro 7009 7010Patch 5.6.041 7011Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons. 7012Solution: Remove the limit on the number of buttons. 7013 Also support the 'v' flag in 'guioptions'. 7014 For GTK: Center the buttons. 7015Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c 7016 7017Patch 5.6.042 7018Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in 7019 the terminal can remain off. 7020Solution: Call cursor_on() in mch_windexit(). 7021Files: src/os_unix.c 7022 7023Patch 5.6.043 (extra) 7024Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont' 7025 doesn't include the bold or italic attributes. 7026Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font(). 7027Files: src/gui_w32.c 7028 7029Patch 5.6.044 (extra) 7030Problem: MS-DOS and Windows: The line that dosinst.exe appends to 7031 autoexec.bat to set PATH is wrong when Vim is in a directory with 7032 an embedded space. 7033Solution: Use double quotes for the value when there is an embedded space. 7034Files: src/dosinst.c 7035 7036Patch 5.6.045 (extra) (fixed version) 7037Problem: VMS: Various small problems. 7038Solution: Many small changes. (Zoltan Arpadffy) 7039 File name modifier ":h" keeps the path separator. 7040 File name modifier ":e" also removes version. 7041 Compile with MAX_FEAT by default. 7042 When checking for autocommands ignore version in file name. 7043 Be aware of file names being case insensitive. 7044 Added vt320 builtin termcap. 7045 Be prepared for an empty default_vim_dir. 7046Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, 7047 runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, 7048 src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, 7049 src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, 7050 src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c 7051 7052Patch 5.6.046 7053Problem: Systems with backslash in file name: With 'shellslash' set, "vim 7054 */*.c" only uses a slash for the first file name. (Har'El) 7055Solution: Fix slashes in file name arguments after reading the vimrc file. 7056Files: src/option.c 7057 7058Patch 5.6.047 7059Problem: $CPPFLAGS is not passed on to ctags configure. 7060Solution: Add it. (Walter Briscoe) 7061Files: src/config.mk.in, src/Makefile 7062 7063Patch 5.6.048 7064Problem: CTRL-R in Command-line mode is documented to insert text as typed, 7065 but inserts text literally. 7066Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert 7067 literally. This is consistent with Insert mode. But characters 7068 that end Command-line mode are inserted literally. 7069Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, 7070 src/ops.c, src/proto/ops.pro 7071 7072Patch 5.6.049 7073Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji 7074 Fisher) 7075Solution: Fix the documentation. Also improve the code to check for a match 7076 after a /* */ comment. 7077Files: runtime/doc/tagsearch.txt, src/search.c 7078 7079Patch 5.6.050 7080Problem: Replacing is wrong when replacing a single-byte char with 7081 double-byte char or the other way around. 7082Solution: Shift the text after the character when it is replaced. 7083 (Yasuhiro Matsumoto) 7084Files: src/normal.c, src/misc1.c 7085 7086Patch 5.6.051 7087Problem: ":tprev" and ":tnext" don't give an error message when trying to 7088 go before the first or beyond the last tag. (Robert Webb) 7089Solution: Added error messages. Also: Delay a second when a file-read 7090 message is going to overwrite an error message, otherwise it won't 7091 be seen. 7092Files: src/fileio.c, src/tag.c 7093 7094Patch 5.6.052 7095Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte, 7096 it terminates the command. 7097Solution: Skip second byte of multi-byte char when checking for '|' and '"'. 7098 (Asai Kenichi) 7099Files: src/ex_docmd.c 7100 7101Patch 5.6.053 7102Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius) 7103Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also 7104 for command-line completion. 7105Files: src/ex_getln.c, src/normal.c 7106 7107Patch 5.6.054 7108Problem: When using ":e" and ":e #" the cursor is put in the first column 7109 when 'startofline' is set. (Cordell) 7110Solution: Use the last known column when 'startofline' is set. 7111 Also, use ECMD_LAST more often to simplify the code. 7112Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro 7113 7114Patch 5.6.055 7115Problem: When 'statusline' only contains a text without "%" and doesn't fit 7116 in the window, Vim crashes. (Ron Aaron) 7117Solution: Don't use the pointer for the first item if there is no item. 7118Files: src/screen.c 7119 7120Patch 5.6.056 (extra) 7121Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set. 7122Solution: Use enhanced keyboard functions. (Vince Negri) 7123 Detect presence of enhanced keyboard and set bioskey_read and 7124 bioskey_ready. 7125Files: src/os_msdos.c 7126 7127Patch 5.6.057 (extra) 7128Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off 7129 menus. 7130Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka) 7131Files: src/gui_w32.c 7132 7133Patch 5.6.058 7134Problem: When the 'a' flag is not in 'guioptions', non-Windows systems 7135 copy Visually selected text to the clipboard/selection on a yank 7136 or delete command anyway. On Windows it isn't done even when the 7137 'a' flag is included. 7138Solution: Respect the 'a' flag in 'guioptions' on all systems. 7139Files: src/normal.c 7140 7141Patch 5.6.059 (extra) 7142Problem: When moving the cursor over italic text and the characters spill 7143 over to the cell on the right, that spill-over is deleted. 7144 Noticed in the Win32 GUI, can happen on other systems too. 7145Solution: Redraw italic text starting from a blank, like this is already 7146 done for bold text. (Vince Negri) 7147Files: src/gui.c, src/gui.h, src/gui_w32.c 7148 7149Patch 5.6.060 7150Problem: Some bold characters spill over to the cell on the left, that 7151 spill-over can remain sometimes. 7152Solution: Redraw a character when the next character was bold and needs 7153 redrawing. (Robert Webb) 7154Files: src/screen.c 7155 7156Patch 5.6.061 7157Problem: When xterm sends 8-bit controls, recognizing the version response 7158 doesn't work. 7159 When using CSI instead of <Esc>[ for the termcap color codes, 7160 using 16 colors doesn't work. (Neil Bird) 7161Solution: Also accept CSI in place of <Esc>[ for the version string. 7162 Also check for CSI when handling colors 8-15 in term_color(). 7163 Use CSI for builtin xterm termcap entries when 'term' contains 7164 "8bit". 7165Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, 7166 src/os_unix.c, src/proto/option.pro, src/proto/term.pro 7167 7168Patch 5.6.062 7169Problem: The documentation says that setting 'smartindent' doesn't have an 7170 effect when 'cindent' is set, but it does make a difference for 7171 lines starting with "#". (Neil Bird) 7172Solution: Really ignore 'smartindent' when 'cindent' is set. 7173Files: src/misc1.c, src/ops.c 7174 7175Patch 5.6.063 7176Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes 7177 Zellner) 7178Solution: Pass the count on to do_insert() and edit(). (Allan Kelly) 7179Files: src/normal.c, src/ops.c, src/proto/ops.pro 7180 7181Patch 5.6.064 7182Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after 7183 including patch 5.6.28. (Vince Negri) 7184Solution: Don't check for mouse scroll wheel when the mouse code contains 7185 the number of clicks. 7186Files: src/term.c 7187 7188Patch 5.6.065 7189Problem: After moving the cursor around in Insert mode, typing a space can 7190 still trigger an abbreviation. (Benji Fisher) 7191Solution: Don't check for an abbreviation after moving around in Insert mode. 7192Files: src/edit.c 7193 7194Patch 5.6.066 7195Problem: Still a few bold character spill-over remains after patch 60. 7196Solution: Clear character just in front of blanking out rest of the line. 7197 (Robert Webb) 7198Files: src/screen.c 7199 7200Patch 5.6.067 7201Problem: When a file name contains a NL, the viminfo file is corrupted. 7202Solution: Use viminfo_writestring() to convert the NL to CTRL-V n. 7203 Also fix the Buffers menu and listing a menu name with a newline. 7204Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c 7205 7206Patch 5.6.068 7207Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. 7208 (Bernhard Rosenkraenzer) 7209Solution: Also check xs_apiversion for the version number when prepending 7210 defines for PL_*. 7211Files: src/Makefile 7212 7213Patch 5.6.069 7214Problem: "go" doesn't always end up at the right character when 7215 'fileformat' is "dos". (Bruce DeVisser) 7216Solution: Correct computations in ml_find_line_or_offset(). 7217Files: src/memline. 7218 7219Patch 5.6.070 (depends on 5.6.068) 7220Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. 7221 (Bernhard Rosenkraenzer) 7222Solution: Simpler check instead of the one from patch 68. 7223Files: src/Makefile 7224 7225Patch 5.6.071 7226Problem: "A" in Visual block mode on a Tab positions the cursor one char to 7227 the right. (Michael Haumann) 7228Solution: Correct the column computation in op_insert(). 7229Files: src/ops.c 7230 7231Patch 5.6.072 7232Problem: When starting Vim with "vim +startinsert", it enters Insert mode 7233 only after typing the first command. (Andrew Pimlott) 7234Solution: Insert a dummy command in the stuff buffer. 7235Files: src/main.c 7236 7237Patch 5.6.073 (extra) (depends on 5.6.034) 7238Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work. 7239 In dosinst.c toupper() and tolower() give an "internal compiler 7240 error" for Bcc 5.5. 7241Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan 7242 Sharp) Also cleaned up compilation arguments. 7243 Use our own implementation of toupper() in dosinst.c. Use 7244 mytoupper() instead of tolower(). 7245Files: src/Makefile.bor, src/dosinst.c 7246 7247Patch 5.6.074 (extra) 7248Problem: Entering CSI directly doesn't always work, because it's recognized 7249 as the start of a special key. Mostly a problem with multi-byte 7250 in the GUI. 7251Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI, 7252 <xCSI> for a CSI typed in the GUI. 7253Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, 7254 src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, 7255 src/keymap.h, src/misc2.c 7256 7257Patch 5.6.075 7258Problem: When using "I" or "A" in Visual block mode while 'sts' is set may 7259 change spaces to a Tab the inserted text is not correct. (Mike 7260 Steed) And some other problems when using "A" to append after the 7261 end of the line. 7262Solution: Check for change in spaces/tabs after inserting the text. Append 7263 spaces to fill the gap between the end-of-line and the right edge 7264 of the block. 7265Files: src/ops.c 7266 7267Patch 5.6.076 7268Problem: GTK GUI: Mapping <M-Space> doesn't work. 7269Solution: Don't use the "Alt" modifier twice in key_press_event(). 7270Files: src/gui_gtk_x11.c 7271 7272Patch 5.6.077 7273Problem: GUI: When interrupting an external program with CTRL-C, gvim might 7274 crash. (Benjamin Korvemaker) 7275Solution: Avoid using a NULL pointer in ui_inchar_undo(). 7276Files: src/ui.c 7277 7278Patch 5.6.078 7279Problem: Locale doesn't always work on FreeBSD. (David O'Brien) 7280Solution: Link with the "xpg4" library when available. 7281Files: src/configure.in, src/configure 7282 7283Patch 5.6.079 7284Problem: Vim could crash when several Tcl interpreters are created and 7285 destroyed. 7286Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo 7287 Wilken) 7288Files: runtime/doc/if_tcl.txt, src/if_tcl.c 7289 7290Patch 5.6.080 7291Problem: When jumping to a tag, generating the tags file and jumping to the 7292 same tag again uses the old search pattern. (Sung-Hyun Nam) 7293Solution: Flush cached tag matches when executing an external command. 7294Files: src/misc2.c, src/proto/tag.pro, src/tag.c 7295 7296Patch 5.6.081 7297Problem: ":syn include" uses a level for the included file, this confuses 7298 contained items included at the same level. 7299Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl 7300 to sp_syn_inc_tag. (Scott Bigham) 7301Files: src/syntax.c, src/structs.h 7302 7303Patch 5.6.082 7304Problem: When using cscope, Vim can crash. 7305Solution: Initialize tag_fname in find_tags(). (Anton Blanchard) 7306Files: src/tag.c 7307 7308Patch 5.6.083 (extra) 7309Problem: Win32: The visual beep can't be seen. (Eric Roesinger) 7310Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) 7311 Also: Allow specifying the delay in t_vb for the GUI. 7312Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, 7313 src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, 7314 src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, 7315 src/proto/gui_mac.pro, src/proto/gui_riscos.pro, 7316 src/proto/gui_w32.pro, src/proto/gui_x11.pro, 7317 src/proto/gui_beos.pro 7318 7319Patch 5.6.084 (depends on 5.6.074) 7320Problem: GUI: Entering CSI doesn't always work for Athena and Motif. 7321Solution: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074). 7322Files: src/gui_x11.c 7323 7324Patch 5.6.085 7325Problem: Multi-byte: Using "r" to replace a double-byte char with a 7326 single-byte char moved the cursor one character. (Matsumoto) 7327 Also, using a count when replacing a single-byte char with a 7328 double-byte char didn't work. 7329Solution: Don't use del_char() to delete the second byte. 7330 Get "ptr" again after calling ins_char(). 7331Files: src/normal.c 7332 7333Patch 5.6.086 (extra) 7334Problem: Win32: When using libcall() and the returned value is not a valid 7335 pointer, Vim crashes. 7336Solution: Use IsBadStringPtr() to check if the pointer is valid. 7337Files: src/os_win32.c 7338 7339Patch 5.6.087 7340Problem: Multi-byte: Commands and messages with multi-byte characters are 7341 displayed wrong. 7342Solution: Detect double-byte characters. (Yasuhiro Matsumoto) 7343Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c 7344 7345Patch 5.6.088 7346Problem: Multi-byte with Motif or Athena: The message "XIM requires 7347 fontset" is annoying when Vim was compiled with XIM support but it 7348 is not being used. 7349Solution: Remove that message. 7350Files: src/multbyte.c 7351 7352Patch 5.6.089 7353Problem: On non-Unix systems it's possible to overwrite a read-only file 7354 without using "!". 7355Solution: Check if the file permissions allow overwriting before moving the 7356 file to become the backup file. 7357Files: src/fileio.c 7358 7359Patch 5.6.090 7360Problem: When editing a file in "/home/dir/home/dir" this was replaced with 7361 "~~". (Andreas Jellinghaus) 7362Solution: Replace the home directory only once in home_replace(). 7363Files: src/misc1.c 7364 7365Patch 5.6.091 7366Problem: When editing many "no file" files, can't create swap file, because 7367 .sw[a-p] have all been used. (Neil Bird) 7368Solution: Also use ".sv[a-z]", ".su[a-z]", etc. 7369Files: src/memline.c 7370 7371Patch 5.6.092 7372Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim 7373 hangs in tputs(). 7374Solution: After tgetent() returns an error code, call it again with the 7375 terminal name "dumb". This apparently creates an environment in 7376 which tputs() doesn't fail. 7377Files: src/term.c 7378 7379Patch 5.6.093 (extra) 7380Problem: Win32 GUI: "ls | gvim -" will show a message box about reading 7381 stdin when Vim exits. (Donohue) 7382Solution: Don't write a message about the file read from stdin until the GUI 7383 has started. 7384Files: src/fileio.c 7385 7386Patch 5.6.094 7387Problem: Problem with multi-byte string for ":echo var". 7388Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) 7389 Also make do_echo() aware of multi-byte characters. 7390Files: src/eval.c, src/message.c 7391 7392Patch 5.6.095 7393Problem: With an Emacs TAGS file that include another a relative path 7394 doesn't always work. 7395Solution: Use expand_tag_fname() on the name of the included file. 7396 (Utz-Uwe Haus) 7397Files: src/tag.c 7398 7399Patch 5.6.096 7400Problem: Unix: When editing many files, startup can be slow. (Paul 7401 Ackersviller) 7402Solution: Halve the number of stat() calls used to add a file to the buffer 7403 list. 7404Files: src/buffer.c 7405 7406Patch 5.7a.001 7407Problem: GTK doesn't respond on drag&drop from ROX-Filer. 7408Solution: Add "text/uri-list" target. (Thomas Leonard) 7409 Also: fix problem with checking for trash arguments. 7410Files: src/gui_gtk_x11.c 7411 7412Patch 5.7a.002 7413Problem: Multi-byte: 'showmatch' is performed when second byte of an 7414 inserted double-byte char is a paren or brace. 7415Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka) 7416Files: src/misc1.c 7417 7418Patch 5.7a.003 7419Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at 7420 the end of the line on a multi-byte character the cursor moves to 7421 the left. 7422Solution: Check for multi-byte character at end-of-line. (Taro Muraoka) 7423 Also: fix cls() to detect a double-byte character. (Chong-Dae Park) 7424Files: src/edit.c, src/search.c 7425 7426Patch 5.7a.004 7427Problem: When reporting the search pattern offset, the string could be 7428 unterminated, which may cause a crash. 7429Solution: Terminate the string for the search offset. (Stephen P. Wall) 7430Files: src/search.c 7431 7432Patch 5.7a.005 7433Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the 7434 pattern. 7435Solution: Use get_search_pat() to obtain the actually used pattern. 7436Files: src/ex_cmds.c, src/proto/search.pro, src/search.c 7437 7438Patch 5.7a.006 (extra) 7439Problem: VMS: Various problems, also with the VAXC compiler. 7440Solution: In many places use the Unix code for VMS too. 7441 Added time, date and compiler version to version message. 7442 (Zoltan Arpadffy) 7443Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, 7444 src/main.c, src/message.c, src/misc1.c, src/os_vms.c, 7445 src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, 7446 src/proto/os_vms.pro, src/proto/version.pro, src/term.c, 7447 src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c 7448 7449Patch 5.7a.007 7450Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C. 7451Solution: Only use "intr_char" when it has been set. 7452Files: src/gui_x11.c 7453 7454Patch 5.7a.008 7455Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing 7456 trouble for bold characters. Also happens when moving with the 7457 scrollbar. Best seen when 'writedelay' is non-zero. 7458 When starting the GUI with ":gui" the screen is redrawn once with 7459 the wrong colors. 7460Solution: Only set the geometry hints when the window size really changed. 7461 This avoids setting it each time the scrollbar is forcefully 7462 redrawn. 7463 Don't redraw in expose_event() when gui.starting is still set. 7464Files: src/gui_gtk_x11.c 7465 7466 7467============================================================================== 7468VERSION 5.8 *version-5.8* 7469 7470Version 5.8 is a bug-fix version of 5.7. 7471 7472 7473Changed *changed-5.8* 7474------- 7475 7476Ctags is no longer included with Vim. It has grown into a project of its own. 7477You can find it here: http://ctags.sf.net. It is highly recommended as a Vim 7478companion when you are writing programs. 7479 7480 7481Added *added-5.8* 7482----- 7483 7484New syntax files: 7485acedb AceDB (Stewart Morris) 7486aflex Aflex (Mathieu Clabaut) 7487antlr Antlr (Mathieu Clabaut) 7488asm68k 68000 Assembly (Steve Wall) 7489automake Automake (John Williams) 7490ayacc Ayacc (Mathieu Clabaut) 7491b B (Mathieu Clabaut) 7492bindzone BIND zone (glory hump) 7493blank Blank (Rafal Sulejman) 7494cfg Configure files (Igor Prischepoff) 7495changelog ChangeLog (Gediminas Paulauskas) 7496cl Clever (Phil Uren) 7497crontab Crontab (John Hoelzel) 7498csc Essbase script (Raul Segura Acevedo) 7499cynlib Cynlib(C++) (Phil Derrick) 7500cynpp Cyn++ (Phil Derrick) 7501debchangelog Debian Changelog (Wichert Akkerman) 7502debcontrol Debian Control (Wichert Akkerman) 7503dns DNS zone file (Jehsom) 7504dtml Zope's DTML (Jean Jordaan) 7505dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham) 7506ecd Embedix Component Description (John Beppu) 7507fgl Informix 4GL (Rafal Sulejman) 7508foxpro FoxPro (Powing Tse) 7509gsp GNU Server Pages (Nathaniel Harward) 7510gtkrc GTK rc (David Necas) 7511hercules Hercules (Avant! Corporation) (Dana Edwards) 7512htmlos HTML/OS by Aestiva (Jason Rust) 7513inittab SysV process control (David Necas) 7514iss Inno Setup (Dominique Stephan) 7515jam Jam (Ralf Lemke) 7516jess Jess (Paul Baleme) 7517lprolog LambdaProlog (Markus Mottl) 7518ia64 Intel Itanium (parth malwankar) 7519kix Kixtart (Nigel Gibbs) 7520mgp MaGic Point (Gerfried Fuchs) 7521mason Mason (HTML with Perl) (Andrew Smith) 7522mma Mathematica (Wolfgang Waltenberger) 7523nqc Not Quite C (Stefan Scherer) 7524omnimark Omnimark (Paul Terray) 7525openroad OpenROAD (Luis Moreno Serrano) 7526named BIND configuration (glory hump) 7527papp PApp (Marc Lehmann) 7528pfmain Postfix main config (Peter Kelemen) 7529pic PIC assembly (Aleksandar Veselinovic) 7530ppwiz PPWizard (Stefan Schwarzer) 7531progress Progress (Phil Uren) 7532psf Product Specification File (Rex Barzee) 7533r R (Tom Payne) 7534registry MS-Windows registry (Dominique Stephan) 7535robots Robots.txt (Dominique Stephan) 7536rtf Rich Text Format (Dominique Stephan) 7537setl SETL (Alex Poylisher) 7538sgmldecl SGML Declarations (Daniel A. Molina W.) 7539sinda Sinda input (Adrian Nagle) 7540sindacmp Sinda compare (Adrian Nagle) 7541sindaout Sinda output (Adrian Nagle) 7542smith SMITH (Rafal Sulejman) 7543snobol4 Snobol 4 (Rafal Sulejman) 7544strace Strace (David Necas) 7545tak TAK input (Adrian Nagle) 7546takcmp TAK compare (Adrian Nagle) 7547takout TAK output (Adrian Nagle) 7548tasm Turbo assembly (FooLman) 7549texmf TeX configuration (David Necas) 7550trasys Trasys input (Adrian Nagle) 7551tssgm TSS Geometry (Adrian Nagle) 7552tssop TSS Optics (Adrian Nagle) 7553tsscl TSS Command line (Adrian Nagle) 7554virata Virata Configuration Script (Manuel M.H. Stol) 7555vsejcl VSE JCL (David Ondrejko) 7556wdiff Wordwise diff (Gerfried Fuchs) 7557wsh Windows Scripting Host (Paul Moore) 7558xkb X Keyboard Extension (David Necas) 7559 7560Renamed php3 to php, it now also supports php4 (Lutz Eymers) 7561 7562Patch 5.7.015 7563Problem: Syntax files for Vim 6.0 can't be used with 5.x. 7564Solution: Add the "default" argument to the ":highlight" command: Ignore the 7565 command if highlighting was already specified. 7566Files: src/syntax.c 7567 7568Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done 7569when Vim is starting up. Reduces the startup time of the GUI. 7570 7571 7572Fixed *fixed-5.8* 7573----- 7574 7575Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink. 7576 7577Fixed compiling under NeXT. (Jeroen C.M. Goudswaard) 7578 7579optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C'). 7580 7581Tcl interpreter: "buffer" command didn't check for presence of an argument. 7582(Dave Bodenstab) 7583 7584dosinst.c: Added checks for too long file name. 7585 7586Amiga: a file name starting with a colon was considered absolute but it isn't. 7587Amiga: ":pwd" added a slash when in the root of a drive. 7588 7589Macintosh: Warnings for unused variables. (Bernhard Pruemmer) 7590 7591Unix: When catching a deadly signal, handle it in such a way that it's 7592unlikely that Vim will hang. Call _exit() instead of exit() in case of a 7593severe problem. 7594 7595Setting the window title from nothing to something didn't work after patch 29. 7596 7597Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as 7598well for extra security. 7599 7600Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set 7601'fileformat' to "dos" before writing the temp file. 7602 7603Unix: Could start waiting for a character when checking for a CTRL-C typed 7604when an X event is received. 7605 7606Could not use Perl and Python at the same time on FreeBSD, because Perl used 7607"-lc" and Python used the threaded C library. 7608 7609Win32: The Mingw compiler gave a few warning messages. 7610 7611When using "ZZ" and an autocommand for writing uses an abbreviation it didn't 7612work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe) 7613 7614VMS doesn't always have lstat(), added an #ifdef around it. 7615 7616Added a few corrections for the Macintosh. (Axel Kielhorn) 7617 7618Win32: Gvimext could not edit more than a few files at once, the length of the 7619argument was fixed. 7620 7621 7622Previously released patches for Vim 5.7: 7623 7624Patch 5.7.001 7625Problem: When the current buffer is crypted, and another modified buffer 7626 isn't, ":wall" will encrypt the other buffer. 7627Solution: In buf_write() use "buf" instead of "curbuf" to check for the 7628 crypt key. 7629Files: src/fileio.c 7630 7631Patch 5.7.002 7632Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds 7633 before displaying the read text. (Wichert Akkerman) 7634Solution: Set "keep_msg" to the file message so that the screen is redrawn 7635 before the three seconds wait for displaying the mode message. 7636Files: src/fileio.c 7637 7638Patch 5.7.003 7639Problem: Searching for "[[:cntrl:]]" doesn't work. 7640Solution: Exclude NUL from the matching characters, it terminates the list. 7641Files: src/regexp.c 7642 7643Patch 5.7.004 7644Problem: GTK: When selecting a new font, Vim can crash. 7645Solution: In gui_mch_init_font() unreference the old font, not the new one. 7646Files: src/gui_gtk_x11.c 7647 7648Patch 5.7.005 7649Problem: Multibyte: Inserting a wrapped line corrupts kterm screen. 7650 Pasting TEXT/COMPOUND_TEXT into Vim does not work. 7651 On Motif no XIM status line is displayed even though it is 7652 available. 7653Solution: Don't use xterm trick for wrapping lines for multibyte mode. 7654 Correct a missing "break", added TEXT/COMPOUND_TEXT selection 7655 request. 7656 Add XIMStatusArea fallback code. 7657 (Katsuhito Nagano) 7658Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c 7659 7660Patch 5.7.006 7661Problem: GUI: redrawing the non-Visual selection is wrong when the window 7662 is unobscured. (Jean-Pierre Etienne) 7663Solution: Redraw the selection properly and don't clear it. Added "len" 7664 argument to clip_may_redraw_selection(). 7665Files: src/gui.c, src/ui.c, src/proto/ui.pro 7666 7667Patch 5.7.007 7668Problem: Python: Crash when using the current buffer twice. 7669Solution: Increase the reference count for buffer and window objects. 7670 (Johannes Zellner) 7671Files: src/if_python.c 7672 7673Patch 5.7.008 7674Problem: In Ex mode, backspacing over the first TAB doesn't work properly. 7675 (Wichert Akkerman) 7676Solution: Switch the cursor on before printing the newline. 7677Files: src/ex_getln.c 7678 7679Patch 5.7.009 (extra) 7680Problem: Mac: Crash when using a long file. 7681Solution: Don't redefine malloc() and free(), because it will break using 7682 realloc(). 7683Files: src/os_mac.h 7684 7685Patch 5.7.010 7686Problem: When using CTRL-A on a very long number Vim can crash. (Michael 7687 Naumann) 7688Solution: Truncate the length of the new number to avoid a buffer overflow. 7689Files: src/ops.c 7690 7691Patch 5.7.011 (extra) 7692Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed. 7693Solution: Output each character separately, to avoid that Windows reverses 7694 the text for some fonts. (Ron Aaron) 7695Files: src/gui_w32.c 7696 7697Patch 5.7.012 7698Problem: When using "-complete=buffer" for ":command" the user command 7699 fails. 7700Solution: In a user command don't replace the buffer name with a count for 7701 the buffer number. 7702Files: src/ex_docmd.c 7703 7704Patch 5.7.013 7705Problem: "gD" didn't always find a match in the first line, depending on 7706 the column the search started at. 7707Solution: Reset the column to zero before starting to search. 7708Files: src/normal.c 7709 7710Patch 5.7.014 7711Problem: Rot13 encoding was done on characters with accents, which is 7712 wrong. (Sven Gottwald) 7713Solution: Only do rot13 encoding on ASCII characters. 7714Files: src/ops.c 7715 7716Patch 5.7.016 7717Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was 7718 not restored, some matches were skipped. (Daniel Blaustein) 7719Solution: Restore the reg_ic variable when 'n' was hit. 7720Files: src/ex_cmds.c 7721 7722Patch 5.7.017 7723Problem: When using a Vim script for Vim 6.0 with <SID> before a function 7724 name, it produces an error message even when inside an "if version 7725 >= 600". (Charles Campbell) 7726Solution: Ignore errors in the function name when the function is not going 7727 to be defined. 7728Files: src/eval.c 7729 7730Patch 5.7.018 7731Problem: When running "rvim" or "vim -Z" it was still possible to execute a 7732 shell command with system() and backtick-expansion. (Antonios A. 7733 Kavarnos) 7734Solution: Disallow executing a shell command in get_cmd_output() and 7735 mch_expand_wildcards(). 7736Files: src/misc1.c, src/os_unix.c 7737 7738Patch 5.7.019 7739Problem: Multibyte: In a substitute string, a multi-byte character isn't 7740 skipped properly, can be a problem when the second byte is a 7741 backslash. 7742Solution: Skip an extra byte for a double-byte character. (Muraoka Taro) 7743Files: src/ex_cmds.c 7744 7745Patch 5.7.020 7746Problem: Compilation doesn't work on MacOS-X. 7747Solution: Add a couple of #ifdefs. (Jamie Curmi) 7748Files: src/regexp.c, src/ctags/general.h 7749 7750Patch 5.7.021 7751Problem: Vim sometimes produces a beep when started in an xterm. Only 7752 happens when compiled without mouse support. 7753Solution: Requesting the xterm version results in a K_IGNORE. This wasn't 7754 handled when mouse support is disabled. Accept K_IGNORE always. 7755Files: src/normal.c 7756 7757Patch 5.7.022 7758Problem: %v in 'statusline' is not displayed when it's equal to %c. 7759Solution: Check if %V or %v is used and handle them differently. 7760Files: src/screen.c 7761 7762Patch 5.7.023 7763Problem: Crash when a WinLeave autocommand deletes the buffer in the other 7764 window. 7765Solution: Check that after executing the WinLeave autocommands there still 7766 is a window to be closed. Also update the test that was supposed 7767 to check for this problem. 7768Files: src/window.c, testdir/test13.in, testdir/test13.ok 7769 7770Patch 5.7.024 7771Problem: Evaluating an expression for 'statusline' can have side effects. 7772Solution: Evaluate the expression in a sandbox. 7773Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, 7774 src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, 7775 src/screen.c, src/undo.c 7776 7777Patch 5.7.025 (fixed) 7778Problem: Creating a temp file has a race condition. 7779Solution: Create a private directory to write the temp files in. 7780Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, 7781 src/proto/fileio.pro, src/memline.c, src/os_unix.h 7782 7783Patch 5.7.026 (extra) 7784Problem: Creating a temp file has a race condition. 7785Solution: Create a private directory to write the temp files in. 7786 This is the extra part of patch 5.7.025. 7787Files: src/os_msdos.h 7788 7789Patch 5.7.027 7790Problem: Starting to edit a file can cause a crash. For example when in 7791 Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and 7792 then <CR>, which edits a help file. (Robert Bogomip) 7793Solution: Check if keep_msg is NULL before copying it. 7794Files: src/fileio.c 7795 7796Patch 5.7.028 7797Problem: Creating a backup or swap file could fail in rare situations. 7798Solution: Use O_EXCL for open(). 7799Files: src/fileio.c, src/memfile.c 7800 7801Patch 5.7.029 7802Problem: Editing a file with an extremely long name crashed Vim. 7803Solution: Check for length of the name when setting the window title. 7804Files: src/buffer.c 7805 7806Patch 5.7.030 7807Problem: A ":make" or ":grep" command with a very long argument could cause 7808 a crash. 7809Solution: Allocate the buffer for the shell command. 7810Files: src/ex_docmd.c 7811 7812 7813 vim:tw=78:ts=8:ft=help:norl: 7814