diff --git a/src/edit.c b/src/edit.c
index 3e129cb..086a5b9 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -108,6 +108,11 @@
 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,7 +2793,17 @@
     compl_cont_status = 0;
 
     compl_curr_match = compl_first_match;
-    ins_complete(Ctrl_N);
+    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,10 +3672,18 @@
     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_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,6 +4695,7 @@
     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,7 +4777,7 @@
 		return -1;
 	    }
 
-	    if (advance)
+	    if (!compl_no_select && advance)
 	    {
 		if (compl_shows_dir == BACKWARD)
 		    --compl_pending;
@@ -4805,7 +4829,12 @@
     }
 
     /* Insert the text of the new completion, or the compl_leader. */
-    if (insert_match)
+    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,7 +4871,10 @@
 
     /* 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;
+    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,7 +4949,7 @@
 	    }
 	}
     }
-    if (compl_pending != 0 && !got_int)
+    if (compl_pending != 0 && !got_int && !compl_no_insert)
     {
 	int todo = compl_pending > 0 ? compl_pending : -compl_pending;
 
