diff src/edit.c @ 648:9032e4668296 v7.0189

updated for version 7.0189
author vimboss
date Mon, 30 Jan 2006 00:14:18 +0000
parents e4fa26ce8769
children b112ec5c73f0
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -111,8 +111,7 @@ static void ins_compl_add_matches __ARGS
 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 void ins_compl_show_pum __ARGS((void));
+static int  pum_wanted __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));
@@ -2193,7 +2192,7 @@ pum_wanted()
 /*
  * Show the popup menu for the list of matches.
  */
-    static void
+    void
 ins_compl_show_pum()
 {
     compl_T     *compl;
@@ -2266,13 +2265,14 @@ ins_compl_show_pum()
 	pum_display(compl_match_array, compl_match_arraysize, cur,
 		  curwin->w_cline_row + W_WINROW(curwin),
 		  curwin->w_cline_height,
-		  curwin->w_wcol + W_WINCOL(curwin));
+		  curwin->w_wcol + W_WINCOL(curwin) - curwin->w_leftcol);
 	curwin->w_cursor.col = col;
     }
 }
 
 #define DICT_FIRST	(1)	/* use just first element in "dict" */
 #define DICT_EXACT	(2)	/* "dict" is the exact name of a file */
+
 /*
  * Add any identifiers that match the given pattern to the list of
  * completions.
@@ -2842,6 +2842,8 @@ expand_by_function(type, base, matches)
 	    ((char_u **)ga.ga_data)[ga.ga_len] = vim_strsave(p);
 	    ++ga.ga_len;
 	}
+	else if (did_emsg)
+	    break;
     }
 
     list_unref(matchlist);
@@ -3367,9 +3369,6 @@ ins_compl_next(allow_get_expansion, coun
 	/* may undisplay the popup menu first */
 	ins_compl_upd_pum();
 
-	/* Display the current match. */
-	update_screen(0);
-
 	/* display the updated popup menu */
 	ins_compl_show_pum();
 
@@ -7216,7 +7215,7 @@ ins_bs(c, mode, inserted_space_p)
 	 */
 	if (	   mode == BACKSPACE_CHAR
 		&& ((p_sta && in_indent)
-		    || (curbuf->b_p_sts
+		    || (curbuf->b_p_sts != 0
 			&& (*(ml_get_cursor() - 1) == TAB
 			    || (*(ml_get_cursor() - 1) == ' '
 				&& (!*inserted_space_p
@@ -7228,7 +7227,7 @@ ins_bs(c, mode, inserted_space_p)
 	    int		extra = 0;
 
 	    *inserted_space_p = FALSE;
-	    if (p_sta)
+	    if (p_sta && in_indent)
 		ts = curbuf->b_p_sw;
 	    else
 		ts = curbuf->b_p_sts;