Date: Sun, 11 Feb 2001 22:02:52 +0100 To: vim-dev@vim.org Subject: Vim 6.0v alpha available From: Bram Moolenaar Message-Id: <200102112102.f1BL2qt52942@moolenaar.net> Most changes are in the multi-byte region this time. You should now be able to edit UTF-8 files in a normal xterm, without losing characters in conversion. You can only type and see characters upto 255, of course. Major changes ------------- Renamed 'charcode' to 'encoding', since that is what most people would call this option. Also changed the short name 'cc' to 'enc', which is clearer. 'filecharcode' and 'filecharcodes' changed to 'fileencoding' and 'fileencodings'. The "++cc=" argument to file-read commands changed to "++enc=". The CharCode autocmd event was renamed to EncodingChanged. Made 'encoding' accept any single-byte encoding with "8bit-{name}" and any double-byte encoding with "2byte-{name}". Added the 'termencoding' option: Specifies the encoding used for the terminal. Useful to put Vim in utf-8 mode while in a non-Unicode locale: :let &termencoding = &encoding :set encoding=utf-8 Added ":scriptencoding" command: convert lines in a sourced script to 'encoding'. Useful for menu files. When 'viminfo' contains the 'c' flag, the viminfo file is converted from the 'encoding' it was written with to the current 'encoding'. Other changes ------------- The default for 'encoding' is "latin1" instead of "latin-1", because that appears to be the name used in standards. Initialize 'encoding' from the environment whenever an encoding name is found that can be used. The meaning of 'fileencoding' changed. In Vim 5.7 it was the name of the encoding used for the whole of Vim. Now it is the encoding used for the file of a buffer. Removed the support for ucs-4lb and ucs-4bl (little-big and big-little endian). They are so uncommon it's not a good idea to support them. Added iconv() function: Convert text from one encoding to another. Can be used to display messages with special characters dependening on the current 'encoding'. When reading stdin, first read the text in binary mode and then re-read it with automatic selection of 'fileformat' and 'fileencoding'. This avoids problems with not being able to rewind the file (e.g., when a line near the end of the file ends in LF instead of CR-LF). Moved some code from ex_docmd.c to ex_cmds2.c. The file was getting too big. Also moved some code from screen.c to move.c. Don't include the CRC table for encryption, generate it. Saves quite a bit of space in the source code. (Matthias Kramm) Adjusted colortest.vim: Included colors on normal background and reduced the size by using a while loop. (Rafael Garcia-Suarez) ":argdelete" accepts a range to be able to delete arguments by number. Made "\<" and "\>" in a regexp work for UTF-8. (Muraoka Taro) Fixes ----- The batch file generated by the MS-DOS install program didn't put quotes around the executable name, it failed when there is a space in the path. Using 'U' in 'complete' didn't work. (Sung-Hyun Nam) After fixing that, not including 'U' still found matches in unlisted buffers. Multibyte GDK XIM: While composing a multibyte-word, if user presses a mouse button, then the word is removed. It should remain and composing end. (Sung-Hyun Nam) MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF conversion by the C library got in the way of detecting a "dos" 'fileformat'. ":redir @"" didn't work, the " was considered to be the start of a comment. Could not find "gf" file in current directory when path includes ",,". The empty entry was skipped by copy_option_part(). When using 'path' the 'd' flag in 'cpo' was used, while it's only to be used for 'tags'. Completion of old value of 'path' didn't work, was using the local value. When entering a buffer 'foldlevel' would not be applied, all folds were open. ":1,1000bd" done twice reported about deleting unlisted buffers. :he \%^, \%$ and \%( didn't work as expected. When setting any boolean option and 'equalalways' is set, windows would be equalized. When 'smartcase' is set, patterns with "\S" would also make 'ignorecase' reset. When clicking the mouse in a column larger than 222, it moved to the first column. Can't encode a larger number in a character. Now limit the number to 222, don't jump back to the first column. GUI: In some versions CSI would cause trouble, either when typed directly or when part of a multi-byte sequence. "ls | vim - -c "wq file"" echoed the xterm version response in the terminal. Try reading the version response before switching the terminal to Cooked mode. has("folding") didn't work. And there was no "+folding" or "-folding" in the ":version" output. (Michael Klein) When 'showbreak' was set, making the window width very small crashed Vim. Unlisted buffers showed up when completing a buffer name. When '$' is in 'cpoptions', "C" in the first column cleared the line, instead of putting a "$" at the end. Also, the position of the "$" was wrong when making a change in a vertically split window on the right. With '$' in 'cpo' and a vertical split: cw redrawed the whole window, with each line stopping at the column where the dollar is. When doing ":bdel" on a buffer and then editing it again, the "notedited" flag was set, causing a "file exists" error message when writing. When doing ":mksession" with "curdir" in 'sessionoptions' and the cursor in a window with a local directory, that directory was used as the global directory for the session. When 'virtualedit' is used to put text after a line, a tab in that line caused problems. Characterwise text was not put in the right position. "P" added a space at the end of the line. Putting after an empty line worked differently. Using "R" in virtual space moved the cursor back one character before starting the replacement. (Matthias Kramm) Not all windows were redrawn after an "ATTENTION" dialog. When doing "vertical botright split" the vertical separator was not added to all windows. When using multibyte characters in a ":normal" command, a trailing byte that is CSI or K_SPECIAL caused problems. When doing ":only" in the ":cwindow" it didn't resize to full screen. Didn't recognize ^ in "\%(^" as start-of-line. Wildmenu didn't handle multi-byte characters. Epilogue -------- WARNING: This is really an unstable version. Many things have been added without proper testing. It does crash. It may destroy your work. New features may change incompatibly in the next version. 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. More info about the new 6.0 features with ":help version6". 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. 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 Vim 6.0 here: ftp://ftp.vim.org/pub/vim/unreleased/ unix/vim-6.0v-rt.tar.gz runtime files unix/vim-6.0v-src.tar.gz sources extra/vim-6.0v-extra.tar.gz extra files extra/vim-6.0v-lang.tar.gz multi-language files Happy Vimming!