Subject: Vim 6.0s alpha available
From: Bram Moolenaar <[email-masked]>
To: [email-masked]
Date: Sun, 14 Jan 2001 22:06:42 +0100

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 <CR>.  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 ("<F8>" 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 <BS> 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!