Patch 7.4.775
Problem:    It is not possible to avoid using the first item of completion.
Solution:   Add the "noinsert" and "noselect" values to 'completeopt'. (Shougo
            Matsu)
Files:      runtime/doc/options.txt, src/edit.c, src/option.c


*** ../vim-7.4.774/runtime/doc/options.txt      2015-06-19 14:41:44.773813332 
+0200
--- runtime/doc/options.txt     2015-07-10 18:02:02.584539984 +0200
***************
*** 1818,1823 ****
--- 1819,1832 ----
                    completion in the preview window.  Only works in
                    combination with "menu" or "menuone".
  
+          noinsert Do not insert any text for a match until the user selects
+                   a match from the menu. Only works in combination with
+                   "menu" or "menuone". No effect if "longest" is present.
+ 
+          noselect Do not select a match in the menu, force the user to
+                   select one from the menu. Only works in combination with
+                   "menu" or "menuone".
+ 
  
                                                *'concealcursor'* *'cocu'*
  'concealcursor' 'cocu'        string (default: "")
*** ../vim-7.4.774/src/edit.c   2015-07-10 17:56:18.215777193 +0200
--- src/edit.c  2015-07-10 18:05:16.054721894 +0200
***************
*** 108,113 ****
--- 108,118 ----
  static int      compl_get_longest = FALSE;    /* put longest common string
                                                   in compl_leader */
  
+ static int      compl_no_insert = FALSE;      /* FALSE: select & insert
+                                                  TRUE: noinsert */
+ static int      compl_no_select = FALSE;      /* FALSE: select & insert
+                                                  TRUE: noselect */
+ 
  static int      compl_used_match;     /* Selected one of the matches.  When
                                           FALSE the match was edited or using
                                           the longest common string. */
***************
*** 2788,2794 ****
      compl_cont_status = 0;
  
      compl_curr_match = compl_first_match;
!     ins_complete(Ctrl_N);
      out_flush();
  }
  
--- 2793,2809 ----
      compl_cont_status = 0;
  
      compl_curr_match = compl_first_match;
!     if (compl_no_insert)
!     {
!       if (!compl_no_select)
!           ins_complete(K_DOWN);
!     }
!     else
!     {
!       ins_complete(Ctrl_N);
!       if (compl_no_select)
!           ins_complete(Ctrl_P);
!     }
      out_flush();
  }
  
***************
*** 3657,3666 ****
      if (ctrl_x_mode == CTRL_X_NOT_DEFINED_YET
                                      || (ctrl_x_mode == 0 && !compl_started))
      {
!       compl_get_longest = (vim_strchr(p_cot, 'l') != NULL);
        compl_used_match = TRUE;
      }
  
      if (ctrl_x_mode == CTRL_X_NOT_DEFINED_YET)
      {
        /*
--- 3672,3689 ----
      if (ctrl_x_mode == CTRL_X_NOT_DEFINED_YET
                                      || (ctrl_x_mode == 0 && !compl_started))
      {
!       compl_get_longest = (strstr((char *)p_cot, "longest") != NULL);
        compl_used_match = TRUE;
+ 
      }
  
+     compl_no_insert = FALSE;
+     compl_no_select = FALSE;
+     if (strstr((char *)p_cot, "noselect") != NULL)
+       compl_no_select = TRUE;
+     if (strstr((char *)p_cot, "noinsert") != NULL)
+       compl_no_insert = TRUE;
+ 
      if (ctrl_x_mode == CTRL_X_NOT_DEFINED_YET)
      {
        /*
***************
*** 4672,4677 ****
--- 4695,4701 ----
      compl_T *found_compl = NULL;
      int           found_end = FALSE;
      int           advance;
+     int           started = compl_started;
  
      /* When user complete function return -1 for findstart which is next
       * time of 'always', compl_shown_match become NULL. */
***************
*** 4753,4759 ****
                return -1;
            }
  
!           if (advance)
            {
                if (compl_shows_dir == BACKWARD)
                    --compl_pending;
--- 4777,4783 ----
                return -1;
            }
  
!           if (!compl_no_select && advance)
            {
                if (compl_shows_dir == BACKWARD)
                    --compl_pending;
***************
*** 4805,4811 ****
      }
  
      /* Insert the text of the new completion, or the compl_leader. */
!     if (insert_match)
      {
        if (!compl_get_longest || compl_used_match)
            ins_compl_insert();
--- 4829,4840 ----
      }
  
      /* Insert the text of the new completion, or the compl_leader. */
!     if (compl_no_insert && !started)
!     {
!       ins_bytes(compl_orig_text + ins_compl_len());
!       compl_used_match = FALSE;
!     }
!     else if (insert_match)
      {
        if (!compl_get_longest || compl_used_match)
            ins_compl_insert();
***************
*** 4842,4848 ****
  
      /* Enter will select a match when the match wasn't inserted and the popup
       * menu is visible. */
!     compl_enter_selects = !insert_match && compl_match_array != NULL;
  
      /*
       * Show the file name for the match (if any)
--- 4871,4880 ----
  
      /* Enter will select a match when the match wasn't inserted and the popup
       * menu is visible. */
!     if (compl_no_insert && !started)
!       compl_enter_selects = TRUE;
!     else
!       compl_enter_selects = !insert_match && compl_match_array != NULL;
  
      /*
       * Show the file name for the match (if any)
***************
*** 4917,4923 ****
            }
        }
      }
!     if (compl_pending != 0 && !got_int)
      {
        int todo = compl_pending > 0 ? compl_pending : -compl_pending;
  
--- 4949,4955 ----
            }
        }
      }
!     if (compl_pending != 0 && !got_int && !compl_no_insert)
      {
        int todo = compl_pending > 0 ? compl_pending : -compl_pending;
  
*** ../vim-7.4.774/src/option.c 2015-06-25 19:16:51.485906246 +0200
--- src/option.c        2015-07-10 17:59:17.526091062 +0200
***************
*** 3054,3060 ****
  static char *(p_fcl_values[]) = {"all", NULL};
  #endif
  #ifdef FEAT_INS_EXPAND
! static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", 
NULL};
  #endif
  
  static void set_option_default __ARGS((int, int opt_flags, int compatible));
--- 3054,3060 ----
  static char *(p_fcl_values[]) = {"all", NULL};
  #endif
  #ifdef FEAT_INS_EXPAND
! static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", 
"noinsert", "noselect", NULL};
  #endif
  
  static void set_option_default __ARGS((int, int opt_flags, int compatible));
*** ../vim-7.4.774/src/version.c        2015-07-10 17:56:18.219777154 +0200
--- src/version.c       2015-07-10 18:01:22.548916206 +0200
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     775,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
202. You're amazed to find out Spam is a food.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui