diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 8735b5cab182f663eece99b193f521c1076f6743..bc55a61a159680320d4b65eeacb34f46b355278e 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -620,11 +620,12 @@ MenuPopup			Just before showing the popup menu (under the
 					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
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 9bd366026228ea1d795f9d7f5a50372349a0fa4d..2592850211d5178ae3466ceffc55fcf536fb4dd8 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -2943,7 +2943,8 @@ A jump table for the options with a short description can be found at |Q_op|.
 	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,
diff --git a/runtime/doc/tags b/runtime/doc/tags
index bbb9190d8a6116efc1c18e910e0052e84e0ad9ba..4d69b877e52d571e2b34c10d96c70e19bed44003 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1788,6 +1788,8 @@ $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
 :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 @@ $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
 :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 @@ $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
 :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 @@ $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
 :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 @@ $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
 :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*
diff --git a/runtime/lang/menu_ja_jp.euc-jp.vim b/runtime/lang/menu_ja_jp.euc-jp.vim
index 06be3ff427d51e3af661a3978e59817c0e4af6d2..38a65bfb18852a325116739695bcae811c695e9a 100644
--- 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		
 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)
diff --git a/runtime/lang/menu_japanese_japan.932.vim b/runtime/lang/menu_japanese_japan.932.vim
index 3fa21b6a525d3397a004463c30001162fc2aa97b..7041f29b612e75787edf2632470049bdbb6878a4 100644
--- 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		
 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)
diff --git a/runtime/syntax/gnuplot.vim b/runtime/syntax/gnuplot.vim
index a6fa716e2938f8c7777efadbe5affb48080231a7..5a381c7cd62c72c836190f8ee2ba1244a44c8066 100644
--- a/runtime/syntax/gnuplot.vim
+++ b/runtime/syntax/gnuplot.vim
@@ -138,7 +138,7 @@ syn keyword gnuplotType		boxxy[errorbars] csplines dots fsteps histeps impulses
 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
diff --git a/src/edit.c b/src/edit.c
index f3842292630b61e172fb8a142bb2f94a9b667d5c..ee574ad6c9ccbaa6c56e26b9522f087e15e09572 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -87,6 +87,14 @@ static compl_T    *compl_first_match = NULL;
 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((void));
 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;
 
-	/* 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)
+	/* 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 (ins_compl_prep(c))
+	    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 && 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;
+    int		lead_len = 0;
 
-    if (!pum_wanted())
+    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,10 +2534,101 @@ 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.
@@ -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, count)
     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, count)
 	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 */
 	}
     }
 
diff --git a/src/globals.h b/src/globals.h
index 82c42b2b65916013eddc5d7d527dabf55509e064..83b62674e1c056401f54524ab0e74610d0804f8e 100644
--- 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
diff --git a/src/po/ja.sjis.po b/src/po/ja.sjis.po
index e47aee8bb3b82ff73ec0161951d82d3fe818fe9e..56a4a63560ab730dd4d24327cb2ee47058959847 100644
--- 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"
 "# 僶僢僼傽儕僗僩:\n"
 
+msgid "[Location List]"
+msgstr "[応強儕僗僩]"
+
 msgid "[Error List]"
 msgstr "[僄儔乕儕僗僩]"
 
@@ -214,13 +217,8 @@ msgid " Keyword completion (^N^P)"
 msgstr " 僉乕儚乕僪曗姰 (^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 儌乕僪 (^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 " 嬊強僉乕儚乕僪曗姰 (^N^P)"
+msgid " ^X mode (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)"
+msgstr " ^X 儌乕僪 (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)"
 
 msgid " Whole line completion (^L^N^P)"
 msgstr " 峴(慡懱)曗姰 (^L^N^P)"
@@ -249,15 +247,24 @@ msgstr " 
 msgid " User defined completion (^U^N^P)"
 msgstr " 儐乕僓掕媊曗姰 (^U^N^P)"
 
+msgid " Omni completion (^O^N^P)"
+msgstr " 僆儉僯曗姰 (^O^N^P)"
+
+msgid " Spelling suggestion (^S^N^P)"
+msgstr " 捲傝廋惓岓曗 (^S^N^P)"
+
+msgid " Keyword Local completion (^N^P)"
+msgstr " 嬊強僉乕儚乕僪曗姰 (^N^P)"
+
 msgid "Hit end of paragraph"
 msgstr "抜棊偺嵟屻偵僸僢僩"
 
-msgid "'thesaurus' option is empty"
-msgstr "'thesaurus' 僆僾僔儑儞偑嬻偱偡"
-
 msgid "'dictionary' option is empty"
 msgstr "'dictionary' 僆僾僔儑儞偑嬻偱偡"
 
+msgid "'thesaurus' option is empty"
+msgstr "'thesaurus' 僆僾僔儑儞偑嬻偱偡"
+
 #, c-format
 msgid "Scanning dictionary: %s"
 msgstr "帿彂傪僗僉儍儞拞: %s"
@@ -321,7 +328,7 @@ msgid "E686: Argument of %s must be a List"
 msgstr "E686: %s 偺堷悢偼儕僗僩宆偱側偗傟偽側傝傑偣傫"
 
 #, 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 偺堷悢偼儕僗僩宆傑偨偼帿彂宆偱側偗傟偽側傝傑偣傫"
 
 msgid "E713: Cannot use empty key for Dictionary"
@@ -362,6 +369,10 @@ msgstr "E734: 
 msgid "E130: Unknown function: %s"
 msgstr "E130: 枹抦偺娭悢偱偡: %s"
 
+#, c-format
+msgid "E461: Illegal variable name: %s"
+msgstr "E461: 晄惓側曄悢柤偱偡: %s"
+
 msgid "E687: Less targets than List items"
 msgstr "E687: 僞乕僎僢僩偑儕僗僩宆撪偺梫慺傛傝傕彮側偄偱偡"
 
@@ -460,8 +471,9 @@ msgstr "E697: 
 msgid "E720: Missing colon in Dictionary: %s"
 msgstr "E720: 帿彂宆偵僐儘儞偑偁傝傑偣傫: %s"
 
-msgid "E721: Duplicate key in Dictionary"
-msgstr "E721: 帿彂宆偵廳暋僉乕偑偦傫偞偄偟傑偡"
+#, c-format
+msgid "E721: Duplicate key in Dictionary: \"%s\""
+msgstr "E721: 帿彂宆偵廳暋僉乕偑偁傝傑偡: \"%s\""
 
 #, c-format
 msgid "E722: Missing comma in Dictionary: %s"
@@ -571,12 +583,8 @@ msgid "E704: Funcref variable name must start with a capital: %s"
 msgstr "E704: 娭悢嶲徠宆曄悢柤偼戝暥帤偱巒傑傜側偗傟偽側傝傑偣傫: %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"
+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: 
 msgid "E132: Function call depth is higher than 'maxfuncdepth'"
 msgstr "E132: 娭悢屇弌偺擖傟巕悢偑 'maxfuncdepth' 傪挻偊傑偟偨"
 
-#. always scroll up, don't overwrite
 #, c-format
 msgid "calling %s"
 msgstr "%s 傪幚峴拞偱偡"
@@ -642,7 +649,6 @@ msgstr "%s 
 msgid "%s returning %s"
 msgstr "%s 偑 %s 傪曉偟傑偟偨"
 
-#. always scroll up, don't overwrite
 #, c-format
 msgid "continuing in %s"
 msgstr "%s 偺幚峴傪宲懕拞偱偡"
@@ -657,6 +663,13 @@ msgstr ""
 "\n"
 "# 僌儘乕僶儖曄悢:\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,  16恑悢 %02x,  8恑悢 %03o"
@@ -742,11 +755,6 @@ msgstr "
 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: 摨偠柤慜偺僼傽僀儖偑懠偺僶僢僼傽偱撉崬傑傟偰偄傑偡"
-
 msgid "Write partial file?"
 msgstr "僼傽僀儖傪晹暘揑偵曐懚偟傑偡偐?"
 
@@ -754,8 +762,16 @@ msgid "E140: Use ! to write partial buffer"
 msgstr "E140: 僶僢僼傽傪晹暘揑偵曐懚偡傞偵偼 ! 傪巊偭偰偔偩偝偄"
 
 #, c-format
-msgid "Overwrite existing file \"%.*s\"?"
-msgstr "婛懚偺僼傽僀儖 \"%.*s\" 傪忋彂偒偟傑偡偐?"
+msgid "Overwrite existing file \"%s\"?"
+msgstr "婛懚偺僼傽僀儖 \"%s\" 傪忋彂偒偟傑偡偐?"
+
+#, c-format
+msgid "Swap file \"%s\" exists, overwrite anyway?"
+msgstr "僗儚僢僾僼傽僀儖 \"%s\" 偑懚嵼偟傑偡. 忋彂偒傪嫮惂偟傑偡偐?"
+
+#, c-format
+msgid "E768: Swap file exists: %s (:silent! overrides)"
+msgstr "E768: 僗儚僢僾僼傽僀儖偑懚嵼偟傑偡: %s (:silent! 傪捛壛偱忋彂)"
 
 #, c-format
 msgid "E141: No file name for buffer %ld"
@@ -766,11 +782,11 @@ msgstr "E142: 
 
 #, 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' 僆僾僔儑儞偑愝掕偝傟偰偄傑偡\n"
-"嫮惂揑偵忋彂偒偟傑偡偐?"
+"\"%s\" 偵偼 'readonly' 僆僾僔儑儞偑愝掕偝傟偰偄傑偡.\n"
+"忋彂偒嫮惂傪偟傑偡偐?"
 
 msgid "Edit File"
 msgstr "僼傽僀儖傪曇廤"
@@ -940,8 +956,8 @@ msgid "E750: First use :profile start <fname>"
 msgstr "E750: 弶傔偵 :profile start <fname> 傪幚峴偟偰偔偩偝偄"
 
 #, c-format
-msgid "Save changes to \"%.*s\"?"
-msgstr "曄峏傪 \"%.*s\" 偵曐懚偟傑偡偐?"
+msgid "Save changes to \"%s\"?"
+msgstr "曄峏傪 \"%s\" 偵曐懚偟傑偡偐?"
 
 msgid "Untitled"
 msgstr "柍戣"
@@ -1014,90 +1030,6 @@ msgstr "E167: :scriptencoding 
 msgid "E168: :finish used outside of a sourced file"
 msgstr "E168: :finish 偑庢崬僗僋儕僾僩埲奜偱巊梡偝傟傑偟偨"
 
-#, c-format
-msgid "Page %d"
-msgstr "%d 儁乕僕"
-
-msgid "No text to be printed"
-msgstr "報嶞偡傞僥僉僗僩偑偁傝傑偣傫"
-
-msgid "Printing page %d (%d%%)"
-msgstr "報嶞拞: 儁乕僕 %d (%d%%)"
-
-#, c-format
-msgid " Copy %d of %d"
-msgstr " 僐僺乕 %d (慡 %d 拞)"
-
-#, c-format
-msgid "Printed: %s"
-msgstr "報嶞偟傑偟偨: %s"
-
-msgid "Printing aborted"
-msgstr "報嶞偑拞巭偝傟傑偟偨"
-
-msgid "E455: Error writing to PostScript output file"
-msgstr "E455: PostScript弌椡僼傽僀儖偺彂崬傒僄儔乕偱偡"
-
-#, c-format
-msgid "E624: Can't open file \"%s\""
-msgstr "E624: 僼傽僀儖 \"%s\" 傪奐偗傑偣傫"
-
-#, c-format
-msgid "E457: Can't read PostScript resource file \"%s\""
-msgstr "E457: PostScript偺儕僜\乕僗僼傽僀儖 \"%s\" 傪撉崬傔傑偣傫"
-
-#, c-format
-msgid "E618: file \"%s\" is not a PostScript resource file"
-msgstr "E618: 僼傽僀儖 \"%s\" 偼 PostScript 儕僜\乕僗僼傽僀儖偱偼偁傝傑偣傫"
-
-#, c-format
-msgid "E619: file \"%s\" is not a supported PostScript resource file"
-msgstr "E619: 僼傽僀儖 \"%s\" 偼懳墳偟偰偄側偄 PostScript 儕僜\乕僗僼傽僀儖偱偡"
-
-#, c-format
-msgid "E621: \"%s\" resource file has wrong version"
-msgstr "E621: 儕僜\乕僗僼傽僀儖 \"%s\" 偼僶乕僕儑儞偑堎側傝傑偡"
-
-msgid "E673: Incompatible multi-byte encoding and character set."
-msgstr "E673: 屳姺惈偺柍偄儅儖僠僶僀僩僄儞僐乕僨傿儞僌偲暥帤僙僢僩偱偡"
-
-msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
-msgstr "E674: 儅儖僠僶僀僩僄儞僐乕僨傿儞僌偱偼 printmbcharset 傪嬻偵偱偒傑偣傫"
-
-msgid "E675: No default font specfifed for multi-byte printing."
-msgstr ""
-"E675: 儅儖僠僶僀僩暥帤傪報嶞偡傞偨傔偺僨僼僅儖僩僼僅儞僩偑巜掕偝傟偰偄傑偣傫"
-
-msgid "E324: Can't open PostScript output file"
-msgstr "E324: PostScript弌椡梡偺僼傽僀儖傪奐偗傑偣傫"
-
-#, c-format
-msgid "E456: Can't open file \"%s\""
-msgstr "E456: 僼傽僀儖 \"%s\" 傪奐偗傑偣傫"
-
-msgid "E456: Can't find PostScript resource file \"prolog.ps\""
-msgstr "E456: PostScript偺儕僜\乕僗僼傽僀儖 \"prolog.ps\" 偑傒偮偐傝傑偣傫"
-
-msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
-msgstr "E456: PostScript偺儕僜\乕僗僼傽僀儖 \"cidfont.ps\" 偑傒偮偐傝傑偣傫"
-
-#, c-format
-msgid "E456: Can't find PostScript resource file \"%s.ps\""
-msgstr "E456: PostScript偺儕僜\乕僗僼傽僀儖 \"%s.ps\" 偑傒偮偐傝傑偣傫"
-
-#, c-format
-msgid "E620: Unable to convert to print encoding \"%s\""
-msgstr "E620: 報嶞僄儞僐乕僪 \"%s\" 傊曄姺偱偒傑偣傫"
-
-msgid "Sending to printer..."
-msgstr "僾儕儞僞偵憲怣拞..."
-
-msgid "E365: Failed to print PostScript file"
-msgstr "E365: PostScript僼傽僀儖偺報嶞偵幐攕偟傑偟偨"
-
-msgid "Print job sent."
-msgstr "報嶞僕儑僽傪憲怣偟傑偟偨."
-
 #, c-format
 msgid "Current %slanguage: \"%s\""
 msgstr "尰嵼偺 %s尵岅: \"%s\""
@@ -1185,18 +1117,8 @@ msgstr "E177: 
 msgid "E178: Invalid default value for count"
 msgstr "E178: 僇僂儞僩偺徣棯抣偑柍岠偱偡"
 
-msgid "E179: argument required for complete"
-msgstr "E179: 曗姰偺偨傔偺堷悢偑昁梫偱偡"
-
-#, c-format
-msgid "E180: Invalid complete value: %s"
-msgstr "E180: 柍岠側曗姰巜掕偱偡: %s"
-
-msgid "E468: Completion argument only allowed for custom completion"
-msgstr "E468: 曗姰堷悢偼僇僗僞儉曗姰偱偟偐巊梡偱偒傑偣傫"
-
-msgid "E467: Custom completion requires a function argument"
-msgstr "E467: 僇僗僞儉曗姰偵偼堷悢偲偟偰娭悢偑昁梫偱偡"
+msgid "E179: argument required for -complete"
+msgstr "E179: -曗姰偺偨傔偺堷悢偑昁梫偱偡"
 
 #, c-format
 msgid "E181: Invalid attribute: %s"
@@ -1212,6 +1134,16 @@ msgstr "E183: 
 msgid "E184: No such user-defined command: %s"
 msgstr "E184: 偦偺儐乕僓掕媊僐儅儞僪偼偁傝傑偣傫: %s"
 
+#, c-format
+msgid "E180: Invalid complete value: %s"
+msgstr "E180: 柍岠側曗姰巜掕偱偡: %s"
+
+msgid "E468: Completion argument only allowed for custom completion"
+msgstr "E468: 曗姰堷悢偼僇僗僞儉曗姰偱偟偐巊梡偱偒傑偣傫"
+
+msgid "E467: Custom completion requires a function argument"
+msgstr "E467: 僇僗僞儉曗姰偵偼堷悢偲偟偰娭悢偑昁梫偱偡"
+
 #, c-format
 msgid "E185: Cannot find color scheme %s"
 msgstr "E185: 僇儔乕僗僉乕儉 %s 偑傒偮偐傝傑偣傫"
@@ -1467,6 +1399,12 @@ msgstr " 
 msgid "[New File]"
 msgstr "[怴僼傽僀儖]"
 
+msgid "[New DIRECTORY]"
+msgstr "[怴婯僨傿儗僋僩儕]"
+
+msgid "[File too big]"
+msgstr "[僼傽僀儖夁戝]"
+
 msgid "[Permission Denied]"
 msgstr "[擣壜偑偁傝傑偣傫]"
 
@@ -1516,8 +1454,9 @@ msgstr "[
 msgid "[crypted]"
 msgstr "[埫崋壔]"
 
-msgid "[CONVERSION ERROR]"
-msgstr "[曄姺僄儔乕]"
+#, c-format
+msgid "[CONVERSION ERROR in line %ld]"
+msgstr "[%ld 峴栚偱曄姺僄儔乕]"
 
 #, c-format
 msgid "[ILLEGAL BYTE in line %ld]"
@@ -1703,8 +1642,8 @@ msgid "E246: FileChangedShell autocommand deleted buffer"
 msgstr "E246: autocommand 偺 FileChangedShell 偑僶僢僼傽傪嶍彍偟傑偟偨"
 
 #, c-format
-msgid "E211: Warning: File \"%s\" no longer available"
-msgstr "E211: 寈崘: 僼傽僀儖 \"%s\" 偼婛偵懚嵼偟傑偣傫"
+msgid "E211: File \"%s\" no longer available"
+msgstr "E211: 僼傽僀儖 \"%s\" 偼婛偵懚嵼偟傑偣傫"
 
 #, c-format
 msgid ""
@@ -1712,21 +1651,27 @@ msgid ""
 "well"
 msgstr "W12: 寈崘: 僼傽僀儖 \"%s\" 偑曄峏偝傟Vim偺僶僢僼傽傕曄峏偝傟傑偟偨"
 
+msgid "See \":help W12\" for more info."
+msgstr "徻嵶偼 \":help W12\" 傪嶲徠偟偰偔偩偝偄"
+
 #, c-format
 msgid "W11: Warning: File \"%s\" has changed since editing started"
 msgstr "W11: 寈崘: 僼傽僀儖 \"%s\" 偼曇廤奐巒屻偵曄峏偝傟傑偟偨"
 
+msgid "See \":help W11\" for more info."
+msgstr "徻嵶偼 \":help W11\" 傪嶲徠偟偰偔偩偝偄"
+
 #, c-format
 msgid "W16: Warning: Mode of file \"%s\" has changed since editing started"
 msgstr "W16: 寈崘: 僼傽僀儖 \"%s\" 偺儌乕僪偑曇廤奐巒屻偵曄峏偝傟傑偟偨"
 
+msgid "See \":help W16\" for more info."
+msgstr "徻嵶偼 \":help W16\" 傪嶲徠偟偰偔偩偝偄"
+
 #, c-format
 msgid "W13: Warning: File \"%s\" has been created after editing started"
 msgstr "W13: 寈崘: 僼傽僀儖 \"%s\" 偼曇廤奐巒屻偵嶌惉偝傟傑偟偨"
 
-msgid "See \":help W11\" for more info."
-msgstr "徻嵶偼 \":help W11\" 傪嶲徠偟偰偔偩偝偄"
-
 msgid "Warning"
 msgstr "寈崘"
 
@@ -1798,7 +1743,6 @@ msgstr "%s Auto commands for \"%s\""
 msgid "Executing %s"
 msgstr "%s 傪幚峴偟偰偄傑偡"
 
-#. always scroll up, don't overwrite
 #, c-format
 msgid "autocommand %s"
 msgstr "autocommand %s"
@@ -2130,6 +2074,99 @@ msgstr "
 msgid "E256: Hangul automata ERROR"
 msgstr "E256: 僴儞僌儖僆乕僩儅僩儞僄儔乕"
 
+msgid "E550: Missing colon"
+msgstr "E550: 僐儘儞偑偁傝傑偣傫"
+
+msgid "E551: Illegal component"
+msgstr "E551: 晄惓側峔\暥梫慺偱偡"
+
+msgid "E552: digit expected"
+msgstr "E552: 悢抣偑昁梫偱偡"
+
+#, c-format
+msgid "Page %d"
+msgstr "%d 儁乕僕"
+
+msgid "No text to be printed"
+msgstr "報嶞偡傞僥僉僗僩偑偁傝傑偣傫"
+
+msgid "Printing page %d (%d%%)"
+msgstr "報嶞拞: 儁乕僕 %d (%d%%)"
+
+#, c-format
+msgid " Copy %d of %d"
+msgstr " 僐僺乕 %d (慡 %d 拞)"
+
+#, c-format
+msgid "Printed: %s"
+msgstr "報嶞偟傑偟偨: %s"
+
+msgid "Printing aborted"
+msgstr "報嶞偑拞巭偝傟傑偟偨"
+
+msgid "E455: Error writing to PostScript output file"
+msgstr "E455: PostScript弌椡僼傽僀儖偺彂崬傒僄儔乕偱偡"
+
+#, c-format
+msgid "E624: Can't open file \"%s\""
+msgstr "E624: 僼傽僀儖 \"%s\" 傪奐偗傑偣傫"
+
+#, c-format
+msgid "E457: Can't read PostScript resource file \"%s\""
+msgstr "E457: PostScript偺儕僜\乕僗僼傽僀儖 \"%s\" 傪撉崬傔傑偣傫"
+
+#, c-format
+msgid "E618: file \"%s\" is not a PostScript resource file"
+msgstr "E618: 僼傽僀儖 \"%s\" 偼 PostScript 儕僜\乕僗僼傽僀儖偱偼偁傝傑偣傫"
+
+#, c-format
+msgid "E619: file \"%s\" is not a supported PostScript resource file"
+msgstr "E619: 僼傽僀儖 \"%s\" 偼懳墳偟偰偄側偄 PostScript 儕僜\乕僗僼傽僀儖偱偡"
+
+#, c-format
+msgid "E621: \"%s\" resource file has wrong version"
+msgstr "E621: 儕僜\乕僗僼傽僀儖 \"%s\" 偼僶乕僕儑儞偑堎側傝傑偡"
+
+msgid "E673: Incompatible multi-byte encoding and character set."
+msgstr "E673: 屳姺惈偺柍偄儅儖僠僶僀僩僄儞僐乕僨傿儞僌偲暥帤僙僢僩偱偡"
+
+msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
+msgstr "E674: 儅儖僠僶僀僩僄儞僐乕僨傿儞僌偱偼 printmbcharset 傪嬻偵偱偒傑偣傫"
+
+msgid "E675: No default font specified for multi-byte printing."
+msgstr ""
+"E675: 儅儖僠僶僀僩暥帤傪報嶞偡傞偨傔偺僨僼僅儖僩僼僅儞僩偑巜掕偝傟偰偄傑偣傫"
+
+msgid "E324: Can't open PostScript output file"
+msgstr "E324: PostScript弌椡梡偺僼傽僀儖傪奐偗傑偣傫"
+
+#, c-format
+msgid "E456: Can't open file \"%s\""
+msgstr "E456: 僼傽僀儖 \"%s\" 傪奐偗傑偣傫"
+
+msgid "E456: Can't find PostScript resource file \"prolog.ps\""
+msgstr "E456: PostScript偺儕僜\乕僗僼傽僀儖 \"prolog.ps\" 偑傒偮偐傝傑偣傫"
+
+msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
+msgstr "E456: PostScript偺儕僜\乕僗僼傽僀儖 \"cidfont.ps\" 偑傒偮偐傝傑偣傫"
+
+#, c-format
+msgid "E456: Can't find PostScript resource file \"%s.ps\""
+msgstr "E456: PostScript偺儕僜\乕僗僼傽僀儖 \"%s.ps\" 偑傒偮偐傝傑偣傫"
+
+#, c-format
+msgid "E620: Unable to convert to print encoding \"%s\""
+msgstr "E620: 報嶞僄儞僐乕僪 \"%s\" 傊曄姺偱偒傑偣傫"
+
+msgid "Sending to printer..."
+msgstr "僾儕儞僞偵憲怣拞..."
+
+msgid "E365: Failed to print PostScript file"
+msgstr "E365: PostScript僼傽僀儖偺報嶞偵幐攕偟傑偟偨"
+
+msgid "Print job sent."
+msgstr "報嶞僕儑僽傪憲怣偟傑偟偨."
+
 msgid "Add a new database"
 msgstr "怴僨乕僞儀乕僗傪捛壛"
 
@@ -2326,6 +2363,9 @@ msgstr "
 msgid "linenr out of range"
 msgstr "斖埻奜偺峴斣崋偱偡"
 
+msgid "not allowed in the Vim sandbox"
+msgstr "僒儞僪儃僢僋僗偱偼嫋偝傟傑偣傫"
+
 #, c-format
 msgid "E370: Could not load library %s"
 msgstr "E370: 儔僀僽儔儕 %s 傪儘乕僪偱偒傑偣傫偱偟偨"
@@ -2570,6 +2610,10 @@ msgstr ""
 "E281: TCL 僄儔乕: 廔椆僐乕僪偑惍悢抣偱偼偁傝傑偣傫!? vim-dev@vim.org "
 "偵曬崘偟偰偔偩偝偄"
 
+#, c-format
+msgid "E572: exit code %d"
+msgstr "E572: 廔椆僐乕僪 %d"
+
 msgid "cannot get line"
 msgstr "峴傪庢摼偱偒傑偣傫"
 
@@ -2586,8 +2630,8 @@ msgstr "E573: 
 msgid "E251: VIM instance registry property is badly formed.  Deleted!"
 msgstr "E251: VIM 幚懱偺搊榐僾儘僷僥傿偑晄惓偱偡. 徚嫀偟傑偟偨!"
 
-msgid "Unknown option"
-msgstr "枹抦偺僆僾僔儑儞偱偡"
+msgid "Unknown option argument"
+msgstr "枹抦偺僆僾僔儑儞堷悢偱偡"
 
 msgid "Too many edit arguments"
 msgstr "曇廤堷悢偑懡夁偓傑偡"
@@ -2595,8 +2639,8 @@ msgstr "
 msgid "Argument missing after"
 msgstr "堷悢偑偁傝傑偣傫"
 
-msgid "Garbage after option"
-msgstr "僆僾僔儑儞偺屻偵僑儈偑偁傝傑偡"
+msgid "Garbage after option argument"
+msgstr "僆僾僔儑儞堷悢偺屻偵僑儈偑偁傝傑偡"
 
 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 屄偺僼傽僀儖偑曇廤傪峊偊偰偄傑偡\n"
+
 msgid "This Vim was not compiled with the diff feature."
 msgstr "偙偺Vim偵偼diff婡擻\偑偁傝傑偣傫(僐儞僷僀儖帪愝掕)."
 
@@ -2627,10 +2675,6 @@ msgstr "Vim: 
 msgid "Vim: Warning: Input is not from a terminal\n"
 msgstr "Vim: 寈崘: 抂枛偐傜偺擖椡偱偼偁傝傑偣傫\n"
 
-#, c-format
-msgid "%d files to edit\n"
-msgstr "%d 屄偺僼傽僀儖偑曇廤傪峊偊偰偄傑偡\n"
-
 #. just in case..
 msgid "pre-vimrc command line"
 msgstr "vimrc慜偺僐儅儞僪儔僀儞"
@@ -2964,25 +3008,6 @@ msgstr "--role <role>\t
 msgid "--socketid <xid>\tOpen Vim inside another GTK widget"
 msgstr "--socketid <xid>\t堎側傞GTK widget偱Vim傪奐偔"
 
-msgid ""
-"\n"
-"Arguments recognised by kvim (KDE version):\n"
-msgstr ""
-"\n"
-"kvim偵傛偭偰夝庍偝傟傞堷悢(KDE僶乕僕儑儞):\n"
-
-msgid "-black\t\tUse reverse video"
-msgstr "-black\t\t斀揮夋柺傪巊梡偡傞"
-
-msgid "-tip\t\t\tDisplay the tip dialog on startup"
-msgstr "-tip\t\t\t婲摦帪偵僠僢僾僟僀傾儘僌傪昞\帵偡傞"
-
-msgid "-notip\t\tDisable the tip dialog"
-msgstr "-notip\t\t僠僢僾僟僀傾儘僌傪柍岠偵偡傞"
-
-msgid "--display <display>\tRun vim on <display>"
-msgstr "--display <display>\t<display> 偱vim傪幚峴偡傞"
-
 msgid "-P <parent title>\tOpen Vim inside parent application"
 msgstr "-P <恊偺僞僀僩儖>\tVim傪恊傾僾儕働乕僔儑儞偺拞偱婲摦偡傞"
 
@@ -3404,6 +3429,10 @@ msgstr "
 msgid "E317: pointer block id wrong 2"
 msgstr "E317: 億僀儞僞僽儘僢僋偺ID偑娫堘偭偰偄傑偡 2"
 
+#, c-format
+msgid "E773: Symlink loop for \"%s\""
+msgstr "E773: \"%s\" 偺僔儞儃儕僢僋儕儞僋偑儖乕僾偵側偭偰偄傑偡"
+
 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 ""
 "撉崬愱梡偱奐偔(&O)\n"
 "偲偵偐偔曇廤偡傞(&E)\n"
 "暅妶偝偣傞(&R)ecover\n"
+"嶍彍偡傞(&D)\n"
 "廔椆偡傞(&Q)\n"
-"拞巭偡傞(&A)\n"
-"徚嫀偡傞(&D)"
+"拞巭偡傞(&A)"
 
 msgid "E326: Too many swap files found"
 msgstr "E326: 僗儚僢僾僼傽僀儖偑懡悢尒偮偐傝傑偟偨"
@@ -3512,8 +3541,9 @@ msgstr "E327: 
 msgid "E328: Menu only exists in another mode"
 msgstr "E328: 儊僯儏乕偼懠偺儌乕僪偵偩偗偁傝傑偡"
 
-msgid "E329: No menu of that name"
-msgstr "E329: 偦偺柤慜偺儊僯儏乕偼偁傝傑偣傫"
+#, c-format
+msgid "E329: No menu \"%s\""
+msgstr "E329: \"%s\" 偲偄偆儊僯儏乕偼偁傝傑偣傫"
 
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: 儊僯儏乕僷僗偼僒僽儊僯儏乕傪惗偠傞傋偒偱偼偁傝傑偣傫"
@@ -3561,9 +3591,6 @@ msgstr "%s 
 msgid "line %4ld:"
 msgstr "峴 %4ld:"
 
-msgid "[string too long]"
-msgstr "[暥帤楍偑挿夁偓傑偡]"
-
 #, c-format
 msgid "E354: Invalid register name: '%s'"
 msgstr "E354: 柍岠側儗僕僗僞柤: '%s'"
@@ -3574,20 +3601,18 @@ msgstr "
 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 "懕偗傞偵偼ENTER傪墴偡偐僐儅儞僪傪擖椡偟偰偔偩偝偄"
 
+#, c-format
+msgid "%s line %ld"
+msgstr "%s 峴 %ld"
+
 msgid "-- More --"
 msgstr "-- 宲懕 --"
 
-msgid " (RET/BS: line, SPACE/b: page, d/u: half page, q: quit)"
-msgstr " (RET/BS: 峴憲傝, SPACE/b: 儁乕僕憲傝, d/u: 敿儁乕僕憲傝, q: 廔椆)"
-
-msgid " (RET: line, SPACE: page, d: half page, q: quit)"
-msgstr " (RET: 峴憲傝, SPACE: 儁乕僕憲傝, d: 敿儁乕僕憲傝, q: 廔椆)"
+msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit "
+msgstr " SPACE/d/j: 夋柺/儁乕僕/峴 壓, b/uk: 忋, q: 廔椆"
 
 msgid "Question"
 msgstr "幙栤"
@@ -3625,9 +3650,21 @@ msgstr "
 msgid "E338: Sorry, no file browser in console mode"
 msgstr "E338: 僐儞僜\乕儖儌乕僪偱偼僼傽僀儖僽儔僂僓傪巊偊傑偣傫, 偛傔傫側偝偄"
 
+msgid "E766: Insufficient arguments for printf()"
+msgstr "E766: printf() 偺堷悢偑晄廫\暘偱偡"
+
+msgid "E767: Too many arguments to printf()"
+msgstr "E767: pirntf() 偺堷悢偑懡夁偓傑偡"
+
 msgid "W10: Warning: Changing a readonly file"
 msgstr "W10: 寈崘: 撉崬愱梡僼傽僀儖傪曄峏偟傑偡"
 
+msgid "Type number or click with mouse (<Enter> cancels): "
+msgstr "悢抣傪擖椡偡傞偐儅僂僗傪僋儕僢僋偟偰偔偩偝偄 (<Enter> 偱僉儍儞僙儖): "
+
+msgid "Choice number (<Enter> cancels): "
+msgstr "斣崋傪慖戰偟偰偔偩偝偄 (<Enter> 偱僉儍儞僙儖): "
+
 msgid "1 more line"
 msgstr "1 峴 捛壛偟傑偟偨"
 
@@ -3737,15 +3774,6 @@ msgstr "E346: cdpath
 msgid "E347: No more file \"%s\" found in path"
 msgstr "E347: 僷僗偵偼偙傟埲忋 \"%s\" 偲偄偆僼傽僀儖偑偁傝傑偣傫"
 
-msgid "E550: Missing colon"
-msgstr "E550: 僐儘儞偑偁傝傑偣傫"
-
-msgid "E551: Illegal component"
-msgstr "E551: 晄惓側峔\暥梫慺偱偡"
-
-msgid "E552: digit expected"
-msgstr "E552: 悢抣偑昁梫偱偡"
-
 #. Get here when the server can't be found.
 msgid "Cannot connect to Netbeans #2"
 msgstr "Netbeans #2 偵愙懕偱偒傑偣傫"
@@ -3768,6 +3796,12 @@ msgstr "E658: 
 msgid "E505: "
 msgstr "E505: "
 
+msgid "E774: 'operatorfunc' is empty"
+msgstr "E774: 'operatorfunc' 僆僾僔儑儞偑嬻偱偡"
+
+msgid "E775: Eval feature not available"
+msgstr "E775: 幃昡壙婡擻\偑柍岠偵側偭偰偄傑偡"
+
 msgid "Warning: terminal cannot highlight"
 msgstr "寈崘: 巊梡偟偰偄傞抂枛偼僴僀儔僀僩偱偒傑偣傫"
 
@@ -3837,9 +3871,16 @@ msgstr "%ld 
 msgid "freeing %ld lines"
 msgstr "%ld 峴傪奐曻拞"
 
+msgid "block of 1 line yanked"
+msgstr "1 峴偺僽儘僢僋偑儎儞僋偝傟傑偟偨"
+
 msgid "1 line yanked"
 msgstr "1 峴偑儎儞僋偝傟傑偟偨"
 
+#, c-format
+msgid "block of %ld lines yanked"
+msgstr "%ld 峴偺僽儘僢僋偑儎儞僋偝傟傑偟偨"
+
 #, c-format
 msgid "%ld lines yanked"
 msgstr "%ld 峴偑儎儞僋偝傟傑偟偨"
@@ -3914,13 +3955,6 @@ msgstr "E519: 
 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: = 偺屻偵偼悢帤偑昁梫偱偡"
 
@@ -4159,14 +4193,6 @@ msgstr "Vim: 
 msgid "Opening the X display took %ld msec"
 msgstr "X僒乕僶傊偺愙懕偵 %ld 儈儕昩偐偐傝傑偟偨"
 
-#. KDE sometimes produces X error that we want to ignore
-msgid ""
-"\n"
-"Vim: Got X error but we continue...\n"
-msgstr ""
-"\n"
-"Vim: X 偺僄儔乕傪専弌偟傑偟偨偑懕峴偟傑偡...\n"
-
 msgid ""
 "\n"
 "Vim: Got X error\n"
@@ -4336,10 +4362,6 @@ msgstr "
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: 'buftype' 僆僾僔儑儞偑愝掕偝傟偰偄傞偺偱彂崬傒傑偣傫"
 
-#
-msgid "E682: Invalid search pattern or delimiter"
-msgstr "E682: 専嶕僷僞乕儞偐嬫愗傝婰崋偑晄惓偱偡"
-
 msgid "E683: File name missing or invalid pattern"
 msgstr "E683: 僼傽僀儖柤偑柍偄偐柍岠側僷僞乕儞偱偡"
 
@@ -4350,6 +4372,9 @@ msgstr "
 msgid "E681: Buffer is not loaded"
 msgstr "E681: 僶僢僼傽偼撉傒崬傑傟傑偣傫偱偟偨"
 
+msgid "E777: String or List expected"
+msgstr "E777: 暥帤楍偐儕僗僩偑昁梫偱偡"
+
 msgid "E339: Pattern too long"
 msgstr "E339: 僷僞乕儞偑挿夁偓傑偡"
 
@@ -4429,6 +4454,11 @@ msgstr "E678: %s%%[dxouU] 
 msgid "E71: Invalid character after %s%%"
 msgstr "E71: %s%% 偺屻偵晄惓側暥帤偑偁傝傑偟偨"
 
+#
+#, c-format
+msgid "E769: Missing ] after %s["
+msgstr "E769: %s[ 偺屻偵 ] 偑偁傝傑偣傫"
+
 #, c-format
 msgid "E554: Syntax error in %s{...}"
 msgstr "E554: %s{...} 撪偵暥朄僄儔乕偑偁傝傑偡"
@@ -4494,12 +4524,6 @@ msgstr " 
 msgid "recording"
 msgstr "婰榐拞"
 
-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: 僷僞乕儞傪傒偮偗傜傟傑偣傫"
 
+msgid "E759: Format error in spell file"
+msgstr "E759: 僗儁儖僼傽僀儖偺彂幃僄儔乕偱偡"
+
+msgid "E758: Truncated spell file"
+msgstr "E758: 僗儁儖僼傽僀儖偑愗庢傜傟偰偄傞傛偆偱偡"
+
+#, c-format
+msgid "Trailing text in %s line %d: %s"
+msgstr "%s (%d 峴栚) 偵懕偔僥僉僗僩: %s"
+
+#, c-format
+msgid "Affix name too long in %s line %d: %s"
+msgstr "%s (%d 峴栚) 偺 affix 柤偑挿夁偓傑偡: %s"
+
+msgid "E761: Format error in affix file FOL, LOW or UPP"
+msgstr ""
+"E761: affix僼傽僀儖偺 FOL, LOW 傕偟偔偼 UPP 偺僼僅乕儅僢僩偵僄儔乕偑偁傝傑偡"
+
+msgid "E762: Character in FOL, LOW or UPP is out of range"
+msgstr "E762: FOL, LOW 傕偟偔偼 UPP 偺暥帤偑斖埻奜偱偡"
+
+msgid "Compressing word tree..."
+msgstr "扨岅僣儕乕傪埑弅偟偰偄傑偡..."
+
+msgid "E756: Spell checking is not enabled"
+msgstr "E756: 偡傌偔僠僃僢僋偼柍岠壔偝傟偰偄傑偡"
+
+#, c-format
+msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""
+msgstr ""
+"寈崘: 扨岅儕僗僩 \"%s.%s.spl\" 偍傛傃 \"%s.ascii.spl\" 偼尒偮偐傝傑偣傫"
+
+#, c-format
+msgid "Reading spell file \"%s\""
+msgstr "僗儁儖僼傽僀儖 \"%s\" 傪撉崬拞"
+
+msgid "E757: This does not look like a spell file"
+msgstr "E757: 僗儁儖僼傽僀儖偱偼側偄傛偆偱偡"
+
+msgid "E771: Old spell file, needs to be updated"
+msgstr "E771: 屆偄僗儁儖僼傽僀儖側偺偱, 傾僢僾僨乕僩偟偰偔偩偝偄"
+
+msgid "E772: Spell file is for newer version of Vim"
+msgstr "E772: 傛傝怴偟偄僶乕僕儑儞偺 Vim 梡偺僗儁儖僼傽僀儖偱偡"
+
+msgid "E770: Unsupported section in spell file"
+msgstr "E770: 僗儁儖僼傽僀儖偵僒億乕僩偟偰偄側偄僙僋僔儑儞偑偁傝傑偡"
+
+#, c-format
+msgid "Warning: region %s not supported"
+msgstr "寈崘9: %s 偲偄偆斖埻偼僒億乕僩偝傟偰偄傑偣傫"
+
+#, c-format
+msgid "Reading affix file %s ..."
+msgstr "affix 僼傽僀儖 %s 傪撉崬拞..."
+
+#, c-format
+msgid "Conversion failure for word in %s line %d: %s"
+msgstr "%s (%d 峴栚) 偺扨岅傪曄姺偱偒傑偣傫偱偟偨: %s"
+
+#, c-format
+msgid "Conversion in %s not supported: from %s to %s"
+msgstr "%s 撪偺師偺曄姺偼僒億乕僩偝傟偰偄傑偣傫: %s 偐傜 %s 傊"
+
+#, c-format
+msgid "Conversion in %s not supported"
+msgstr "%s 撪偺曄姺偼僒億乕僩偝傟偰偄傑偣傫"
+
+#, c-format
+msgid "Invalid value for FLAG in %s line %d: %s"
+msgstr "%s 撪偺 %d 峴栚偺 FLAG 偵柍岠側抣偑偁傝傑偡: %s"
+
+#, c-format
+msgid "FLAG after using flags in %s line %d: %s"
+msgstr "%s 撪偺 %d 峴栚偵僼儔僌偺擇廳巊梡偑偁傝傑偡: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDMAX value in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 COMPOUNDMAX 偺抣偵岆傝偑偁傝傑偡: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDMIN value in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 COMPOUNDMIN 偺抣偵岆傝偑偁傝傑偡: %s"
+
+#, c-format
+msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 COMPOUNDSYLMAX 偺抣偵岆傝偑偁傝傑偡: %s"
+
+#, c-format
+msgid "Different combining flag in continued affix block in %s line %d: %s"
+msgstr ""
+"%s 偺 %d 峴栚偺 楢懕 affix 僽儘僢僋偺僼儔僌偺慻崌偣偵堘偄偑偁傝傑偡: %s"
+
+#, c-format
+msgid "Duplicate affix in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偵 廳暋偟偨 affix 傪専弌偟傑偟偨: %s"
+
+#, c-format
+msgid ""
+"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND in %s line %d: "
+"%s"
+msgstr ""
+"%s 偺 %d 峴栚偺 affix 偼 BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND "
+"偵巊梡偟偰偔偩偝偄: %s"
+
+#, c-format
+msgid "Expected Y or N in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偱偼 Y 偐 N 偑昁梫偱偡: %s"
+
+#, c-format
+msgid "Broken condition in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 忦審偼夡傟偰偄傑偡: %s"
+
+#, c-format
+msgid "Expected REP(SAL) count in %s line %d"
+msgstr "%s 偺 %d 峴栚偵偼 REP(SAL) 偺夞悢偑昁梫偱偡"
+
+#, c-format
+msgid "Expected MAP count in %s line %d"
+msgstr "%s 偺 %d 峴栚偵偼 MAP 偺夞悢偑昁梫偱偡"
+
+#, c-format
+msgid "Duplicate character in MAP in %s line %d"
+msgstr "%s 偺 %d 峴栚偺 MAP 偵廳暋偟偨暥帤偑偁傝傑偡"
+
+#, c-format
+msgid "Unrecognized or duplicate item in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偵 擣幆偱偒側偄偐廳暋偟偨崁栚偑偁傝傑偡: %s"
+
+#, c-format
+msgid "Missing FOL/LOW/UPP line in %s"
+msgstr "%d 峴栚偵 FOL/LOW/UPP 偑偁傝傑偣傫"
+
+msgid "COMPOUNDSYLMAX used without SYLLABLE"
+msgstr "SYLLABLE 偑巜掕偝傟側偄 COMPOUNDSYLMAX"
+
+msgid "Too many postponed prefixes"
+msgstr "抶墑屻抲巕偑懡偡偓傑偡"
+
+msgid "Too many compound flags"
+msgstr "暋崌僼儔僌偑懡夁偓傑偡"
+
+msgid "Too many posponed prefixes and/or compound flags"
+msgstr "抶墑屻抲巕 偲/傕偟偔偼 暋崌僼儔僌偑懡偡偓傑偡"
+
+#, c-format
+msgid "Missing SOFO%s line in %s"
+msgstr "SOFO%s 峴偑 %s 偵偁傝傑偣傫"
+
+#, c-format
+msgid "Both SAL and SOFO lines in %s"
+msgstr "SAL峴 偲 SOFO峴 偑 %s 偱椉曽巜掕偝傟偰偄傑偡"
+
+#, c-format
+msgid "Flag is not a number in %s line %d: %s"
+msgstr "%s 偺 %d 峴偺 僼儔僌偑悢抣偱偼偁傝傑偣傫: %s"
+
+#, c-format
+msgid "Illegal flag in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 僼儔僌偑晄惓偱偡: %s"
+
+#, c-format
+msgid "%s value differs from what is used in another .aff file"
+msgstr "抣 %s 偼懠偺 .aff 僼傽僀儖偱巊梡偝傟偨偺偲堎側傝傑偡"
+
+#, c-format
+msgid "Reading dictionary file %s ..."
+msgstr "帿彂僼傽僀儖 %s 傪僗僉儍儞拞..."
+
+#, c-format
+msgid "E760: No word count in %s"
+msgstr "E760: %s 偵偼扨岅悢偑偁傝傑偣傫"
+
+#, c-format
+msgid "line %6d, word %6d - %s"
+msgstr "峴 %6d, 扨岅 %6d - %s"
+
+#, c-format
+msgid "Duplicate word in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偱 廳暋扨岅偑傒偮偐傝傑偟偨: %s"
+
+#, c-format
+msgid "First duplicate word in %s line %d: %s"
+msgstr "廳暋偺偆偪嵟弶偺扨岅偼 %s 偺 %d 峴栚偱偡: %s"
+
+#, c-format
+msgid "%d duplicate word(s) in %s"
+msgstr "%d 屄偺扨岅偑尒偮偐傝傑偟偨 (%s 撪)"
+
+#, c-format
+msgid "Ignored %d word(s) with non-ASCII characters in %s"
+msgstr "旕ASCII暥帤傪娷傓 %d 屄偺扨岅傪柍帇偟傑偟偨 (%s 撪)"
+
+#, c-format
+msgid "Reading word file %s ..."
+msgstr "昗弨擖椡偐傜撉崬傒拞..."
+
+#, c-format
+msgid "Duplicate /encoding= line ignored in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 廳暋偟偨 /encoding= 峴傪柍帇偟傑偟偨: %s"
+
+#, c-format
+msgid "/encoding= line after word ignored in %s line %d: %s"
+msgstr "亾s 偺 %d 峴栚偺 扨岅偺屻偺 /encoding= 峴傪柍帇偟傑偟偨: %s"
+
+#, c-format
+msgid "Duplicate /regions= line ignored in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 廳暋偟偨 /regions= 峴傪柍帇偟傑偟偨: %s"
+
+#, c-format
+msgid "Too many regions in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚, 斖埻巜掕偑懡偡偓傑偡: %s"
+
+#, c-format
+msgid "/ line ignored in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚偺 廳暋偟偨 / 峴傪柍帇偟傑偟偨: %s"
+
+#, c-format
+msgid "Invalid region nr in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚 柍岠側 nr 椞堟偱偡: %s"
+
+#, c-format
+msgid "Unrecognized flags in %s line %d: %s"
+msgstr "%s 偺 %d 峴栚 擣幆晄擻\側僼儔僌偱偡: %s"
+
+#, c-format
+msgid "Ignored %d words with non-ASCII characters"
+msgstr "旕ASCII暥帤傪娷傓 %d 屄偺扨岅傪柍帇偟傑偟偨"
+
+msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
+msgstr "僲乕僪 %d 屄(慡 %d 屄拞) 傪埑弅偟傑偟偨; 巆傝 %d (%d%%)"
+
+msgid "Reading back spell file..."
+msgstr "僗儁儖僼傽僀儖傪媡撉崬拞"
+
+#.
+#. * Go through the trie of good words, soundfold each word and add it to
+#. * the soundfold trie.
+#.
+msgid "Performing soundfolding..."
+msgstr "壒惡忯崬傒傪幚峴拞..."
+
+#, c-format
+msgid "Number of words after soundfolding: %ld"
+msgstr "壒惡忯崬傒屻偺憤扨岅悢: %ld"
+
+#, c-format
+msgid "Total number of words: %d"
+msgstr "憤扨岅悢: %d"
+
+#, c-format
+msgid "Writing suggestion file %s ..."
+msgstr "廋惓岓曗僼傽僀儖 \"%s\" 傪彂崬傒拞..."
+
+#, c-format
+msgid "Estimated runtime memory use: %d bytes"
+msgstr "悇掕儊儌儕巊梡検: %d 僶僀僩"
+
+msgid "E751: Output file name must not have region name"
+msgstr "E751: 弌椡僼傽僀儖柤偵偼斖埻柤傪娷傔傜傟傑偣傫"
+
+msgid "E754: Only up to 8 regions supported"
+msgstr "E754: 斖埻偼 8 屄傑偱偟偐僒億乕僩偝傟偰偄傑偣傫"
+
+#, c-format
+msgid "E755: Invalid region in %s"
+msgstr "E755: 柍岠側斖埻偱偡: %s"
+
+msgid "Warning: both compounding and NOBREAK specified"
+msgstr "寈崘: 暋崌僼儔僌偲 NOBREAK 偑椉曽偲傕巜掕偝傟傑偟偨"
+
+#, c-format
+msgid "Writing spell file %s ..."
+msgstr "僗儁儖僼傽僀儖 %s 傪彂崬傒拞..."
+
+msgid "Done!"
+msgstr "幚峴偟傑偟偨!"
+
+#, c-format
+msgid "E765: 'spellfile' does not have %ld entries"
+msgstr "E765: 'spellfile' 偵偼 %ld 屄偺僄儞僩儕偼偁傝傑偣傫"
+
+msgid "E763: Word characters differ between spell files"
+msgstr "E763: 扨岅偺暥帤偑僗儁儖僼傽僀儖偲堎側傝傑偡"
+
+msgid "Sorry, no suggestions"
+msgstr "巆擮偱偡偑, 廋惓岓曗偼偁傝傑偣傫"
+
+#, c-format
+msgid "Sorry, only %ld suggestions"
+msgstr "巆擮偱偡偑, 廋惓岓曗偼 %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: 僗儁儖抲姺偑傑偩幚峴偝傟偰偄傑偣傫"
+
+#, 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 僼傽僀儖偱偼側偄傛偆偱偡: %s"
+
+#, c-format
+msgid "E779: Old .sug file, needs to be updated: %s"
+msgstr "E779: 屆偄 .sug 僼傽僀儖側偺偱, 傾僢僾僨乕僩偟偰偔偩偝偄"
+
+#, c-format
+msgid "E780: .sug file is for newer version of Vim: %s"
+msgstr "E780: 傛傝怴偟偄僶乕僕儑儞偺 Vim 梡偺 .sug 僼傽僀儖偱偡: %s"
+
+#, c-format
+msgid "E781: .sug file doesn't match .spl file: %s"
+msgstr "E781: .sug 僼傽僀儖偑 .spl 僼傽僀儖偲堦抳偟傑偣傫: %s"
+
+#, c-format
+msgid "E782: error while reading .sug file: %s"
+msgstr "E782: .sug 僼傽僀儖偺撉崬拞偵僄儔乕偑敪惗偟傑偟偨: %s"
+
+#. This should have been checked when generating the .spl
+#. * file.
+msgid "E783: duplicate char in MAP entry"
+msgstr "E783: MAP 僄儞僩儕偵廳暋暥帤偑懚嵼偟傑偡"
+
 #, c-format
 msgid "E390: Illegal argument: %s"
 msgstr "E390: 晄惓側堷悢偱偡: %s"
@@ -4763,13 +5120,6 @@ msgstr "  # pri kind tag"
 msgid "file\n"
 msgstr "僼傽僀儖\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 "慖戰偡傞斣崋傪擖椡偟偰偔偩偝偄 (<CR>偱拞巭): "
-
 msgid "E427: There is only one matching tag"
 msgstr "E427: 奩摉僞僌偑1偮偩偗偟偐偁傝傑偣傫"
 
@@ -5060,9 +5410,6 @@ msgstr "with Cocoa GUI."
 msgid "with (classic) GUI."
 msgstr "with (僋儔僔僢僋) GUI."
 
-msgid "with KDE GUI."
-msgstr "with KDE GUI."
-
 msgid "  Features included (+) or not (-):\n"
 msgstr "  婡擻\偺堦棗 桳岠(+)/柍岠(-)\n"
 
@@ -5439,6 +5786,9 @@ msgstr "E459: 
 msgid "E42: No Errors"
 msgstr "E42: 僄儔乕偼偁傝傑偣傫"
 
+msgid "E776: No location list"
+msgstr "E776: 応強儕僗僩偼偁傝傑偣傫"
+
 msgid "E43: Damaged match string"
 msgstr "E43: 奩摉暥帤楍偑攋懝偟偰偄傑偡"
 
@@ -5532,11 +5882,25 @@ msgstr "E744: NetBeans 
 msgid "E685: Internal error: %s"
 msgstr "E685: 撪晹僄儔乕偱偡: %s"
 
-msgid "E361: Crash intercepted; regexp too complex?"
-msgstr "E361: 僋儔僢僔儏偵傛傝拞抐; 惓婯昞\尰偑暋嶨夁偓傞偐傕?"
-
-msgid "E363: pattern caused out-of-stack error"
-msgstr "E363: 僷僞乕儞偵傛傞僗僞僢僋晄懌僄儔乕偱偡"
+msgid "E363: pattern uses more memory than 'maxmempattern'"
+msgstr "E363: 僷僞乕儞偑 'maxmempattern' 埲忋偺儊儌儕傪巊梡偟傑偡"
 
 msgid "E749: empty buffer"
 msgstr "E749: 僶僢僼傽偑嬻偱偡"
+
+#
+msgid "E682: Invalid search pattern or delimiter"
+msgstr "E682: 専嶕僷僞乕儞偐嬫愗傝婰崋偑晄惓偱偡"
+
+msgid "E139: File is loaded in another buffer"
+msgstr "E139: 摨偠柤慜偺僼傽僀儖偑懠偺僶僢僼傽偱撉崬傑傟偰偄傑偡"
+
+#, c-format
+msgid "E764: Option '%s' is not set"
+msgstr "E764: 僆僾僔儑儞 '%s' 偼愝掕偝傟偰偄傑偣傫"
+
+msgid "search hit TOP, continuing at BOTTOM"
+msgstr "忋傑偱専嶕偟偨偺偱壓偵栠傝傑偡"
+
+msgid "search hit BOTTOM, continuing at TOP"
+msgstr "壓傑偱専嶕偟偨偺偱忋偵栠傝傑偡"
diff --git a/src/popupmenu.c b/src/popupmenu.c
index a129d146ab815c9280f11225d3681dd56e368fee..7024e5556031b57461e4ec1b36aa96af50418e12 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -84,7 +84,7 @@ pum_display(array, size, selected, row, height, col)
     }
 
     /* 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. */
diff --git a/src/quickfix.c b/src/quickfix.c
index ca6cc4080172154290bacfa7d497b4c6b2a82561..7136b7eff1aa945d27e11534d8e60d0c1385bb93 100644
--- 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);
     }
 }
 
diff --git a/src/version.h b/src/version.h
index 48ae412a162926af2a1d7b9f0e3034b008d10f99..5d6c7f962db7a67a981143bcb29a8a78d3e82077 100644
--- 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 "