summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-07-21 21:11:17 +0000
committerBram Moolenaar <Bram@vim.org>2005-07-21 21:11:17 +0000
commit342337a1a0faf3deab4e702dfa445d18da6c4a32 (patch)
tree4ab66e5cdcc60b0dbbd19a178763efb06e2db24b
parent4536002e3046631e1dc73cdaeb59d97f3ad25223 (diff)
updated for version 7.0112v7.0112
-rw-r--r--runtime/doc/todo.txt54
-rw-r--r--runtime/doc/version7.txt11
-rw-r--r--src/eval.c114
-rw-r--r--src/ex_cmds.c3
-rw-r--r--src/menu.c19
5 files changed, 112 insertions, 89 deletions
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 06c8b5d569..a1d2450d9e 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -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
@@ -30,37 +30,6 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- 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)
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 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
variable. Also accept a list variable? Patch from Yegappan Lakshmanan.
2005 Feb 17 Now it's ":cexpr".
@@ -3137,6 +3125,8 @@ Debug mode:
Various improvements:
7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next
("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
the buffer. Buffer may be modified.
- Perhaps ":cexpr" could read errors from a list?
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index cf7f036431..0bd1e7d8cc 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -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
@@ -367,7 +367,7 @@ New functions: ~
|foldtextresult()| the text displayed for a closed fold at line "lnum"
|function()| make a Funcref out of a function name
|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)
|getfontname()| get actual font name being used
|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
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*
@@ -1190,4 +1193,8 @@ the global value.
Win32: When using the "Edit with Vim" entry the file name was limited to about
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:
diff --git a/src/eval.c b/src/eval.c
index 2c512279ac..40ec9f3e31 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9078,27 +9078,44 @@ f_get(argvars, 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".
+ * 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
-get_buffer_lines(buf, start, end, rettv)
+get_buffer_lines(buf, start, end, retlist, rettv)
buf_T *buf;
linenr_T start;
linenr_T end;
+ int retlist;
typval_T *rettv;
{
char_u *p;
- list_T *l;
+ list_T *l = NULL;
listitem_T *li;
- if (start < 0)
- rettv->vval.v_number = 0; /* failure; error message already given */
- else if (end == 0)
+ if (retlist)
+ {
+ 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)
p = ml_get_buf(buf, start, FALSE);
else
@@ -9110,35 +9127,22 @@ get_buffer_lines(buf, start, end, rettv)
else
{
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 */
- EMSG(_(e_invrange));
- rettv->vval.v_number = 0;
- }
- else
- {
- l = list_alloc();
- if (l != NULL)
- {
- 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;
- }
+ 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));
}
}
}
@@ -9160,17 +9164,12 @@ f_getbufline(argvars, rettv)
buf = get_buf_tv(&argvars[0]);
--emsg_off;
- if (buf == NULL || buf->b_ml.ml_mfp == NULL)
- rettv->vval.v_number = 0;
+ lnum = get_tv_lnum(&argvars[1]);
+ if (argvars[2].v_type == VAR_UNKNOWN)
+ end = lnum;
else
- {
- lnum = get_tv_lnum(&argvars[1]);
- if (argvars[2].v_type == VAR_UNKNOWN)
- end = lnum;
- else
- end = get_tv_lnum(&argvars[2]);
- get_buffer_lines(buf, lnum, end, rettv);
- }
+ end = get_tv_lnum(&argvars[2]);
+ get_buffer_lines(buf, lnum, end, TRUE, rettv);
}
/*
@@ -9338,7 +9337,8 @@ f_getcwd(argvars, rettv)
{
rettv->vval.v_string = vim_strsave(cwd);
#ifdef BACKSLASH_IN_FILENAME
- slash_adjust(rettv->vval.v_string);
+ if (rettv->vval.v_string != NULL)
+ slash_adjust(rettv->vval.v_string);
#endif
}
}
@@ -9550,14 +9550,21 @@ f_getline(argvars, rettv)
{
linenr_T lnum;
linenr_T end;
+ int retlist;
lnum = get_tv_lnum(argvars);
if (argvars[1].v_type == VAR_UNKNOWN)
+ {
end = 0;
+ retlist = FALSE;
+ }
else
+ {
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
#ifdef FEAT_BEVAL
"balloon_eval",
+# ifndef FEAT_GUI_W32 /* other GUIs always have multiline balloons */
+ "balloon_multiline",
+# endif
#endif
#if defined(SOME_BUILTIN_TCAPS) || defined(ALL_BUILTIN_TCAPS)
"builtin_terms",
@@ -10285,6 +10295,10 @@ f_has(argvars, rettv)
n = has_patch(atoi((char *)name + 5));
else if (STRICMP(name, "vim_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
else if (STRICMP(name, "tcl") == 0)
n = tcl_enabled(FALSE);
@@ -14388,9 +14402,9 @@ f_tr(argvars, rettv)
char_u *tostr;
char_u *p;
#ifdef FEAT_MBYTE
- int inlen;
- int fromlen;
- int tolen;
+ int inlen;
+ int fromlen;
+ int tolen;
int idx;
char_u *cpstr;
int cplen;
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 9ce1fdd5cb..8d8e3129be 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2917,7 +2917,8 @@ do_ecmd(fnum, ffname, sfname, eap, newlnum, flags)
# ifdef USE_LONG_FNAME
if (USE_LONG_FNAME)
# 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
#ifdef FEAT_LISTCMDS
diff --git a/src/menu.c b/src/menu.c
index 6787056942..c92a812cad 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -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_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
static const char *toolbar_names[] =
@@ -841,7 +841,7 @@ menu_nable_recurse(menu, name, modes, enable)
}
if (*name != NUL && *name != '*' && menu == NULL)
{
- EMSG(_(e_nomenu));
+ EMSG2(_(e_nomenu), name);
return FAIL;
}
@@ -934,7 +934,7 @@ remove_menu(menup, name, modes, silent)
if (menu == NULL)
{
if (!silent)
- EMSG(_(e_nomenu));
+ EMSG2(_(e_nomenu), name);
return FAIL;
}
@@ -1079,7 +1079,7 @@ show_menus(path_name, modes)
}
if (menu == NULL)
{
- EMSG(_(e_nomenu));
+ EMSG2(_(e_nomenu), name);
vim_free(path_name);
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
* element. Any \ and ^Vs are removed from the current element.
+ * "name" may be modified.
*/
char_u *
menu_name_skip(name)
@@ -1872,6 +1873,16 @@ gui_show_popupmenu()
return;
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)
if (STRNCMP("PopUp", menu->name, 5) == 0 && menu->name[5] == mode)
break;