155 lines
4.5 KiB
Plaintext
155 lines
4.5 KiB
Plaintext
|
To: vim-dev@vim.org
|
||
|
Subject: Patch 7.0.013
|
||
|
Fcc: outbox
|
||
|
From: Bram Moolenaar <Bram@moolenaar.net>
|
||
|
Mime-Version: 1.0
|
||
|
Content-Type: text/plain; charset=ISO-8859-1
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
------------
|
||
|
|
||
|
Patch 7.0.013
|
||
|
Problem: Insert mode completion: using CTRL-L to add an extra character
|
||
|
also deselects the current match, making it impossible to use
|
||
|
CTRL-L a second time.
|
||
|
Solution: Keep the current match. Also make CTRL-L work at the original
|
||
|
text, using the first displayed match.
|
||
|
Files: src/edit.c
|
||
|
|
||
|
|
||
|
*** ../vim-7.0.012/src/edit.c Wed May 10 15:22:49 2006
|
||
|
--- src/edit.c Thu May 11 10:38:54 2006
|
||
|
***************
|
||
|
*** 751,757 ****
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
! /* Pressing CTRL-Y selects the current match. Shen
|
||
|
* compl_enter_selects is set the Enter key does the same. */
|
||
|
if (c == Ctrl_Y || (compl_enter_selects
|
||
|
&& (c == CAR || c == K_KENTER || c == NL)))
|
||
|
--- 751,757 ----
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
! /* Pressing CTRL-Y selects the current match. When
|
||
|
* compl_enter_selects is set the Enter key does the same. */
|
||
|
if (c == Ctrl_Y || (compl_enter_selects
|
||
|
&& (c == CAR || c == K_KENTER || c == NL)))
|
||
|
***************
|
||
|
*** 3046,3052 ****
|
||
|
ins_compl_delete();
|
||
|
ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
|
||
|
compl_used_match = FALSE;
|
||
|
- compl_enter_selects = FALSE;
|
||
|
|
||
|
if (compl_started)
|
||
|
ins_compl_set_original_text(compl_leader);
|
||
|
--- 3046,3051 ----
|
||
|
***************
|
||
|
*** 3076,3081 ****
|
||
|
--- 3075,3081 ----
|
||
|
compl_restarting = FALSE;
|
||
|
}
|
||
|
|
||
|
+ #if 0 /* disabled, made CTRL-L, BS and typing char jump to original text. */
|
||
|
if (!compl_used_match)
|
||
|
{
|
||
|
/* Go to the original text, since none of the matches is inserted. */
|
||
|
***************
|
||
|
*** 3087,3092 ****
|
||
|
--- 3087,3094 ----
|
||
|
compl_curr_match = compl_shown_match;
|
||
|
compl_shows_dir = compl_direction;
|
||
|
}
|
||
|
+ #endif
|
||
|
+ compl_enter_selects = !compl_used_match;
|
||
|
|
||
|
/* Show the popup menu with a different set of matches. */
|
||
|
ins_compl_show_pum();
|
||
|
***************
|
||
|
*** 3175,3184 ****
|
||
|
char_u *p;
|
||
|
int len = curwin->w_cursor.col - compl_col;
|
||
|
int c;
|
||
|
|
||
|
p = compl_shown_match->cp_str;
|
||
|
if ((int)STRLEN(p) <= len) /* the match is too short */
|
||
|
! return;
|
||
|
p += len;
|
||
|
#ifdef FEAT_MBYTE
|
||
|
c = mb_ptr2char(p);
|
||
|
--- 3177,3208 ----
|
||
|
char_u *p;
|
||
|
int len = curwin->w_cursor.col - compl_col;
|
||
|
int c;
|
||
|
+ compl_T *cp;
|
||
|
|
||
|
p = compl_shown_match->cp_str;
|
||
|
if ((int)STRLEN(p) <= len) /* the match is too short */
|
||
|
! {
|
||
|
! /* When still at the original match use the first entry that matches
|
||
|
! * the leader. */
|
||
|
! if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
|
||
|
! {
|
||
|
! p = NULL;
|
||
|
! for (cp = compl_shown_match->cp_next; cp != NULL
|
||
|
! && cp != compl_first_match; cp = cp->cp_next)
|
||
|
! {
|
||
|
! if (ins_compl_equal(cp, compl_leader,
|
||
|
! (int)STRLEN(compl_leader)))
|
||
|
! {
|
||
|
! p = cp->cp_str;
|
||
|
! break;
|
||
|
! }
|
||
|
! }
|
||
|
! if (p == NULL || (int)STRLEN(p) <= len)
|
||
|
! return;
|
||
|
! }
|
||
|
! else
|
||
|
! return;
|
||
|
! }
|
||
|
p += len;
|
||
|
#ifdef FEAT_MBYTE
|
||
|
c = mb_ptr2char(p);
|
||
|
***************
|
||
|
*** 4100,4105 ****
|
||
|
--- 4124,4144 ----
|
||
|
&& compl_shown_match->cp_next != NULL
|
||
|
&& compl_shown_match->cp_next != compl_first_match)
|
||
|
compl_shown_match = compl_shown_match->cp_next;
|
||
|
+
|
||
|
+ /* If we didn't find it searching forward, and compl_shows_dir is
|
||
|
+ * backward, find the last match. */
|
||
|
+ if (compl_shows_dir == BACKWARD
|
||
|
+ && !ins_compl_equal(compl_shown_match,
|
||
|
+ compl_leader, (int)STRLEN(compl_leader))
|
||
|
+ && (compl_shown_match->cp_next == NULL
|
||
|
+ || compl_shown_match->cp_next == compl_first_match))
|
||
|
+ {
|
||
|
+ while (!ins_compl_equal(compl_shown_match,
|
||
|
+ compl_leader, (int)STRLEN(compl_leader))
|
||
|
+ && compl_shown_match->cp_prev != NULL
|
||
|
+ && compl_shown_match->cp_prev != compl_first_match)
|
||
|
+ compl_shown_match = compl_shown_match->cp_prev;
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
if (allow_get_expansion && insert_match
|
||
|
*** ../vim-7.0.012/src/version.c Thu May 11 19:30:09 2006
|
||
|
--- src/version.c Fri May 12 19:03:32 2006
|
||
|
***************
|
||
|
*** 668,669 ****
|
||
|
--- 668,671 ----
|
||
|
{ /* Add new patch number below this line */
|
||
|
+ /**/
|
||
|
+ 13,
|
||
|
/**/
|
||
|
|
||
|
--
|
||
|
I'm writing a book. I've got the page numbers done.
|
||
|
|
||
|
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
||
|
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
||
|
\\\ download, build and distribute -- http://www.A-A-P.org ///
|
||
|
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|