From: Bram Moolenaar To: vim-dev@vim.org Subject: Vim 6.0s alpha available Date: Sun, 14 Jan 2001 22:06:42 +0100 Message-Id: <200101142106.f0EL6gU43835@moolenaar.net> Quite a few changes this time. Among them a "big" item that has been in the top-ten of requested features for a long time! Major changes ------------- Added the Command-line window. In this window you can edit a command-line with Normal and Insert mode commands. It is filled with the command-line history when it's opened, so that you can use bits of previous commands. The Command-line window can be opened from the command-line with the key specified with 'cedit' (like Nvi). It can be opened directly from Normal mode with the commands "q:", "q/" and "q?". You execute a command by hitting . CTRL-C takes you back to the command-line and ":q" aborts. The 'cmdwinheight' option specifies the height of the window. In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like it's done on the command-line. This is also useful for writing Vim scripts! This is still very new. Try it out and see if you like it. I intend to add a few more things, so that Insert mode in the command-line window is just like editing a command-line. Once that is done, a single-line command-line window can be used instead of the command-line itself (to do it the Elvis way). Made the fold column easier to understand. It can be made wider to show "-" for each open fold and "+" for each closed fold, like a tree. If there is enough room the number of '|' characters indicates the fold depth. The mouse can be used in the fold column to open and close folds: Click on the "+" to open a fold and click on another non-blank character to close a fold. The fold column continues below the end of the file, this looks better. FoldColumn highlighting can be set to color the fold column differently from a closed fold. Filetype plugins are now also found in the "ftplugin" directory itself. This avoids the need to create a directory for every filetype used. The directory is still allowed to be able to use multiple plugins on an MS-DOS filesystem. It is now possible for some global options to also have a local value. They currently are: 'grepprg', 'makeprg' and 'equalprg'. This allows using a buffer-local value for these options while keeping the option global in other buffers and be backwards compatible. Perhaps some other global options should be added to this list. Other changes ------------- Use a secure way to generate temp file names: Create a private directory for temp files. Used for Unix, MS-DOS and OS/2. Deleted symlink_check(), no longer needed. 'makeef' can be empty, which means that an internally generated file name is used. The old default was "/tmp/file", which is a security risk. Added the getchar() and getcharmod() functions. Can be used to define a mapping that takes an argument. Incompatible: 'foldcolumn' is now a number, specifying the width of the fold column. This allows more room for information about the folds. Incompatible: The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and sometimes not (Unix). Now case is always ignored. Add "\C" to the pattern to match case. Incompatible: Made 'backupskip' a file pattern instead of a regexp. Now it's like 'wildignore'. 'backupskip' is only present when compiled with the +wildignore feature. match(str, pat, start) now returns -1 if "start" is larger than the length of "str". A buffer for a directory is no longer added to the Buffers menu. The debug commands can now be abbreviated. Prepend ":" to an Ex commands that is ambigious. Compiling the Win32 GUI with Cygwin now works. Also compiles vimrun, dosinst and uninstall. (gerfried) UTF-8: Use Xutf8LookupString() when it's available (XFree86 4.0.2). ":runtime" now accepts a list of file names. Added Verilog HDL indent file (Chih-Tsun Huang) Added Hungarian menus. (Zoltan Arpadffy) Mac: Make Vim compile with the free MPW compiler supplied by Apple. And updates for CodeWarrior. (Axel Kielhorn) Added the v:prevcount variable: v:count for the previous command. Added the ":argedit" command: Add a file to the argument list and edit it. Internal: No longer use the global reg_ic flag. It caused trouble and in a few places it was not set. "gf" now also works in Visual mode: Use the selected text as the file name. (Chase Tingley) When 'modifiable' is off, the %m and %M items in 'statusline' show a '-'. Fixes ----- When inserting a special key as its name ("" as four characters) after moving around in Insert mode, undo didn't work properly. When 'insertmode' is set, it would still be possible to insert characters when 'modifiable' is off. "u" and CTRL-R were also still possible. Didn't compile with +eval feature and without +crypt. (Rafael Garcia-Suarez) A session deleted all buffers, deleting all marks. Now keep the buffer list, it shouldn't hurt for some existing buffers to remain present. When the argument list is empty ":argdel *" caused an error message. ":options" (the option window) didn't work, because 'buftype' has changed. (Mark Waggoner) Calling foldtext() from outside of 'foldtext' caused a crash. Command line completion didn't work after ":vertical", ":silent" and a few others. Motif GUI: When using the right mouse button, for some people gvim freezed for a couple of seconds (Motif 1.2?). This doesn't happen when there is no Popup menu. Solved by only creating a popup menu when 'mousemodel' is "popup" or "popup_setpos". (David Harrison) Motif: When adding many menu items, the "Help" menu disappeared but the menubar didn't wrap. Now manually set the menubar height. When opening a file with zero bytes or one byte, 'filecharcode' was set to "ucs-bom". When using in Insert mode to remove a line break, or using "J" to join lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro) Removed defining SVR4 in configure. It causes problems for some X header files and doesn't appear to be used anywhere. When an xterm with --enable-tcap-query is used, and the "Co" entry is different, the displayed colors are wrong. Now try to get the queried termcap entries before the first redraw, and force a redraw when "Co" changes. Allowed 'foldmethod' to be set to an empty string. It must always have a value. ":vsp" ":cw" and then ":q" in the right-upper window: the quickfix window kept its height and the command line is much too high. "vim -o a b" opened "a" in both windows. Doing ":%s/this/that/g" only redrawed the top half of a window. Only noticable when syntax highlighting isn't enabled. When 'wildignore' is used, 'ignorecase' for a tag match was not working. Disabled the mouse code for OS/2. It was not really used. ":mksession" always used the full path name for a buffer, also when the short name could be used. ":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a way that they would be restored. Now use the key name if possible, this is portable. After recovering a file and abandoning it, an ":edit" command didn't give the ATTENTION prompt again. Would be useful to be able to delete the file in an easy way. Reset the BF_RECOVERED flag when unloading the buffer. histdel() could match or ignore case, depending on what happened before it. Now always match case. When a window size was specified when splitting a window, it would still get the size from 'winheight' or 'winwidth' if it's larger. Syntax highlighting was sometimes wrong: Making a change that causes lines below it to be differently highlighted (e.g, deleting a line with a )), undoing that and then making another change (e.g., "J") had wrong highlighting for a line that scrolled up and became displayed in the window. Crash when doing ":botright cwin" in a window layout of a vertical split, with the righthand frame split horizontally. The message for completion was never translated, because the "Adding" was skipped. When using "append" or "insert" inside a function definition, a line starting with "function" or "endfunction" caused confusion. Now recognize the commands and skip lines until a ".". Debug mode: After ":cont" messages that scrolled are cleared, the hit-return prompt is skipped. Actually, at the end of any function or sourced file need_wait_return could be reset. Debug mode: when in a while loop the line number stayed fixed. Now the line number is remembered in a while loop (also for error messages). "cd c:/" didn't work on MS-DOS. mch_isdir() removed a trailing slash. Epilogue -------- WARNING: This is really an unstable version. Many things have been added without proper testing. It does crash. It may destroy your work. This version is for developers, thus it comes as source code only. If you run into something that doesn't work, please try to figure out why, try to solve it and send me a patch. If you can't do that, at least send me precise information to save me time. If you don't like the syntax of a command, the name of an option or how the new features work, let's discuss this in the vim-dev maillist. More info for the new 6.0 features at ":help version6". Lots of things are not working yet. Check ":help todo" for known items. I NEED YOUR HELP: There is still a lot of work to be done. If I have to do it all by myself it will take a very long time until Vim.6.0 is ready. Please give a hand by implementing one of the items in the todo list. You can find it here: ftp://ftp.vim.org/pub/vim/unreleased/ unix/vim-6.0s-rt.tar.gz runtime files unix/vim-6.0s-src.tar.gz sources extra/vim-6.0s-extra.tar.gz extra files extra/vim-6.0s-lang.tar.gz multi-language files Happy Vimming!