1
0
forked from aniani/vim

updated for version 7.0217

This commit is contained in:
Bram Moolenaar
2006-03-07 22:38:47 +00:00
parent a203182302
commit 1f35bf9cab
22 changed files with 283 additions and 180 deletions

View File

@@ -111,7 +111,7 @@ static int compl_matches = 0;
static char_u *compl_pattern = NULL;
static int compl_direction = FORWARD;
static int compl_shows_dir = FORWARD;
static int compl_pending = FALSE;
static int compl_pending = 0; /* > 1 for postponed CTRL-N */
static pos_T compl_startpos;
static colnr_T compl_col = 0; /* column where the text starts
* that is being completed */
@@ -2466,6 +2466,12 @@ ins_compl_show_pum()
if (compl == compl_shown_match)
{
did_find_shown_match = TRUE;
/* When the original text is the shown match don't set
* compl_shown_match. */
if (compl->cp_flags & ORIGINAL_TEXT)
shown_match_ok = TRUE;
if (!shown_match_ok && shown_compl != NULL)
{
/* The shown match isn't displayed, set it to the
@@ -3837,14 +3843,14 @@ ins_compl_next(allow_get_expansion, count, insert_match)
/* Delete old text to be replaced */
ins_compl_delete();
compl_pending = FALSE;
/* Repeat this for when <PageUp> or <PageDown> is typed. But don't wrap
* around. */
while (--todo >= 0)
{
if (compl_shows_dir == FORWARD && compl_shown_match->cp_next != NULL)
{
if (compl_pending != 0)
--compl_pending;
compl_shown_match = compl_shown_match->cp_next;
found_end = (compl_first_match != NULL
&& (compl_shown_match->cp_next == compl_first_match
@@ -3853,18 +3859,23 @@ ins_compl_next(allow_get_expansion, count, insert_match)
else if (compl_shows_dir == BACKWARD
&& compl_shown_match->cp_prev != NULL)
{
if (compl_pending != 0)
++compl_pending;
found_end = (compl_shown_match == compl_first_match);
compl_shown_match = compl_shown_match->cp_prev;
found_end |= (compl_shown_match == compl_first_match);
}
else
{
compl_pending = TRUE;
if (compl_shows_dir == BACKWARD)
--compl_pending;
else
++compl_pending;
if (!allow_get_expansion)
return -1;
num_matches = ins_compl_get_exp(&compl_startpos);
if (compl_pending && compl_direction == compl_shows_dir)
if (compl_pending != 0 && compl_direction == compl_shows_dir)
compl_shown_match = compl_curr_match;
found_end = FALSE;
}
@@ -3939,7 +3950,7 @@ ins_compl_next(allow_get_expansion, count, insert_match)
/*
* Call this while finding completions, to check whether the user has hit a key
* that should change the currently displayed completion, or exit completion
* mode. Also, when compl_pending is TRUE, show a completion as soon as
* mode. Also, when compl_pending is not zero, show a completion as soon as
* possible. -- webb
* "frequency" specifies out of how many calls we actually check.
*/
@@ -3976,8 +3987,9 @@ ins_compl_check_keys(frequency)
else if (c != Ctrl_R)
compl_interrupted = TRUE;
}
if (compl_pending && !got_int)
(void)ins_compl_next(FALSE, 1, TRUE);
if (compl_pending != 0 && !got_int)
(void)ins_compl_next(FALSE, compl_pending > 0
? compl_pending : -compl_pending, TRUE);
}
/*
@@ -4081,6 +4093,7 @@ ins_complete(c)
line = ml_get(curwin->w_cursor.lnum);
curs_col = curwin->w_cursor.col;
compl_pending = 0;
/* if this same ctrl_x_mode has been interrupted use the text from
* "compl_startpos" to the cursor as a pattern to add a new word