changeset 657:b112ec5c73f0

updated for version 7.0193
author vimboss
date Sat, 04 Feb 2006 22:43:20 +0000
parents df97853447ea
children 903088c7a7c6
files runtime/doc/autocmd.txt runtime/doc/options.txt runtime/doc/tags runtime/lang/menu_ja_jp.euc-jp.vim runtime/lang/menu_japanese_japan.932.vim runtime/syntax/gnuplot.vim src/edit.c src/globals.h src/po/ja.sjis.po src/popupmenu.c src/quickfix.c src/version.h
diffstat 12 files changed, 895 insertions(+), 303 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -620,11 +620,12 @@ MenuPopup			Just before showing the popu
 					c	Commmand line
 							*QuickFixCmdPre*
 QuickFixCmdPre			Before a quickfix command is run (|:make|,
-				|:grep|, |:grepadd|, |:vimgrep|,
-				|:vimgrepadd|). The pattern is matched against
-				the command being run.  When |:grep| is used
-				but 'grepprg' is set to "internal" it still
-				matches "grep".
+				|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
+				|:lgrepadd|, |:vimgrep|, |:lvimgrep|,
+				|:vimgrepadd|, |:vimgrepadd|). The pattern is
+				matched against the command being run.  When
+				|:grep| is used but 'grepprg' is set to
+				"internal" it still matches "grep".
 				This command cannot be used to set the
 				'makeprg' and 'grepprg' variables.
 				If this command causes an error, the quickfix
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -2943,7 +2943,8 @@ A jump table for the options with a shor
 	also work well with a single file: >
 		:set grepprg=grep\ -nH
 <	Special value: When 'grepprg' is set to "internal" the |:grep| command
-	works like |:vimgrep| and |:grepadd| like |:vimgrepadd|.
+	works like |:vimgrep|, |:lgrep| like |:lvimgrep|, |:grepadd| like
+	|:vimgrepadd| and |:lgrepadd| like |:lvimgrepadd|.
 	See also the section |:make_makeprg|, since most of the comments there
 	apply equally to 'grepprg'.
 	For Win32, the default is "findstr /n" if "findstr.exe" can be found,
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1788,6 +1788,8 @@ 90.5	usr_90.txt	/*90.5*
 :cabc	map.txt	/*:cabc*
 :cabclear	map.txt	/*:cabclear*
 :cad	quickfix.txt	/*:cad*
+:caddb	quickfix.txt	/*:caddb*
+:caddbuffer	quickfix.txt	/*:caddbuffer*
 :caddexpr	quickfix.txt	/*:caddexpr*
 :caddf	quickfix.txt	/*:caddf*
 :caddfile	quickfix.txt	/*:caddfile*
@@ -2105,6 +2107,8 @@ 90.5	usr_90.txt	/*90.5*
 :lNfile	quickfix.txt	/*:lNfile*
 :la	editing.txt	/*:la*
 :lad	quickfix.txt	/*:lad*
+:laddb	quickfix.txt	/*:laddb*
+:laddbuffer	quickfix.txt	/*:laddbuffer*
 :laddexpr	quickfix.txt	/*:laddexpr*
 :laddf	quickfix.txt	/*:laddf*
 :laddfile	quickfix.txt	/*:laddfile*
@@ -2143,6 +2147,10 @@ 90.5	usr_90.txt	/*90.5*
 :lfirst	quickfix.txt	/*:lfirst*
 :lg	quickfix.txt	/*:lg*
 :lgetfile	quickfix.txt	/*:lgetfile*
+:lgr	quickfix.txt	/*:lgr*
+:lgrep	quickfix.txt	/*:lgrep*
+:lgrepa	quickfix.txt	/*:lgrepa*
+:lgrepadd	quickfix.txt	/*:lgrepadd*
 :list	various.txt	/*:list*
 :ll	quickfix.txt	/*:ll*
 :lla	quickfix.txt	/*:lla*
@@ -2150,6 +2158,8 @@ 90.5	usr_90.txt	/*90.5*
 :lli	quickfix.txt	/*:lli*
 :llist	quickfix.txt	/*:llist*
 :lm	map.txt	/*:lm*
+:lmak	quickfix.txt	/*:lmak*
+:lmake	quickfix.txt	/*:lmake*
 :lmap	map.txt	/*:lmap*
 :lmap_l	map.txt	/*:lmap_l*
 :lmapc	map.txt	/*:lmapc*
@@ -2185,6 +2195,10 @@ 90.5	usr_90.txt	/*90.5*
 :ltag	tagsrch.txt	/*:ltag*
 :lu	map.txt	/*:lu*
 :lunmap	map.txt	/*:lunmap*
+:lv	quickfix.txt	/*:lv*
+:lvimgrep	quickfix.txt	/*:lvimgrep*
+:lvimgrepa	quickfix.txt	/*:lvimgrepa*
+:lvimgrepadd	quickfix.txt	/*:lvimgrepadd*
 :lw	quickfix.txt	/*:lw*
 :lwindow	quickfix.txt	/*:lwindow*
 :m	change.txt	/*:m*
@@ -5406,6 +5420,7 @@ hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
+help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
--- a/runtime/lang/menu_ja_jp.euc-jp.vim
+++ b/runtime/lang/menu_ja_jp.euc-jp.vim
@@ -2,7 +2,7 @@
 "
 " Menu Translations:	Japanese (EUC-JP)
 " Translated By:	MURAOKA Taro  <koron@tka.att.ne.jp>
-" Last Change:		29-Apr-2004.
+" Last Change:		04-Feb-2006.
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
@@ -142,7 +142,23 @@ menutrans &Open<Tab>:copen		開く(&O)<Tab>:copen
 menutrans &Close<Tab>:cclose		閉じる(&C)<Tab>:cclose
 menutrans &Convert\ to\ HEX<Tab>:%!xxd	HEXへ変換(&C)<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r	HEXから逆変換(&R)<Tab>%!xxd\ -r
-menutrans &Set\ Compiler		コンパイラ設定(&S)
+menutrans Se&T\ Compiler		コンパイラ設定(&T)
+
+" Tools.Spelling Menu
+menutrans &Spelling			スペリング(&S)
+menutrans &Spell\ Check\ On		スペルチェック有効(&S)
+menutrans Spell\ Check\ &Off		スペルチェック有効(&O)
+menutrans To\ &Next\ error<Tab>]s	次のエラー(&N)<Tab>]s
+menutrans To\ &Previous\ error<Tab>[s	前のエラー(&P)<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z?	修正候補(&C)<Tab>z?
+menutrans &Repeat\ correction<Tab>:spellrepall	修正を繰り返す(&R)<Tab>:spellrepall
+menutrans Set\ language\ to\ "en"	言語を\ "en"\ に設定する
+menutrans Set\ language\ to\ "en_au"	言語を\ "en_au"\ に設定する
+menutrans Set\ language\ to\ "en_ca"	言語を\ "en_ca"\ に設定する
+menutrans Set\ language\ to\ "en_gb"	言語を\ "en_gb"\ に設定する
+menutrans Set\ language\ to\ "en_nz"	言語を\ "en_nz"\ に設定する
+menutrans Set\ language\ to\ "en_us"	言語を\ "en_us"\ に設定する
+menutrans &Find\ More\ Languages	他の言語を検索する(&F)
 
 " Tools.Fold Menu
 menutrans &Folding			折畳み(&F)
--- a/runtime/lang/menu_japanese_japan.932.vim
+++ b/runtime/lang/menu_japanese_japan.932.vim
@@ -2,7 +2,7 @@
 "
 " Menu Translations:	Japanese (CP932)
 " Translated By:	MURAOKA Taro  <koron@tka.att.ne.jp>
-" Last Change:		29-Apr-2004.
+" Last Change:		04-Feb-2006.
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
@@ -142,7 +142,23 @@ menutrans &Open<Tab>:copen		J(&O)<Tab>:copen
 menutrans &Close<Tab>:cclose		(&C)<Tab>:cclose
 menutrans &Convert\ to\ HEX<Tab>:%!xxd	HEX(&C)<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r	HEXt(&R)<Tab>%!xxd\ -r
-menutrans &Set\ Compiler		RpC(&S)
+menutrans Se&T\ Compiler		RpC(&T)
+
+" Tools.Spelling Menu
+menutrans &Spelling			XyO(&S)
+menutrans &Spell\ Check\ On		Xy`FbNL(&S)
+menutrans Spell\ Check\ &Off		Xy`FbNL(&O)
+menutrans To\ &Next\ error<Tab>]s	G[(&N)<Tab>]s
+menutrans To\ &Previous\ error<Tab>[s	OG[(&P)<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z?	C(&C)<Tab>z?
+menutrans &Repeat\ correction<Tab>:spellrepall	CJ(&R)<Tab>:spellrepall
+menutrans Set\ language\ to\ "en"	\ "en"\ 
+menutrans Set\ language\ to\ "en_au"	\ "en_au"\ 
+menutrans Set\ language\ to\ "en_ca"	\ "en_ca"\ 
+menutrans Set\ language\ to\ "en_gb"	\ "en_gb"\ 
+menutrans Set\ language\ to\ "en_nz"	\ "en_nz"\ 
+menutrans Set\ language\ to\ "en_us"	\ "en_us"\ 
+menutrans &Find\ More\ Languages	(&F)
 
 " Tools.Fold Menu
 menutrans &Folding			(&F)
--- a/runtime/syntax/gnuplot.vim
+++ b/runtime/syntax/gnuplot.vim
@@ -138,7 +138,7 @@ syn keyword gnuplotType		boxxy[errorbars
 syn keyword gnuplotType		line[s] linesp[oints] points poiinttype sbezier splines steps
 " w lt lw ls	      = optional
 syn keyword gnuplotType		vectors xerr[orbars] xyerr[orbars] yerr[orbars] financebars candlesticks vector
-syn keyword gnuplotType		errorb[ars surface
+syn keyword gnuplotType		errorb[ars] surface
 syn keyword gnuplotType		filledcurve[s] pm3d   x1 x2 y1 y2 xy closed
 syn keyword gnuplotType		at pi front
 syn keyword gnuplotType		errorlines xerrorlines yerrorlines xyerrorlines
--- a/src/edit.c
+++ b/src/edit.c
@@ -87,6 +87,14 @@ static compl_T    *compl_first_match = N
 static compl_T    *compl_curr_match = NULL;
 static compl_T    *compl_shown_match = NULL;
 
+/* When "compl_leader" is not NULL only matches that start with this string
+ * are used. */
+static char_u	  *compl_leader = NULL;
+
+static int	  compl_used_match;	/* Selected one of the matches.  When
+					   FALSE the match was edited or using
+					   the longest common string. */
+
 /* When the first completion is done "compl_started" is set.  When it's
  * FALSE the word to be completed must be located. */
 static int	  compl_started = FALSE;
@@ -112,9 +120,12 @@ static int  ins_compl_make_cyclic __ARGS
 static void ins_compl_upd_pum __ARGS((void));
 static void ins_compl_del_pum __ARGS((void));
 static int  pum_wanted __ARGS((void));
+static int  pum_two_or_more __ARGS((void));
 static void ins_compl_dictionaries __ARGS((char_u *dict, char_u *pat, int dir, int flags, int thesaurus));
 static void ins_compl_free __ARGS((void));
 static void ins_compl_clear __ARGS((void));
+static int  ins_compl_bs __ARGS((void));
+static void ins_compl_addleader __ARGS((int c));
 static int  ins_compl_prep __ARGS((int c));
 static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag));
 static int  ins_compl_get_exp __ARGS((pos_T *ini, int dir));
@@ -673,13 +684,26 @@ edit(cmdchar, startln, count)
 	if (c == K_DOWN && pum_visible())
 	    c = Ctrl_N;
 
+	/* When using BS while the popup menu is wanted and still after the
+	 * character where completion started: Change the subset of matches to
+	 * what matches "compl_leader". */
+	if (compl_started && pum_wanted() && curwin->w_cursor.col > compl_col)
+	{
+	    if ((c == K_BS || c == Ctrl_H) && ins_compl_bs())
+		continue;
+
+	    /* Editing the word. */
+	    if (!compl_used_match && vim_isprintc(c))
+	    {
+		ins_compl_addleader(c);
+		continue;
+	    }
+	}
+
 	/* Prepare for or stop CTRL-X mode.  This doesn't do completion, but
 	 * it does fix up the text when finishing completion. */
-	if (c != K_IGNORE)
-	{
-	    if (ins_compl_prep(c))
-		continue;
-	}
+	if (c != K_IGNORE && ins_compl_prep(c))
+	    continue;
 #endif
 
 	/* CTRL-\ CTRL-N goes to Normal mode,
@@ -2159,9 +2183,6 @@ ins_compl_del_pum()
     static int
 pum_wanted()
 {
-    compl_T     *compl;
-    int		i;
-
     /* 'completeopt' must contain "menu" */
     if (*p_cot == NUL)
 	return FALSE;
@@ -2173,6 +2194,17 @@ pum_wanted()
 #endif
 	    )
 	return FALSE;
+    return TRUE;
+}
+
+/*
+ * Return TRUE if there are two or more matches to be shown in the popup menu.
+ */
+    static int
+pum_two_or_more()
+{
+    compl_T     *compl;
+    int		i;
 
     /* Don't display the popup menu if there are no matches or there is only
      * one (ignoring the original text). */
@@ -2199,8 +2231,9 @@ ins_compl_show_pum()
     int		i;
     int		cur = -1;
     colnr_T	col;
-
-    if (!pum_wanted())
+    int		lead_len = 0;
+
+    if (!pum_wanted() || !pum_two_or_more())
 	return;
 
     /* Update the screen before drawing the popup menu over it. */
@@ -2211,12 +2244,18 @@ ins_compl_show_pum()
 	/* Need to build the popup menu list. */
 	compl_match_arraysize = 0;
 	compl = compl_first_match;
+	if (compl_leader != NULL)
+	    lead_len = STRLEN(compl_leader);
 	do
 	{
-	    if ((compl->cp_flags & ORIGINAL_TEXT) == 0)
+	    if ((compl->cp_flags & ORIGINAL_TEXT) == 0
+		    && (compl_leader == NULL
+			|| STRNCMP(compl->cp_str, compl_leader, lead_len) == 0))
 		++compl_match_arraysize;
 	    compl = compl->cp_next;
 	} while (compl != NULL && compl != compl_first_match);
+	if (compl_match_arraysize == 0)
+	    return;
 	compl_match_array = (char_u **)alloc((unsigned)(sizeof(char_u **)
 						    * compl_match_arraysize));
 	if (compl_match_array != NULL)
@@ -2225,7 +2264,10 @@ ins_compl_show_pum()
 	    compl = compl_first_match;
 	    do
 	    {
-		if ((compl->cp_flags & ORIGINAL_TEXT) == 0)
+		if ((compl->cp_flags & ORIGINAL_TEXT) == 0
+			&& (compl_leader == NULL
+			    || STRNCMP(compl->cp_str, compl_leader,
+							      lead_len) == 0))
 		{
 		    if (compl == compl_shown_match)
 			cur = i;
@@ -2238,21 +2280,10 @@ ins_compl_show_pum()
     else
     {
 	/* popup menu already exists, only need to find the current item.*/
-	i = 0;
-	compl = compl_first_match;
-	do
-	{
-	    if ((compl->cp_flags & ORIGINAL_TEXT) == 0)
-	    {
-		if (compl == compl_shown_match)
-		{
-		    cur = i;
-		    break;
-		}
-		++i;
-	    }
-	    compl = compl->cp_next;
-	} while (compl != NULL && compl != compl_first_match);
+	for (i = 0; i < compl_match_arraysize; ++i)
+	    if (compl_match_array[i] == compl_shown_match->cp_str)
+		break;
+	cur = i;
     }
 
     if (compl_match_array != NULL)
@@ -2472,6 +2503,8 @@ ins_compl_free()
 
     vim_free(compl_pattern);
     compl_pattern = NULL;
+    vim_free(compl_leader);
+    compl_leader = NULL;
 
     if (compl_first_match == NULL)
 	return;
@@ -2501,11 +2534,102 @@ ins_compl_clear()
     compl_matches = 0;
     vim_free(compl_pattern);
     compl_pattern = NULL;
+    vim_free(compl_leader);
+    compl_leader = NULL;
     save_sm = -1;
     edit_submode_extra = NULL;
 }
 
 /*
+ * Delete one character before the cursor and make a subset of the matches
+ * that match now.
+ * Returns TRUE if the work is done and another char to be got from the user.
+ */
+    static int
+ins_compl_bs()
+{
+    char_u	*line;
+    char_u	*p;
+
+    if (curwin->w_cursor.col <= compl_col + compl_length)
+    {
+	/* Deleted more than what was used to find matches, need to look for
+	 * matches all over again. */
+	ins_compl_free();
+	compl_started = FALSE;
+	compl_matches = 0;
+    }
+
+    line = ml_get_curline();
+    p = line + curwin->w_cursor.col;
+    mb_ptr_back(line, p);
+
+    vim_free(compl_leader);
+    compl_leader = vim_strnsave(line + compl_col, (p - line) - compl_col);
+    if (compl_leader != NULL)
+    {
+	ins_compl_del_pum();
+	ins_compl_delete();
+	ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+
+	if (!compl_started)
+	{
+	    /* Matches were cleared, need to search for them now. */
+	    if (ins_complete(Ctrl_N) == FAIL)
+		compl_cont_status = 0;
+	    else
+	    {
+		/* Remove the completed word again. */
+		ins_compl_delete();
+		ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+	    }
+	}
+
+	/* Show the popup menu with a different set of matches. */
+	ins_compl_show_pum();
+	compl_used_match = FALSE;
+
+	return TRUE;
+    }
+    return FALSE;
+}
+
+/*
+ * Append one character to the match leader.  May reduce the number of
+ * matches.
+ */
+    static void
+ins_compl_addleader(c)
+    int		c;
+{
+#ifdef FEAT_MBYTE
+    int		cc;
+
+    if (has_mbyte && (cc = (*mb_char2len)(c)) > 1)
+    {
+	char_u	buf[MB_MAXBYTES + 1];
+
+	(*mb_char2bytes)(c, buf);
+	buf[cc] = NUL;
+	ins_char_bytes(buf, cc);
+    }
+    else
+#endif
+	ins_char(c);
+
+    vim_free(compl_leader);
+    compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+					    curwin->w_cursor.col - compl_col);
+    if (compl_leader != NULL)
+    {
+	/* Show the popup menu with a different set of matches. */
+	ins_compl_del_pum();
+	ins_compl_show_pum();
+	compl_used_match = FALSE;
+    }
+}
+
+/*
  * Prepare for Insert mode completion, or stop it.
  * Called just after typing a character in Insert mode.
  * Returns TRUE when the character is not to be inserted;
@@ -3290,6 +3414,7 @@ ins_compl_delete()
 ins_compl_insert()
 {
     ins_bytes(compl_shown_match->cp_str + curwin->w_cursor.col - compl_col);
+    compl_used_match = TRUE;
 }
 
 /*
@@ -3317,6 +3442,8 @@ ins_compl_next(allow_get_expansion, coun
     int	    num_matches = -1;
     int	    i;
     int	    todo = count;
+    compl_T *found_compl = NULL;
+    int	    found_end = FALSE;
 
     if (allow_get_expansion)
     {
@@ -3332,32 +3459,46 @@ ins_compl_next(allow_get_expansion, coun
 	if (compl_shows_dir == FORWARD && compl_shown_match->cp_next != NULL)
 	{
 	    compl_shown_match = compl_shown_match->cp_next;
-	    if (compl_shown_match->cp_next != NULL
-			   && compl_shown_match->cp_next == compl_first_match)
-		break;
+	    found_end = (compl_first_match != NULL
+			   && (compl_shown_match->cp_next == compl_first_match
+			       || compl_shown_match == compl_first_match));
 	}
 	else if (compl_shows_dir == BACKWARD
 					&& compl_shown_match->cp_prev != NULL)
 	{
+	    found_end = (compl_shown_match == compl_first_match);
 	    compl_shown_match = compl_shown_match->cp_prev;
-	    if (compl_shown_match == compl_first_match)
-		break;
+	    found_end |= (compl_shown_match == compl_first_match);
 	}
 	else
 	{
 	    compl_pending = TRUE;
-	    if (allow_get_expansion)
+	    if (!allow_get_expansion)
+		return -1;
+
+	    num_matches = ins_compl_get_exp(&compl_startpos, compl_direction);
+	    if (compl_pending && compl_direction == compl_shows_dir)
+		compl_shown_match = compl_curr_match;
+	    found_end = FALSE;
+	}
+	if ((compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0
+		&& compl_leader != NULL
+		&& STRNCMP(compl_shown_match->cp_str,
+				     compl_leader, STRLEN(compl_leader)) != 0)
+	    ++todo;
+	else
+	    /* Remember a matching item. */
+	    found_compl = compl_shown_match;
+
+	/* Stop at the end of the list when we found a usable match. */
+	if (found_end)
+	{
+	    if (found_compl != NULL)
 	    {
-		num_matches = ins_compl_get_exp(&compl_startpos,
-							     compl_direction);
-		if (compl_pending)
-		{
-		    if (compl_direction == compl_shows_dir)
-			compl_shown_match = compl_curr_match;
-		}
+		compl_shown_match = found_compl;
+		break;
 	    }
-	    else
-		return -1;
+	    todo = 1;	    /* use first usable match after wrapping around */
 	}
     }
 
--- a/src/globals.h
+++ b/src/globals.h
@@ -105,8 +105,8 @@ EXTERN colnr_T	dollar_vcol INIT(= 0);
  * Variables for Insert mode completion.
  */
 
-/* length of the text being completed (this is deleted to be replaced by the
- * match) */
+/* Length in bytes of the text being completed (this is deleted to be replaced
+ * by the match.) */
 EXTERN int	compl_length INIT(= 0);
 
 /* Set when character typed while looking for matches and it means we should
--- a/src/po/ja.sjis.po
+++ b/src/po/ja.sjis.po
@@ -3,14 +3,14 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-# MURAOKA Taro <koron@tka.att.ne.jp>, 2001-5.
-# Last Change: 05-Mar-2005.
+# MURAOKA Taro <koron@tka.att.ne.jp>, 2001-6.
+# Last Change: 05-Feb-2006.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Vim 7.0\n"
-"POT-Creation-Date: 2005-03-04 13:11+0900\n"
-"PO-Revision-Date: 2004-03-05 00:50+0900\n"
+"POT-Creation-Date: 2006-02-04 22:44+0900\n"
+"PO-Revision-Date: 2006-02-05 00:10+0900\n"
 "Last-Translator: MURAOKA Taro <koron@tka.att.ne.jp>\n"
 "Language-Team: MURAOKA Taro <koron@tka.att.ne.jp>\n"
 "MIME-Version: 1.0\n"
@@ -152,6 +152,9 @@ msgstr ""
 "\n"
 "# obt@Xg:\n"
 
+msgid "[Location List]"
+msgstr "[Xg]"
+
 msgid "[Error List]"
 msgstr "[G[Xg]"
 
@@ -214,13 +217,8 @@ msgid " Keyword completion (^N^P)"
 msgstr " L[[h (^N^P)"
 
 #. ctrl_x_mode == 0, ^P/^N compl.
-msgid " ^X mode (^E^Y^L^]^F^I^K^D^U^V^N^P)"
-msgstr " ^X [h (^E^Y^L^]^F^I^K^D^U^V^N^P)"
-
-#. Scroll has it's own msgs, in it's place there is the msg for local
-#. * ctrl_x_mode = 0 (eg continue_status & CONT_LOCAL)  -- Acevedo
-msgid " Keyword Local completion (^N^P)"
-msgstr " L[[h (^N^P)"
+msgid " ^X mode (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)"
+msgstr " ^X [h (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)"
 
 msgid " Whole line completion (^L^N^P)"
 msgstr " s(S) (^L^N^P)"
@@ -249,15 +247,24 @@ msgstr " R}hC (^V^N^P)"
 msgid " User defined completion (^U^N^P)"
 msgstr " [U` (^U^N^P)"
 
+msgid " Omni completion (^O^N^P)"
+msgstr " Ij (^O^N^P)"
+
+msgid " Spelling suggestion (^S^N^P)"
+msgstr " C (^S^N^P)"
+
+msgid " Keyword Local completion (^N^P)"
+msgstr " L[[h (^N^P)"
+
 msgid "Hit end of paragraph"
 msgstr "iqbg"
 
+msgid "'dictionary' option is empty"
+msgstr "'dictionary' IvV"
+
 msgid "'thesaurus' option is empty"
 msgstr "'thesaurus' IvV"
 
-msgid "'dictionary' option is empty"
-msgstr "'dictionary' IvV"
-
 #, c-format
 msgid "Scanning dictionary: %s"
 msgstr "ォXL: %s"
@@ -321,7 +328,7 @@ msgid "E686: Argument of %s must be a Li
 msgstr "E686: %s Xg^"
 
 #, c-format
-msgid "E712: Argument of %s must be a List or Dictionaary"
+msgid "E712: Argument of %s must be a List or Dictionary"
 msgstr "E712: %s Xg^ォ^"
 
 msgid "E713: Cannot use empty key for Dictionary"
@@ -362,6 +369,10 @@ msgstr "E734: ^ %s="
 msgid "E130: Unknown function: %s"
 msgstr "E130: m: %s"
 
+#, c-format
+msgid "E461: Illegal variable name: %s"
+msgstr "E461: s: %s"
+
 msgid "E687: Less targets than List items"
 msgstr "E687: ^[QbgXg^vf"
 
@@ -460,8 +471,9 @@ msgstr "E697: Xg^ ']' : %s"
 msgid "E720: Missing colon in Dictionary: %s"
 msgstr "E720: ォ^R: %s"
 
-msgid "E721: Duplicate key in Dictionary"
-msgstr "E721: ォ^dL["
+#, c-format
+msgid "E721: Duplicate key in Dictionary: \"%s\""
+msgstr "E721: ォ^dL[: \"%s\""
 
 #, c-format
 msgid "E722: Missing comma in Dictionary: %s"
@@ -571,12 +583,8 @@ msgid "E704: Funcref variable name must 
 msgstr "E704: Q^n: %s"
 
 #, c-format
-msgid "705: Variable name conflicts with existing function: %s"
-msgstr "705: : %s"
-
-#, c-format
-msgid "E461: Illegal variable name: %s"
-msgstr "E461: s: %s"
+msgid "E705: Variable name conflicts with existing function: %s"
+msgstr "E705: : %s"
 
 #, c-format
 msgid "E706: Variable type mismatch for: %s"
@@ -625,7 +633,6 @@ msgstr "E131:  %s : gp"
 msgid "E132: Function call depth is higher than 'maxfuncdepth'"
 msgstr "E132: oq 'maxfuncdepth' "
 
-#. always scroll up, don't overwrite
 #, c-format
 msgid "calling %s"
 msgstr "%s タs"
@@ -642,7 +649,6 @@ msgstr "%s  #%ld "
 msgid "%s returning %s"
 msgstr "%s  %s "
 
-#. always scroll up, don't overwrite
 #, c-format
 msgid "continuing in %s"
 msgstr "%s タsp"
@@ -657,6 +663,13 @@ msgstr ""
 "\n"
 "# O[o:\n"
 
+msgid ""
+"\n"
+"\tLast set from "
+msgstr ""
+"\n"
+"\tLast set from "
+
 #, c-format
 msgid "<%s>%s%s  %d,  Hex %02x,  Octal %03o"
 msgstr "<%s>%s%s  %d,  16i %02x,  8i %03o"
@@ -742,11 +755,6 @@ msgstr "s"
 msgid "Save As"
 msgstr ""
 
-#. Overwriting a file that is loaded in another buffer is not a
-#. * good idea.
-msgid "E139: File is loaded in another buffer"
-msgstr "E139: Ot@Cobt@"
-
 msgid "Write partial file?"
 msgstr "t@CI?"
 
@@ -754,8 +762,16 @@ msgid "E140: Use ! to write partial buff
 msgstr "E140: obt@I ! g"
 
 #, c-format
-msgid "Overwrite existing file \"%.*s\"?"
-msgstr "t@C \"%.*s\" ?"
+msgid "Overwrite existing file \"%s\"?"
+msgstr "t@C \"%s\" ?"
+
+#, c-format
+msgid "Swap file \"%s\" exists, overwrite anyway?"
+msgstr "Xbvt@C \"%s\" . ?"
+
+#, c-format
+msgid "E768: Swap file exists: %s (:silent! overrides)"
+msgstr "E768: Xbvt@C: %s (:silent! )"
 
 #, c-format
 msgid "E141: No file name for buffer %ld"
@@ -766,11 +782,11 @@ msgstr "E142: t@C: 'write' IvV"
 
 #, c-format
 msgid ""
-"'readonly' option is set for \"%.*s\".\n"
+"'readonly' option is set for \"%s\".\n"
 "Do you wish to write anyway?"
 msgstr ""
-"\"%.*s\"  'readonly' IvV\n"
-"I?"
+"\"%s\"  'readonly' IvV.\n"
+"?"
 
 msgid "Edit File"
 msgstr "t@CW"
@@ -940,8 +956,8 @@ msgid "E750: First use :profile start <f
 msgstr "E750:  :profile start <fname> タs"
 
 #, c-format
-msgid "Save changes to \"%.*s\"?"
-msgstr "X \"%.*s\" ?"
+msgid "Save changes to \"%s\"?"
+msgstr "X \"%s\" ?"
 
 msgid "Untitled"
 msgstr ""
@@ -1015,90 +1031,6 @@ msgid "E168: :finish used outside of a s
 msgstr "E168: :finish XNvgOgp"
 
 #, c-format
-msgid "Page %d"
-msgstr "%d y[W"
-
-msgid "No text to be printed"
-msgstr "eLXg"
-
-msgid "Printing page %d (%d%%)"
-msgstr ": y[W %d (%d%%)"
-
-#, c-format
-msgid " Copy %d of %d"
-msgstr " Rs[ %d (S %d )"
-
-#, c-format
-msgid "Printed: %s"
-msgstr ": %s"
-
-msgid "Printing aborted"
-msgstr "~"
-
-msgid "E455: Error writing to PostScript output file"
-msgstr "E455: PostScriptot@CG["
-
-#, c-format
-msgid "E624: Can't open file \"%s\""
-msgstr "E624: t@C \"%s\" J"
-
-#, c-format
-msgid "E457: Can't read PostScript resource file \"%s\""
-msgstr "E457: PostScript\\[Xt@C \"%s\" "
-
-#, c-format
-msgid "E618: file \"%s\" is not a PostScript resource file"
-msgstr "E618: t@C \"%s\"  PostScript \\[Xt@C"
-
-#, c-format
-msgid "E619: file \"%s\" is not a supported PostScript resource file"
-msgstr "E619: t@C \"%s\"  PostScript \\[Xt@C"
-
-#, c-format
-msgid "E621: \"%s\" resource file has wrong version"
-msgstr "E621: \\[Xt@C \"%s\" o[W"
-
-msgid "E673: Incompatible multi-byte encoding and character set."
-msgstr "E673: }`oCgGR[fBOZbg"
-
-msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
-msgstr "E674: }`oCgGR[fBO printmbcharset "
-
-msgid "E675: No default font specfifed for multi-byte printing."
-msgstr ""
-"E675: }`oCgftHgtHgw"
-
-msgid "E324: Can't open PostScript output file"
-msgstr "E324: PostScriptopt@CJ"
-
-#, c-format
-msgid "E456: Can't open file \"%s\""
-msgstr "E456: t@C \"%s\" J"
-
-msgid "E456: Can't find PostScript resource file \"prolog.ps\""
-msgstr "E456: PostScript\\[Xt@C \"prolog.ps\" "
-
-msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
-msgstr "E456: PostScript\\[Xt@C \"cidfont.ps\" "
-
-#, c-format
-msgid "E456: Can't find PostScript resource file \"%s.ps\""
-msgstr "E456: PostScript\\[Xt@C \"%s.ps\" "
-
-#, c-format
-msgid "E620: Unable to convert to print encoding \"%s\""
-msgstr "E620: GR[h \"%s\" "
-
-msgid "Sending to printer..."
-msgstr "v^M..."
-
-msgid "E365: Failed to print PostScript file"
-msgstr "E365: PostScriptt@Cクs"
-
-msgid "Print job sent."
-msgstr "WuM."
-
-#, c-format
 msgid "Current %slanguage: \"%s\""
 msgstr " %s: \"%s\""
 
@@ -1185,18 +1117,8 @@ msgstr "E177: JEg2dw"
 msgid "E178: Invalid default value for count"
 msgstr "E178: JEgl"
 
-msgid "E179: argument required for complete"
-msgstr "E179: Kv"
-
-#, c-format
-msgid "E180: Invalid complete value: %s"
-msgstr "E180: w: %s"
-
-msgid "E468: Completion argument only allowed for custom completion"
-msgstr "E468: JX^gp"
-
-msgid "E467: Custom completion requires a function argument"
-msgstr "E467: JX^Kv"
+msgid "E179: argument required for -complete"
+msgstr "E179: -Kv"
 
 #, c-format
 msgid "E181: Invalid attribute: %s"
@@ -1213,6 +1135,16 @@ msgid "E184: No such user-defined comman
 msgstr "E184: [U`R}h: %s"
 
 #, c-format
+msgid "E180: Invalid complete value: %s"
+msgstr "E180: w: %s"
+
+msgid "E468: Completion argument only allowed for custom completion"
+msgstr "E468: JX^gp"
+
+msgid "E467: Custom completion requires a function argument"
+msgstr "E467: JX^Kv"
+
+#, c-format
 msgid "E185: Cannot find color scheme %s"
 msgstr "E185: J[XL[ %s "
 
@@ -1467,6 +1399,12 @@ msgstr " t@C"
 msgid "[New File]"
 msgstr "[Vt@C]"
 
+msgid "[New DIRECTORY]"
+msgstr "[VKfBNg]"
+
+msgid "[File too big]"
+msgstr "[t@C]"
+
 msgid "[Permission Denied]"
 msgstr "[F]"
 
@@ -1516,8 +1454,9 @@ msgstr "[]"
 msgid "[crypted]"
 msgstr "[]"
 
-msgid "[CONVERSION ERROR]"
-msgstr "[G[]"
+#, c-format
+msgid "[CONVERSION ERROR in line %ld]"
+msgstr "[%ld sG[]"
 
 #, c-format
 msgid "[ILLEGAL BYTE in line %ld]"
@@ -1703,8 +1642,8 @@ msgid "E246: FileChangedShell autocomman
 msgstr "E246: autocommand  FileChangedShell obt@"
 
 #, c-format
-msgid "E211: Warning: File \"%s\" no longer available"
-msgstr "E211: x: t@C \"%s\" "
+msgid "E211: File \"%s\" no longer available"
+msgstr "E211: t@C \"%s\" "
 
 #, c-format
 msgid ""
@@ -1712,21 +1651,27 @@ msgid ""
 "well"
 msgstr "W12: x: t@C \"%s\" XVimobt@X"
 
+msgid "See \":help W12\" for more info."
+msgstr " \":help W12\" Q"
+
 #, c-format
 msgid "W11: Warning: File \"%s\" has changed since editing started"
 msgstr "W11: x: t@C \"%s\" WJnX"
 
+msgid "See \":help W11\" for more info."
+msgstr " \":help W11\" Q"
+
 #, c-format
 msgid "W16: Warning: Mode of file \"%s\" has changed since editing started"
 msgstr "W16: x: t@C \"%s\" [hWJnX"
 
+msgid "See \":help W16\" for more info."
+msgstr " \":help W16\" Q"
+
 #, c-format
 msgid "W13: Warning: File \"%s\" has been created after editing started"
 msgstr "W13: x: t@C \"%s\" WJn"
 
-msgid "See \":help W11\" for more info."
-msgstr " \":help W11\" Q"
-
 msgid "Warning"
 msgstr "x"
 
@@ -1798,7 +1743,6 @@ msgstr "%s Auto commands for \"%s\""
 msgid "Executing %s"
 msgstr "%s タs"
 
-#. always scroll up, don't overwrite
 #, c-format
 msgid "autocommand %s"
 msgstr "autocommand %s"
@@ -2130,6 +2074,99 @@ msgstr "TCY:"
 msgid "E256: Hangul automata ERROR"
 msgstr "E256: nOI[g}gG["
 
+msgid "E550: Missing colon"
+msgstr "E550: R"
+
+msgid "E551: Illegal component"
+msgstr "E551: s\\vf"
+
+msgid "E552: digit expected"
+msgstr "E552: lKv"
+
+#, c-format
+msgid "Page %d"
+msgstr "%d y[W"
+
+msgid "No text to be printed"
+msgstr "eLXg"
+
+msgid "Printing page %d (%d%%)"
+msgstr ": y[W %d (%d%%)"
+
+#, c-format
+msgid " Copy %d of %d"
+msgstr " Rs[ %d (S %d )"
+
+#, c-format
+msgid "Printed: %s"
+msgstr ": %s"
+
+msgid "Printing aborted"
+msgstr "~"
+
+msgid "E455: Error writing to PostScript output file"
+msgstr "E455: PostScriptot@CG["
+
+#, c-format
+msgid "E624: Can't open file \"%s\""
+msgstr "E624: t@C \"%s\" J"
+
+#, c-format
+msgid "E457: Can't read PostScript resource file \"%s\""
+msgstr "E457: PostScript\\[Xt@C \"%s\" "
+
+#, c-format
+msgid "E618: file \"%s\" is not a PostScript resource file"
+msgstr "E618: t@C \"%s\"  PostScript \\[Xt@C"
+
+#, c-format
+msgid "E619: file \"%s\" is not a supported PostScript resource file"
+msgstr "E619: t@C \"%s\"  PostScript \\[Xt@C"
+
+#, c-format
+msgid "E621: \"%s\" resource file has wrong version"
+msgstr "E621: \\[Xt@C \"%s\" o[W"
+
+msgid "E673: Incompatible multi-byte encoding and character set."
+msgstr "E673: }`oCgGR[fBOZbg"
+
+msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
+msgstr "E674: }`oCgGR[fBO printmbcharset "
+
+msgid "E675: No default font specified for multi-byte printing."
+msgstr ""
+"E675: }`oCgftHgtHgw"
+
+msgid "E324: Can't open PostScript output file"
+msgstr "E324: PostScriptopt@CJ"
+
+#, c-format
+msgid "E456: Can't open file \"%s\""
+msgstr "E456: t@C \"%s\" J"
+
+msgid "E456: Can't find PostScript resource file \"prolog.ps\""
+msgstr "E456: PostScript\\[Xt@C \"prolog.ps\" "
+
+msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
+msgstr "E456: PostScript\\[Xt@C \"cidfont.ps\" "
+
+#, c-format
+msgid "E456: Can't find PostScript resource file \"%s.ps\""
+msgstr "E456: PostScript\\[Xt@C \"%s.ps\" "
+
+#, c-format
+msgid "E620: Unable to convert to print encoding \"%s\""
+msgstr "E620: GR[h \"%s\" "
+
+msgid "Sending to printer..."
+msgstr "v^M..."
+
+msgid "E365: Failed to print PostScript file"
+msgstr "E365: PostScriptt@Cクs"
+
+msgid "Print job sent."
+msgstr "WuM."
+
 msgid "Add a new database"
 msgstr "Vf[^x[X"
 
@@ -2326,6 +2363,9 @@ msgstr "EBhE"
 msgid "linenr out of range"
 msgstr "Os"
 
+msgid "not allowed in the Vim sandbox"
+msgstr "Th{bNX"
+
 #, c-format
 msgid "E370: Could not load library %s"
 msgstr "E370: Cu %s [h"
@@ -2570,6 +2610,10 @@ msgstr ""
 "E281: TCL G[: IR[hl!? vim-dev@vim.org "
 ""
 
+#, c-format
+msgid "E572: exit code %d"
+msgstr "E572: IR[h %d"
+
 msgid "cannot get line"
 msgstr "s"
 
@@ -2586,8 +2630,8 @@ msgstr "E573: T[oIDg: %s"
 msgid "E251: VIM instance registry property is badly formed.  Deleted!"
 msgstr "E251: VIM タo^vpeBs. !"
 
-msgid "Unknown option"
-msgstr "mIvV"
+msgid "Unknown option argument"
+msgstr "mIvV"
 
 msgid "Too many edit arguments"
 msgstr "W"
@@ -2595,8 +2639,8 @@ msgstr "W"
 msgid "Argument missing after"
 msgstr ""
 
-msgid "Garbage after option"
-msgstr "IvVS~"
+msgid "Garbage after option argument"
+msgstr "IvVS~"
 
 msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments"
 msgstr "\"+command\", \"-c command\", \"--cmd command\" "
@@ -2604,6 +2648,10 @@ msgstr "\"+command\", \"-c command\", \"--cmd command\" "
 msgid "Invalid argument for"
 msgstr ": "
 
+#, c-format
+msgid "%d files to edit\n"
+msgstr "%d t@CWT\n"
+
 msgid "This Vim was not compiled with the diff feature."
 msgstr "Vimdiff@\\(RpC)."
 
@@ -2627,10 +2675,6 @@ msgstr "Vim: x: [o\n"
 msgid "Vim: Warning: Input is not from a terminal\n"
 msgstr "Vim: x: [\n"
 
-#, c-format
-msgid "%d files to edit\n"
-msgstr "%d t@CWT\n"
-
 #. just in case..
 msgid "pre-vimrc command line"
 msgstr "vimrcOR}hC"
@@ -2964,25 +3008,6 @@ msgstr "--role <role>\tCEBhEッ(role)"
 msgid "--socketid <xid>\tOpen Vim inside another GTK widget"
 msgstr "--socketid <xid>\tGTK widgetVimJ"
 
-msgid ""
-"\n"
-"Arguments recognised by kvim (KDE version):\n"
-msgstr ""
-"\n"
-"kvim゚(KDEo[W):\n"
-
-msgid "-black\t\tUse reverse video"
-msgstr "-black\t\t]gp"
-
-msgid "-tip\t\t\tDisplay the tip dialog on startup"
-msgstr "-tip\t\t\tN`bv_CAO\\ヲ"
-
-msgid "-notip\t\tDisable the tip dialog"
-msgstr "-notip\t\t`bv_CAO"
-
-msgid "--display <display>\tRun vim on <display>"
-msgstr "--display <display>\t<display> vimタs"
-
 msgid "-P <parent title>\tOpen Vim inside parent application"
 msgstr "-P <e^Cg>\tVimeAvP[VN"
 
@@ -3404,6 +3429,10 @@ msgstr "X^bNTCY"
 msgid "E317: pointer block id wrong 2"
 msgstr "E317: |C^ubNID 2"
 
+#, c-format
+msgid "E773: Symlink loop for \"%s\""
+msgstr "E773: \"%s\" V{bNN[v"
+
 msgid "E325: ATTENTION"
 msgstr "E325: "
 
@@ -3492,16 +3521,16 @@ msgid ""
 "&Open Read-Only\n"
 "&Edit anyway\n"
 "&Recover\n"
+"&Delete it\n"
 "&Quit\n"
-"&Abort\n"
-"&Delete it"
+"&Abort"
 msgstr ""
 "pJ(&O)\n"
 "W(&E)\n"
 "(&R)ecover\n"
+"(&D)\n"
 "I(&Q)\n"
-"~(&A)\n"
-"(&D)"
+"~(&A)"
 
 msgid "E326: Too many swap files found"
 msgstr "E326: Xbvt@C"
@@ -3512,8 +3541,9 @@ msgstr "E327: j[ACepXTuj["
 msgid "E328: Menu only exists in another mode"
 msgstr "E328: j[[h"
 
-msgid "E329: No menu of that name"
-msgstr "E329: Oj["
+#, c-format
+msgid "E329: No menu \"%s\""
+msgstr "E329: \"%s\" j["
 
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: j[pXTuj["
@@ -3561,9 +3591,6 @@ msgstr "%s G[o:"
 msgid "line %4ld:"
 msgstr "s %4ld:"
 
-msgid "[string too long]"
-msgstr "[]"
-
 #, c-format
 msgid "E354: Invalid register name: '%s'"
 msgstr "E354: WX^: '%s'"
@@ -3574,20 +3601,18 @@ msgstr "{bZ[W|/C:  Y <koron@tka.att.ne.jp>"
 msgid "Interrupt: "
 msgstr ": "
 
-msgid "Hit ENTER to continue"
-msgstr "ENTER"
-
-msgid "Hit ENTER or type command to continue"
+msgid "Press ENTER or type command to continue"
 msgstr "ENTERR}h"
 
+#, c-format
+msgid "%s line %ld"
+msgstr "%s s %ld"
+
 msgid "-- More --"
 msgstr "-- p --"
 
-msgid " (RET/BS: line, SPACE/b: page, d/u: half page, q: quit)"
-msgstr " (RET/BS: s, SPACE/b: y[W, d/u: y[W, q: I)"
-
-msgid " (RET: line, SPACE: page, d: half page, q: quit)"
-msgstr " (RET: s, SPACE: y[W, d: y[W, q: I)"
+msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit "
+msgstr " SPACE/d/j: /y[W/s , b/uk: , q: I"
 
 msgid "Question"
 msgstr "ソ"
@@ -3625,9 +3650,21 @@ msgstr "t@C_CAO"
 msgid "E338: Sorry, no file browser in console mode"
 msgstr "E338: R\\[[ht@CuEUg, "
 
+msgid "E766: Insufficient arguments for printf()"
+msgstr "E766: printf() s\\"
+
+msgid "E767: Too many arguments to printf()"
+msgstr "E767: pirntf() "
+
 msgid "W10: Warning: Changing a readonly file"
 msgstr "W10: x: pt@CX"
 
+msgid "Type number or click with mouse (<Enter> cancels): "
+msgstr "l}EXNbN (<Enter> LZ): "
+
+msgid "Choice number (<Enter> cancels): "
+msgstr "I (<Enter> LZ): "
+
 msgid "1 more line"
 msgstr "1 s "
 
@@ -3737,15 +3774,6 @@ msgstr "E346: cdpath \"%s\" t@C"
 msgid "E347: No more file \"%s\" found in path"
 msgstr "E347: pX \"%s\" t@C"
 
-msgid "E550: Missing colon"
-msgstr "E550: R"
-
-msgid "E551: Illegal component"
-msgstr "E551: s\\vf"
-
-msgid "E552: digit expected"
-msgstr "E552: lKv"
-
 #. Get here when the server can't be found.
 msgid "Cannot connect to Netbeans #2"
 msgstr "Netbeans #2 "
@@ -3768,6 +3796,12 @@ msgstr "E658: obt@ %ld  NetBeans ク"
 msgid "E505: "
 msgstr "E505: "
 
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' IvV"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: ョ]@\\"
+
 msgid "Warning: terminal cannot highlight"
 msgstr "x: gp[nCCg"
 
@@ -3837,10 +3871,17 @@ msgstr "%ld sX"
 msgid "freeing %ld lines"
 msgstr "%ld sJ"
 
+msgid "block of 1 line yanked"
+msgstr "1 subNN"
+
 msgid "1 line yanked"
 msgstr "1 sN"
 
 #, c-format
+msgid "block of %ld lines yanked"
+msgstr "%ld subNN"
+
+#, c-format
 msgid "%ld lines yanked"
 msgstr "%ld sN"
 
@@ -3914,13 +3955,6 @@ msgstr "E519: IvVT|[g"
 msgid "E520: Not allowed in a modeline"
 msgstr "E520: modeline "
 
-msgid ""
-"\n"
-"\tLast set from "
-msgstr ""
-"\n"
-"\tLast set from "
-
 msgid "E521: Number required after ="
 msgstr "E521: = Kv"
 
@@ -4159,14 +4193,6 @@ msgstr "Vim: vIVOim\n"
 msgid "Opening the X display took %ld msec"
 msgstr "XT[o %ld ~b"
 
-#. KDE sometimes produces X error that we want to ignore
-msgid ""
-"\n"
-"Vim: Got X error but we continue...\n"
-msgstr ""
-"\n"
-"Vim: X G[os...\n"
-
 msgid ""
 "\n"
 "Vim: Got X error\n"
@@ -4336,10 +4362,6 @@ msgstr "G[ %d of %d; %d G["
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: 'buftype' IvV"
 
-#
-msgid "E682: Invalid search pattern or delimiter"
-msgstr "E682: p^[Ls"
-
 msgid "E683: File name missing or invalid pattern"
 msgstr "E683: t@Cp^["
 
@@ -4350,6 +4372,9 @@ msgstr "t@C \"%s\" J"
 msgid "E681: Buffer is not loaded"
 msgstr "E681: obt@"
 
+msgid "E777: String or List expected"
+msgstr "E777: XgKv"
+
 msgid "E339: Pattern too long"
 msgstr "E339: p^["
 
@@ -4429,6 +4454,11 @@ msgstr "E678: %s%%[dxouU] s"
 msgid "E71: Invalid character after %s%%"
 msgstr "E71: %s%% s"
 
+#
+#, c-format
+msgid "E769: Missing ] after %s["
+msgstr "E769: %s[  ] "
+
 #, c-format
 msgid "E554: Syntax error in %s{...}"
 msgstr "E554: %s{...} @G["
@@ -4494,12 +4524,6 @@ msgstr " `I"
 msgid "recording"
 msgstr "L^"
 
-msgid "search hit TOP, continuing at BOTTOM"
-msgstr ""
-
-msgid "search hit BOTTOM, continuing at TOP"
-msgstr ""
-
 #, c-format
 msgid "E383: Invalid search string: %s"
 msgstr "E383: : %s"
@@ -4553,6 +4577,339 @@ msgstr "E388: `"
 msgid "E389: Couldn't find pattern"
 msgstr "E389: p^["
 
+msgid "E759: Format error in spell file"
+msgstr "E759: Xyt@CョG["
+
+msgid "E758: Truncated spell file"
+msgstr "E758: Xyt@C"
+
+#, c-format
+msgid "Trailing text in %s line %d: %s"
+msgstr "%s (%d s) eLXg: %s"
+
+#, c-format
+msgid "Affix name too long in %s line %d: %s"
+msgstr "%s (%d s)  affix : %s"
+
+msgid "E761: Format error in affix file FOL, LOW or UPP"
+msgstr ""
+"E761: affixt@C FOL, LOW  UPP tH[}bgG["
+
+msgid "E762: Character in FOL, LOW or UPP is out of range"
+msgstr "E762: FOL, LOW  UPP O"
+
+msgid "Compressing word tree..."
+msgstr "Pc[k..."
+
+msgid "E756: Spell checking is not enabled"
+msgstr "E756: `FbN"
+
+#, c-format
+msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""
+msgstr ""
+"x: PXg \"%s.%s.spl\"  \"%s.ascii.spl\" "
+
+#, c-format
+msgid "Reading spell file \"%s\""
+msgstr "Xyt@C \"%s\" "
+
+msgid "E757: This does not look like a spell file"
+msgstr "E757: Xyt@C"
+
+msgid "E771: Old spell file, needs to be updated"
+msgstr "E771: Xyt@C, Abvf[g"
+
+msgid "E772: Spell file is for newer version of Vim"
+msgstr "E772: Vo[W Vim pXyt@C"
+
+msgid "E770: Unsupported section in spell file"
+msgstr "E770: Xyt@CT|[gZNV"
+
+#, c-format
+msgid "Warning: region %s not supported"
+msgstr "x9: %s T|[g"
+
+#, c-format
+msgid "Reading affix file %s ..."
+msgstr "affix t@C %s ..."
+
+#, c-format
+msgid "Conversion failure for word in %s line %d: %s"
+msgstr "%s (%d s) P: %s"
+
+#, c-format
+msgid "Conversion in %s not supported: from %s to %s"
+msgstr "%s T|[g: %s  %s "
+
+#, c-format
+msgid "Conversion in %s not supported"
+msgstr "%s T|[g"
+
+#, c-format
+msgid "Invalid value for FLAG in %s line %d: %s"
+msgstr "%s  %d s FLAG l: %s"
+
+#, c-format
+msgid "FLAG after using flags in %s line %d: %s"
+msgstr "%s  %d stOdgp: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDMAX value in %s line %d: %s"
+msgstr "%s  %d s COMPOUNDMAX l: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDMIN value in %s line %d: %s"
+msgstr "%s  %d s COMPOUNDMIN l: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s"
+msgstr "%s  %d s COMPOUNDSYLMAX l: %s"
+
+#, c-format
+msgid "Different combining flag in continued affix block in %s line %d: %s"
+msgstr ""
+"%s  %d s A affix ubNtOg: %s"
+
+#, c-format
+msgid "Duplicate affix in %s line %d: %s"
+msgstr "%s  %d s d affix o: %s"
+
+#, c-format
+msgid ""
+"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND in %s line %d: "
+"%s"
+msgstr ""
+"%s  %d s affix  BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND "
+"gp: %s"
+
+#, c-format
+msgid "Expected Y or N in %s line %d: %s"
+msgstr "%s  %d s Y  N Kv: %s"
+
+#, c-format
+msgid "Broken condition in %s line %d: %s"
+msgstr "%s  %d s : %s"
+
+#, c-format
+msgid "Expected REP(SAL) count in %s line %d"
+msgstr "%s  %d s REP(SAL) Kv"
+
+#, c-format
+msgid "Expected MAP count in %s line %d"
+msgstr "%s  %d s MAP Kv"
+
+#, c-format
+msgid "Duplicate character in MAP in %s line %d"
+msgstr "%s  %d s MAP d"
+
+#, c-format
+msgid "Unrecognized or duplicate item in %s line %d: %s"
+msgstr "%s  %d s Fッd: %s"
+
+#, c-format
+msgid "Missing FOL/LOW/UPP line in %s"
+msgstr "%d s FOL/LOW/UPP "
+
+msgid "COMPOUNDSYLMAX used without SYLLABLE"
+msgstr "SYLLABLE w COMPOUNDSYLMAX"
+
+msgid "Too many postponed prefixes"
+msgstr "xuq"
+
+msgid "Too many compound flags"
+msgstr "tO"
+
+msgid "Too many posponed prefixes and/or compound flags"
+msgstr "xuq / tO"
+
+#, c-format
+msgid "Missing SOFO%s line in %s"
+msgstr "SOFO%s s %s "
+
+#, c-format
+msgid "Both SAL and SOFO lines in %s"
+msgstr "SALs  SOFOs  %s w"
+
+#, c-format
+msgid "Flag is not a number in %s line %d: %s"
+msgstr "%s  %d s tOl: %s"
+
+#, c-format
+msgid "Illegal flag in %s line %d: %s"
+msgstr "%s  %d s tOs: %s"
+
+#, c-format
+msgid "%s value differs from what is used in another .aff file"
+msgstr "l %s  .aff t@Cgp"
+
+#, c-format
+msgid "Reading dictionary file %s ..."
+msgstr "ォt@C %s XL..."
+
+#, c-format
+msgid "E760: No word count in %s"
+msgstr "E760: %s P"
+
+#, c-format
+msgid "line %6d, word %6d - %s"
+msgstr "s %6d, P %6d - %s"
+
+#, c-format
+msgid "Duplicate word in %s line %d: %s"
+msgstr "%s  %d s dP: %s"
+
+#, c-format
+msgid "First duplicate word in %s line %d: %s"
+msgstr "dP %s  %d s: %s"
+
+#, c-format
+msgid "%d duplicate word(s) in %s"
+msgstr "%d P (%s )"
+
+#, c-format
+msgid "Ignored %d word(s) with non-ASCII characters in %s"
+msgstr "ASCII %d P (%s )"
+
+#, c-format
+msgid "Reading word file %s ..."
+msgstr "W..."
+
+#, c-format
+msgid "Duplicate /encoding= line ignored in %s line %d: %s"
+msgstr "%s  %d s d /encoding= s: %s"
+
+#, c-format
+msgid "/encoding= line after word ignored in %s line %d: %s"
+msgstr "s  %d s P /encoding= s: %s"
+
+#, c-format
+msgid "Duplicate /regions= line ignored in %s line %d: %s"
+msgstr "%s  %d s d /regions= s: %s"
+
+#, c-format
+msgid "Too many regions in %s line %d: %s"
+msgstr "%s  %d s, w: %s"
+
+#, c-format
+msgid "/ line ignored in %s line %d: %s"
+msgstr "%s  %d s d / s: %s"
+
+#, c-format
+msgid "Invalid region nr in %s line %d: %s"
+msgstr "%s  %d s  nr : %s"
+
+#, c-format
+msgid "Unrecognized flags in %s line %d: %s"
+msgstr "%s  %d s Fッs\\tO: %s"
+
+#, c-format
+msgid "Ignored %d words with non-ASCII characters"
+msgstr "ASCII %d P"
+
+msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
+msgstr "m[h %d (S %d ) k; c %d (%d%%)"
+
+msgid "Reading back spell file..."
+msgstr "Xyt@Ct"
+
+#.
+#. * Go through the trie of good words, soundfold each word and add it to
+#. * the soundfold trie.
+#.
+msgid "Performing soundfolding..."
+msgstr "タs..."
+
+#, c-format
+msgid "Number of words after soundfolding: %ld"
+msgstr "P: %ld"
+
+#, c-format
+msgid "Total number of words: %d"
+msgstr "P: %d"
+
+#, c-format
+msgid "Writing suggestion file %s ..."
+msgstr "Ct@C \"%s\" ..."
+
+#, c-format
+msgid "Estimated runtime memory use: %d bytes"
+msgstr "gp: %d oCg"
+
+msgid "E751: Output file name must not have region name"
+msgstr "E751: ot@C"
+
+msgid "E754: Only up to 8 regions supported"
+msgstr "E754:  8 T|[g"
+
+#, c-format
+msgid "E755: Invalid region in %s"
+msgstr "E755: : %s"
+
+msgid "Warning: both compounding and NOBREAK specified"
+msgstr "x: tO NOBREAK w"
+
+#, c-format
+msgid "Writing spell file %s ..."
+msgstr "Xyt@C %s ..."
+
+msgid "Done!"
+msgstr "タs!"
+
+#, c-format
+msgid "E765: 'spellfile' does not have %ld entries"
+msgstr "E765: 'spellfile'  %ld Gg"
+
+msgid "E763: Word characters differ between spell files"
+msgstr "E763: PXyt@C"
+
+msgid "Sorry, no suggestions"
+msgstr "cO, C"
+
+#, c-format
+msgid "Sorry, only %ld suggestions"
+msgstr "cO, C %ld "
+
+#. avoid more prompt
+#, c-format
+msgid "Change \"%.*s\" to:"
+msgstr "\"%.*s\" :"
+
+#, c-format
+msgid " < \"%.*s\""
+msgstr " < \"%.*s\""
+
+msgid "E752: No previous spell replacement"
+msgstr "E752: Xyuタs"
+
+#, c-format
+msgid "E753: Not found: %s"
+msgstr "E753: : %s"
+
+#, c-format
+msgid "E778: This does not look like a .sug file: %s"
+msgstr "E778: .sug t@C: %s"
+
+#, c-format
+msgid "E779: Old .sug file, needs to be updated: %s"
+msgstr "E779:  .sug t@C, Abvf[g"
+
+#, c-format
+msgid "E780: .sug file is for newer version of Vim: %s"
+msgstr "E780: Vo[W Vim p .sug t@C: %s"
+
+#, c-format
+msgid "E781: .sug file doesn't match .spl file: %s"
+msgstr "E781: .sug t@C .spl t@Cv: %s"
+
+#, c-format
+msgid "E782: error while reading .sug file: %s"
+msgstr "E782: .sug t@CG[: %s"
+
+#. This should have been checked when generating the .spl
+#. * file.
+msgid "E783: duplicate char in MAP entry"
+msgstr "E783: MAP Ggd"
+
 #, c-format
 msgid "E390: Illegal argument: %s"
 msgstr "E390: s: %s"
@@ -4763,13 +5120,6 @@ msgstr "  # pri kind tag"
 msgid "file\n"
 msgstr "t@C\n"
 
-#.
-#. * Ask to select a tag from the list.
-#. * When using ":silent" assume that <CR> was entered.
-#.
-msgid "Enter nr of choice (<CR> to abort): "
-msgstr "I (<CR>~): "
-
 msgid "E427: There is only one matching tag"
 msgstr "E427: Y^O1"
 
@@ -5060,9 +5410,6 @@ msgstr "with Cocoa GUI."
 msgid "with (classic) GUI."
 msgstr "with (NVbN) GUI."
 
-msgid "with KDE GUI."
-msgstr "with KDE GUI."
-
 msgid "  Features included (+) or not (-):\n"
 msgstr "  @\\ L(+)/(-)\n"
 
@@ -5439,6 +5786,9 @@ msgstr "E459: OfBNg"
 msgid "E42: No Errors"
 msgstr "E42: G["
 
+msgid "E776: No location list"
+msgstr "E776: Xg"
+
 msgid "E43: Damaged match string"
 msgstr "E43: Yj"
 
@@ -5532,11 +5882,25 @@ msgstr "E744: NetBeans pt@CX"
 msgid "E685: Internal error: %s"
 msgstr "E685: G[: %s"
 
-msgid "E361: Crash intercepted; regexp too complex?"
-msgstr "E361: NbVf; K\\G?"
-
-msgid "E363: pattern caused out-of-stack error"
-msgstr "E363: p^[X^bNsG["
+msgid "E363: pattern uses more memory than 'maxmempattern'"
+msgstr "E363: p^[ 'maxmempattern' gp"
 
 msgid "E749: empty buffer"
 msgstr "E749: obt@"
+
+#
+msgid "E682: Invalid search pattern or delimiter"
+msgstr "E682: p^[Ls"
+
+msgid "E139: File is loaded in another buffer"
+msgstr "E139: Ot@Cobt@"
+
+#, c-format
+msgid "E764: Option '%s' is not set"
+msgstr "E764: IvV '%s' "
+
+msgid "search hit TOP, continuing at BOTTOM"
+msgstr ""
+
+msgid "search hit BOTTOM, continuing at TOP"
+msgstr ""
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -84,7 +84,7 @@ pum_display(array, size, selected, row, 
     }
 
     /* don't display when we only have room for one line */
-    if (pum_height <= 1)
+    if (pum_height < 1 || (pum_height == 1 && size > 1))
 	return;
 
     /* Compute the width of the widest match. */
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2566,13 +2566,14 @@ buf_hide(buf)
 grep_internal(cmdidx)
     cmdidx_T	cmdidx;
 {
-    return ((cmdidx == CMD_grep || cmdidx == CMD_grepadd)
+    return ((cmdidx == CMD_grep || cmdidx == CMD_lgrep
+	     || cmdidx == CMD_grepadd || cmdidx == CMD_lgrepadd)
 	    && STRCMP("internal",
 			*curbuf->b_p_gp == NUL ? p_gp : curbuf->b_p_gp) == 0);
 }
 
 /*
- * Used for ":make", ":grep" and ":grepadd".
+ * Used for ":make", ":lmake", ":grep", ":lgrep", ":grepadd", and ":lgrepadd"
  */
     void
 ex_make(eap)
@@ -2581,14 +2582,19 @@ ex_make(eap)
     char_u	*fname;
     char_u	*cmd;
     unsigned	len;
+    win_T	*wp = NULL;
+    qf_info_T	*qi;
 #ifdef FEAT_AUTOCMD
     char_u	*au_name = NULL;
 
     switch (eap->cmdidx)
     {
 	case CMD_make: au_name = (char_u *)"make"; break;
+	case CMD_lmake: au_name = (char_u *)"lmake"; break;
 	case CMD_grep: au_name = (char_u *)"grep"; break;
+	case CMD_lgrep: au_name = (char_u *)"lgrep"; break;
 	case CMD_grepadd: au_name = (char_u *)"grepadd"; break;
+	case CMD_lgrepadd: au_name = (char_u *)"lgrepadd"; break;
 	default: break;
     }
     if (au_name != NULL)
@@ -2609,6 +2615,15 @@ ex_make(eap)
 	return;
     }
 
+    if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep
+	|| eap->cmdidx == CMD_lgrepadd)
+    {
+	qi = ll_get_or_alloc_list(curwin);
+	if (qi == NULL)
+	    return;
+	wp = curwin;
+    }
+
     autowrite_all();
     fname = get_mef_name();
     if (fname == NULL)
@@ -2647,10 +2662,12 @@ ex_make(eap)
     (void)char_avail();
 #endif
 
-    if (qf_init(NULL, fname, eap->cmdidx != CMD_make ? p_gefm : p_efm,
-					       eap->cmdidx != CMD_grepadd) > 0
+    if (qf_init(wp, fname, (eap->cmdidx != CMD_make
+			    && eap->cmdidx != CMD_lmake) ? p_gefm : p_efm,
+					   (eap->cmdidx != CMD_grepadd
+					    && eap->cmdidx != CMD_lgrepadd)) > 0
 	    && !eap->forceit)
-	qf_jump(NULL, 0, 0, FALSE);		/* display first error */
+	qf_jump(wp, 0, 0, FALSE);		/* display first error */
 
     mch_remove(fname);
     vim_free(fname);
@@ -2832,6 +2849,9 @@ ex_cfile(eap)
 
 /*
  * ":vimgrep {pattern} file(s)"
+ * ":vimgrepadd {pattern} file(s)"
+ * ":lvimgrep {pattern} file(s)"
+ * ":lvimgrepadd {pattern} file(s)"
  */
     void
 ex_vimgrep(eap)
@@ -2843,7 +2863,9 @@ ex_vimgrep(eap)
     char_u	*s;
     char_u	*p;
     int		fi;
+    qf_info_T	*qi = &ql_info;
     qfline_T	*prevp = NULL;
+    win_T	*wp = NULL;
     long	lnum;
     buf_T	*buf;
     int		duplicate_name = FALSE;
@@ -2859,12 +2881,13 @@ ex_vimgrep(eap)
     char_u	*au_name =  NULL;
     int		flags = 0;
     colnr_T	col;
-    qf_info_T	*qi = &ql_info;
 
     switch (eap->cmdidx)
     {
 	case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break;
+	case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break;
 	case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break;
+	case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break;
 	default: break;
     }
     if (au_name != NULL)
@@ -2876,6 +2899,15 @@ ex_vimgrep(eap)
     }
 #endif
 
+    if (eap->cmdidx == CMD_grep || eap->cmdidx == CMD_lvimgrep
+	|| eap->cmdidx == CMD_lgrepadd || eap->cmdidx == CMD_lvimgrepadd)
+    {
+	qi = ll_get_or_alloc_list(curwin);
+	if (qi == NULL)
+	    return;
+	wp = curwin;
+    }
+
     /* Get the search pattern: either white-separated or enclosed in // */
     regmatch.regprog = NULL;
     p = skip_vimgrep_pat(eap->arg, &s, &flags);
@@ -2897,7 +2929,8 @@ ex_vimgrep(eap)
 	goto theend;
     }
 
-    if ((eap->cmdidx != CMD_grepadd && eap->cmdidx != CMD_vimgrepadd)
+    if ((eap->cmdidx != CMD_grepadd && eap->cmdidx != CMD_lgrepadd && 
+	 eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd)
 					|| qi->qf_curlist == qi->qf_listcount)
 	/* make place for a new list */
 	qf_new_list(qi);
@@ -3072,7 +3105,7 @@ ex_vimgrep(eap)
     if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
     {
 	if ((flags & VGR_NOJUMP) == 0)
-	    qf_jump(NULL, 0, 0, eap->forceit);
+	    qf_jump(wp, 0, 0, eap->forceit);
     }
     else
 	EMSG2(_(e_nomatch2), s);
@@ -3396,7 +3429,9 @@ set_errorlist(wp, list, action)
 
 /*
  * ":[range]cbuffer [bufnr]" command.
+ * ":[range]caddbuffer [bufnr]" command.
  * ":[range]lbuffer [bufnr]" command.
+ * ":[range]laddbuffer [bufnr]" command.
  */
     void
 ex_cbuffer(eap)
@@ -3405,7 +3440,7 @@ ex_cbuffer(eap)
     buf_T	*buf = NULL;
     qf_info_T	*qi = &ql_info;
 
-    if (eap->cmdidx == CMD_lbuffer)
+    if (eap->cmdidx == CMD_lbuffer || eap->cmdidx == CMD_laddbuffer)
     {
 	qi = ll_get_or_alloc_list(curwin);
 	if (qi == NULL)
@@ -3431,7 +3466,10 @@ ex_cbuffer(eap)
 		|| eap->line2 < 1 || eap->line2 > buf->b_ml.ml_line_count)
 	    EMSG(_(e_invrange));
 	else
-	    qf_init_ext(qi, NULL, buf, NULL, p_efm, TRUE, eap->line1, eap->line2);
+	    qf_init_ext(qi, NULL, buf, NULL, p_efm,
+			(eap->cmdidx == CMD_cbuffer
+			 || eap->cmdidx == CMD_lbuffer),
+			eap->line1, eap->line2);
     }
 }
 
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 3)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 3, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 4)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 4, compiled "