From: Bram Moolenaar To: vim-dev@vim.org Subject: Vim version 5.4j ALPHA available Date: Sun, 16 May 1999 23:41:15 +0200 Hello Vimmers, Changes, lost of fixes and a few new things, again. All the "Recent" items in the todo list are finally done. Hurray! I'll try to do a few more important items, and then it's time for a beta release. Once that is out, I will drastically cut down on making changes. If you think something should still be included in 5.4, tell me now! One of the main additions this time is the option window. This replaces the GTK-specific option dialog. It works with any version, also with non-GUI versions, so long as the "+eval" feature is compiled with. You can start it with ":options". Try it out and see if you like it. In the xterm you can now also use the ":winpos" command and set the number of lines and columns. Requires a fairly recent xterm version (see ":help color-xterm" for an URL). Writing a Vim script to bounce the xterm window around the screen is left as an exercise for the reader... :-) If you want to try out the GTK GUI version, you should download GTK version 1.2.0 or newer. A few things have been included that require at least 1.1.16. The 1.1.x versions were only for testing anyway. GTK 1.0 should also work, more or less. The result is still an UNSTABLE version, ready for more changes. It is supposed to be used to make new patches against. You can use it for normal work (like me) but it's more risky than a normal release. WHERE TO GET IT --------------- This is a source-only release! You can find Vim 5.4j here: ftp://ftp.home.vim.org/pub/vim/unreleased/ See this file for Mirrors: ftp://ftp.home.vim.org/pub/vim/MIRRORS unix/vim-5.4j-src.tar.gz source files for Unix unix/vim-5.4i-5.4j-src.diff.gz source diff with version 5.4i unix/vim-5.4j-rt.tar.gz runtime files for Unix unix/vim-5.4i-5.4j-rt.diff.gz runtime diff with version 5.4i extra/vim-5.4j-extra.tar.gz extra files extra/vim-5.4i-5.4j-extra.diff.gz diff with version 5.4i WHAT IS NEW ----------- This is the complete list of changes since version 5.4i. For a list of changes since version 5.3, see ":help version-5.4". Changed: On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find the runtime file. Removed the 'useclipboard' option and the 'A' flag from 'mouse'. Introduced the 'clipboard' option, with values "unnamed" (for what 'useclipboard' did) and "autoselect" (for what 'A' in 'mouse' did). Replaced the GTK-specific option dialog with an option window that works in all versions. Use ":options" command or ":browse set" to open it. Options are grouped by function. Offers short help on each option. Hit to jump to more help. Edit the option value and hit on a "set" line to set a new value. When 'tags' is "./" and there is no file name for the current buffer, just use it. Previously it was skipped, causing "vim -t " not to find many tags. When trying to select text in the 'scrolloff' area by mouse dragging, the resulting scrolling made this difficult. Now 'scrolloff' is temporarily set to 0 or 1 to avoid this. But still allow scrolling in the top line to extend to above the displayed text. Some messages are shown fully, even when 'shortmess' tells to shorten messages: CTRL-G and quickfix commands. Moved the "Window" menu all the way to the right (priority 70). Looks more familiar for people working with MS-Windows, shouldn't matter for others. Added: 'display' option: When set to "lastline", the last line fills the window, instead of being replaced with "@" lines. Only the last three characters are replaced with "@@@", to indicate that the line has not finished yet. 'h' flag in 'viminfo': Do ":nohlsearch" when loading a viminfo file. 'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if it didn't exist when editing started but it does exist when the buffer is written to the file. The file must have been created outside of Vim, possibly without the user knowing it. When this is detected after a shell command, give a warning message. When editing a new file, CTRL-G will show [New file]. When there were errors while reading the file, CTRL-G will show [Read errors]. Added 't_WP' to set the window position in pixels and 't_WS' to set the window size in characters. Xterm can now move (used for ":winpos") and resize (use for ":set lines=" and ":set columns="). Check xterm patch level, to set the value of 'ttymouse'. Has only been added to xterm recently (patch level > 95). Uses the new 't_RV' termcap option. Set 'ttymouse' to "xterm2" when a correct response is recognized. Will make xterm mouse dragging work better. Support for shifted function keys on xterm. Changed codes for shifted cursor keys to what the xterm actually produces. Added codes for shifted and . Configure check for using Unix98 pty's. (Akkerman) "make uninstall_runtime" will only delete the version-specific files. Can be used to delete the runtime files of a previous version. The install program for Dos/Windows can now install Vim in the popup menu, by adding two registry keys. "make test" checks for Visual block mode shift, insert, replace and change. append(lnum, string) function. Included ctags version 3.2.1. (Hiebert) "slash" argument to 'sessionoptions': Replace backward by forward slashes in file names. Added character classes to search patterns, to avoid the need for removing the 'l' flag from 'cpoptions': [:tab:], [:return:], [:backspace:] and [:escape:]. ":wall" can now use a dialog and file-browsing when needed. X11: Support for requesting the type of clipboard support. Used for AIX and dtterm. (Wittig) Added configure check for including the Xmu library, which is needed for this. Fixed: Dos and Win32 console: Setting t_me didn't work to get another color. Made this works backwards compatible. For turkish (LANG = "tr") upper case 'i' is not an 'I'. Use ASCII upper case translation in vim_strup() to avoid language problems. (Komur) Completion of built-in "v:" variables didn't work. Deleted user variables caused completion of buffer/window variables to skip entries. (Roemer) Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully this avoids a hangup in select(0, ..) for Solaris 2.6. Using "Quit" in the dialog for the ATTENTION message could exit Vim unexpectedly. Now only present the dialog when it makes sense, don't load the file when "Quit" is selected and only exit Vim when it was the only window with a file to be edited. The percentage in the ruler was wrong when there were many wrapped lines. Vim would crash when using a script file with 'let &sp = "| tee"', starting vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set for a string option, could cause problems with any string option. When using "cmd | vim -", stdin is not a terminal. This gave problems with GPM (Linux console mouse) and when executing external commands. Now close stdin and re-open it as a copy of stderr. Syntax highlighting: A "nextgroup" item was not properly stored in the state list. This caused missing of next groups when not redrawing from start to end, but starting halfway. When compiling with minimal features but autocommands included, got a compilation error in search.c. Didn't check for valid values of 'ttymouse'. When executing an external command from the GUI, waiting for the child to terminate might not work, causing a hang. (Parmelan) The Win32 GUI would not compile without menus. (Negri) Fixed various XIM problems for GTK GUI. (Nam) Using Motif or Athena GUI with the multibyte feature could cause problems with the clipboard, because the atoms were not used correctly and some #ifdefs were wrong. "make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim files and the vimtutor. Win32: "expand("%:p:h")" with no buffer name removed the directory name. "fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': highlighting was not correct. Now overlapping matches are handled correctly. Athena, Motif and GTK GUI: When started without focus, cursor was shown as if with focus. Don't include 'shellpipe' when compiled without quickfix, it's not used. Don't include 'dictionary' option when compiled without the +insert_expand feature. Only include the 'shelltype' option for the Amiga. When making a change to a line, with 'hlsearch' on, causing it to wrap, while executing a register, the screen would not be updated correctly. This was a generic problem in update_screenline() being called while must_redraw is VALID. Using ":bdelete" in a BufUnload autocommand could cause a crash. The window height was added to another window twice in close_window(). Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) Win32 GUI: define GET_X_LPARAM to make it compile with MSVC 4.2. GTK GUI: When there were two windows, ":gui" showed a black window and waited for a key hit. Same problem when doing "make test16". Some performance bottlenecks removed. Allocating memory was not efficient. For Win32 checking for available memory was slow, don't check it every time now. On NT obtaining the user name takes a long time, cache the result (for all systems). fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. When editing a new file and exiting, the marks for the buffer were not saved in the viminfo file. ":confirm only" didn't put up a dialog. These text objects didn't work when 'selection' was "exclusive": va( vi( va{ vi{ va< vi< vi[ va[. The dialog for writing a readonly file didn't have a valid default. (Negri) The line number used for error messages when sourcing a file was reset when modelines were inspected. It was wrong when executing a function. The file name and line number for an error message wasn't displayed when it was the same as for the last error, even when this was long ago. Now reset the name/lnum after a hit-return prompt. In a session file, a "%" in a file name caused trouble, because fprintf() was used to write it to the file. When skipping statements, a mark in an address wasn't skipped correctly: "ka|if 0|'ad|else|echo|endif". (Roemer) ":wall" could overwrite a not-edited file without asking. GUI: When $DISPLAY was not set or starting the GUI failed in another way, the console mode then started with wrong colors and skipped initializations. Now do an early check if the GUI can be started. Don't source the menu.vim or gvimrc when it will not. Also do normal terminal initializations if the GUI might not start. GTK GUI: After starting the GUI failed, executing a shell command didn't work, because wait() was confused by the forked child. When using a BufEnter autocommand to position the cursor and scroll the window, the cursor was always put at the last used line and halfway the window anyhow. Some search patterns can be extremely slow, even though they are not really illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp search with CTRL-C. When 'wildmode' was set to "longest,list:full", ":e *.c" didn't list the matches. Also avoid that listing after a "longest" lists the wrong matches when the first expansion changed the string in front of the cursor. When using the GTK GUI help-find dialog, had to hit a key to jump to the help and update the window. When using ":insert", ":append" or ":change" inside a while loop, was not able to break out of it with a CTRL-C. Win32: ":e ." took an awful long time before an error message when used in "C:\". Was caused by adding another backslash and then trying to get the full name for "C:\\". ":winpos -10 100" was working like ":winpos -10 -10", because a pointer was not advanced past the '-' sign. When obtaining the value of a hidden option, would give an error message. Now just use a zero value. -- "My particular problem is with registry entries, which seem to just accumulate like plastic coffee cups..." -- Paul Moore --/-/---- Bram Moolenaar ---- Bram@moolenaar.net ---- Bram@vim.org ---\-\-- \ \ www.vim.org/iccf www.moolenaar.net www.vim.org / /