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)
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-enter 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.
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.
When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" 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 ":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.
OS/2: Was using argv[0], even though it was not a useful name. It could be
just "vim", found in the search path.
Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until
after a delay of 'updatetime'. Didn't check for the size-changed signal.
'scrollbind' didn't work in Insert mode.
Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g.,
when 'showcmd' was off).
When compiled with minimal features but with GUI, switching on the mouse in an
xterm caused garbage, because the mouse codes were not recognized. Don't
enable the mouse when it can't be recognized. In the GUI it also didn't work,
the arguments to the mouse code were not interpreted.
When 'showbreak' used, in Insert mode, when the cursor is just after the last
character in the line, which is also the in the rightmost column, the cursor
position would be like the 'showbreak' string is shown, but it wasn't.
Autocommands could move the cursor in a new file, so that CTRL-W i didn't show
the right line. Same for when using a filemark to jump to another file.
When redefining the argument list, the title used for other windows could be
showing the wrong info about the position in the argument list. Also update
this for a ":split" command without arguments.
When editing file 97 of 13, ":Next" didn't work. Now it goes to the last
file in the argument list.
Insert mode completion (for dictionaries or included files) could not be
interrupted by typing an <Esc>. Could get hit-enter prompt after line
completion, or whenever the informative message would get too long.
When using the ":edit" command to re-edit the same file, an autocommand to
jump to the last cursor position caused the cursor to move. Now set the last
used cursor position to avoid this.
When 'comments' has a part that starts with white space, formatting the
comment didn't work.
At the ":tselect" prompt Normal mode mappings were used. That has been
disabled.
When 'selection' is not "old", some commands still didn't allow the cursor
past the end-of-line in Visual mode.
Athena: When a menu was deleted, it would appear again (but not functional)
when adding another menu. Now they don't reappear anymore (although they are
not really deleted either).
Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri)
"ze" didn't work when 'number' was on. (Davis)
Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson)
A few files were including proto.h a second time, after vim.h had already done
that, which could cause problems with the vim_realloc() macro.
Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and
'*'. (Negri)
MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and
number keys work. (Negri)
When finding a lot of matches for a tag completion, the check for avoiding
double matches could take a lot of time. Add a line_breakcheck() to be able
to interrupt this. (Deshpande)
When the command line was getting longer than the screen, the more-prompt
would be given regularly, and the cursor position would be wrong. Now only
show the part of the command line that fits on the screen and force the cursor
to be positioned on the visible part. There can be text after the cursor
which isn't editable.
At the more prompt and with the console dialog, a cursor key was interpreted
as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse
and scrollbar events.
When typing a BS after inserting a middle comment leader, typing the last char
of the end comment leader still changed it into the end comment leader. (Webb)
When a file system is full, writing to a swap file failed. Now first try to
write one block to the file. Try next entry in 'dir' if it fails.
When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the
display.
Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was
translated to "}" before the shell got it. Now don't remove backslashes when
wildcards are going to be expanded.
Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a
file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty"
still doesn't work though.
"make test" didn't always work on DOS/Windows for test30, because it depended
on the external "echo" command.
The link.sh script used "make" instead of $MAKE from the Makefile. Caused
problems for generating pathdef.c when "make" doesn't work properly.
On versions that can do console and GUI: In the console a typed CSI code could
cause trouble.
The patterns in expression evaluation didn't ignore the 'l' flag in
'cpoptions'. This broke the working of <CR> in the options window.
When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still
highlighted red for trailing space.
Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim
would loop while outputting "*" characters. vgetc() was called recursively,
thus it returns NUL. Added safe_vgetc(), which reads input directly from the
user in this situation.
While reading text from stdin, only an empty screen was shown. Now show that
Vim is reading from stdin.
The cursor shape wasn't set properly when returning to Insert mode, after
using a CTRL-O /asdf command which fails. It would be OK after a few seconds.
Now it's OK right away.
The 'isfname' default for DOS/Windows didn't include the '@' character. File
names that contained "dir\@file" could not be edited.
Win32 console: <C-S-Left> could cause a crash when compiled with Borland or
egcs. (Aaron)
Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use
"#ifdef HAVE_DIRENT_H" instead. (Jones)
When a matching tag is in the current file but has a search pattern that
doesn't match, the cursor would jump to the first line.
Unix: Dependencies for pty.c were not included in Makefile. Dependency of
ctags/config.h was not included (only matters for parallel make).
Removed a few Uninitialized Memory Reads (potential crashes). In do_call()
calling clear_var() when not evaluating. In win32_expandpath() and
dos_expandpath() calling backslash_halve() past the end of a file name.
Removed memory leaks: Set_vim_var_string() never freed the value. The
next_list for a syntax keyword was never freed.
On non-Unix systems, using a file name with wildcards without a match would
silently fail. E.g., ":e *.sh".
The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized
as Vim scripts. Renamed them to *.vim.
[备注: 有些编号的补丁在从 5.3 版本升级时没有意义，它们被删除了]
Patch 5.4m.1
问题: When editing a file with a long name, would get the hit-enter
prompt, even though all settings are such that the name should be
truncated to avoid that. filemess() was printing the file name
without truncating it.
解决方案: Truncate the message in filemess(). Use the same code as for
msg_trunc_attr(), which is moved to the new function
msg_may_trunc().
相关文件: src/message.c, src/proto/message.pro, src/fileio.c
Patch 5.4m.3
问题: The Motif libraries were not found by configure for Digital Unix.
解决方案: Add "/usr/shlib" to the search path. (Andy Kahn)
相关文件: src/configure.in, src/configure
Patch 5.4m.5
问题: Win32 GUI: When using the Save-As menu entry and selecting an
existing file in the file browser, would get a dialog to confirm
overwriting twice. (Ed Krall)
解决方案: Removed the dialog from the file browser. It would be nicer to
set the "forceit" flag and skip Vim's ":confirm" dialog, but it
requires quite a few changes to do that.
相关文件: src/gui_w32.c
Patch 5.4m.6
问题: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -",
a message box would pop up with "-stdin-" (when exiting). (Michael
Schaap)
解决方案: Don't switch off termcap mode for versions that are GUI-only.
They use another terminal to read from stdin.
相关文件: src/main.c, src/fileio.c
Patch 5.4m.7
问题: Unix: running configure with --enable-gtk-check,
--enable-motif-check, --enable-athena-check or --enable-gtktest
had the reverse effect. (Thomas Koehler)
解决方案: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE().
相关文件: src/configure.in, src/configure
Patch 5.4m.9
问题: Multi-byte: With wrapping lines, the cursor was sometimes 2
characters to the left. Syntax highlighting was wrong when a
double-byte character was split for a wrapping line. When
'showbreak' was on the splitting also didn't work.
解决方案: Adjust getvcol() and win_line(). (Chong-Dae Park)
相关文件: src/charset.c, src/screen.c
Patch 5.4m.11
问题: The ":call" command didn't check for illegal trailing characters.
(Stefan Roemer)
解决方案: Add the check in do_call().
相关文件: src/eval.c
Patch 5.4m.13
问题: With the ":s" command:
1. When performing a substitute command, the mouse would be
disabled and enabled for every substitution.
2. The cursor position could be beyond the end of the line.
Calling line_breakcheck() could try to position the cursor,
which causes a crash in the Win32 GUI.
3. When using ":s" in a ":g" command, the cursor was not put on
the first non-white in the line.
4. There was a hit-enter prompt when confirming the substitution
and the replacement was a bit longer.
解决方案: 1. Only disable/enable the mouse when asking for confirmation.
2. Always put the cursor on the first character, it is going to be
moved to the first non-blank anyway.
Don't use the cursor position in gui_mch_draw_hollow_cursor(),
get the character from the screen buffer.
3. Added global_need_beginline flag to call beginline() after ":g"
has finished all substitutions.
4. Clear the need_wait_return flag after prompting the user.
相关文件: src/ex_cmds.c, src/gui_w32.c
Patch 5.4m.14
问题: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end
up with two swapfiles for "xxx". That is caused by the ":bdel"
command which is executed when unloading the option-window.
Also, there was no check if closing a buffer made the new one
invalid, this could cause a crash.
解决方案: When closing a buffer causes the current buffer to be deleted,
use the new buffer to replace it. Also detect that the new buffer
has become invalid as a side effect of closing the current one.
Make autocommand that calls ":bdel" in optwin.vim nested, so that
the buffer loading it triggers also executes autocommands.
Also added a test for this in test13.
相关文件: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h
src/testdir/test13.in, src/testdir/test13.ok
Patch 5.4m.15
问题: When using a BufEnter autocommand to reload the syntax file,
conversion to HTML caused a crash. (Sung-Hyun Nam)
解决方案: When using ":syntax clear" the current stack of syntax items was
not cleared. This will cause memory to be used that has already
been freed. Added call to invalidate_current_state() in
syntax_clear().
相关文件: src/syntax.c
Patch 5.4m.17
问题: When omitting a ')' in an expression it would not be seen as a
failure.
When detecting an error inside (), there would be an error message
for a missing ')' too.
When using ":echo 1+|echo 2" there was no error message. (Roemer)
When using ":exe 1+" there was no error message.
When using ":return 1+" there was no error message.
解决方案: Fix do_echo(), do_execute() and do_return() to give an error
message when eval1() returns FAIL.
Fix eval6() to handle trailing ')' correctly and return FAIL when
it's missing.
相关文件: src/eval.c
Patch 5.4m.18
问题: When using input() from inside an expression entered with
"CTRL-R =" on the command line, there could be a crash. And the
resulting command line was wrong.
解决方案: Added getcmdline_prompt(), which handles recursive use of
getcmdline() correctly. It also sets the command line prompt.
Removed cmdline_prompt(). Also use getcmdline_prompt() for
getting the crypt key in get_crypt_key().
相关文件: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c
Patch 5.4m.21
问题: When starting up, the screen structures were first allocated at
the minimal size, then initializations were done with Rows
possibly different from screen_Rows. Caused a crash in rare
situations (GTK with XIM and fontset).
解决方案: Call screenalloc() in main() only after calling ui_get_winsize().
Also avoids a potential delay because of calling screenclear()
while "starting" is non-zero.
相关文件: src/main.c
Patch 5.4m.22
问题: In the GUI it was possible that the screen was resized and the
screen structures re-allocated while redrawing the screen. This
could cause a crash (hard to reproduce). The call sequence goes
through update_screen() .. syntax_start() .. ui_breakcheck() ..
gui_resize_window() .. screenalloc().
解决方案: Set updating_screen while redrawing. If the window is resized
remember the new size and handle it only after redrawing is
finished.
This also fixes that resizing the screen while still redrawing
(slow syntax highlighting) would not work properly.
Also disable display_hint, it was never used.
相关文件: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro
Patch 5.4m.23
问题: When using expand("<cword>") when there was no word under the
cursor, would get an error message. Same for <cWORD> and <cfile>.
解决方案: Don't give an error message, return an empty string.
相关文件: src/eval.c
Patch 5.4m.24
问题: ":help \|" didn't find anything. It was translated to "/\\|".
解决方案: Translate "\|" into "\\bar". First check the table for specific
translations before checking for "\x".
相关文件: src/ex_cmds.c
Patch 5.4m.25
问题: Unix: When using command line completion on files that contain
''', '"' or '|' the file name could not be used.
Adding this file name to the Buffers menu caused an error message.
解决方案: Insert a backslash before these three characters.
Adjust Mungename() function to insert a backslash before '|'.
相关文件: src/ex_getln.c, runtime/menu.vim
Patch 5.4m.26
问题: When using a mapping of two function keys, e.g., <F1><F1>, and
only the first char of the second key has been read, the mapping
would not be recognized. Noticed on some Unix systems with xterm.
解决方案: Add 'K' flag to 'cpoptions' to wait for the whole key code, even
when halfway a mapping.
相关文件: src/option.h, src/term.c
Patch 5.4m.27
问题: When making test33 without the lisp feature it hangs. Interrupting
the execution of the script then might cause a crash.
解决方案: In inchar(), after closing a script, don't use buf[] anymore.
closescript() has freed typebuf[] and buf[] might be pointing
inside typebuf[].
Avoid that test33 hangs when the lisp feature is missing.
相关文件: src/getchar.c src/testdir/test33.in
"os2" was missing from the feature list. Useful for has("os2").
BeOS:
- Included patches from Richard Offer for BeOS R4.5.
- menu code didn't work right. Crashed in the Buffers menu. The window title
wasn't set. (Offer)
Patch 5.4n.3
问题: C-indenting was wrong after " } else". The white space was not
skipped. Visible when 'cino' has "+10".
解决方案: Skip white space before calling cin_iselse(). (Norbert Zeh)
相关文件: src/misc1.c
Patch 5.4n.4
问题: When the 't' flag in 'cpoptions' is included, after a
":nohlsearch" the search highlighting would not be enabled again
after a tag search. (Norbert Zeh)
解决方案: When setting the new search pattern in jumpto_tag(), don't restore
no_hlsearch.
相关文件: src/tag.c
Patch 5.4n.5
问题: When using ":normal" from a CursorHold autocommand Vim hangs. The
autocommand is executed down from vgetc(). Calling vgetc()
recursively to execute the command doesn't work then.
解决方案: Forbid the use of ":normal" when vgetc_busy is set. Give an error
message when this happens.
相关文件: src/ex_docmd.c, runtime/doc/autocmd.txt
Patch 5.4n.6
问题: "gv" could reselect a Visual that starts and/or ends past the end
of a line. (Robert Webb)
解决方案: Check that the start and end of the Visual area are on a valid
character by calling adjust_cursor().
相关文件: src/normal.c
Patch 5.4n.8
问题: When a mark was on a non existing line (e.g., when the .viminfo
was edited), jumping to it caused ml_get errors. (Alexey
Marinichev).
解决方案: Added check_cursor_lnum() in nv_gomark().
相关文件: src/normal.c
Patch 5.4n.9
问题: ":-2" moved the cursor to a negative line number. (Ralf Schandl)
解决方案: Give an error message for a negative line number.
相关文件: src/ex_docmd.c
Patch 5.4n.10
问题: Win32 GUI: At the hit-enter prompt, it was possible to scroll the
text. This erased the prompt and made Vim look like it is in
Normal mode, while it is actually still waiting for a <CR>.
解决方案: Disallow scrolling at the hit-enter prompt for systems that use
on the fly scrolling.
相关文件: src/message.c
Patch 5.4n.14
问题: Win32 GUI: When using ":winsize 80 46" and the height is more than
what fits on the screen, the window size was made smaller than
asked for (that's OK) and Vim crashed (that's not OK)>
解决方案: Call check_winsize() from gui_set_winsize() to resize the windows.
相关文件: src/gui.c
Patch 5.4n.16
问题: Win32 GUI: The <F10> key both selected the menu and was handled as
a key hit.
解决方案: Apply 'winaltkeys' to <F10>, like it is used for Alt keys.
相关文件: src/gui_w32.c
Patch 5.4n.17
问题: Local buffer variables were freed when the buffer is unloaded.
That's not logical, since options are not freed. (Ron Aaron)
解决方案: Free local buffer variables only when deleting the buffer.
相关文件: src/buffer.c
Patch 5.4n.19
问题: Doing ":e" (without argument) in an option-window causes trouble.
The mappings for <CR> and <Space> are not removed. When there is
another buffer loaded, the swap file for it gets mixed up.
(Steve Mueller)
解决方案: Also remove the mappings at the BufUnload event, if they are still
present.
When re-editing the same file causes the current buffer to be
deleted, don't try editing it.
Also added a test for this situation.
相关文件: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in,
src/testdir/test13.ok
Patch 5.4n.24
问题: BeOS: configure never enabled the GUI, because $with_x was "no".
Unix prototypes caused problems, because Display and Widget are
undefined.
Freeing fonts on exit caused a crash.
解决方案: Only disable the GUI when $with_x is "no" and $BEOS is not "yes".
Add dummy defines for Display and Widget in proto.h.
Don't free the fonts in gui_exit() for BeOS.
相关文件: src/configure.in, src/configure, src/proto.h, src/gui.c.
The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild)
Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined.
(Aaron)
VMS:
- mch_setenv() had two arguments instead of three.
- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc".
Removed the dot.
- call to RealWaitForChar() had one argument too many. (Campbell)
- WaitForChar() is static, removed the prototype from proto/os_vms.pro.
- Many file accesses failed, because Unix style file names were used.
Translate file names to VMS style by using vim_fopen().
- Filtering didn't work, because the temporary file name was generated wrong.
- There was an extra newline every 9192 characters when writing a file. Work
around it by writing line by line. (Campbell)
- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;".
Only mattered for generating prototypes.
- Added file name translation to many places. Made easy by defining macros
mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat().
- Set default for 'tagbsearch' to off, because binary tag searching apparently
doesn't work for VMS.
- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell)
Patch 5.4o.2
问题: Crash when using "gf" on "file.c://comment here". (Scott Graham)
解决方案: Fix wrong use of pointers in get_file_name_in_path().
相关文件: src/window.c
Patch 5.4o.3
问题: The horizontal scrollbar was not sized correctly when 'number' is
set and 'wrap' not set.
Athena: Horizontal scrollbar wasn't updated when the cursor was
positioned with a mouse click just after dragging.
解决方案: Subtract 8 from the size when 'number' set and 'wrap' not set.
Reset gui.dragged_sb when a mouse click is received.
相关文件: src/gui.c
Patch 5.4o.4
问题: When running in an xterm and $WINDOWID is set to an illegal value,
Vim would exit with "Vim: Got X error".
解决方案: When using the display which was opened for the xterm clipboard,
check if x11_window is valid by trying to obtain the window title.
Also add a check in setup_xterm_clip(), for when using X calls to
get the pointer position in an xterm.
相关文件: src/os_unix.c
Patch 5.4o.5
问题: Motif version with Lesstif: When removing the menubar and then
using a menu shortcut key, Vim would crash. (raf)
解决方案: Disable the menu mnemonics when the menu bar is removed.
相关文件: src/gui_motif.c
Patch 5.4o.9
问题: The DOS install.exe program used the "move" program. That doesn't
work on Windows NT, where "move" is internal to cmd.exe.
解决方案: Don't use an external program for moving the executables. Use C
functions to copy the file and delete the original.
相关文件: src/dosinst.c
Motif and Athena obtained the status area height differently from GTK. Moved
status_area_enabled from global.h to gui_x11.c and call
xim_get_status_area_height() to get the status area height.
Patch 5.4p.1
问题: When using auto-select, and the "gv" command is used, would not
always obtain ownership of the selection. Caused by the Visual
area still being the same, but ownership taken away by another
program.
解决方案: Reset the clipboard Visual mode to force updating the selection.
相关文件: src/normal.c
Patch 5.4p.2
问题: Motif and Athena with XIM: Typing 3-byte
<multibyte><multibyte><space> doesn't work correctly with Ami XIM.
解决方案: Avoid using key_sym XK_VoidSymbol. (Nam)
相关文件: src/multbyte.c, src/gui_x11.c
Patch 5.4p.4
问题: Win32 GUI: The scrollbar values were reduced for a file with more
than 32767 lines. But this info was kept global for all
scrollbars, causing a mixup between the windows.
Using the down arrow of a scrollbar in a large file didn't work.
Because of round-off errors there is no scroll at all.
解决方案: Give each scrollbar its own scroll_shift field. When the down
arrow is used, scroll several lines.
相关文件: src/gui.h, src/gui_w32.c
Patch 5.4p.5
问题: When changing buffers in a BufDelete autocommand, there could be
ml_line errors and/or a crash. (Schandl) Was caused by deleting
the current buffer.
解决方案: When the buffer to be deleted unexpectedly becomes the current
buffer, don't delete it.
Also added a check for this in test13.
相关文件: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok
Patch 5.4p.7
问题: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and
clicking the right mouse button outside of the selected area, the
selected area wasn't removed until the popup menu has gone.
(Aaron)
解决方案: Set the cursor and update the display before showing the popup
menu.
相关文件: src/normal.c
Patch 5.4p.8
问题: The generated bugreport didn't contain information about
$VIMRUNTIME and whether runtime files actually exist.
解决方案: Added a few checks to the bugreport script.
相关文件: runtime/bugreport.vim
Patch 5.4p.9
问题: The windows install.exe created a wrong entry in the popup menu.
The "%1" was "". The full directory was included, even when the
executable had been moved elsewhere. (Ott)
解决方案: Double the '%' to get one from printf. Only include the path to
gvim.exe when it wasn't moved and it's not in $PATH.
相关文件: src/dosinst.c
Patch 5.4p.10
问题: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used
a short file name for a directory.
解决方案: Change the "%1" to "%L" in the registry entry.
相关文件: src/dosinst.c
Patch 5.4p.11
问题: Motif, Athena and GTK: When closing the GUI window when there is a
changed buffer, there was only an error message and Vim would not
exit.
解决方案: Put up a dialog, like for ":confirm qa". Uses the code that was
already used for MS-Windows.
相关文件: src/gui.c, src/gui_w32.c
Patch 5.4p.12
问题: Win32: Trying to expand a string that is longer than 256
characters could cause a crash. (Steed)
解决方案: For the buffer in win32_expandpath() don't use a fixed size array,
allocate it.
相关文件: src/os_win32.c
MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for
fname_case() and mch_update_cursor() were missing. "fd" was unused in
mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in
mch_call_shell() for DJGPP version.
==============================================================================
5.5 版 本 *version-5.5*
5.5 版本是 5.4 的漏洞修正版。
改动 *changed-5.5*
-------
DJGPP 版本现在用 "-O2" 编译而不是 "-O4"，以减少可执行文件的大小。
src/STYLE 文件移到 runtime/doc/develop.txt。加入设计目标。
'backspace' 现在成为字符串选项。见 patch 5.4.15。
新增 *added-5.5*
-----
加入 Exuberant Ctags 3.3 版本。(Darren Hiebert)
runtime/mswin.vim 里，把 CTRL-Q 映射为 CTRL-V，这样任何 CTRL-V 能做的事情
CTRL-Q 都可以做。
vimrc_example.vim 里支持 bzip2 文件的解压。
如果加入补丁，补丁号在 version.c 表格里输入。这样就可以跳过一个补丁而不影响后
面。
支持 X11 的鼠标滚轮。见 patch 5.5a.14。
line2byte() 可以用来得到缓冲区的大小。见 patch 5.4.35。
用插入模式下的 CTRL-R CTRL-O r 和 CTRL-R CTRL-P r 命令按本义插入寄存器。见
patch 5.4.48。
MS-Windows 的卸载 (uninstall) 程序。可以删除 "Edit with Vim" 的注册表项目。也
进行注册使 "Add/Remove programs" 应用可以找到它。见 patch 5.4.x7。
修正 *fixed-5.5*
-----
When using vimrc_example.vim: An error message when the cursor is on a line
higher than the number of lines in the compressed file. Move the autocommand
for jumping to the last known cursor position to after the decompressing
autocommands.
":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may
mark a file as modified, which causes problems. This is a buffer-specific
setting, it should not affect all files.
"vim --version" wrote two empty lines.
Unix: The alarm signal could kill Vim. It is generated by the Perl alarm()
function. Ignore SIGALRM.
Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script.
BeOS: "tmo" must be bigtime_t, instead of double. (Seibert)
Patch 5.4.1
问题: Test11 fails when $GZIP is set to "-v". (Matthew Jackson)
解决方案: Set $GZIP to an empty string.
相关文件: src/testdir/test11.in
Patch 5.4.2
问题: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal)
解决方案: Check for a NULL pointer returned from get_crypt_key().
相关文件: src/fileio.c
Patch 5.4.3
问题: Python: Trying to use the name of an unnamed buffer caused a
crash. (Daniel Burrows)
解决方案: Check for b_fname being a NULL pointer.
相关文件: src/if_python.c
Patch 5.4.4
问题: Win32: When compiled without toolbar, but the 'T' flag is in
'guioptions', there would be an empty space for the toolbar.
解决方案: Add two #ifdefs where checking for the 'T' flag. (Vince Negri)
相关文件: src/gui.c
Patch 5.4.5
问题: Athena GUI: Using the Buffers.Refresh menu entry caused a crash.
Looks like any ":unmenu" command may cause trouble.
解决方案: Disallow ":unmenu" in the Athena version. Disable the Buffers
menu, because the Refresh item would not work.
相关文件: src/menu.c, runtime/menu.vim
Patch 5.4.6
问题: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only
happens when the GUI forks.
解决方案: Don't fork in a recursive call of gui_start().
相关文件: src/gui.c
Patch 5.4.7
问题: Typing 'q' at the more prompt for the ATTENTION message causes the
file loading to be interrupted. (Will Day)
解决方案: Reset got_int after showing the ATTENTION message.
相关文件: src/memline.c
Patch 5.4.8
问题: Edit some file, ":he", ":opt": options from help window are shown,
but pressing space updates from the other window. (Phillipps)
Also: When there are changes in the option-window, ":q!" gives an
error message.
解决方案: Before creating the option-window, go to a non-help window.
Use ":bdel!" to delete the buffer.
相关文件: runtime/optwin.vim
Patch 5.4.9
Just updates version.h. The real patch has been moved to 5.4.x1.
This patch is just to keep the version number correct.
Patch 5.4.10
问题: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It
should run in the terminal.
解决方案: Use gtk_init_check() instead of gtk_init().
相关文件: src/gui_gtk_x11.c
Patch 5.4.11
问题: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to
the next buffer for some commands, e.g., ":buffer".
解决方案: When the BCO_NOHELP flag is given to buf_copy_options(), still
copy the options used by do_help() when neither the "from" or "to"
buffer is a help buffer.
相关文件: src/option.c
Patch 5.4.12
问题: When using 'smartindent', there would be no extra indent if the
current line did not have any indent already. (Hanus Adler)
解决方案: There was a wrongly placed "else", that previously matched with
the "if" that set trunc_line. Removed the "else" and added a
check for trunc_line to be false.
相关文件: src/misc1.c
Patch 5.4.13
问题: New SGI C compilers need another option for optimisation.
解决方案: Add a check in configure for "-OPT:Olimit". (Chin A Young)
相关文件: src/configure.in, src/configure
Patch 5.4.14
问题: Motif GUI: When the popup menu is present, a tiny window appears
on the desktop for some users.
解决方案: Set the menu widget ID for a popup menu to 0. (Thomas Koehler)
相关文件: src/gui_motif.c
Patch 5.4.15
问题: Since 'backspace' set to 0 has been made Vi compatible, it is no
longer possible to only allow deleting autoindent.
解决方案: Make 'backspace' a list of parts, to allow each kind of
backspacing separately.
相关文件: src/edit.c, src/option.c, src/option.h, src/proto/option.pro,
runtime/doc/option.txt, runtime/doc/insert.txt
Patch 5.4.16
问题: Multibyte: Locale zh_TW.Big5 was not checked for in configure.
解决方案: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang)
相关文件: src/configure.in, src/configure
Patch 5.4.17
问题: GUI: When started from inside gvim with ":!gvim", Vim would not
start. ":!gvim -f" works fine.
解决方案: After forking, wait a moment in the parent process, to give the
child a chance to set its process group.
相关文件: src/gui.c
Patch 5.4.18
问题: Python: The clear_history() function also exists in a library.
解决方案: Rename clear_history() to clear_hist().
相关文件: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro
Patch 5.4.19
问题: In a terminal with 25 lines, there is a more prompt after the
ATTENTION message. When hitting 'q' here the dialog prompt
doesn't appear and file loading is interrupted. (Will Day)
解决方案: Don't allow quitting the printing of a message for the dialog
prompt. Added the msg_noquit_more flag for this.
相关文件: src/message.c
Patch 5.4.20
问题: GTK: When starting gvim, would send escape sequences to the
terminal to switch the cursor off and on.
解决方案: Don't call msg_start() if the GUI is expected to start.
相关文件: src/main.c
Patch 5.4.21
问题: Motif: Toplevel menu ordering was wrong when using tear-off items.
解决方案: Don't add one to the index for a toplevel menu.
相关文件: src/gui_motif.c
Patch 5.4.22
问题: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't
update the column used for vertical movement.
解决方案: Set curwin->w_set_curswant for those commands.
相关文件: src/edit.c
Patch 5.4.23
问题: When a Visual selection is lost to another program, and then the
same text is Visually selected again, the clipboard ownership
wasn't regained.
解决方案: Set clipboard.vmode to NUL to force regaining the clipboard.
相关文件: src/normal.c
Patch 5.4.24
问题: Encryption: When using ":r file" while 'key' has already entered,
the 'key' option would be messed up. When writing the file it
would be encrypted with an unknown key and lost! (Brad Despres)
解决方案: Don't free cryptkey when it is equal to the 'key' option.
相关文件: src/fileio.c
Patch 5.4.25
问题: When 'cindent' is set, but 'autoindent' isn't, comments are not
properly indented when starting a new line. (Mitterand)
解决方案: When there is a comment leader for the new line, but 'autoindent'
isn't set, do C-indenting.
相关文件: src/misc1.c
Patch 5.4.26
问题: Multi-byte: a multi-byte character is never recognized in a file
name, causing a backslash before it to be removed on Windows.
解决方案: Assume that a leading-byte character is a file name character in
vim_isfilec().
相关文件: src/charset.c
Patch 5.4.27
问题: Entries in the PopUp[nvic] menus were added for several modes, but
only deleted for the mode they were used for. This resulted in
the entry remaining in the PopUp menu.
When removing a PopUp[nvic] menu, the name had been truncated,
could result in greying-out the whole PopUp menu.
解决方案: Remove entries for all modes from the PopUp[nvic] menus. Remove
the PopUp[nvic] menu entries first, before the name is changed.
相关文件: src/menu.c
Patch 5.4.28
问题: When using a BufWritePre autocommand to change 'fileformat', the
new value would not be used for writing the file.
解决方案: Check 'fileformat' after executing the autocommands instead of
before.
相关文件: src/fileio.c
Patch 5.4.29
问题: Athena GUI: When removing the 'g' flag from 'guioptions', using a
menu can result in a crash.
解决方案: Always grey-out menus for Athena, don't hide them.
相关文件: src/menu.c
Patch 5.4.30
问题: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The
first character typed after ":sh" goes to Vim, instead of the
started shell.
解决方案: Don't suspend Vim, start a new shell. Kill the async read thread
when starting a new shell. It will be restarted later. (Will Day)
相关文件: src/os_unix.c, src/ui.c
Patch 5.4.31
问题: GUI: When 'mousefocus' is set, moving the mouse over where a
window boundary was, causes a hit-enter prompt to be finished.
(Jeff Walker)
解决方案: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it
for the more prompt and a few other situations. When an operator
is pending, abort it first.
相关文件: src/gui.c
Patch 5.4.32
问题: Unix: $LDFLAGS was not passed to configure.
解决方案: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner)
相关文件: src/Makefile
Patch 5.4.33
问题: Unix: After expanding an environment variable with the shell, the
next expansion would also use the shell, even though it is not
needed.
解决方案: Reset "recursive" before returning from gen_expand_wildcards().
相关文件: src/misc1.c
Patch 5.4.34 (also see 5.4.x5)
问题: When editing a file, and the file name is relative to a directory
above the current directory, the file name was made absolute.
(Gregory Margo)
解决方案: Add an argument to shorten_fnames() which indicates if all file
names should be shortened, or only absolute names. In main() only
use shorten_fnames() to shorten absolute names.
相关文件: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro
Patch 5.4.35
问题: There is no function to get the current file size.
解决方案: Allow using line2byte() with the number of lines in the file plus
one. This returns the offset of the line past the end of the
file, which is the file size plus one.
相关文件: src/eval.c, runtime/doc/eval.txt
Patch 5.4.36
问题: Comparing strings while ignoring case didn't work correctly for
some machines. (Mide Steed)
解决方案: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed
them to return -1 when the first argument is smaller.
相关文件: src/misc2.c
Patch 5.4.37 (also see 5.4.40 and 5.4.43)
问题: Long strings from the viminfo file are truncated.
解决方案: When writing a long string to the viminfo file, first write a line
with the length, then the string itself in a second line.
相关文件: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c,
src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim
Patch 5.4.38
问题: In the option-window, ":set go&" resulted in 'go' being handled
like a boolean option.
Mappings for <Space> and <CR> were overruled by the option-window.
解决方案: When the value of an option isn't 0 or 1, don't handle it like a
boolean option.
Save and restore mappings for <Space> and <CR> when entering and
leaving the option-window.
相关文件: runtime/optwin.vim
Patch 5.4.39
问题: When setting a hidden option, spaces before the equal sign were
not skipped and cause an error message. E.g., ":set csprg =cmd".
解决方案: When skipping over a hidden option, check for a following "=val"
and skip it too.
相关文件: src/option.c
Patch 5.4.40 (depends on 5.4.37)
问题: Compiler error for "atol(p + 1)". (Axel Kielhorn)
解决方案: Add a typecast: "atol((char *)p + 1)".
相关文件: src/ex_cmds.c
Patch 5.4.41
问题: Some commands that were not included would give an error message,
even when after "if 0".
解决方案: Don't give an error message for an unsupported command when not
executing the command.
相关文件: src/ex_docmd.c
Patch 5.4.42
问题: ":w" would also cause a truncated message to appear in the message
history.
解决方案: Don't put a kept message in the message history when it starts
with "<".
相关文件: src/message.c
Patch 5.4.43 (depends on 5.4.37)
问题: Mixing long lines with multiple lines in a register causes errors
when writing the viminfo file. (Robinson)
解决方案: When reading the viminfo file to skip register contents, skip
lines that start with "<".
相关文件: src/ops.c
Patch 5.4.44
问题: When 'whichwrap' includes '~', a "~" command that goes on to the
next line cannot be properly undone. (Zellner)
解决方案: Save each line for undo in n_swapchar().
相关文件: src/normal.c
Patch 5.4.45 (also see 5.4.x8)
问题: When expand("$ASDF") fails, there is an error message.
解决方案: Remove the global expand_interactively. Pass a flag down to skip
the error message.
Also: expand("$ASDF") returns an empty string if $ASDF isn't set.
Previously it returned "$ASDF" when 'shell' is "sh".
Also: system() doesn't print an error when the command returns an
error code.
相关文件: many
Patch 5.4.46
问题: Backspacing did not always use 'softtabstop' after hitting <CR>,
inserting a register, moving the cursor, etc.
解决方案: Reset inserted_space much more often in edit().
相关文件: src/edit.c
Patch 5.4.47
问题: When executing BufWritePre or BufWritePost autocommands for a
hidden buffer, the cursor could be moved to a non-existing
position. (Vince Negri)
解决方案: Save and restore the cursor and topline for the current window
when it is going to be used to execute autocommands for a hidden
buffer. Use an existing window for the buffer when it's not
hidden.
相关文件: src/fileio.c
Patch 5.4.48
问题: A paste with the mouse in Insert mode was not repeated exactly the
same with ".". For example, when 'autoindent' is set and pasting
text with leading indent. (Perry)
解决方案: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert
mode, which insert the contents of a register literally.
相关文件: src/edit.c, src/normal.c, runtime/doc/insert.txt
Patch 5.4.49
问题: When pasting text with [ <MiddleMouse>, the cursor could end up
after the last character of the line.
解决方案: Correct the cursor position for the change in indent.
相关文件: src/ops.c
Patch 5.4.x1 (note: Replaces patch 5.4.9)
问题: Win32 GUI: menu hints were never used, because WANT_MENU is not
defined until vim.h is included.
解决方案: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where
it is used.
相关文件: src/gui_w32.c
Patch 5.4.x2
问题: BeOS: When pasting text, one character was moved to the end.
解决方案: Re-enable the BeOS code in fill_input_buf(), and fix timing out
with acquire_sem_etc(). (Will Day)
相关文件: src/os_beos.c, src/ui.c
Patch 5.4.x3
问题: Win32 GUI: When dropping a directory on a running gvim it crashes.
解决方案: Avoid using a NULL file name. Also display a message to indicate
that the current directory was changed.
相关文件: src/gui_w32.c
Patch 5.4.x4
问题: Win32 GUI: Removing an item from the popup menu doesn't work.
解决方案: Don't remove the item from the menubar, but from the parent popup
menu.
相关文件: src/gui_w32.c
Patch 5.4.x5 (addition to 5.4.34)
相关文件: src/gui_w32.c
Patch 5.4.x6
问题: Win32: Expanding (dir)name starting with a dot doesn't work.
(McCormack) Only when there is a path before it.
解决方案: Fix the check, done before expansion, if the file name pattern
starts with a dot.
相关文件: src/os_win32.c
Patch 5.4.x7
问题: Win32 GUI: Removing "Edit with Vim" from registry is difficult.
解决方案: Add uninstall program to remove the registry keys. It is installed
in the "Add/Remove programs" list for ease of use.
Also: don't set $VIM when the executable is with the runtime files.
Also: Add a text file with a step-by-step description of how to
uninstall Vim for DOS and Windows.
相关文件: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt
Patch 5.4.x8 (addition to 5.4.45)
相关文件: many
Patch 5.4.x9
问题: Win32 GUI: After executing an external command, focus is not
always regained (when using focus-follows-mouse).
解决方案: Add SetFocus() in mch_system(). (Mike Steed)
相关文件: src/os_win32.c
Patch 5.5a.1
问题: ":let @* = @:" did not work. The text was not put on the
I clipboard. (Fisher)
解决方案: Own the clipboard and put the text on it.
相关文件: src/ops.c
Patch 5.5a.2
问题: append() did not mark the buffer modified. Marks below the
new line were not adjusted.
解决方案: Fix the f_append() function.
相关文件: src/eval.c
Patch 5.5a.3
问题: Editing compressed ".gz" files doesn't work on non-Unix systems,
because there is no "mv" command.
解决方案: Add the rename() function and use it instead of ":!mv".
Also: Disable the automatic jump to the last position, because it
changes the jumplist.
相关文件: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim
Patch 5.5a.4
问题: When using whole-line completion in insert mode while the cursor
is in the indent, get "out of memory" error. (Stekrt)
解决方案: Don't allocate a negative amount of memory in ins_complete().
相关文件: src/edit.c
Patch 5.5a.5
问题: Win32: The 'path' option can hold only up to 256 characters,
because _MAX_PATH is 256. (Robert Webb)
解决方案: Use a fixed path length of 1024.
相关文件: src/os_win32.h
Patch 5.5a.6
问题: Compiling with gcc on Win32, using the Unix Makefile, didn't work.
解决方案: Add $(SUFFIX) to all places where an executable is used. Also
pass it to ctags. (Reynolds)
相关文件: src/Makefile
Patch 5.5a.7
问题: When using "cat | vim -" in an xterm, the xterm version reply
would end up in the file.
解决方案: Read the file from stdin before switching the terminal to RAW
mode. Should also avoid problems with programs that use a
specific terminal setting.
Also: when using the GUI, print "Reading from stdin..." in the GUI
window, to give a hint why it doesn't do anything.
相关文件: src/main.c, src/fileio.c
Patch 5.5a.8
问题: On multi-threaded Solaris, suspending doesn't work.
解决方案: Call pause() when the SIGCONT signal was not received after
sending the SIGTSTP signal. (Nagano)
相关文件: src/os_unix.c
Patch 5.5a.9
问题: 'winaltkeys' could be set to an empty argument, which is illegal.
解决方案: Give an error message when doing ":set winaltkeys=".
相关文件: src/option.c
Patch 5.5a.10
问题: Win32 console: Using ALTGR on a German keyboard to produce "}"
doesn't work, because the 8th bit is set when ALT is pressed.
解决方案: Don't set the 8th bit when ALT and CTRL are used. (Leipert)
相关文件: src/os_win32.c
Patch 5.5a.11
问题: Tcl: Configure always uses tclsh8.0.
Also: Loading a library doesn't work.
解决方案: Add "--with-tclsh" configure argument to allow specifying another
name for the tcl shell.
Call Tcl_Init() in tclinit() to make loading libraries work.
(Johannes Zellner)
相关文件: src/configure.in, src/configure, src/if_tcl.c
Patch 5.5a.12
问题: The "user_commands" feature is called "user-commands".
解决方案: Replace "user-commands" with "user_commands". (Kim Sung-bom)
Keep "user-commands" for the has() function, to remain backwards
compatible with 5.4.
相关文件: src/eval.c, src/version.c
Patch 5.5a.13
问题: OS/2: When $HOME is not defined, "C:/" is used for the viminfo
file. That is very wrong when OS/2 is on another partition.
解决方案: Use $VIM for the viminfo file when it is defined, like for MSDOS.
Also: Makefile.os2 didn't depend on os_unix.h.
相关文件: src/os_unix.h, src/Makefile.os2
Patch 5.5a.14
问题: Athena, Motif and GTK: The Mouse scroll wheel doesn't work.
解决方案: Interpret a click of the wheel as a key press of the <MouseDown>
or <MouseUp> keys. Default behavior is to scroll three lines, or
a full page when Shift is used.
相关文件: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c,
src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c,
src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h,
runtime/doc/scroll.txt
Patch 5.5a.15
问题: Using CTRL-A in Insert mode doesn't work correctly when the insert
started with the <Insert> key. (Andreas Rohrschneider)
解决方案: Replace <Insert> with "i" before setting up the redo buffer.
相关文件: src/normal.c
Patch 5.5a.16
问题: VMS: GUI does not compile and run.
解决方案: Various fixes. (Zoltan Arpadffy)
Moved functions from os_unix.c to ui.c, so that VMS can use them
too: open_app_context(), x11_setup_atoms() and clip_x11* functions.
Made xterm_dpy global, it's now used by ui.c and os_unix.c.
Use gethostname() always, sys_hostname doesn't exist.
相关文件: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c,
src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro
Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar()
to avoid symbol length limit of 31 characters. (Steve P. Wall)
Patch 5.5b.1
问题: SASC complains about dead assignments and implicit type casts.
解决方案: Removed the dead assignments. Added explicit type casts.
相关文件: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c,
src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c,
src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c,
src/screen.c
Patch 5.5b.2
问题: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in
another line truncates that line. (Devin Weaver)
解决方案: When using a command that starts Insert mode from CTRL-O, reset
"restart_edit" first. This avoids that edit() is called with a
mix of starting a new edit command and restarting a previous one.
相关文件: src/normal.c
==============================================================================
5.6 版 本 *version-5.6*
5.6 版本是 5.5 的漏洞修正版。
改动 *changed-5.6*
-------
OleVim 文件的小改动。(Christian Schaller)
src/version.c 的补丁号之间加入 "/**/"。提供一行上下文，有些版本的 patch 需要如
此。
重新排列 Syntax 菜单，避免子菜单过长。删除字母表项目的键盘快捷键，避免和固定项
目发生冲突。
新增 *added-5.6*
-----
加入 Exuberant Ctags 3.4 版本。(Darren Hiebert)
Python 的 OpenWithVim。(Christian Schaller)
Win32 GUI: gvimext.dll，用于关联菜单 "Edit with Vim" 项目。避免了 MS Office
任务栏上报告的问题。现在用作外壳扩展。(Tianmiao Hu)
新语法文件:
abel Abel (John Cook)
aml Arc Macro Language (Nikki Knuit)
apachestyle Apache-style config file (Christian Hammers)
cf Cold Fusion (Jeff Lanzarotta)
ctrlh 带有 CTRL-H 序列的文件 (Bram Moolenaar)
cupl CUPL (John Cook)
cuplsim CUPL simulation (John Cook)
erlang Erlang (Kresimir Marzic)
gedcom Gedcom (Paul Johnson)
icon Icon (Wendell Turner)
ist MakeIndex style (Peter Meszaros)
jsp Java Server Pages (Rafael Garcia-Suarez)
rcslog Rcslog (Joe Karthauser)
remind Remind (Davide Alberani)
sqr Structured Query Report Writer (Paul Moore)
tads TADS (Amir Karger)
texinfo Texinfo (Sandor Kopanyi)
xpm2 X Pixmap v2 (Steve Wall)
用 'cpoptions' 的 'C' 标志位可以关闭源代码行的连接功能。见下 patch 5.5.013。
|line-continuation|
":syntax" 命令的 "excludenl" 参数。见下 patch 5.5.032。 |:syn-excludenl|
实现 |z+| 和 |z^| 命令。见下 patch 5.5.050。
Corel Draw 格式的 Vim 标志 (logo)。可以使用任何精度的比例。
修正 *fixed-5.6*
-----
Using this mapping in Select mode, terminated completion:
":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher)
Ignore K_SELECT in ins_compl_prep().
VMS (Zoltan Arpadffy, David Elins):
- ioctl() in pty.c caused trouble, #ifndef VMS added.
- Cut & paste mismatch corrected.
- Popup menu line crash corrected. (Patch 5.5.047)
- Motif directories during open and save as corrected.
- Handle full file names with version numbers. (Patch 5.5.046)
- Directory handling (CD command etc.)
- Corrected file name conversion VMS to Unix and v.v.
- Recovery was not working.
- Terminal and signal handling was outdated compared to os_unix.c.
- Improved os_vms.txt.
Configure used fprintf() instead of printf() to check for __DATE__ and
__TIME__. (John Card II)
BeOS: Adjust computing the char_height and char_ascent. Round them up
separately, avoids redrawing artifacts. (Mike Steed)
Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and
findmatchlimit(). (Taro Muraoka)
GTK GUI:
- With GTK 1.2.5 and later the scrollbars were not redrawn correctly.
- Adjusted the gtk_form_draw() function.
- SNiFF connection didn't work.
- 'mousefocus' was not working. (Dalecki)
- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and<EMAIL_ADDRESS>Patch 5.5.001
问题: Configure in the top directory did not pass on an argument with a
space correctly. For example "./configure --previs="/My home".
(Stephane Chazelas)
解决方案: Use '"$@"' instead of '$*' to pass on the arguments.
相关文件: configure
Patch 5.5.002
问题: Compilation error for using "fds[] & POLLIN". (Jeff Walker)
解决方案: Use "fds[].revents & POLLIN".
相关文件: src/os_unix.c
Patch 5.5.003
问题: The autoconf check for sizeof(int) is wrong on machines where
sizeof(size_t) != sizeof(int).
解决方案: Use our own configure check. Also fixes the warning for
cross-compiling.
相关文件: src/configure.in, src/configure
Patch 5.5.004
问题: On Unix it's not possible to interrupt ":sleep 100".
解决方案: Switch terminal to cooked mode while asleep, to allow a SIGINT to
wake us up. But switch off echo, added TMODE_SLEEP.
相关文件: src/term.h, src/os_unix.c
Patch 5.5.005
问题: When using <f-args> with a user command, an empty argument to the
command resulted in one empty string, while no string was
expected.
解决方案: Catch an empty argument and pass no argument to the function.
(Paul Moore)
相关文件: src/ex_docmd.c
Patch 5.5.006
问题: Python: When platform-dependent files are in another directory
than the platform-independent files it doesn't work.
解决方案: Also check the executable directory, and add it to CFLAGS. (Tessa
Lau)
相关文件: src/configure.in, src/configure
Patch 5.5.007 (extra)
问题: Win32 OLE: Occasional crash when exiting while still being used
via OLE.
解决方案: Move OleUninitialize() to before deleting the application object.
(Vince Negri)
相关文件: src/if_ole.cpp
Patch 5.5.008
问题: 10000@@ takes a long time and cannot be interrupted.
解决方案: Check for CTRL-C typed while in the loop to push the register.
相关文件: src/normal.c
Patch 5.5.009
问题: Recent Sequent machines don't link with "-linet". (Kurtis Rader)
解决方案: Remove configure check for Sequent.
相关文件: src/configure.in, src/configure
Patch 5.5.010
问题: Ctags freed a memory block twice when exiting. When out of
memory, a misleading error message was given.
解决方案: Update to ctags 3.3.2. Also fixes a few other problems. (Darren
Hiebert)
相关文件: src/ctags/*
Patch 5.5.011
问题: After "CTRL-V s", the cursor jumps back to the start, while all
other operators leave the cursor on the last changed character.
(Xiangjiang Ma)
解决方案: Position cursor on last changed character, if possible.
相关文件: src/ops.c
Patch 5.5.012
问题: Using CTRL-] in Visual mode doesn't work when the text includes a
space (just where it's useful). (Stefan Bittner)
解决方案: Don't escape special characters in a tag name with a backslash.
相关文件: src/normal.c
Patch 5.5.013
问题: The ":append" and ":insert" commands allow using a leading
backslash in a line. The ":source" command concatenates those
lines. (Heinlein)
解决方案: Add the 'C' flag in 'cpoptions' to switch off concatenation.
相关文件: src/ex_docmd.c, src/option.h, runtime/doc/options.txt,
runtime/filetype.vim, runtime/scripts.vim
Patch 5.5.014
问题: When executing a register with ":@", the ":append" command would
get text lines with a ':' prepended. (Heinlein)
解决方案: Remove the ':' characters.
相关文件: src/ex_docmd.c, src/ex_getln.c, src/globals.h
Patch 5.5.015
问题: When using ":g/pat/p", it's hard to see where the output starts,
the ":g" command is overwritten. Vi keeps the ":g" command.
解决方案: Keep the ":g" command, but allow overwriting it with the report
for the number of changes.
相关文件: src/ex_cmds.c
Patch 5.5.016 (extra)
问题: Win32: Using regedit to install Vim in the popup menu requires the
user to confirm this in a dialog.
解决方案: Use "regedit /s" to avoid the dialog
相关文件: src/dosinst.c
Patch 5.5.017
问题: If an error occurs when closing the current window, Vim could get
stuck in the error handling.
解决方案: Don't set curwin to NULL when closing the current window.
相关文件: src/window.c
Patch 5.5.018
问题: Absolute paths in shell scripts do not always work.
解决方案: Use /usr/bin/env to find out the path.
相关文件: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl,
runtime/tools/shtags.pl
Patch 5.5.019
问题: A function call in 'statusline' stops using ":q" twice from
exiting, when the last argument hasn't been edited.
解决方案: Don't decrement quitmore when executing a function. (Madsen)
相关文件: src/ex_docmd.c
Patch 5.5.020
问题: When the output of CTRL-D completion in the commandline goes all
the way to the last column, there is an empty line.
解决方案: Don't add a newline when the cursor wrapped already. (Madsen)
相关文件: src/ex_getln.c
Patch 5.5.021
问题: When checking if a file name in the tags file is relative,
environment variables were not expanded.
解决方案: Expand the file name before checking if it is relative. (Madsen)
相关文件: src/tag.c
Patch 5.5.022
问题: When setting or resetting 'paste' the ruler wasn't updated.
解决方案: Update the status lines when 'ruler' changes because of 'paste'.
相关文件: src/option.c
Patch 5.5.023
问题: When editing a new file and autocommands change the cursor
position, the cursor was moved back to the first non-white, unless
'startofline' was reset.
解决方案: Keep the new column, just like the line number.
相关文件: src/ex_cmds.c
Patch 5.5.024 (extra)
问题: Win32 GUI: When using confirm() to put up a dialog without a
default button, the dialog would not have keyboard focus.
(Krishna)
解决方案: Always set focus to the dialog window. Only set focus to a button
when a default one is specified.
相关文件: src/gui_w32.c
Patch 5.5.025
问题: When using "keepend" in a syntax region, a contained match that
includes the end-of-line could still force that region to
continue, if there is another contained match in between.
解决方案: Check the keepend_level in check_state_ends().
相关文件: src/syntax.c
Patch 5.5.026
问题: When starting Vim in a white-on-black xterm, with 'bg' set to
"dark", and then starting the GUI with ":gui", setting 'bg' to
"light" in the gvimrc, the highlighting isn't set. (Tsjokwing)
解决方案: Set the highlighting when 'bg' is changed in the gvimrc, even
though full_screen isn't set.
相关文件: src/option.c
Patch 5.5.027
问题: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but
WANT_TITLE isn't. (Barnum)
解决方案: Move a few functions that are used by the X11 title and clipboard
and put another "#if" around it.
相关文件: src/os_unix.c
Patch 5.5.028 (extra)
问题: Win32 GUI: When a file is dropped on Win32 gvim while at the ":"
prompt, the file is edited but the command line is actually still
there, the cursor goes back to command line on the next command.
(Krishna)
解决方案: When dropping a file or directory on gvim while at the ":" prompt,
insert the name of the file/directory. Allows using the
file/directory name for any Ex command.
相关文件: src/gui_w32.c
Patch 5.5.029
问题: "das" at the end of the file didn't delete the last character of
the sentence.
解决方案: When there is no character after the sentence, make the operation
inclusive in current_sent().
相关文件: src/search.c
Patch 5.5.030
问题: Unix: in os_unix.c, "term_str" is used, which is also defined in
vim.h as a macro. (wuxin)
解决方案: Renamed "term_str" to "buf" in do_xterm_trace().
相关文件: src/os_unix.c
Patch 5.5.031 (extra)
问题: Win32 GUI: When exiting Windows, gvim will leave swap files behind
and will be killed ungracefully. (Krishna)
解决方案: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to
exit gracefully. Allow the user to cancel the shutdown if there
is a changed buffer.
相关文件: src/gui_w32.c
Patch 5.5.032
问题: Patch 5.5.025 wasn't right. And C highlighting was still not
working correctly for a #define.
解决方案: Added "excludenl" argument to ":syntax", to be able not to extend
a containing item when there is a match with the end-of-line.
相关文件: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim
Patch 5.5.033
问题: When reading from stdin, a long line in viminfo would mess up the
file message. readfile() uses IObuff for keep_msg, which could be
overwritten by anyone.
解决方案: Copy the message from IObuff to msg_buf and set keep_msg to that.
Also change vim_fgets() to not use IObuff any longer.
相关文件: src/fileio.c
Patch 5.5.034
问题: "gvim -rv" caused a crash. Using 't_Co' before it's set.
解决方案: Don't try to initialize the highlighting before it has been
initialized from main().
相关文件: src/syntax.c
Patch 5.5.035
问题: GTK with XIM: Resizing with status area was messy, and
":set guioptions+=b" didn't work.
解决方案: Make status area a separate widget, but not a separate window.
(Chi-Deok Hwang)
相关文件: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c
Patch 5.5.036
问题: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to
uncompress a file did not do detection for 'fileformat'. This is
because the filtering is done with 'binary' set.
解决方案: Split the filtering into separate write, filter and read commands.
相关文件: runtime/vimrc_example.vim
Patch 5.5.037
问题: The "U" command didn't mark the buffer as changed. (McCormack)
解决方案: Set the 'modified' flag when using "U".
相关文件: src/undo.c
Patch 5.5.038
问题: When typing a long ":" command, so that the screen scrolls up,
causes the hit-enter prompt, even though the user just typed
return to execute the command.
解决方案: Reset need_wait_return if (part of) the command was typed in
getcmdline().
相关文件: src/ex_getln.c
Patch 5.5.039
问题: When using a custom status line, "%a" (file # of #) reports the
index of the current window for all windows.
解决方案: Pass a window pointer to append_arg_number(), and pass the window
being updated from build_stl_str_hl(). (Stephen P. Wall)
相关文件: src/buffer.c, src/screen.c, src/proto/buffer.pro
Patch 5.5.040
问题: Multi-byte: When there is some error in xim_real_init(), it can
close XIM and return. After this there can be a segv.
解决方案: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try
to find more matches for supported styles. (Sung-Hyun Nam)
相关文件: src/multbyte.c
Patch 5.5.041
问题: X11 GUI: CTRL-_ requires the SHIFT key only on some machines.
解决方案: Translate CTRL-- to CTRL-_. (Robert Webb)
相关文件: src/gui_x11.c
Patch 5.5.042
问题: X11 GUI: keys with ALT were assumed to be used for the menu, even
when the menu has been disabled by removing 'm' from 'guioptions'.
解决方案: Ignore keys with ALT only when gui.menu_is_active is set. (Raf)
相关文件: src/gui_x11.c
Patch 5.5.043
问题: GTK: Handling of fontset fonts was not right when 'guifontset'
contains exactly 14 times '-'.
解决方案: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam)
相关文件: src/gui_gtk_x11.c
Patch 5.5.044
问题: pltags.pl contains an absolute path "/usr/local/bin/perl". That
might not work everywhere.
解决方案: Use "/usr/bin/env perl" instead.
相关文件: runtime/tools/pltags.pl
Patch 5.5.045
问题: Using "this_session" variable does not work, requires preceding it
with "v:". Default filename for ":mksession" isn't mentioned
in the docs. (Fisher)
解决方案: Support using "this_session" to be backwards compatible.
相关文件: src/eval.c, runtime/doc/options.txt
Patch 5.5.046 (extra)
问题: VMS: problems with path and filename.
解决方案: Truncate file name at last ';', etc. (Zoltan Arpadffy)
相关文件: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c,
src/proto/os_vms.pro
Patch 5.5.047
问题: VMS: Crash when using the popup menu
解决方案: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy)
相关文件: src/structs.h, src/menu.c
Patch 5.5.048
问题: HP-UX 11: Compiling doesn't work, because both string.h and
strings.h are included. (Squassabia)
解决方案: The configure test for including both string.h and strings.h
must include <Xm/Xm.h> first, because it causes problems.
相关文件: src/configure.in, src/configure, src/config.h.in
Patch 5.5.049
问题: Unix: When installing Vim, the protection bits of files might be
influenced by the umask.
解决方案: Add $(FILEMOD) to Makefile. (Shetye)
相关文件: src/Makefile
Patch 5.5.050
问题: "z+" and "z^" commands are missing.
解决方案: Implemented "z+" and "z^".
相关文件: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt
Patch 5.5.051
问题: Several Unix systems have a problem with the optimization limits
check in configure.
解决方案: Removed the configure check, let the user add it manually in
Makefile or the environment.
相关文件: src/configure.in, src/configure, src/Makefile
Patch 5.5.052
问题: Crash when using a cursor key at the ATTENTION prompt. (Alberani)
解决方案: Ignore special keys at the console dialog. Also ignore characters
> 255 for other uses of tolower() and toupper().
相关文件: src/menu.c, src/message.c, src/misc2.c
Patch 5.5.053
问题: Indenting is wrong after a function when 'cino' has "fs". Another
problem when 'cino' has "{s".
解决方案: Put line after closing "}" of a function at the left margin.
Apply ind_open_extra in the right way after a '{'.
相关文件: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
Patch 5.5.054
问题: Unix: ":e #" doesn't work if the alternate file name contains a
space or backslash. (Hudacek)
解决方案: When replacing "#", "%" or other items that stand for a file name,
prepend a backslash before special characters.
相关文件: src/ex_docmd.c
Patch 5.5.055
问题: Using "<C-V>$r-" in blockwise Visual mode replaces one character
beyond the end of the line. (Zivkov)
解决方案: Only replace existing characters.
相关文件: src/ops.c
Patch 5.5.056
问题: After "z20<CR>" messages were printed at the old command line
position once. (Veselinovic)
解决方案: Set msg_row and msg_col when changing cmdline_row in
win_setheight().
相关文件: src/window.c
Patch 5.5.057
问题: After "S<Esc>" it should be possible to restore the line with "U".
(Veselinovic)
解决方案: Don't call u_clearline() in op_delete() when changing only one
line.
相关文件: src/ops.c
Patch 5.5.058
问题: Using a long search pattern and then "n" causes the hit-enter
prompt. (Krishna)
解决方案: Truncate the echoed pattern, like other messages. Moved code for
truncating from msg_attr() to msg_strtrunc().
相关文件: src/message.c, src/proto/message.pro, src/search.c
Patch 5.5.059
问题: GTK GUI: When $term is invalid, using "gvim" gives an error
message, even though $term isn't really used. (Robbins)
解决方案: When the GUI is about to start, skip the error messages for a
wrong $term.
相关文件: src/term.c
Patch 5.5.060 (extra)
问题: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w"
causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf)
解决方案: The code to work around a LFN bug in Windows 95 doesn't handle a
non-existing target name correctly. When renaming fails, make
sure the file has its original name. Also do this for the Win32
version, although it's unlikely that it runs into this problem.
相关文件: src/os_msdos.c, src/os_win32.c
Patch 5.5.061
问题: When using "\:" in a modeline, the backslash is included in the
option value. (Mohsin)
解决方案: Remove one backslash before the ':' in a modeline.
相关文件: src/buffer.c, runtime/doc/options.txt
Patch 5.5.062 (extra)
问题: Win32 console: Temp files are created in the root of the current
drive, which may be read-only. (Peterson)
解决方案: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the
current directory. Cleaned up vim_tempname() a bit.
相关文件: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt
Patch 5.5.063
问题: When using whole-line completion in Insert mode, 'cindent' is
applied, even after changing the indent of the line.
解决方案: Don't reindent the completed line after inserting/removing indent.
(Robert Webb)
相关文件: src/edit.c
Patch 5.5.064
问题: has("sniff") doesn't work correctly.
解决方案: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer)
相关文件: src/eval.c
Patch 5.5.065
问题: When dropping a file on Vim, the 'shellslash' option is not
effective. (Krishna)
解决方案: Fix the slashes in the dropped file names according to
'shellslash'.
相关文件: src/ex_docmd.c, runtime/doc/options.txt
Patch 5.5.066
问题: For systems with backslash in file name: Setting a file name
option to a value starting with "\\machine" removed a backslash.
解决方案: Keep the double backslash for "\\machine", but do change
"\\\\machine" to "\\machine" for backwards compatibility.
相关文件: src/option.c, runtime/doc/options.txt
Patch 5.5.067
问题: With 'hlsearch' set, the pattern "\>" doesn't highlight the first
match in a line. (Benji Fisher)
解决方案: Fix highlighting an empty match. Also highlight the first
character in an empty line for "$".
相关文件: src/screen.c
Patch 5.5.068
问题: Crash when a ":while" is used with an argument that has an error.
(Sylvain Viart)
解决方案: Was using an uninitialized index in the cs_line[] array. The
crash only happened when the index was far off. Made sure the
uninitialized index isn't used.
相关文件: src/ex_docmd.c
Patch 5.5.069
问题: Shifting lines in blockwise Visual mode didn't set the 'modified'
flag.
解决方案: Do set the 'modified' flag.
相关文件: src/ops.c
Patch 5.5.070
问题: When editing a new file, creating that file outside of Vim, then
editing it again, ":w" still warns for overwriting an existing
file. (Nam)
解决方案: The BF_NEW flag in the "b_flags" field wasn't cleared properly.
相关文件: src/buffer.c, src/fileio.c
Patch 5.5.071
问题: Using a matchgroup in a ":syn region", which is the same syntax
group as the region, didn't stop a contained item from matching in
the start pattern.
解决方案: Also push an item on the stack when the syntax ID of the
matchgroup is the same as the syntax ID of the region.
相关文件: src/syntax.c
Patch 5.5.072 (extra)
问题: Dos 32 bit: When setting 'columns' to a too large value, Vim may
crash, and the DOS console too.
解决方案: Check that the value of 'columns' isn't larger than the number of
columns that the BIOS reports.
相关文件: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c
Patch 5.5.073 (extra)
问题: Win 32 GUI: The Find and Find/Replace dialogs didn't show the
"match case" checkbox. The Find/Replace dialog didn't handle the
"match whole word" checkbox.
解决方案: Support the "match case" and "match whole word" checkboxes.
相关文件: src/gui_w32.c
Patch 5.6a.001
问题: Using <C-End> with a count doesn't work like it does with "G".
(Benji Fisher)
解决方案: Accept a count for <C-End> and <C-Home>.
相关文件: src/normal.c
Patch 5.6a.002
问题: The script for conversion to HTML was an older version.
解决方案: Add support for running 2html.vim on a color terminal.
相关文件: runtime/syntax/2html.vim
Patch 5.6a.003
问题: Defining a function inside a function didn't give an error
message. A missing ":endfunction" doesn't give an error message.
解决方案: Allow defining a function inside a function.
相关文件: src/eval.c, runtime/doc/eval.txt
Patch 5.6a.004
问题: A missing ":endwhile" or ":endif" doesn't give an error message.
(Johannes Zellner)
解决方案: Check for missing ":endwhile" and ":endif" in sourced files.
Add missing ":endif" in file selection macros.
相关文件: src/ex_docmd.c, runtime/macros/file_select.vim
Patch 5.6a.005
问题: 'hlsearch' was not listed alphabetically. The value of 'toolbar'
was changed when 'compatible' is set.
解决方案: Moved entry of 'hlsearch' in options[] table down.
Don't reset 'toolbar' option to the default value when
'compatible' is set.
相关文件: src/option.c
Patch 5.6a.006
问题: Using a backwards range inside ":if 0" gave an error message.
解决方案: Don't complain about a range when it is not going to be used.
(Stefan Roemer)
相关文件: src/ex_docmd.c
Patch 5.6a.007
问题: ":let" didn't show internal Vim variables. (Ron Aaron)
解决方案: Do show ":v" variables for ":let" and ":let v:name".
相关文件: src/eval.c
Patch 5.6a.008
问题: Selecting a syntax from the Syntax menu gives an error message.
解决方案: Replace "else if" in SetSyn() with "elseif". (Ronald Schild)
相关文件: runtime/menu.vim
Patch 5.6a.009
问题: When compiling with +extra_search but without +syntax, there is a
compilation error in screen.c. (Axel Kielhorn)
解决方案: Adjust the #ifdef for declaring and initializing "line" in
win_line(). Also solve compilation problem when +statusline is
used without +eval. Another one when +cmdline_compl is used
without +eval.
相关文件: src/screen.c, src/misc2.c
Patch 5.6a.010
问题: In a function, ":startinsert!" does not append to the end of the
line if a ":normal" command was used to move the cursor. (Fisher)
解决方案: Reset "w_set_curswant" to avoid that w_curswant is changed again.
相关文件: src/ex_docmd.c
Patch 5.6a.011 (depends on 5.6a.004)
问题: A missing ":endif" or ":endwhile" in a function doesn't give an
error message.
解决方案: Give that error message.
相关文件: src/ex_docmd.c
Patch 5.6a.012 (depends on 5.6a.008)
问题: Some Syntax menu entries caused a hit-enter prompt.
解决方案: Call a function to make the command shorter. Also rename a few
functions to avoid name clashes.
相关文件: runtime/menu.vim
Patch 5.6a.013
问题: Command line completion works different when another completion
was done earlier. (Johannes Zellner)
解决方案: Reset wim_index when starting a new completion.
相关文件: src/ex_getln.c
Patch 5.6a.014
问题: Various warning messages when compiling and running lint with
different combinations of features.
解决方案: Fix the warning messages.
相关文件: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c,
src/option.c, src/screen.c, src/search.c, src/syntax.c,
src/feature.h, src/globals.h
Patch 5.6a.015
问题: The vimtutor command doesn't always know the value of $VIMRUNTIME.
解决方案: Let Vim expand $VIMRUNTIME, instead of the shell.
相关文件: src/vimtutor
Patch 5.6a.016 (extra)
问题: Mac: Window size is restricted when starting. Cannot drag the
window all over the desktop.
解决方案: Get real screen size instead of assuming 640x400. Do not use a
fixed number for the drag limits. (Axel Kielhorn)
相关文件: src/gui_mac.c
Patch 5.6a.017
问题: The "Paste" entry in popup menu for Visual, Insert and Cmdline
mode is in the wrong position. (Stol)
解决方案: Add priority numbers for all Paste menu entries.
相关文件: runtime/menu.vim
Patch 5.6a.018
问题: GTK GUI: submenu priority doesn't work.
Help dialog could be destroyed too soon.
When closing a dialog window (e.g. the "ATTENTION" one), Vim would
just hang.
When GTK theme is changed, Vim doesn't adjust to the new colors.
Argument for ":promptfind" isn't used.
解决方案: Fixed the mentioned problems.
Made the dialogs look&feel nicer.
Moved functions to avoid the need for a forward declaration.
Fixed reentrancy of the file browser dialog.
Added drag&drop support for GNOME.
Init the text for the Find/replace dialog from the last used
search string. Set "match whole word" toggle button correctly.
Made repeat rate for drag outside of window depend on the
distance from the window. (Marcin Dalecki)
Made the drag in Visual mode actually work.
Removed recursiveness protection from gui_mch_get_rgb(), it might
cause more trouble than it solves.
相关文件: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c,
src/proto/ui.pro, src/misc2.c
Patch 5.6a.019
问题: When trying to recover through NFS, which uses a large block size,
Vim might think the swap file is empty, because mf_blocknr_max is
zero. (Scott McDermott)
解决方案: When computing the number of blocks of the file in mf_open(),
round up instead of down.
相关文件: src/memfile.c
Patch 5.6a.020
问题: GUI GTK: Could not set display for gvim.
解决方案: Add "-display" and "--display" arguments. (Marcin Dalecki)
相关文件: src/gui_gtk_x11.c
Patch 5.6a.021
问题: Recovering still may not work when the block size of the device
where the swap file is located is larger than 4096.
解决方案: Read block 0 with the minimal block size.
相关文件: src/memline.c, src/memfile.c, src/vim.h
Patch 5.6a.022 (extra)
问题: Win32 GUI: When an error in the vimrc causes a dialog to pop up
(e.g., for an existing swap file), Vim crashes. (David Elins)
解决方案: Before showing a dialog, open the main window.
相关文件: src/gui_w32.c
Patch 5.6a.023
问题: Using expand("%:gs??/?") causes a crash. (Ron Aaron)
解决方案: Check for running into the end of the string in do_string_sub().
相关文件: src/eval.c
Patch 5.6a.024
问题: Using an autocommand to delete a buffer when leaving it can cause
a crash when jumping to a tag. (Franz Gorkotte)
解决方案: In do_tag(), store tagstacklen before jumping to another buffer.
Check tagstackidx after jumping to another buffer.
Add extra check in win_split() if tagname isn't NULL.
相关文件: src/tag.c, src/window.c
Patch 5.6a.025 (extra)
问题: Win32 GUI: The tables for toupper() and tolower() are initialized
too late. (Mike Steed)
解决方案: Move the initialization to win32_init() and call it from main().
相关文件: src/main.c, src/os_w32.c, src/proto/os_w32.pro
Patch 5.6a.026
问题: When the SNiFF connection is open, shell commands hang. (Pruemmer)
解决方案: Skip a second wait() call if waitpid() already detected that the
child has exited.
相关文件: src/os_unix.c
Patch 5.6a.027 (extra)
问题: Win32 GUI: The "Edit with Vim" popup menu entry causes problems
for the Office toolbar.
解决方案: Use a shell extension dll. (Tianmiao Hu)
Added it to the install and uninstal programs, replaces the old
"Edit with Vim" menu registry entries.
相关文件: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt
Patch 5.6a.028 (extra)
问题: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte
characters.
解决方案: Adjust nCopyAnsiToWideChar() to handle multi-byte characters
correctly.
相关文件: src/gui_w32.c
==============================================================================
5.7 版 本 *version-5.7*
5.7 版本是 5.6 的漏洞修正版。
改动 *changed-5.7*
-------
src/INSTALL.mac 更名为 INSTALL_mac.txt，以避免错认文件类型。同时更名
src/INSTALL.amiga 为 INSTALL_ami.txt。
(Darren Hiebert)
语法项目的 "display" 和 "fold" 参数，为了将来扩展用。现在忽略它们。
Macintosh 的 strftime() 函数。
macros/explorer.vim: 文件浏览器脚本 (M A Aziz Ahmed)
修正 *fixed-5.7*
-----
The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The
executable is smaller.
When a "make test" failed, the output file was lost. Rename it to
test99.failed to be able to see what went wrong.
After sourcing bugreport.vim, it's not clear that bugreport.txt has been
written in the current directory. Edit bugreport.txt to avoid that.
Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka)
Win32 console: Mouse drags were passed on even when the mouse didn't move.
Perl interface: In Buffers(), type of argument to SvPV() was int, should be
STRLEN. (Tony Leneis)
Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in
os_unix.h. (Jake Hamby)
Mappings in mswin.vim could break when some commands are mapped. Add "nore"
to most mappings to avoid re-mapping.
modify_fname() made a copy of a file name for ":p" when it already was a full
path name, which is a bit slow.
Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags,
to avoid depending on $PATH. Fixed "make clean".
Many fixes to Macintosh specific parts: (mostly by Dany StAmant)
- Only one Help menu.
- No more crash when removing a menu item.
- Support as External Editor for Codewarrior (still some little glitches).
- Popup menu support.
- Fixed crash when pasting after application switch.
- Color from rgb.txt properly displayed.
- 'isprint' default includes all chars above '~'. (Axel Kielhorn)
- mac_expandpath() was leaking memory.
- Add digraphs table. (Axel Kielhorn)
- Multi-byte support: (Kenichi Asai)
Switch keyscript when going in/out of Insert mode.
Draw multi-byte character correctly.
Don't use mblen() but highest bit of char to detect multi-byte char.
Display value of multi-byte in statusline (also for other systems).
- mouse button was not initialized properly to MOUSE_LEFT when
USE_CTRLCLICKMENU not defined.
- With Japanese SJIS characters: Make "w", "b", and "e" work
properly. (Kenichi Asai)
- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx.
Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below)
- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the
tests.
- Various fixes.
- Set 'undolevels' to 1000 by default.
- Made mch_settitle() equivalent to the one in os_unix.c.
RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes
automatically.
预发布补丁:
Patch 5.6.001
问题: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which
reduces the indent doesn't delete the "#" or "}". (Lorton)
解决方案: Adjust ai_col in ins_try_si().
相关文件: src/edit.c
Patch 5.6.002
问题: When using the vim.vim syntax file, a comment with all uppercase
characters causes a hang.
解决方案: Adjust pattern for vimCommentTitle (Charles Campbell)
相关文件: runtime/syntax/vim.vim
Patch 5.6.003
问题: GTK GUI: Loading a user defined toolbar bitmap gives a warning
about the colormap. Probably because the window has not been
opened yet.
解决方案: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file.
(Keith Radebaugh)
相关文件: src/gui_gtk.c
Patch 5.6.004 (extra)
问题: Win32 GUI with IME: When setting 'guifont' to "*", the font
requester appears twice.
解决方案: In gui_mch_init_font() don't call get_logfont() but copy
norm_logfont from fh. (Yasuhiro Matsumoto)
相关文件: src/gui_w32.c
Patch 5.6.005
问题: When 'winminheight' is zero, CTRL-W - with a big number causes a
crash. (David Kotchan)
解决方案: Check for negative window height in win_setheight().
相关文件: src/window.c
Patch 5.6.006
问题: GTK GUI: Bold font cannot always be used. Memory is freed too
early in gui_mch_init_font().
解决方案: Move call to g_free() to after where sdup is used. (Artem Hodyush)
相关文件: src/gui_gtk_x11.c
Patch 5.6.007 (extra)
问题: Win32 IME: Font is not changed when screen font is changed. And
IME composition window does not trace the cursor.
解决方案: Initialize IME font. When cursor is moved, set IME composition
window with ImeSetCompositionWindow(). Add call to
ImmReleaseContext() in several places. (Taro Muraoka)
相关文件: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro
Patch 5.6.008 (extra)
问题: Win32: When two files exist with the same name but different case
(through NFS or Samba), fixing the file name case could cause the
wrong one to be edited.
解决方案: Prefer a perfect match above a match while ignoring case in
fname_case(). (Flemming Madsen)
相关文件: src/os_win32.c
Patch 5.6.009 (extra)
问题: Win32 GUI: Garbage in Windows Explorer help line when selecting
"Edit with Vim" popup menu entry.
解决方案: Only return the help line when called with the GCS_HELPTEXT flag.
(Tianmiao Hu)
相关文件: GvimExt/gvimext.cpp
Patch 5.6.010
问题: A file name which contains a TAB was not read correctly from the
viminfo file and the ":ls" listing was not aligned properly.
解决方案: Parse the buffer list lines in the viminfo file from the end
backwards. Count a Tab for two characters to align the ":ls" list.
相关文件: src/buffer.c
Patch 5.6.011
问题: When 'columns' is huge (using a tiny font) and 'statusline' is
used, Vim can crash.
解决方案: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin)
相关文件: src/screen.c
Patch 5.6.012
问题: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is
typed. (Kuratczyk)
解决方案: Add "-c exit" when checking for the shell version.
相关文件: src/toolcheck
Patch 5.6.013
问题: Multibyte char in tooltip is broken.
解决方案: Consider multibyte char in replace_termcodes(). (Taro Muraoka)
Files: src/term.c
Patch 5.6.014
问题: When cursor is at the end of line and the character under cursor
is a multibyte character, "yl" doesn't yank 1 multibyte-char.
(Takuhiro Nishioka)
解决方案: Recognize a multibyte-char at end-of-line correctly in oneright().
(Taro Muraoka)
Also: make "+quickfix" in ":version" output appear alphabetically.
相关文件: src/edit.c
Patch 5.6.015
问题: New xterm delete key sends <Esc>[3~ by default.
解决方案: Added <kDel> and <kIns> to make the set of keypad keys complete.
相关文件: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c,
src/misc2.c, src/normal.c, src/os_unix.c, src/term.c
Patch 5.6.016
问题: When deleting a search string from history from inside a mapping,
another entry is deleted too. (Benji Fisher)
解决方案: Reset last_maptick when deleting the last entry of the search
history. Also: Increment maptick when starting a mapping from
typed characters to avoid a just added search string being
overwritten or removed from history.
相关文件: src/ex_getln.c, src/getchar.c
Patch 5.6.017
问题: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the
line. (Calder)
解决方案: Replace the backslash with a CTRL-V internally. (Stephen P. Wall)
相关文件: src/ex_cmds.c
Patch 5.6.018
问题: ":help [:digit:]" takes a long time to jump to the wrong place.
解决方案: Insert a backslash to avoid the special meaning of '[]'.
相关文件: src/ex_cmds.c
Patch 5.6.019
问题: "snd.c", "snd.java", etc. were recognized as "mail" filetype.
解决方案: Make pattern for mail filetype more strict.
相关文件: runtime/filetype.vim
Patch 5.6.020 (extra)
问题: The DJGPP version eats processor time (Walter Briscoe).
解决方案: Call __dpmi_yield() in the busy-wait loop.
相关文件: src/os_msdos.c
Patch 5.6.021
问题: When 'selection' is "exclusive", a double mouse click in Insert
mode doesn't select last char in line. (Lutz)
解决方案: Allow leaving the cursor on the NUL past the line in this case.
相关文件: src/edit.c
Patch 5.6.022
问题: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work.
解决方案: Re-insert the backslash before the '~'.
相关文件: src/ex_getln.c
Patch 5.6.023 (extra)
问题: Various warnings for the Ming compiler.
解决方案: Changes to avoid the warnings. (Bill McCarthy)
相关文件: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c,
src/syntax.c, src/vim.rc
Patch 5.6.024 (extra)
问题: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan)
解决方案: Specifically catch keycode 0xBD, like the GUI.
相关文件: src/os_win32.c
Patch 5.6.025
问题: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH.
(Nils Lohner)
解决方案: Repeat the read() call to get the gui_in_use value when
interrupted by a signal.
相关文件: src/gui.c
Patch 5.6.026 (extra)
问题: Win32 GUI: Toolbar bitmaps are searched for in
$VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith
Radebaugh)
解决方案: Use $VIM/bitmaps for both, because these are not part of the
distribution but defined by the user.
相关文件: src/gui_w32.c, runtime/doc/gui.txt
Patch 5.6.027
问题: TCL: Crash when using a Tcl script (reported for Win32).
解决方案: Call Tcl_FindExecutable() in main(). (Brent Fulgham)
相关文件: src/main.c
Patch 5.6.028
问题: Xterm patch level 126 sends codes for mouse scroll wheel.
Fully works with xterm patch level 131.
解决方案: Recognize the codes for button 4 (0x60) and button 5 (0x61).
相关文件: src/term.c
Patch 5.6.029
问题: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes
Zellner)
解决方案: Add support for shortcut keys. (Marcin Dalecki)
相关文件: src/gui_gtk.c
Patch 5.6.030
问题: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro
Matsumoto)
解决方案: Set "curbuf" to a valid value in win_close().
相关文件: src/window.c
Patch 5.6.031
问题: Multi-byte: When a double-byte character ends in CSI, Vim waits
for another character to be typed.
解决方案: Recognize the CSI as the second byte of a character and don't wait
for another one. (Yasuhiro Matsumoto)
相关文件: src/getchar.c
Patch 5.6.032
问题: Functions with an argument that is a line number don't all accept
".", "$", etc. (Ralf Arens)
解决方案: Add get_art_lnum() and use it for setline(), line2byte() and
synID().
相关文件: src/eval.c
Patch 5.6.033
问题: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun
Nam)
解决方案: Change logic in searchc() to skip trailing byte of a double-byte
character.
Also: Ask for second byte when searching for double-byte
character. (Park Chong-Dae)
相关文件: src/search.c
Patch 5.6.034 (extra)
问题: Compiling with Borland C++ 5.5 fails on tolower() and toupper().
解决方案: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile
to make using bcc 5.5 easier.
相关文件: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor
Patch 5.6.035
问题: Listing the"+comments" feature in the ":version" output depended
on the wrong ID. (Stephen P. Wall)
解决方案: Change "CRYPTV" to "COMMENTS".
相关文件: src/version.c
Patch 5.6.036
问题: GTK GUI: Copy/paste text doesn't work between gvim and Eterm.
解决方案: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang)
相关文件: src/gui_gtk_x11.c
Patch 5.6.037
问题: Multi-byte: Can't use "f" command with multi-byte character in GUI.
解决方案: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam)
相关文件: src/gui_gtk_x11.c, src/multbyte.c
Patch 5.6.038
问题: Multi-clicks in GUI are interpreted as a mouse wheel click. When
'ttymouse' is "xterm" a mouse click is interpreted as a mouse
wheel click.
解决方案: Don't recognize the mouse wheel in check_termcode() in the GUI.
Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63.
相关文件: src/term.c, src/os_unix.c
Patch 5.6.039
问题: Motif GUI under KDE: When trying to logout, Vim hangs up the
system. (Hermann Rochholz)
解决方案: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND
property of the window to let the session manager know we finished
saving ourselves.
相关文件: src/gui_x11.c
Patch 5.6.040
问题: When using ":s" command, matching the regexp is done twice.
解决方案: After copying the matched line, adjust the pointers instead of
finding the match again. (Loic Grenie) Added vim_regnewptr().
相关文件: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro
Patch 5.6.041
问题: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons.
解决方案: Remove the limit on the number of buttons.
Also support the 'v' flag in 'guioptions'.
For GTK: Center the buttons.
相关文件: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c
Patch 5.6.042
问题: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in
the terminal can remain off.
解决方案: Call cursor_on() in mch_windexit().
相关文件: src/os_unix.c
Patch 5.6.043 (extra)
问题: Win32 GUI: When selecting guifont with the dialog, 'guifont'
doesn't include the bold or italic attributes.
解决方案: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font().
相关文件: src/gui_w32.c
Patch 5.6.044 (extra)
问题: MS-DOS and Windows: The line that dosinst.exe appends to
autoexec.bat to set PATH is wrong when Vim is in a directory with
an embedded space.
解决方案: Use double quotes for the value when there is an embedded space.
相关文件: src/dosinst.c
Patch 5.6.045 (extra) (fixed version)
问题: VMS: Various small problems.
解决方案: Many small changes. (Zoltan Arpadffy)
File name modifier ":h" keeps the path separator.
File name modifier ":e" also removes version.
Compile with MAX_FEAT by default.
When checking for autocommands ignore version in file name.
Be aware of file names being case insensitive.
Added vt320 builtin termcap.
Be prepared for an empty default_vim_dir.
相关文件: runtime/gvimrc_example.vim, runtime/vimrc_example.vim,
runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c,
src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c,
src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c,
src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c
Patch 5.6.046
问题: Systems with backslash in file name: With 'shellslash' set, "vim
*/*.c" only uses a slash for the first file name. (Har'El)
解决方案: Fix slashes in file name arguments after reading the vimrc file.
相关文件: src/option.c
Patch 5.6.047
问题: $CPPFLAGS is not passed on to ctags configure.
解决方案: Add it. (Walter Briscoe)
相关文件: src/config.mk.in, src/Makefile
Patch 5.6.048
问题: CTRL-R in Command-line mode is documented to insert text as typed,
but inserts text literally.
解决方案: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert
literally. This is consistent with Insert mode. But characters
that end Command-line mode are inserted literally.
相关文件: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c,
src/ops.c, src/proto/ops.pro
Patch 5.6.049
问题: Documentation for [!] after ":ijump" is wrong way around. (Benji
Fisher)
解决方案: Fix the documentation. Also improve the code to check for a match
after a /* */ comment.
相关文件: runtime/doc/tagsearch.txt, src/search.c
Patch 5.6.050
问题: Replacing is wrong when replacing a single-byte char with
double-byte char or the other way around.
解决方案: Shift the text after the character when it is replaced.
(Yasuhiro Matsumoto)
相关文件: src/normal.c, src/misc1.c
Patch 5.6.051
问题: ":tprev" and ":tnext" don't give an error message when trying to
go before the first or beyond the last tag. (Robert Webb)
解决方案: Added error messages. Also: Delay a second when a file-read
message is going to overwrite an error message, otherwise it won't
be seen.
相关文件: src/fileio.c, src/tag.c
Patch 5.6.052
问题: Multi-byte: When an Ex command has a '|' or '"' as a second byte,
it terminates the command.
解决方案: Skip second byte of multi-byte char when checking for '|' and '"'.
(Asai Kenichi)
相关文件: src/ex_docmd.c
Patch 5.6.053
问题: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius)
解决方案: Escape '|', '"' and '\' in tag names when using CTRL-] and also
for command-line completion.
相关文件: src/ex_getln.c, src/normal.c
Patch 5.6.054
问题: When using ":e" and ":e #" the cursor is put in the first column
when 'startofline' is set. (Cordell)
解决方案: Use the last known column when 'startofline' is set.
Also, use ECMD_LAST more often to simplify the code.
相关文件: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro
Patch 5.6.055
问题: When 'statusline' only contains a text without "%" and doesn't fit
in the window, Vim crashes. (Ron Aaron)
解决方案: Don't use the pointer for the first item if there is no item.
相关文件: src/screen.c
Patch 5.6.056 (extra)
问题: MS-DOS: F11 and F12 don't work when 'bioskey' is set.
解决方案: Use enhanced keyboard functions. (Vince Negri)
Detect presence of enhanced keyboard and set bioskey_read and
bioskey_ready.
相关文件: src/os_msdos.c
Patch 5.6.057 (extra)
问题: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off
menus.
解决方案: Use system font instead of a fixed font. (Matsumoto, Muraoka)
相关文件: src/gui_w32.c
Patch 5.6.058
问题: When the 'a' flag is not in 'guioptions', non-Windows systems
copy Visually selected text to the clipboard/selection on a yank
or delete command anyway. On Windows it isn't done even when the
'a' flag is included.
解决方案: Respect the 'a' flag in 'guioptions' on all systems.
相关文件: src/normal.c
Patch 5.6.059 (extra)
问题: When moving the cursor over italic text and the characters spill
over to the cell on the right, that spill-over is deleted.
Noticed in the Win32 GUI, can happen on other systems too.
解决方案: Redraw italic text starting from a blank, like this is already
done for bold text. (Vince Negri)
相关文件: src/gui.c, src/gui.h, src/gui_w32.c
Patch 5.6.060
问题: Some bold characters spill over to the cell on the left, that
spill-over can remain sometimes.
解决方案: Redraw a character when the next character was bold and needs
redrawing. (Robert Webb)
相关文件: src/screen.c
Patch 5.6.061
问题: When xterm sends 8-bit controls, recognizing the version response
doesn't work.
When using CSI instead of <Esc>[ for the termcap color codes,
using 16 colors doesn't work. (Neil Bird)
解决方案: Also accept CSI in place of <Esc>[ for the version string.
Also check for CSI when handling colors 8-15 in term_color().
Use CSI for builtin xterm termcap entries when 'term' contains
"8bit".
相关文件: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c,
src/os_unix.c, src/proto/option.pro, src/proto/term.pro
Patch 5.6.062
问题: The documentation says that setting 'smartindent' doesn't have an
effect when 'cindent' is set, but it does make a difference for
lines starting with "#". (Neil Bird)
解决方案: Really ignore 'smartindent' when 'cindent' is set.
相关文件: src/misc1.c, src/ops.c
Patch 5.6.063
问题: Using "I" in Visual-block mode doesn't accept a count. (Johannes
Zellner)
解决方案: Pass the count on to do_insert() and edit(). (Allan Kelly)
相关文件: src/normal.c, src/ops.c, src/proto/ops.pro
Patch 5.6.064
问题: MS-DOS and Win32 console: Mouse doesn't work correctly after
including patch 5.6.28. (Vince Negri)
解决方案: Don't check for mouse scroll wheel when the mouse code contains
the number of clicks.
相关文件: src/term.c
Patch 5.6.065
问题: After moving the cursor around in Insert mode, typing a space can
still trigger an abbreviation. (Benji Fisher)
解决方案: Don't check for an abbreviation after moving around in Insert mode.
相关文件: src/edit.c
Patch 5.6.066
问题: Still a few bold character spill-over remains after patch 60.
解决方案: Clear character just in front of blanking out rest of the line.
(Robert Webb)
相关文件: src/screen.c
Patch 5.6.067
问题: When a file name contains a NL, the viminfo file is corrupted.
解决方案: Use viminfo_writestring() to convert the NL to CTRL-V n.
Also fix the Buffers menu and listing a menu name with a newline.
相关文件: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c
Patch 5.6.068
问题: Compiling the Perl interface doesn't work with Perl 5.6.0.
(Bernhard Rosenkraenzer)
解决方案: Also check xs_apiversion for the version number when prepending
defines for PL_*.
相关文件: src/Makefile
Patch 5.6.069
问题: "go" doesn't always end up at the right character when
'fileformat' is "dos". (Bruce DeVisser)
解决方案: Correct computations in ml_find_line_or_offset().
相关文件: src/memline.
Patch 5.6.070 (depends on 5.6.068)
问题: Compiling the Perl interface doesn't work with Perl 5.6.0.
(Bernhard Rosenkraenzer)
解决方案: Simpler check instead of the one from patch 68.
相关文件: src/Makefile
Patch 5.6.071
问题: "A" in Visual block mode on a Tab positions the cursor one char to
the right. (Michael Haumann)
解决方案: Correct the column computation in op_insert().
相关文件: src/ops.c
Patch 5.6.072
问题: When starting Vim with "vim +startinsert", it enters Insert mode
only after typing the first command. (Andrew Pimlott)
解决方案: Insert a dummy command in the stuff buffer.
相关文件: src/main.c
Patch 5.6.073 (extra) (depends on 5.6.034)
问题: Win32 GUI: When compiled with Bcc 5.5 menus don't work.
In dosinst.c toupper() and tolower() give an "internal compiler
error" for Bcc 5.5.
解决方案: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan
Sharp) Also cleaned up compilation arguments.
Use our own implementation of toupper() in dosinst.c. Use
mytoupper() instead of tolower().
相关文件: src/Makefile.bor, src/dosinst.c
Patch 5.6.074 (extra)
问题: Entering CSI directly doesn't always work, because it's recognized
as the start of a special key. Mostly a problem with multi-byte
in the GUI.
解决方案: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI,
<xCSI> for a CSI typed in the GUI.
相关文件: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c,
src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c,
src/keymap.h, src/misc2.c
Patch 5.6.075
问题: When using "I" or "A" in Visual block mode while 'sts' is set may
change spaces to a Tab the inserted text is not correct. (Mike
Steed) And some other problems when using "A" to append after the
end of the line.
解决方案: Check for change in spaces/tabs after inserting the text. Append
spaces to fill the gap between the end-of-line and the right edge
of the block.
相关文件: src/ops.c
Patch 5.6.076
问题: GTK GUI: Mapping <M-Space> doesn't work.
解决方案: Don't use the "Alt" modifier twice in key_press_event().
相关文件: src/gui_gtk_x11.c
Patch 5.6.077
问题: GUI: When interrupting an external program with CTRL-C, gvim might
crash. (Benjamin Korvemaker)
解决方案: Avoid using a NULL pointer in ui_inchar_undo().
相关文件: src/ui.c
Patch 5.6.078
问题: Locale doesn't always work on FreeBSD. (David O'Brien)
解决方案: Link with the "xpg4" library when available.
相关文件: src/configure.in, src/configure
Patch 5.6.079
问题: Vim could crash when several Tcl interpreters are created and
destroyed.
解决方案: handle the "exit" command and nested ":tcl" commands better. (Ingo
Wilken)
相关文件: runtime/doc/if_tcl.txt, src/if_tcl.c
Patch 5.6.080
问题: When jumping to a tag, generating the tags file and jumping to the
same tag again uses the old search pattern. (Sung-Hyun Nam)
解决方案: Flush cached tag matches when executing an external command.
相关文件: src/misc2.c, src/proto/tag.pro, src/tag.c
Patch 5.6.081
问题: ":syn include" uses a level for the included file, this confuses
contained items included at the same level.
解决方案: Use a unique tag for each included file. Changed sp_syn_inc_lvl
to sp_syn_inc_tag. (Scott Bigham)
相关文件: src/syntax.c, src/structs.h
Patch 5.6.082
问题: When using cscope, Vim can crash.
解决方案: Initialize tag_fname in find_tags(). (Anton Blanchard)
相关文件: src/tag.c
Patch 5.6.083 (extra)
问题: Win32: The visual beep can't be seen. (Eric Roesinger)
解决方案: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum)
Also: Allow specifying the delay in t_vb for the GUI.
相关文件: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c,
src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc,
src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro,
src/proto/gui_mac.pro, src/proto/gui_riscos.pro,
src/proto/gui_w32.pro, src/proto/gui_x11.pro,
src/proto/gui_beos.pro
Patch 5.6.084 (depends on 5.6.074)
问题: GUI: Entering CSI doesn't always work for Athena and Motif.
解决方案: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074).
相关文件: src/gui_x11.c
Patch 5.6.085
问题: Multi-byte: Using "r" to replace a double-byte char with a
single-byte char moved the cursor one character. (Matsumoto)
Also, using a count when replacing a single-byte char with a
double-byte char didn't work.
解决方案: Don't use del_char() to delete the second byte.
Get "ptr" again after calling ins_char().
相关文件: src/normal.c
Patch 5.6.086 (extra)
问题: Win32: When using libcall() and the returned value is not a valid
pointer, Vim crashes.
解决方案: Use IsBadStringPtr() to check if the pointer is valid.
相关文件: src/os_win32.c
Patch 5.6.087
问题: Multi-byte: Commands and messages with multi-byte characters are
displayed wrong.
解决方案: Detect double-byte characters. (Yasuhiro Matsumoto)
相关文件: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c
Patch 5.6.088
问题: Multi-byte with Motif or Athena: The message "XIM requires
fontset" is annoying when Vim was compiled with XIM support but it
is not being used.
解决方案: Remove that message.
相关文件: src/multbyte.c
Patch 5.6.089
问题: On non-Unix systems it's possible to overwrite a read-only file
without using "!".
解决方案: Check if the file permissions allow overwriting before moving the
file to become the backup file.
相关文件: src/fileio.c
Patch 5.6.090
问题: When editing a file in "/home/dir/home/dir" this was replaced with
"~~". (Andreas Jellinghaus)
解决方案: Replace the home directory only once in home_replace().
相关文件: src/misc1.c
Patch 5.6.091
问题: When editing many "no file" files, can't create swap file, because
.sw[a-p] have all been used. (Neil Bird)
解决方案: Also use ".sv[a-z]", ".su[a-z]", etc.
相关文件: src/memline.c
Patch 5.6.092
问题: FreeBSD: When setting $TERM to a non-valid terminal name, Vim
hangs in tputs().
解决方案: After tgetent() returns an error code, call it again with the
terminal name "dumb". This apparently creates an environment in
which tputs() doesn't fail.
相关文件: src/term.c
Patch 5.6.093 (extra)
问题: Win32 GUI: "ls | gvim -" will show a message box about reading
stdin when Vim exits. (Donohue)
解决方案: Don't write a message about the file read from stdin until the GUI
has started.
相关文件: src/fileio.c
Patch 5.6.094
问题: Problem with multi-byte string for ":echo var".
解决方案: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam)
Also make do_echo() aware of multi-byte characters.
相关文件: src/eval.c, src/message.c
Patch 5.6.095
问题: With an Emacs TAGS file that include another a relative path
doesn't always work.
解决方案: Use expand_tag_fname() on the name of the included file.
(Utz-Uwe Haus)
相关文件: src/tag.c
Patch 5.6.096
问题: Unix: When editing many files, startup can be slow. (Paul
Ackersviller)
解决方案: Halve the number of stat() calls used to add a file to the buffer
list.
相关文件: src/buffer.c
Patch 5.7a.001
问题: GTK doesn't respond on drag&drop from ROX-Filer.
解决方案: Add "text/uri-list" target. (Thomas Leonard)
Also: fix problem with checking for trash arguments.
相关文件: src/gui_gtk_x11.c
Patch 5.7a.002
问题: Multi-byte: 'showmatch' is performed when second byte of an
inserted double-byte char is a paren or brace.
解决方案: Check IsTrailByte() before calling showmatch(). (Taro Muraoka)
相关文件: src/misc1.c
Patch 5.7a.003
问题: Multi-byte: After using CTRL-O in Insert mode with the cursor at
the end of the line on a multi-byte character the cursor moves to
the left.
解决方案: Check for multi-byte character at end-of-line. (Taro Muraoka)
Also: fix cls() to detect a double-byte character. (Chong-Dae Park)
相关文件: src/edit.c, src/search.c
Patch 5.7a.004
问题: When reporting the search pattern offset, the string could be
unterminated, which may cause a crash.
解决方案: Terminate the string for the search offset. (Stephen P. Wall)
相关文件: src/search.c
Patch 5.7a.005
问题: When ":s//~/" doesn't find a match it reports "[NULL]" for the
pattern.
解决方案: Use get_search_pat() to obtain the actually used pattern.
相关文件: src/ex_cmds.c, src/proto/search.pro, src/search.c
Patch 5.7a.006 (extra)
问题: VMS: Various problems, also with the VAXC compiler.
解决方案: In many places use the Unix code for VMS too.
Added time, date and compiler version to version message.
(Zoltan Arpadffy)
相关文件: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h,
src/main.c, src/message.c, src/misc1.c, src/os_vms.c,
src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h,
src/proto/os_vms.pro, src/proto/version.pro, src/term.c,
src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c
Patch 5.7a.007
问题: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C.
解决方案: Only use "intr_char" when it has been set.
相关文件: src/gui_x11.c
Patch 5.7a.008
问题: GTK GUI: When using CTRL-L the screen is redrawn twice, causing
trouble for bold characters. Also happens when moving with the
scrollbar. Best seen when 'writedelay' is non-zero.
When starting the GUI with ":gui" the screen is redrawn once with
the wrong colors.
解决方案: Only set the geometry hints when the window size really changed.
This avoids setting it each time the scrollbar is forcefully
redrawn.
Don't redraw in expose_event() when gui.starting is still set.
相关文件: src/gui_gtk_x11.c
==============================================================================
5.8 版 本 *version-5.8*
5.8 版本是 5.7 的漏洞修正版。
改动 *changed-5.8*
-------
Vim 不再包含 ctags。它已经成为独立的项目。这里可以找到: http://ctags.sf.net。
编写程序时，高度建议和 Vim 一起使用。
 Corporation) (Dana Edwards)
htmlos Aestiva 的 HTML/OS (Jason Rust)
inittab SysV process control (David Necas)
iss Inno Setup (Dominique Stephan)
jam Jam (Ralf Lemke)
jess Jess (Paul Baleme)
lprolog LambdaProlog (Markus Mottl)
ia64 Intel Itanium (parth malwankar)
kix Kixtart (Nigel Gibbs)
mgp MaGic Point (Gerfried Fuchs)
mason Mason (带 Perl 的 HTML) (Andrew Smith)
mma Mathematica (Wolfgang Waltenberger)
nqc Not Quite C (Stefan Scherer)
omnimark Omnimark (Paul Terray)
openroad OpenROAD (Luis Moreno Serrano)
named BIND configuration (glory hump)
papp PApp (Marc Lehmann)
pfmain Postfix main config (Peter Kelemen)
pic PIC assembly (Aleksandar Veselinovic)
ppwiz PPWizard (Stefan Schwarzer)
progress Progress (Phil Uren)
psf Product Specification File (Rex Barzee)
r R (Tom Payne)
registry MS-Windows 注册表 (Dominique Stephan)
robots Robots.txt (Dominique Stephan)
rtf Rich Text Format (Dominique Stephan)
setl SETL (Alex Poylisher)
sgmldecl SGML Declarations (Daniel A. Molina W.)
sinda Sinda input (Adrian Nagle)
sindacmp Sinda compare (Adrian Nagle)
sindaout Sinda output (Adrian Nagle)
smith SMITH (Rafal Sulejman)
snobol4 Snobol 4 (Rafal Sulejman)
strace Strace (David Necas)
tak TAK input (Adrian Nagle)
takcmp TAK compare (Adrian Nagle)
takout TAK output (Adrian Nagle)
tasm Turbo assembly (FooLman)
texmf TeX configuration (David Necas)
trasys Trasys input (Adrian Nagle)
tssgm TSS Geometry (Adrian Nagle)
tssop TSS Optics (Adrian Nagle)
tsscl TSS Command line (Adrian Nagle)
virata Virata Configuration Script (Manuel M.H. Stol)
vsejcl VSE JCL (David Ondrejko)
wdiff Wordwise diff (Gerfried Fuchs)
wsh Windows Scripting Host (Paul Moore)
xkb X Keyboard Extension (David Necas)
php3 更名为 php，现在同时支持 php4 (Lutz Eymers)
Patch 5.7.015
问题: Vim 6.0 的语法文件不能用于 5.x。
解决方案: ":highlight" 命令加入 "default" 参数: 如果已经指定高亮，忽略命令。
相关文件: src/syntax.c
用 makemenu.vim 生成 Syntax 菜单，从而不需要在 Vim 启动时完成。减少了 GUI 启动
时间。
修正 *fixed-5.8*
-----
Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink.
Fixed compiling under NeXT. (Jeroen C.M. Goudswaard)
optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C').
Tcl interpreter: "buffer" command didn't check for presence of an argument.
(Dave Bodenstab)
dosinst.c: Added checks for too long file name.
Amiga: a file name starting with a colon was considered absolute but it isn't.
Amiga: ":pwd" added a slash when in the root of a drive.
Macintosh: Warnings for unused variables. (Bernhard Pruemmer)
Unix: When catching a deadly signal, handle it in such a way that it's
unlikely that Vim will hang. Call _exit() instead of exit() in case of a
severe problem.
Setting the window title from nothing to something didn't work after patch 29.
Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as
well for extra security.
Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set
'fileformat' to "dos" before writing the temp file.
Unix: Could start waiting for a character when checking for a CTRL-C typed
when an X event is received.
Could not use Perl and Python at the same time on FreeBSD, because Perl used
"-lc" and Python used the threaded C library.
Win32: The Mingw compiler gave a few warning messages.
When using "ZZ" and an autocommand for writing uses an abbreviation it didn't
work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe)
VMS doesn't always have lstat(), added an #ifdef around it.
Added a few corrections for the Macintosh. (Axel Kielhorn)
Win32: Gvimext could not edit more than a few files at once, the length of the
argument was fixed.
Vim 5.7 预发布补丁:
Patch 5.7.001
问题: When the current buffer is crypted, and another modified buffer
isn't, ":wall" will encrypt the other buffer.
解决方案: In buf_write() use "buf" instead of "curbuf" to check for the
crypt key.
相关文件: src/fileio.c
Patch 5.7.002
问题: When 'showmode' is set, using "CTRL-O :r file" waits three seconds
before displaying the read text. (Wichert Akkerman)
解决方案: Set "keep_msg" to the file message so that the screen is redrawn
before the three seconds wait for displaying the mode message.
相关文件: src/fileio.c
Patch 5.7.003
问题: Searching for "[[:cntrl:]]" doesn't work.
解决方案: Exclude NUL from the matching characters, it terminates the list.
相关文件: src/regexp.c
Patch 5.7.004
问题: GTK: When selecting a new font, Vim can crash.
解决方案: In gui_mch_init_font() unreference the old font, not the new one.
相关文件: src/gui_gtk_x11.c
Patch 5.7.005
问题: Multibyte: Inserting a wrapped line corrupts kterm screen.
Pasting TEXT/COMPOUND_TEXT into Vim does not work.
On Motif no XIM status line is displayed even though it is
available.
解决方案: Don't use xterm trick for wrapping lines for multibyte mode.
Correct a missing "break", added TEXT/COMPOUND_TEXT selection
request.
Add XIMStatusArea fallback code.
(Katsuhito Nagano)
相关文件: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c
Patch 5.7.006
问题: GUI: redrawing the non-Visual selection is wrong when the window
is unobscured. (Jean-Pierre Etienne)
解决方案: Redraw the selection properly and don't clear it. Added "len"
argument to clip_may_redraw_selection().
相关文件: src/gui.c, src/ui.c, src/proto/ui.pro
Patch 5.7.007
问题: Python: Crash when using the current buffer twice.
解决方案: Increase the reference count for buffer and window objects.
(Johannes Zellner)
相关文件: src/if_python.c
Patch 5.7.008
问题: In Ex mode, backspacing over the first TAB doesn't work properly.
(Wichert Akkerman)
解决方案: Switch the cursor on before printing the newline.
相关文件: src/ex_getln.c
Patch 5.7.009 (extra)
问题: Mac: Crash when using a long file.
解决方案: Don't redefine malloc() and free(), because it will break using
realloc().
相关文件: src/os_mac.h
Patch 5.7.010
问题: When using CTRL-A on a very long number Vim can crash. (Michael
Naumann)
解决方案: Truncate the length of the new number to avoid a buffer overflow.
相关文件: src/ops.c
Patch 5.7.011 (extra)
问题: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed.
解决方案: Output each character separately, to avoid that Windows reverses
the text for some fonts. (Ron Aaron)
相关文件: src/gui_w32.c
Patch 5.7.012
问题: When using "-complete=buffer" for ":command" the user command
fails.
解决方案: In a user command don't replace the buffer name with a count for
the buffer number.
相关文件: src/ex_docmd.c
Patch 5.7.013
问题: "gD" didn't always find a match in the first line, depending on
the column the search started at.
解决方案: Reset the column to zero before starting to search.
相关文件: src/normal.c
Patch 5.7.014
问题: Rot13 encoding was done on characters with accents, which is
wrong. (Sven Gottwald)
解决方案: Only do rot13 encoding on ASCII characters.
相关文件: src/ops.c
Patch 5.7.016
问题: When hitting 'n' for a ":s///c" command, the ignore-case flag was
not restored, some matches were skipped. (Daniel Blaustein)
解决方案: Restore the reg_ic variable when 'n' was hit.
相关文件: src/ex_cmds.c
Patch 5.7.017
问题: When using a Vim script for Vim 6.0 with <SID> before a function
name, it produces an error message even when inside an "if version
>= 600". (Charles Campbell)
解决方案: Ignore errors in the function name when the function is not going
to be defined.
相关文件: src/eval.c
Patch 5.7.018
问题: When running "rvim" or "vim -Z" it was still possible to execute a
shell command with system() and backtick-expansion. (Antonios A.
Kavarnos)
解决方案: Disallow executing a shell command in get_cmd_output() and
mch_expand_wildcards().
相关文件: src/misc1.c, src/os_unix.c
Patch 5.7.019
问题: Multibyte: In a substitute string, a multi-byte character isn't
skipped properly, can be a problem when the second byte is a
backslash.
解决方案: Skip an extra byte for a double-byte character. (Muraoka Taro)
相关文件: src/ex_cmds.c
Patch 5.7.020
问题: Compilation doesn't work on MacOS-X.
解决方案: Add a couple of #ifdefs. (Jamie Curmi)
相关文件: src/regexp.c, src/ctags/general.h
Patch 5.7.021
问题: Vim sometimes produces a beep when started in an xterm. Only
happens when compiled without mouse support.
解决方案: Requesting the xterm version results in a K_IGNORE. This wasn't
handled when mouse support is disabled. Accept K_IGNORE always.
相关文件: src/normal.c
Patch 5.7.022
问题: %v in 'statusline' is not displayed when it's equal to %c.
解决方案: Check if %V or %v is used and handle them differently.
相关文件: src/screen.c
Patch 5.7.023
问题: Crash when a WinLeave autocommand deletes the buffer in the other
window.
解决方案: Check that after executing the WinLeave autocommands there still
is a window to be closed. Also update the test that was supposed
to check for this problem.
相关文件: src/window.c, testdir/test13.in, testdir/test13.ok
Patch 5.7.024
问题: Evaluating an expression for 'statusline' can have side effects.
解决方案: Evaluate the expression in a sandbox.
相关文件: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c,
src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c,
src/screen.c, src/undo.c
Patch 5.7.025 (fixed)
问题: Creating a temp file has a race condition.
解决方案: Create a private directory to write the temp files in.
相关文件: src/fileio.c, src/misc1.c, src/proto/misc1.pro,
src/proto/fileio.pro, src/memline.c, src/os_unix.h
Patch 5.7.026 (extra)
问题: Creating a temp file has a race condition.
解决方案: Create a private directory to write the temp files in.
This is the extra part of patch 5.7.025.
相关文件: src/os_msdos.h
Patch 5.7.027
问题: Starting to edit a file can cause a crash. For example when in
Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and
then <CR>, which edits a help file. (Robert Bogomip)
解决方案: Check if keep_msg is NULL before copying it.
相关文件: src/fileio.c
Patch 5.7.028
问题: Creating a backup or swap file could fail in rare situations.
解决方案: Use O_EXCL for open().
相关文件: src/fileio.c, src/memfile.c
Patch 5.7.029
问题: Editing a file with an extremely long name crashed Vim.
解决方案: Check for length of the name when setting the window title.
相关文件: src/buffer.c
Patch 5.7.030
问题: A ":make" or ":grep" command with a very long argument could cause
a crash.
解决方案: Allocate the buffer for the shell command.
相关文件: src/ex_docmd.c