1
0
forked from aniani/vim

updated for version 7.0112

This commit is contained in:
Bram Moolenaar
2005-07-21 21:11:17 +00:00
parent 4536002e30
commit 342337a1a0
5 changed files with 112 additions and 89 deletions

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.0aa. Last change: 2005 Jul 20 *todo.txt* For Vim version 7.0aa. Last change: 2005 Jul 21
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,37 +30,6 @@ 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 -----------------------
About HTML tag pairing: http://www.w3.org/TR/html4/index/elements.html
":e *.foo" completion with file name starting with "+" should be escaped.
VMS patch for term.c also in Vim 6.3 (Zoltan Arpadffy)
Make_cyg.mak files for Vim 6.3 from Tony Mechelynck?
Add extra list of file locations. Can be used with:
:ltag list of matching tags, like :tselect
:lnext next location
:lprevious :lNext previous location
:lnfile location in next file
:lNfile :lpfile location in previous file
:lrewind :lfirst first location
:llast last location
:ll [N] go to location N (current one if N omitted)
:lwindow open window with locations (separate from quickfix window)
:lopen open window with locations
:lclose close window with locations
:llist list locations
:lfile read locations from file using 'errorformat'
:lgetfile idem, don't jump to first one
:lbuffer idem, from current buffer.
Win32: Balloon text can't contain line break.
Hints for multiline tooltips from Alexei Alexandrov (2005 Mar 26)
Patch from Sergey Khorev, 2005 Apr 11
Add has("balloon_multiline")
Win32: Crash when pasting Simplified Chinese in utf-8. (rainux, 2005 June 20) Win32: Crash when pasting Simplified Chinese in utf-8. (rainux, 2005 June 20)
Netrw plugin problems: Netrw plugin problems:
@@ -268,6 +237,25 @@ Also place vimtutor.bat in %windir%?
Add gui_mch_browsedir() for Motif, KDE and Mac OS/X. Add gui_mch_browsedir() for Motif, KDE and Mac OS/X.
Add extra list of file locations. A bit like the quickfix list, but there is
one per window. Can be used with:
:ltag list of matching tags, like :tselect
Commands to use the location list:
:lnext next location
:lprevious :lNext previous location
:lnfile location in next file
:lNfile :lpfile location in previous file
:lrewind :lfirst first location
:llast last location
:ll [N] go to location N (current one if N omitted)
:lwindow open window with locations (separate from quickfix window)
:lopen open window with locations
:lclose close window with locations
:llist list locations
:lfile read locations from file using 'errorformat'
:lgetfile idem, don't jump to first one
:lbuffer idem, from current buffer.
7 Add a ":cstring" command. Works like ":cfile" but reads from a string 7 Add a ":cstring" command. Works like ":cfile" but reads from a string
variable. Also accept a list variable? Patch from Yegappan Lakshmanan. variable. Also accept a list variable? Patch from Yegappan Lakshmanan.
2005 Feb 17 Now it's ":cexpr". 2005 Feb 17 Now it's ":cexpr".
@@ -3137,6 +3125,8 @@ Debug mode:
Various improvements: Various improvements:
7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next 7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next
("vatv"). ("vatv").
7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to
next <li>, ]< to next </li>, [< to previous </li>.
8 Add ":rename" command: rename the file of the current buffer and rename 8 Add ":rename" command: rename the file of the current buffer and rename
the buffer. Buffer may be modified. the buffer. Buffer may be modified.
- Perhaps ":cexpr" could read errors from a list? - Perhaps ":cexpr" could read errors from a list?

View File

@@ -1,4 +1,4 @@
*version7.txt* For Vim version 7.0aa. Last change: 2005 Jul 20 *version7.txt* For Vim version 7.0aa. Last change: 2005 Jul 21
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -367,7 +367,7 @@ New functions: ~
|foldtextresult()| the text displayed for a closed fold at line "lnum" |foldtextresult()| the text displayed for a closed fold at line "lnum"
|function()| make a Funcref out of a function name |function()| make a Funcref out of a function name
|get()| get an item from a List or Dictionary |get()| get an item from a List or Dictionary
|getbufline()| get a line or list of lines from a specified buffer |getbufline()| get a list of lines from a specified buffer
(Yegappan Lakshmanan) (Yegappan Lakshmanan)
|getfontname()| get actual font name being used |getfontname()| get actual font name being used
|getfperm()| get file permission string (Nikolai Weibull) |getfperm()| get file permission string (Nikolai Weibull)
@@ -695,6 +695,9 @@ Added the "customlist" completion argument to a user-defined command. The
user-defined completion function should return the completion candidates as a user-defined completion function should return the completion candidates as a
Vim List and the returned results are not filtered by Vim. Vim List and the returned results are not filtered by Vim.
Win32: Balloons can have multiple lines if common controls supports it.
(Sergey Khorev)
============================================================================== ==============================================================================
COMPILE TIME CHANGES *compile-changes-7* COMPILE TIME CHANGES *compile-changes-7*
@@ -1190,4 +1193,8 @@ the global value.
Win32: When using the "Edit with Vim" entry the file name was limited to about Win32: When using the "Edit with Vim" entry the file name was limited to about
200 characters. 200 characters.
When using command line completion for ":e *foo" and the file "+foo" exists
the resulting command ":e +foo" doesn't work. Now insert a backslash: ":e
\+foo".
vim:tw=78:ts=8:ft=help:norl: vim:tw=78:ts=8:ft=help:norl:

View File

@@ -9078,27 +9078,44 @@ f_get(argvars, rettv)
copy_tv(tv, rettv); copy_tv(tv, rettv);
} }
static void get_buffer_lines __ARGS((buf_T *buf, linenr_T start, linenr_T end, typval_T *rettv)); static void get_buffer_lines __ARGS((buf_T *buf, linenr_T start, linenr_T end, int retlist, typval_T *rettv));
/* /*
* Get line or list of lines from buffer "buf" into "rettv". * Get line or list of lines from buffer "buf" into "rettv".
* Return a range (from start to end) of lines in rettv from the specified
* buffer.
* If 'retlist' is TRUE, then the lines are returned as a Vim List.
*/ */
static void static void
get_buffer_lines(buf, start, end, rettv) get_buffer_lines(buf, start, end, retlist, rettv)
buf_T *buf; buf_T *buf;
linenr_T start; linenr_T start;
linenr_T end; linenr_T end;
int retlist;
typval_T *rettv; typval_T *rettv;
{ {
char_u *p; char_u *p;
list_T *l; list_T *l = NULL;
listitem_T *li; listitem_T *li;
if (start < 0) if (retlist)
rettv->vval.v_number = 0; /* failure; error message already given */ {
else if (end == 0) l = list_alloc();
if (l == NULL)
return;
rettv->vval.v_list = l;
rettv->v_type = VAR_LIST;
++l->lv_refcount;
}
else
rettv->vval.v_number = 0;
if (buf == NULL || buf->b_ml.ml_mfp == NULL || start < 0)
return;
if (!retlist)
{ {
/* getline(lnum): return one line as a string */
if (start >= 1 && start <= buf->b_ml.ml_line_count) if (start >= 1 && start <= buf->b_ml.ml_line_count)
p = ml_get_buf(buf, start, FALSE); p = ml_get_buf(buf, start, FALSE);
else else
@@ -9110,35 +9127,22 @@ get_buffer_lines(buf, start, end, rettv)
else else
{ {
if (end < start) if (end < start)
return;
if (start < 1)
start = 1;
if (end > buf->b_ml.ml_line_count)
end = buf->b_ml.ml_line_count;
while (start <= end)
{ {
if (end >= 0) /* else: error message already given */ li = listitem_alloc();
EMSG(_(e_invrange)); if (li == NULL)
rettv->vval.v_number = 0; break;
} list_append(l, li);
else li->li_tv.v_type = VAR_STRING;
{ li->li_tv.v_lock = 0;
l = list_alloc(); li->li_tv.vval.v_string =
if (l != NULL) vim_strsave(ml_get_buf(buf, start++, FALSE));
{
if (start < 1)
start = 1;
if (end > buf->b_ml.ml_line_count)
end = buf->b_ml.ml_line_count;
while (start <= end)
{
li = listitem_alloc();
if (li == NULL)
break;
list_append(l, li);
li->li_tv.v_type = VAR_STRING;
li->li_tv.v_lock = 0;
li->li_tv.vval.v_string =
vim_strsave(ml_get_buf(buf, start++, FALSE));
}
rettv->vval.v_list = l;
rettv->v_type = VAR_LIST;
++l->lv_refcount;
}
} }
} }
} }
@@ -9160,17 +9164,12 @@ f_getbufline(argvars, rettv)
buf = get_buf_tv(&argvars[0]); buf = get_buf_tv(&argvars[0]);
--emsg_off; --emsg_off;
if (buf == NULL || buf->b_ml.ml_mfp == NULL) lnum = get_tv_lnum(&argvars[1]);
rettv->vval.v_number = 0; if (argvars[2].v_type == VAR_UNKNOWN)
end = lnum;
else else
{ end = get_tv_lnum(&argvars[2]);
lnum = get_tv_lnum(&argvars[1]); get_buffer_lines(buf, lnum, end, TRUE, rettv);
if (argvars[2].v_type == VAR_UNKNOWN)
end = lnum;
else
end = get_tv_lnum(&argvars[2]);
get_buffer_lines(buf, lnum, end, rettv);
}
} }
/* /*
@@ -9338,7 +9337,8 @@ f_getcwd(argvars, rettv)
{ {
rettv->vval.v_string = vim_strsave(cwd); rettv->vval.v_string = vim_strsave(cwd);
#ifdef BACKSLASH_IN_FILENAME #ifdef BACKSLASH_IN_FILENAME
slash_adjust(rettv->vval.v_string); if (rettv->vval.v_string != NULL)
slash_adjust(rettv->vval.v_string);
#endif #endif
} }
} }
@@ -9550,14 +9550,21 @@ f_getline(argvars, rettv)
{ {
linenr_T lnum; linenr_T lnum;
linenr_T end; linenr_T end;
int retlist;
lnum = get_tv_lnum(argvars); lnum = get_tv_lnum(argvars);
if (argvars[1].v_type == VAR_UNKNOWN) if (argvars[1].v_type == VAR_UNKNOWN)
{
end = 0; end = 0;
retlist = FALSE;
}
else else
{
end = get_tv_lnum(&argvars[1]); end = get_tv_lnum(&argvars[1]);
retlist = TRUE;
}
get_buffer_lines(curbuf, lnum, end, rettv); get_buffer_lines(curbuf, lnum, end, retlist, rettv);
} }
/* /*
@@ -9905,6 +9912,9 @@ f_has(argvars, rettv)
#endif #endif
#ifdef FEAT_BEVAL #ifdef FEAT_BEVAL
"balloon_eval", "balloon_eval",
# ifndef FEAT_GUI_W32 /* other GUIs always have multiline balloons */
"balloon_multiline",
# endif
#endif #endif
#if defined(SOME_BUILTIN_TCAPS) || defined(ALL_BUILTIN_TCAPS) #if defined(SOME_BUILTIN_TCAPS) || defined(ALL_BUILTIN_TCAPS)
"builtin_terms", "builtin_terms",
@@ -10285,6 +10295,10 @@ f_has(argvars, rettv)
n = has_patch(atoi((char *)name + 5)); n = has_patch(atoi((char *)name + 5));
else if (STRICMP(name, "vim_starting") == 0) else if (STRICMP(name, "vim_starting") == 0)
n = (starting != 0); n = (starting != 0);
#if defined(FEAT_BEVAL) && defined(FEAT_GUI_W32)
else if (STRICMP(name, "balloon_multiline") == 0)
n = multiline_balloon_available();
#endif
#ifdef DYNAMIC_TCL #ifdef DYNAMIC_TCL
else if (STRICMP(name, "tcl") == 0) else if (STRICMP(name, "tcl") == 0)
n = tcl_enabled(FALSE); n = tcl_enabled(FALSE);
@@ -14388,9 +14402,9 @@ f_tr(argvars, rettv)
char_u *tostr; char_u *tostr;
char_u *p; char_u *p;
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE
int inlen; int inlen;
int fromlen; int fromlen;
int tolen; int tolen;
int idx; int idx;
char_u *cpstr; char_u *cpstr;
int cplen; int cplen;

View File

@@ -2917,7 +2917,8 @@ do_ecmd(fnum, ffname, sfname, eap, newlnum, flags)
# ifdef USE_LONG_FNAME # ifdef USE_LONG_FNAME
if (USE_LONG_FNAME) if (USE_LONG_FNAME)
# endif # endif
fname_case(sfname, 0); /* set correct case for short file name */ if (sfname != NULL)
fname_case(sfname, 0); /* set correct case for sfname */
#endif #endif
#ifdef FEAT_LISTCMDS #ifdef FEAT_LISTCMDS

View File

@@ -63,7 +63,7 @@ static char_u menu_mode_chars[] = {'n', 'v', 'o', 'i', 'c', 't'};
static char_u e_notsubmenu[] = N_("E327: Part of menu-item path is not sub-menu"); static char_u e_notsubmenu[] = N_("E327: Part of menu-item path is not sub-menu");
static char_u e_othermode[] = N_("E328: Menu only exists in another mode"); static char_u e_othermode[] = N_("E328: Menu only exists in another mode");
static char_u e_nomenu[] = N_("E329: No menu of that name"); static char_u e_nomenu[] = N_("E329: No menu \"%s\"");
#ifdef FEAT_TOOLBAR #ifdef FEAT_TOOLBAR
static const char *toolbar_names[] = static const char *toolbar_names[] =
@@ -841,7 +841,7 @@ menu_nable_recurse(menu, name, modes, enable)
} }
if (*name != NUL && *name != '*' && menu == NULL) if (*name != NUL && *name != '*' && menu == NULL)
{ {
EMSG(_(e_nomenu)); EMSG2(_(e_nomenu), name);
return FAIL; return FAIL;
} }
@@ -934,7 +934,7 @@ remove_menu(menup, name, modes, silent)
if (menu == NULL) if (menu == NULL)
{ {
if (!silent) if (!silent)
EMSG(_(e_nomenu)); EMSG2(_(e_nomenu), name);
return FAIL; return FAIL;
} }
@@ -1079,7 +1079,7 @@ show_menus(path_name, modes)
} }
if (menu == NULL) if (menu == NULL)
{ {
EMSG(_(e_nomenu)); EMSG2(_(e_nomenu), name);
vim_free(path_name); vim_free(path_name);
return FAIL; return FAIL;
} }
@@ -1396,6 +1396,7 @@ get_menu_names(xp, idx)
/* /*
* Skip over this element of the menu path and return the start of the next * Skip over this element of the menu path and return the start of the next
* element. Any \ and ^Vs are removed from the current element. * element. Any \ and ^Vs are removed from the current element.
* "name" may be modified.
*/ */
char_u * char_u *
menu_name_skip(name) menu_name_skip(name)
@@ -1872,6 +1873,16 @@ gui_show_popupmenu()
return; return;
mode = menu_mode_chars[mode]; mode = menu_mode_chars[mode];
#ifdef FEAT_AUTOCMD
{
char_u ename[2];
ename[0] = mode;
ename[1] = NUL;
apply_autocmds(EVENT_MENUPOPUP, ename, NULL, FALSE, curbuf);
}
#endif
for (menu = root_menu; menu != NULL; menu = menu->next) for (menu = root_menu; menu != NULL; menu = menu->next)
if (STRNCMP("PopUp", menu->name, 5) == 0 && menu->name[5] == mode) if (STRNCMP("PopUp", menu->name, 5) == 0 && menu->name[5] == mode)
break; break;