mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
updated for version 7.0177
This commit is contained in:
parent
cc984263d7
commit
ebefac63f3
@ -1,4 +1,4 @@
|
|||||||
*cmdline.txt* For Vim version 7.0aa. Last change: 2005 Dec 23
|
*cmdline.txt* For Vim version 7.0aa. Last change: 2005 Dec 27
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -153,7 +153,8 @@ CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
|
|||||||
*c_CTRL-R_=*
|
*c_CTRL-R_=*
|
||||||
'=' the expression register: you are prompted to
|
'=' the expression register: you are prompted to
|
||||||
enter an expression (see |expression|)
|
enter an expression (see |expression|)
|
||||||
(doesn't work at the expression prompt)
|
(doesn't work at the expression prompt; uses
|
||||||
|
the |sandbox| to avoid side effects)
|
||||||
See |registers| about registers. {not in Vi}
|
See |registers| about registers. {not in Vi}
|
||||||
Implementation detail: When using the |expression| register
|
Implementation detail: When using the |expression| register
|
||||||
and invoking setcmdpos(), this sets the position before
|
and invoking setcmdpos(), this sets the position before
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*eval.txt* For Vim version 7.0aa. Last change: 2005 Dec 19
|
*eval.txt* For Vim version 7.0aa. Last change: 2005 Dec 27
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -6804,7 +6804,7 @@ The 'foldexpr', 'includeexpr', 'indentexpr', 'statusline' and 'foldtext'
|
|||||||
options are evaluated in a sandbox. This means that you are protected from
|
options are evaluated in a sandbox. This means that you are protected from
|
||||||
these expressions having nasty side effects. This gives some safety for when
|
these expressions having nasty side effects. This gives some safety for when
|
||||||
these options are set from a modeline. It is also used when the command from
|
these options are set from a modeline. It is also used when the command from
|
||||||
a tags file is executed.
|
a tags file is executed and for CTRL-R = in the command line.
|
||||||
The sandbox is also used for the |:sandbox| command.
|
The sandbox is also used for the |:sandbox| command.
|
||||||
|
|
||||||
These items are not allowed in the sandbox:
|
These items are not allowed in the sandbox:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*insert.txt* For Vim version 7.0aa. Last change: 2005 Dec 18
|
*insert.txt* For Vim version 7.0aa. Last change: 2005 Dec 28
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -953,7 +953,7 @@ CTRL-P Find previous match for words that start with the
|
|||||||
|
|
||||||
|
|
||||||
INSERT COMPLETION POPUP MENU *ins-completion-menu*
|
INSERT COMPLETION POPUP MENU *ins-completion-menu*
|
||||||
|
*popupmenu-completion*
|
||||||
Vim can display the matches in a simplistic popup menu.
|
Vim can display the matches in a simplistic popup menu.
|
||||||
|
|
||||||
The menu is used when:
|
The menu is used when:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*todo.txt* For Vim version 7.0aa. Last change: 2005 Dec 23
|
*todo.txt* For Vim version 7.0aa. Last change: 2005 Dec 28
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -30,6 +30,8 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
|
|||||||
*known-bugs*
|
*known-bugs*
|
||||||
-------------------- Known bugs and current work -----------------------
|
-------------------- Known bugs and current work -----------------------
|
||||||
|
|
||||||
|
Win32: test52 fails.
|
||||||
|
|
||||||
ccomplete:
|
ccomplete:
|
||||||
- When an option is set: In completion mode and the user types (identifier)
|
- When an option is set: In completion mode and the user types (identifier)
|
||||||
characters, advance to the first match instead of removing the popup menu.
|
characters, advance to the first match instead of removing the popup menu.
|
||||||
@ -1860,8 +1862,6 @@ Robustness:
|
|||||||
Performance:
|
Performance:
|
||||||
7 For strings up to 3 bytes don't allocate memory, use v_list itself as a
|
7 For strings up to 3 bytes don't allocate memory, use v_list itself as a
|
||||||
character array. Use VAR_SSTRING (short string).
|
character array. Use VAR_SSTRING (short string).
|
||||||
8 Loading plugins takes startup time. Only load the part that is used to
|
|
||||||
trigger the rest, and load the rest when it's needed?
|
|
||||||
8 Turn b_syn_ic and b_syn_containedin into b_syn_flags.
|
8 Turn b_syn_ic and b_syn_containedin into b_syn_flags.
|
||||||
9 Loading menu.vim still takes quite a bit of time. How to make it faster?
|
9 Loading menu.vim still takes quite a bit of time. How to make it faster?
|
||||||
8 in_id_list() takes much time for syntax highlighting. Cache the result?
|
8 in_id_list() takes much time for syntax highlighting. Cache the result?
|
||||||
@ -2243,6 +2243,7 @@ Autocommands:
|
|||||||
8 Use another option than 'updatetime' for the CursorHold event. The two
|
8 Use another option than 'updatetime' for the CursorHold event. The two
|
||||||
things are unrelated for the user (but the implementation is more
|
things are unrelated for the user (but the implementation is more
|
||||||
difficult).
|
difficult).
|
||||||
|
8 Add an event like CursorHold that is triggered repeatedly, not just once.
|
||||||
8 Also trigger CursorHold in Insert mode?
|
8 Also trigger CursorHold in Insert mode?
|
||||||
7 Add autocommand event for when a buffer cannot be abandoned. So that user
|
7 Add autocommand event for when a buffer cannot be abandoned. So that user
|
||||||
can define the action taking (autowrite, dialog, fail) based on the kind
|
can define the action taking (autowrite, dialog, fail) based on the kind
|
||||||
@ -2312,8 +2313,7 @@ Autocommands:
|
|||||||
that marks can be updated. HierAssist has patch to add
|
that marks can be updated. HierAssist has patch to add
|
||||||
BufChangePre, BufChangePost and RevertBuf. (Shah)
|
BufChangePre, BufChangePost and RevertBuf. (Shah)
|
||||||
WinResized - When a window has been resized
|
WinResized - When a window has been resized
|
||||||
- Add autocommand to be executed every so many seconds? For writing the
|
- Write the file now and then ('autosave'):
|
||||||
file now and then ('autosave').
|
|
||||||
*'autosave'* *'as'* *'noautosave'* *'noas'*
|
*'autosave'* *'as'* *'noautosave'* *'noas'*
|
||||||
'autosave' 'aw' number (default 0)
|
'autosave' 'aw' number (default 0)
|
||||||
Automatically write the current buffer to file N seconds after the
|
Automatically write the current buffer to file N seconds after the
|
||||||
@ -3356,6 +3356,7 @@ Various improvements:
|
|||||||
8 Add "g^E" and "g^Y", to scroll a screen-full line up and down.
|
8 Add "g^E" and "g^Y", to scroll a screen-full line up and down.
|
||||||
6 Add ":timer" command, to set a command to be executed at a certain
|
6 Add ":timer" command, to set a command to be executed at a certain
|
||||||
interval, or once after some time has elapsed. (Aaron)
|
interval, or once after some time has elapsed. (Aaron)
|
||||||
|
Perhaps an autocommand event like CursorHold is better?
|
||||||
8 Add ":confirm" handling in open_exfile(), for when file already exists.
|
8 Add ":confirm" handling in open_exfile(), for when file already exists.
|
||||||
8 When quitting with changed files, make the dialog list the changed file
|
8 When quitting with changed files, make the dialog list the changed file
|
||||||
and allow "write all", "discard all", "write some". The last one would
|
and allow "write all", "discard all", "write some". The last one would
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*version7.txt* For Vim version 7.0aa. Last change: 2005 Dec 23
|
*version7.txt* For Vim version 7.0aa. Last change: 2005 Dec 28
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -1517,4 +1517,20 @@ writing file "a" to create "b" and then ":split b" resulted in two buffers on
|
|||||||
the same file with two different swapfile names. Now set the inode in the
|
the same file with two different swapfile names. Now set the inode in the
|
||||||
buffer when creating a new file.
|
buffer when creating a new file.
|
||||||
|
|
||||||
|
When 'esckeys' is not set don't send the xterm code to request the version
|
||||||
|
string, because it may cause trouble in Insert mode.
|
||||||
|
|
||||||
|
When evaluating an expression for CTRL-R = on the command line it was possible
|
||||||
|
to open a new window, resulting in errors for incremental search, and many
|
||||||
|
other nasty things were possible. Now evaluate the expression in the sandbox
|
||||||
|
to protect from unexpected behavior.
|
||||||
|
|
||||||
|
"d(" deleted the character under the cursor, while the documentation specified
|
||||||
|
an exclusive motion. Vi also doesn't delete the character under the cursor.
|
||||||
|
|
||||||
|
Shift-Insert in Insert mode could put the cursor before the last character
|
||||||
|
when it just fits in the window. In coladvance() don't stop at the window
|
||||||
|
edge when filling with spaces and when in Insert mode. In mswin.vim avoid
|
||||||
|
getting a beep from the "l" command.
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
vim:tw=78:ts=8:ft=help:norl:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Set options and add mapping such that Vim behaves a lot like MS-Windows
|
" Set options and add mapping such that Vim behaves a lot like MS-Windows
|
||||||
"
|
"
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
" Last change: 2004 Jul 27
|
" Last change: 2005 Dec 28
|
||||||
|
|
||||||
" bail out if this isn't wanted (mrsvim.vim uses this).
|
" bail out if this isn't wanted (mrsvim.vim uses this).
|
||||||
if exists("g:skip_loading_mswin") && g:skip_loading_mswin
|
if exists("g:skip_loading_mswin") && g:skip_loading_mswin
|
||||||
@ -54,7 +54,13 @@ if has("virtualedit")
|
|||||||
let c = col(".")
|
let c = col(".")
|
||||||
normal i
|
normal i
|
||||||
if col(".") < c " compensate for i<ESC> moving the cursor left
|
if col(".") < c " compensate for i<ESC> moving the cursor left
|
||||||
|
" Avoid a beep when the text ends at the window edge.
|
||||||
|
let vb_save = &vb
|
||||||
|
let t_vb_save = &t_vb
|
||||||
|
set vb t_vb=
|
||||||
normal l
|
normal l
|
||||||
|
let &vb = vb_save
|
||||||
|
let &t_vb = t_vb_save
|
||||||
endif
|
endif
|
||||||
let &ve = ove
|
let &ve = ove
|
||||||
endfunc
|
endfunc
|
||||||
|
@ -2657,7 +2657,7 @@ ins_compl_prep(c)
|
|||||||
}
|
}
|
||||||
for (temp = 0; p[temp]; ++temp)
|
for (temp = 0; p[temp]; ++temp)
|
||||||
AppendCharToRedobuff(K_BS);
|
AppendCharToRedobuff(K_BS);
|
||||||
AppendToRedobuffLit(ptr);
|
AppendToRedobuffLit(ptr, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_CINDENT
|
#ifdef FEAT_CINDENT
|
||||||
@ -4240,7 +4240,7 @@ insert_special(c, allow_modmask, ctrlv)
|
|||||||
return;
|
return;
|
||||||
p[len - 1] = NUL;
|
p[len - 1] = NUL;
|
||||||
ins_str(p);
|
ins_str(p);
|
||||||
AppendToRedobuffLit(p);
|
AppendToRedobuffLit(p, -1);
|
||||||
ctrlv = FALSE;
|
ctrlv = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4756,7 +4756,7 @@ insertchar(c, flags, second_indent)
|
|||||||
else
|
else
|
||||||
i = 0;
|
i = 0;
|
||||||
if (buf[i] != NUL)
|
if (buf[i] != NUL)
|
||||||
AppendToRedobuffLit(buf + i);
|
AppendToRedobuffLit(buf + i, -1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -921,7 +921,7 @@ do_bang(addr_count, eap, forceit, do_in, do_out)
|
|||||||
|
|
||||||
if (bangredo) /* put cmd in redo buffer for ! command */
|
if (bangredo) /* put cmd in redo buffer for ! command */
|
||||||
{
|
{
|
||||||
AppendToRedobuffLit(prevcmd);
|
AppendToRedobuffLit(prevcmd, -1);
|
||||||
AppendToRedobuff((char_u *)"\n");
|
AppendToRedobuff((char_u *)"\n");
|
||||||
bangredo = FALSE;
|
bangredo = FALSE;
|
||||||
}
|
}
|
||||||
|
@ -2826,11 +2826,7 @@ find_ucmd(eap, p, full, xp, compl)
|
|||||||
if (k == len && found && *np != NUL)
|
if (k == len && found && *np != NUL)
|
||||||
{
|
{
|
||||||
if (gap == &ucmds)
|
if (gap == &ucmds)
|
||||||
{
|
|
||||||
if (xp != NULL)
|
|
||||||
xp->xp_context = EXPAND_UNSUCCESSFUL;
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
amb_local = TRUE;
|
amb_local = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3091,6 +3087,8 @@ set_one_cmd_context(xp, buff)
|
|||||||
NULL
|
NULL
|
||||||
# endif
|
# endif
|
||||||
);
|
);
|
||||||
|
if (p == NULL)
|
||||||
|
ea.cmdidx = CMD_SIZE; /* ambiguous user command */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -2765,9 +2765,17 @@ cmdline_paste(regname, literally)
|
|||||||
regname = may_get_selection(regname);
|
regname = may_get_selection(regname);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Need to save and restore ccline. */
|
/* Need to save and restore ccline. And go into the sandbox to avoid
|
||||||
|
* nasty things like going to another buffer when evaluating an
|
||||||
|
* expression. */
|
||||||
save_cmdline(&save_ccline);
|
save_cmdline(&save_ccline);
|
||||||
|
#ifdef HAVE_SANDBOX
|
||||||
|
++sandbox;
|
||||||
|
#endif
|
||||||
i = get_spec_reg(regname, &arg, &allocated, TRUE);
|
i = get_spec_reg(regname, &arg, &allocated, TRUE);
|
||||||
|
#ifdef HAVE_SANDBOX
|
||||||
|
--sandbox;
|
||||||
|
#endif
|
||||||
restore_cmdline(&save_ccline);
|
restore_cmdline(&save_ccline);
|
||||||
|
|
||||||
if (i)
|
if (i)
|
||||||
|
@ -529,16 +529,18 @@ AppendToRedobuff(s)
|
|||||||
* K_SPECIAL and CSI are escaped as well.
|
* K_SPECIAL and CSI are escaped as well.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
AppendToRedobuffLit(s)
|
AppendToRedobuffLit(str, len)
|
||||||
char_u *s;
|
char_u *str;
|
||||||
|
int len; /* length of "str" or -1 for up to the NUL */
|
||||||
{
|
{
|
||||||
|
char_u *s = str;
|
||||||
int c;
|
int c;
|
||||||
char_u *start;
|
char_u *start;
|
||||||
|
|
||||||
if (block_redo)
|
if (block_redo)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
while (*s != NUL)
|
while (len < 0 ? *s != NUL : s - str < len)
|
||||||
{
|
{
|
||||||
/* Put a string of normal characters in the redo buffer (that's
|
/* Put a string of normal characters in the redo buffer (that's
|
||||||
* faster). */
|
* faster). */
|
||||||
@ -547,7 +549,7 @@ AppendToRedobuffLit(s)
|
|||||||
#ifndef EBCDIC
|
#ifndef EBCDIC
|
||||||
&& *s < DEL /* EBCDIC: all chars above space are normal */
|
&& *s < DEL /* EBCDIC: all chars above space are normal */
|
||||||
#endif
|
#endif
|
||||||
)
|
&& (len < 0 || s - str < len))
|
||||||
++s;
|
++s;
|
||||||
|
|
||||||
/* Don't put '0' or '^' as last character, just in case a CTRL-D is
|
/* Don't put '0' or '^' as last character, just in case a CTRL-D is
|
||||||
@ -557,29 +559,29 @@ AppendToRedobuffLit(s)
|
|||||||
if (s > start)
|
if (s > start)
|
||||||
add_buff(&redobuff, start, (long)(s - start));
|
add_buff(&redobuff, start, (long)(s - start));
|
||||||
|
|
||||||
if (*s != NUL)
|
if (*s == NUL || (len >= 0 && s - str >= len))
|
||||||
{
|
break;
|
||||||
/* Handle a special or multibyte character. */
|
|
||||||
#ifdef FEAT_MBYTE
|
|
||||||
if (has_mbyte)
|
|
||||||
/* Handle composing chars separately. */
|
|
||||||
c = mb_cptr2char_adv(&s);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
c = *s++;
|
|
||||||
if (c < ' ' || c == DEL || (*s == NUL && (c == '0' || c == '^')))
|
|
||||||
add_char_buff(&redobuff, Ctrl_V);
|
|
||||||
|
|
||||||
/* CTRL-V '0' must be inserted as CTRL-V 048 (EBCDIC: xf0) */
|
/* Handle a special or multibyte character. */
|
||||||
if (*s == NUL && c == '0')
|
#ifdef FEAT_MBYTE
|
||||||
#ifdef EBCDIC
|
if (has_mbyte)
|
||||||
add_buff(&redobuff, (char_u *)"xf0", 3L);
|
/* Handle composing chars separately. */
|
||||||
#else
|
c = mb_cptr2char_adv(&s);
|
||||||
add_buff(&redobuff, (char_u *)"048", 3L);
|
else
|
||||||
#endif
|
#endif
|
||||||
else
|
c = *s++;
|
||||||
add_char_buff(&redobuff, c);
|
if (c < ' ' || c == DEL || (*s == NUL && (c == '0' || c == '^')))
|
||||||
}
|
add_char_buff(&redobuff, Ctrl_V);
|
||||||
|
|
||||||
|
/* CTRL-V '0' must be inserted as CTRL-V 048 (EBCDIC: xf0) */
|
||||||
|
if (*s == NUL && c == '0')
|
||||||
|
#ifdef EBCDIC
|
||||||
|
add_buff(&redobuff, (char_u *)"xf0", 3L);
|
||||||
|
#else
|
||||||
|
add_buff(&redobuff, (char_u *)"048", 3L);
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
add_char_buff(&redobuff, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,6 +247,7 @@ enum key_extra
|
|||||||
|
|
||||||
, KE_DROP /* DnD data is available */
|
, KE_DROP /* DnD data is available */
|
||||||
, KE_CURSORHOLD /* CursorHold event */
|
, KE_CURSORHOLD /* CursorHold event */
|
||||||
|
, KE_NOP /* doesn't do something */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -422,6 +423,7 @@ enum key_extra
|
|||||||
#define K_X2RELEASE TERMCAP2KEY(KS_EXTRA, KE_X2RELEASE)
|
#define K_X2RELEASE TERMCAP2KEY(KS_EXTRA, KE_X2RELEASE)
|
||||||
|
|
||||||
#define K_IGNORE TERMCAP2KEY(KS_EXTRA, KE_IGNORE)
|
#define K_IGNORE TERMCAP2KEY(KS_EXTRA, KE_IGNORE)
|
||||||
|
#define K_NOP TERMCAP2KEY(KS_EXTRA, KE_NOP)
|
||||||
|
|
||||||
#define K_SNIFF TERMCAP2KEY(KS_EXTRA, KE_SNIFF)
|
#define K_SNIFF TERMCAP2KEY(KS_EXTRA, KE_SNIFF)
|
||||||
|
|
||||||
|
@ -871,7 +871,7 @@ main
|
|||||||
/* If ":startinsert" command used, stuff a dummy command to be able to
|
/* If ":startinsert" command used, stuff a dummy command to be able to
|
||||||
* call normal_cmd(), which will then start Insert mode. */
|
* call normal_cmd(), which will then start Insert mode. */
|
||||||
if (restart_edit != 0)
|
if (restart_edit != 0)
|
||||||
stuffcharReadbuff(K_IGNORE);
|
stuffcharReadbuff(K_NOP);
|
||||||
|
|
||||||
#ifdef FEAT_NETBEANS_INTG
|
#ifdef FEAT_NETBEANS_INTG
|
||||||
if (usingNetbeans)
|
if (usingNetbeans)
|
||||||
|
11
src/misc2.c
11
src/misc2.c
@ -177,7 +177,7 @@ coladvance2(pos, addspaces, finetune, wcol)
|
|||||||
#ifdef FEAT_VIRTUALEDIT
|
#ifdef FEAT_VIRTUALEDIT
|
||||||
int width = W_WIDTH(curwin) - win_col_off(curwin);
|
int width = W_WIDTH(curwin) - win_col_off(curwin);
|
||||||
|
|
||||||
if ((addspaces || finetune)
|
if (finetune
|
||||||
&& curwin->w_p_wrap
|
&& curwin->w_p_wrap
|
||||||
# ifdef FEAT_VERTSPLIT
|
# ifdef FEAT_VERTSPLIT
|
||||||
&& curwin->w_width != 0
|
&& curwin->w_width != 0
|
||||||
@ -188,10 +188,13 @@ coladvance2(pos, addspaces, finetune, wcol)
|
|||||||
if (csize > 0)
|
if (csize > 0)
|
||||||
csize--;
|
csize--;
|
||||||
|
|
||||||
if (wcol / width > (colnr_T)csize / width)
|
if (wcol / width > (colnr_T)csize / width
|
||||||
|
&& ((State & INSERT) == 0 || (int)wcol > csize + 1))
|
||||||
{
|
{
|
||||||
/* In case of line wrapping don't move the cursor beyond the
|
/* In case of line wrapping don't move the cursor beyond the
|
||||||
* right screen edge. */
|
* right screen edge. In Insert mode allow going just beyond
|
||||||
|
* the last character (like what happens when typing and
|
||||||
|
* reaching the right window edge). */
|
||||||
wcol = (csize / width + 1) * width - 1;
|
wcol = (csize / width + 1) * width - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -501,7 +504,7 @@ check_cursor_col()
|
|||||||
{
|
{
|
||||||
/* Allow cursor past end-of-line in Insert mode, restarting Insert
|
/* Allow cursor past end-of-line in Insert mode, restarting Insert
|
||||||
* mode or when in Visual mode and 'selection' isn't "old" */
|
* mode or when in Visual mode and 'selection' isn't "old" */
|
||||||
if (State & INSERT || restart_edit
|
if ((State & INSERT) || restart_edit
|
||||||
#ifdef FEAT_VISUAL
|
#ifdef FEAT_VISUAL
|
||||||
|| (VIsual_active && *p_sel != 'o')
|
|| (VIsual_active && *p_sel != 'o')
|
||||||
#endif
|
#endif
|
||||||
|
24
src/normal.c
24
src/normal.c
@ -57,6 +57,7 @@ static void del_from_showcmd __ARGS((int));
|
|||||||
* v_*(): functions called to handle Visual mode commands.
|
* v_*(): functions called to handle Visual mode commands.
|
||||||
*/
|
*/
|
||||||
static void nv_ignore __ARGS((cmdarg_T *cap));
|
static void nv_ignore __ARGS((cmdarg_T *cap));
|
||||||
|
static void nv_nop __ARGS((cmdarg_T *cap));
|
||||||
static void nv_error __ARGS((cmdarg_T *cap));
|
static void nv_error __ARGS((cmdarg_T *cap));
|
||||||
static void nv_help __ARGS((cmdarg_T *cap));
|
static void nv_help __ARGS((cmdarg_T *cap));
|
||||||
static void nv_addsub __ARGS((cmdarg_T *cap));
|
static void nv_addsub __ARGS((cmdarg_T *cap));
|
||||||
@ -378,6 +379,7 @@ static const struct nv_cmd
|
|||||||
{K_X2RELEASE, nv_mouse, 0, 0},
|
{K_X2RELEASE, nv_mouse, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
{K_IGNORE, nv_ignore, 0, 0},
|
{K_IGNORE, nv_ignore, 0, 0},
|
||||||
|
{K_NOP, nv_nop, 0, 0},
|
||||||
{K_INS, nv_edit, 0, 0},
|
{K_INS, nv_edit, 0, 0},
|
||||||
{K_KINS, nv_edit, 0, 0},
|
{K_KINS, nv_edit, 0, 0},
|
||||||
{K_BS, nv_ctrlh, 0, 0},
|
{K_BS, nv_ctrlh, 0, 0},
|
||||||
@ -1415,7 +1417,7 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
* pattern to really repeat the same command.
|
* pattern to really repeat the same command.
|
||||||
*/
|
*/
|
||||||
if (vim_strchr(p_cpo, CPO_REDO) == NULL)
|
if (vim_strchr(p_cpo, CPO_REDO) == NULL)
|
||||||
AppendToRedobuffLit(cap->searchbuf);
|
AppendToRedobuffLit(cap->searchbuf, -1);
|
||||||
AppendToRedobuff(NL_STR);
|
AppendToRedobuff(NL_STR);
|
||||||
}
|
}
|
||||||
else if (cap->cmdchar == ':')
|
else if (cap->cmdchar == ':')
|
||||||
@ -1427,7 +1429,7 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
ResetRedobuff();
|
ResetRedobuff();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AppendToRedobuffLit(repeat_cmdline);
|
AppendToRedobuffLit(repeat_cmdline, -1);
|
||||||
AppendToRedobuff(NL_STR);
|
AppendToRedobuff(NL_STR);
|
||||||
vim_free(repeat_cmdline);
|
vim_free(repeat_cmdline);
|
||||||
repeat_cmdline = NULL;
|
repeat_cmdline = NULL;
|
||||||
@ -3928,7 +3930,6 @@ check_scrollbind(topline_diff, leftcol_diff)
|
|||||||
* Used for CTRL-Q and CTRL-S to avoid problems with terminals that use
|
* Used for CTRL-Q and CTRL-S to avoid problems with terminals that use
|
||||||
* xon/xoff
|
* xon/xoff
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED */
|
|
||||||
static void
|
static void
|
||||||
nv_ignore(cap)
|
nv_ignore(cap)
|
||||||
cmdarg_T *cap;
|
cmdarg_T *cap;
|
||||||
@ -3936,6 +3937,17 @@ nv_ignore(cap)
|
|||||||
cap->retval |= CA_COMMAND_BUSY; /* don't call edit() now */
|
cap->retval |= CA_COMMAND_BUSY; /* don't call edit() now */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Command character that doesn't do anything, but unlike nv_ignore() does
|
||||||
|
* start edit(). Used for "startinsert" executed while starting up.
|
||||||
|
*/
|
||||||
|
/*ARGSUSED */
|
||||||
|
static void
|
||||||
|
nv_nop(cap)
|
||||||
|
cmdarg_T *cap;
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Command character doesn't exist.
|
* Command character doesn't exist.
|
||||||
*/
|
*/
|
||||||
@ -6320,10 +6332,8 @@ nv_brace(cap)
|
|||||||
{
|
{
|
||||||
cap->oap->motion_type = MCHAR;
|
cap->oap->motion_type = MCHAR;
|
||||||
cap->oap->use_reg_one = TRUE;
|
cap->oap->use_reg_one = TRUE;
|
||||||
if (cap->cmdchar == ')')
|
/* The motion used to be inclusive for "(", but that is not what Vi does. */
|
||||||
cap->oap->inclusive = FALSE;
|
cap->oap->inclusive = FALSE;
|
||||||
else
|
|
||||||
cap->oap->inclusive = TRUE;
|
|
||||||
curwin->w_set_curswant = TRUE;
|
curwin->w_set_curswant = TRUE;
|
||||||
|
|
||||||
if (findsent(cap->arg, cap->count1) == FAIL)
|
if (findsent(cap->arg, cap->count1) == FAIL)
|
||||||
|
@ -9,7 +9,7 @@ void ResetRedobuff __ARGS((void));
|
|||||||
void saveRedobuff __ARGS((void));
|
void saveRedobuff __ARGS((void));
|
||||||
void restoreRedobuff __ARGS((void));
|
void restoreRedobuff __ARGS((void));
|
||||||
void AppendToRedobuff __ARGS((char_u *s));
|
void AppendToRedobuff __ARGS((char_u *s));
|
||||||
void AppendToRedobuffLit __ARGS((char_u *s));
|
void AppendToRedobuffLit __ARGS((char_u *str, int len));
|
||||||
void AppendCharToRedobuff __ARGS((int c));
|
void AppendCharToRedobuff __ARGS((int c));
|
||||||
void AppendNumberToRedobuff __ARGS((long n));
|
void AppendNumberToRedobuff __ARGS((long n));
|
||||||
void stuffReadbuff __ARGS((char_u *s));
|
void stuffReadbuff __ARGS((char_u *s));
|
||||||
|
@ -2394,7 +2394,7 @@ showmatch(c)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* findsent(dir, count) - Find the start of the next sentence in direction
|
* findsent(dir, count) - Find the start of the next sentence in direction
|
||||||
* 'dir' Sentences are supposed to end in ".", "!" or "?" followed by white
|
* "dir" Sentences are supposed to end in ".", "!" or "?" followed by white
|
||||||
* space or a line break. Also stop at an empty line.
|
* space or a line break. Also stop at an empty line.
|
||||||
* Return OK if the next sentence was found.
|
* Return OK if the next sentence was found.
|
||||||
*/
|
*/
|
||||||
|
@ -8594,7 +8594,8 @@ spell_suggest(count)
|
|||||||
/* For redo we use a change-word command. */
|
/* For redo we use a change-word command. */
|
||||||
ResetRedobuff();
|
ResetRedobuff();
|
||||||
AppendToRedobuff((char_u *)"ciw");
|
AppendToRedobuff((char_u *)"ciw");
|
||||||
AppendToRedobuff(stp->st_word);
|
AppendToRedobuffLit(p + c,
|
||||||
|
STRLEN(stp->st_word) + sug.su_badlen - stp->st_orglen);
|
||||||
AppendCharToRedobuff(ESC);
|
AppendCharToRedobuff(ESC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3256,6 +3256,8 @@ stoptermcap()
|
|||||||
* echoed.
|
* echoed.
|
||||||
* Only do this after termcap mode has been started, otherwise the codes for
|
* Only do this after termcap mode has been started, otherwise the codes for
|
||||||
* the cursor keys may be wrong.
|
* the cursor keys may be wrong.
|
||||||
|
* Only do this when 'esckeys' is on, otherwise the response causes trouble in
|
||||||
|
* Insert mode.
|
||||||
* On Unix only do it when both output and input are a tty (avoid writing
|
* On Unix only do it when both output and input are a tty (avoid writing
|
||||||
* request to terminal while reading from a file).
|
* request to terminal while reading from a file).
|
||||||
* The result is caught in check_termcode().
|
* The result is caught in check_termcode().
|
||||||
@ -3266,6 +3268,7 @@ may_req_termresponse()
|
|||||||
if (crv_status == CRV_GET
|
if (crv_status == CRV_GET
|
||||||
&& cur_tmode == TMODE_RAW
|
&& cur_tmode == TMODE_RAW
|
||||||
&& termcap_active
|
&& termcap_active
|
||||||
|
&& p_ek
|
||||||
#ifdef UNIX
|
#ifdef UNIX
|
||||||
&& isatty(1)
|
&& isatty(1)
|
||||||
&& isatty(read_cmd_fd)
|
&& isatty(read_cmd_fd)
|
||||||
|
@ -47,6 +47,40 @@ endfunction
|
|||||||
" Non-existing autocmd event
|
" Non-existing autocmd event
|
||||||
let test_cases += [['##MySpecialCmd', 0]]
|
let test_cases += [['##MySpecialCmd', 0]]
|
||||||
|
|
||||||
|
" Existing and working option (long form)
|
||||||
|
let test_cases += [['&textwidth', 1]]
|
||||||
|
" Existing and working option (short form)
|
||||||
|
let test_cases += [['&tw', 1]]
|
||||||
|
" Negative form of existing and working option (long form)
|
||||||
|
let test_cases += [['&nojoinspaces', 0]]
|
||||||
|
" Negative form of existing and working option (short form)
|
||||||
|
let test_cases += [['&nojs', 0]]
|
||||||
|
" Non-existing option
|
||||||
|
let test_cases += [['&myxyzoption', 0]]
|
||||||
|
|
||||||
|
" Existing and working option (long form)
|
||||||
|
let test_cases += [['+incsearch', 1]]
|
||||||
|
" Existing and working option (short form)
|
||||||
|
let test_cases += [['+is', 1]]
|
||||||
|
" Existing option that is hidden.
|
||||||
|
let test_cases += [['+autoprint', 0]]
|
||||||
|
|
||||||
|
" Existing environment variable
|
||||||
|
let $EDITOR_NAME = 'Vim Editor'
|
||||||
|
let test_cases += [['$EDITOR_NAME', 1]]
|
||||||
|
" Non-existing environment variable
|
||||||
|
let test_cases += [['$NON_ENV_VAR', 0]]
|
||||||
|
|
||||||
|
" Valid internal function
|
||||||
|
let test_cases += [['*bufnr', 1]]
|
||||||
|
" Non-existing internal function
|
||||||
|
let test_cases += [['*myxyzfunc', 0]]
|
||||||
|
|
||||||
|
" Valid user defined function
|
||||||
|
let test_cases += [['*TestExists', 1]]
|
||||||
|
" Non-existing user defined function
|
||||||
|
let test_cases += [['*MyxyzFunc', 0]]
|
||||||
|
|
||||||
redir! > test.out
|
redir! > test.out
|
||||||
|
|
||||||
for [test_case, result] in test_cases
|
for [test_case, result] in test_cases
|
||||||
@ -54,6 +88,189 @@ endfunction
|
|||||||
call RunTest(test_case, result)
|
call RunTest(test_case, result)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
" Valid internal command (full match)
|
||||||
|
echo ':edit: 2'
|
||||||
|
if exists(':edit') == 2
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Valid internal command (partial match)
|
||||||
|
echo ':q: 1'
|
||||||
|
if exists(':q') == 1
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing internal command
|
||||||
|
echo ':invalidcmd: 0'
|
||||||
|
if !exists(':invalidcmd')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" User defined command (full match)
|
||||||
|
command! MyCmd :echo 'My command'
|
||||||
|
echo ':MyCmd: 2'
|
||||||
|
if exists(':MyCmd') == 2
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" User defined command (partial match)
|
||||||
|
command! MyOtherCmd :echo 'Another command'
|
||||||
|
echo ':My: 3'
|
||||||
|
if exists(':My') == 3
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Command modifier
|
||||||
|
echo ':rightbelow: 2'
|
||||||
|
if exists(':rightbelow') == 2
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing user defined command (full match)
|
||||||
|
delcommand MyCmd
|
||||||
|
|
||||||
|
echo ':MyCmd: 0'
|
||||||
|
if !exists(':MyCmd')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing user defined command (partial match)
|
||||||
|
delcommand MyOtherCmd
|
||||||
|
|
||||||
|
echo ':My: 0'
|
||||||
|
if !exists(':My')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Valid local variable
|
||||||
|
let local_var = 1
|
||||||
|
echo 'local_var: 1'
|
||||||
|
if exists('local_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing local variable
|
||||||
|
unlet local_var
|
||||||
|
echo 'local_var: 0'
|
||||||
|
if !exists('local_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Valid local list
|
||||||
|
let local_list = ["blue", "orange"]
|
||||||
|
echo 'local_list: 1'
|
||||||
|
if exists('local_list')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing local list
|
||||||
|
unlet local_list
|
||||||
|
echo 'local_list: 0'
|
||||||
|
if !exists('local_list')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Valid local dictionary
|
||||||
|
let local_dict = {"xcord":100, "ycord":2}
|
||||||
|
echo 'local_dict: 1'
|
||||||
|
if exists('local_dict')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing local dictionary
|
||||||
|
unlet local_dict
|
||||||
|
echo 'local_dict: 0'
|
||||||
|
if !exists('local_dict')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Existing global variable
|
||||||
|
let g:global_var = 1
|
||||||
|
echo 'g:global_var: 1'
|
||||||
|
if exists('g:global_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing global variable
|
||||||
|
unlet g:global_var
|
||||||
|
echo 'g:global_var: 0'
|
||||||
|
if !exists('g:global_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Existing local curly-brace variable
|
||||||
|
let curly_local_var = 1
|
||||||
|
let str = "local"
|
||||||
|
echo 'curly_{str}_var: 1'
|
||||||
|
if exists('curly_{str}_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing local curly-brace variable
|
||||||
|
unlet curly_local_var
|
||||||
|
echo 'curly_{str}_var: 0'
|
||||||
|
if !exists('curly_{str}_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Existing global curly-brace variable
|
||||||
|
let g:curly_global_var = 1
|
||||||
|
let str = "global"
|
||||||
|
echo 'g:curly_{str}_var: 1'
|
||||||
|
if exists('g:curly_{str}_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Non-existing global curly-brace variable
|
||||||
|
unlet g:curly_global_var
|
||||||
|
echo 'g:curly_{str}_var: 0'
|
||||||
|
if !exists('g:curly_{str}_var')
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Script-local tests
|
||||||
|
source test60.vim
|
||||||
|
|
||||||
redir END
|
redir END
|
||||||
endfunction
|
endfunction
|
||||||
:call TestExists()
|
:call TestExists()
|
||||||
|
@ -29,3 +29,83 @@ OK
|
|||||||
OK
|
OK
|
||||||
##MySpecialCmd: 0
|
##MySpecialCmd: 0
|
||||||
OK
|
OK
|
||||||
|
&textwidth: 1
|
||||||
|
OK
|
||||||
|
&tw: 1
|
||||||
|
OK
|
||||||
|
&nojoinspaces: 0
|
||||||
|
OK
|
||||||
|
&nojs: 0
|
||||||
|
OK
|
||||||
|
&myxyzoption: 0
|
||||||
|
OK
|
||||||
|
+incsearch: 1
|
||||||
|
OK
|
||||||
|
+is: 1
|
||||||
|
OK
|
||||||
|
+autoprint: 0
|
||||||
|
OK
|
||||||
|
$EDITOR_NAME: 1
|
||||||
|
OK
|
||||||
|
$NON_ENV_VAR: 0
|
||||||
|
OK
|
||||||
|
*bufnr: 1
|
||||||
|
OK
|
||||||
|
*myxyzfunc: 0
|
||||||
|
OK
|
||||||
|
*TestExists: 1
|
||||||
|
OK
|
||||||
|
*MyxyzFunc: 0
|
||||||
|
OK
|
||||||
|
:edit: 2
|
||||||
|
OK
|
||||||
|
:q: 1
|
||||||
|
OK
|
||||||
|
:invalidcmd: 0
|
||||||
|
OK
|
||||||
|
:MyCmd: 2
|
||||||
|
OK
|
||||||
|
:My: 3
|
||||||
|
OK
|
||||||
|
:rightbelow: 2
|
||||||
|
OK
|
||||||
|
:MyCmd: 0
|
||||||
|
OK
|
||||||
|
:My: 0
|
||||||
|
OK
|
||||||
|
local_var: 1
|
||||||
|
OK
|
||||||
|
local_var: 0
|
||||||
|
OK
|
||||||
|
local_list: 1
|
||||||
|
OK
|
||||||
|
local_list: 0
|
||||||
|
OK
|
||||||
|
local_dict: 1
|
||||||
|
OK
|
||||||
|
local_dict: 0
|
||||||
|
OK
|
||||||
|
g:global_var: 1
|
||||||
|
OK
|
||||||
|
g:global_var: 0
|
||||||
|
OK
|
||||||
|
curly_{str}_var: 1
|
||||||
|
OK
|
||||||
|
curly_{str}_var: 0
|
||||||
|
OK
|
||||||
|
g:curly_{str}_var: 1
|
||||||
|
OK
|
||||||
|
g:curly_{str}_var: 0
|
||||||
|
OK
|
||||||
|
s:script_var: 1
|
||||||
|
OK
|
||||||
|
s:script_var: 0
|
||||||
|
OK
|
||||||
|
s:curly_{str}_var: 1
|
||||||
|
OK
|
||||||
|
s:curly_{str}_var: 0
|
||||||
|
OK
|
||||||
|
*s:my_script_func: 1
|
||||||
|
OK
|
||||||
|
*s:my_script_func: 0
|
||||||
|
OK
|
||||||
|
10
src/ui.c
10
src/ui.c
@ -469,9 +469,9 @@ clip_own_selection(cbd)
|
|||||||
#ifdef FEAT_X11
|
#ifdef FEAT_X11
|
||||||
if (cbd == &clip_star)
|
if (cbd == &clip_star)
|
||||||
{
|
{
|
||||||
/* May have to show a different kind of highlighting for the selected
|
/* May have to show a different kind of highlighting for the
|
||||||
* area. There is no specific redraw command for this, just redraw
|
* selected area. There is no specific redraw command for this,
|
||||||
* all windows on the current buffer. */
|
* just redraw all windows on the current buffer. */
|
||||||
if (cbd->owned
|
if (cbd->owned
|
||||||
&& get_real_state() == VISUAL
|
&& get_real_state() == VISUAL
|
||||||
&& clip_isautosel()
|
&& clip_isautosel()
|
||||||
@ -2130,6 +2130,10 @@ clip_x11_request_selection(myShell, dpy, cbd)
|
|||||||
{
|
{
|
||||||
if (XCheckTypedEvent(dpy, SelectionNotify, &event))
|
if (XCheckTypedEvent(dpy, SelectionNotify, &event))
|
||||||
break;
|
break;
|
||||||
|
if (XCheckTypedEvent(dpy, SelectionRequest, &event))
|
||||||
|
/* We may get a SelectionRequest here and if we don't handle
|
||||||
|
* it we hang. KDE klipper does this, for example. */
|
||||||
|
XtDispatchEvent(&event);
|
||||||
|
|
||||||
/* Do we need this? Probably not. */
|
/* Do we need this? Probably not. */
|
||||||
XSync(dpy, False);
|
XSync(dpy, False);
|
||||||
|
@ -36,5 +36,5 @@
|
|||||||
#define VIM_VERSION_NODOT "vim70aa"
|
#define VIM_VERSION_NODOT "vim70aa"
|
||||||
#define VIM_VERSION_SHORT "7.0aa"
|
#define VIM_VERSION_SHORT "7.0aa"
|
||||||
#define VIM_VERSION_MEDIUM "7.0aa ALPHA"
|
#define VIM_VERSION_MEDIUM "7.0aa ALPHA"
|
||||||
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Dec 23)"
|
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Dec 28)"
|
||||||
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Dec 23, compiled "
|
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Dec 28, compiled "
|
||||||
|
Loading…
x
Reference in New Issue
Block a user