diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index cbd5322..48b4b59 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 9.1.  Last change: 2025 Feb 27
+*options.txt*	For Vim version 9.1.  Last change: 2025 Feb 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2120,6 +2120,17 @@
 	A comma-separated list of options for Insert mode completion
 	|ins-completion|.  The supported values are:
 
+	   fuzzy    Enable |fuzzy-matching| for completion candidates. This
+		    allows for more flexible and intuitive matching, where
+		    characters can be skipped and matches can be found even
+		    if the exact sequence is not typed.
+
+	   longest  Only insert the longest common text of the matches.  If
+		    the menu is displayed you can use CTRL-L to add more
+		    characters.  Whether case is ignored depends on the kind
+		    of completion.  For buffer text the 'ignorecase' option is
+		    used.
+
 	   menu	    Use a popup menu to show the possible completions.  The
 		    menu is only shown when there is more than one match and
 		    sufficient colors are available.  |ins-completion-menu|
@@ -2128,15 +2139,17 @@
 		    Useful when there is additional information about the
 		    match, e.g., what file it comes from.
 
-	   longest  Only insert the longest common text of the matches.  If
-		    the menu is displayed you can use CTRL-L to add more
-		    characters.  Whether case is ignored depends on the kind
-		    of completion.  For buffer text the 'ignorecase' option is
-		    used.
+	   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.
 
-	   preview  Show extra information about the currently selected
-		    completion in the preview window.  Only works in
-		    combination with "menu" or "menuone".
+	   noselect Same as "noinsert", except that no menu item is
+		    pre-selected. If both "noinsert" and "noselect" are
+		    present, "noselect" has precedence.
+
+	   nosort   Disable sorting of completion candidates based on fuzzy
+		    scores when "fuzzy" is enabled. Candidates will appear
+		    in their original order.
 
 	   popup    Show extra information about the currently selected
 		    completion in a popup window.  Only works in combination
@@ -2151,28 +2164,16 @@
 		    See the example at |complete-popuphidden|.
 		    {only works when compiled with the |+textprop| feature}
 
-	   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 Same as "noinsert", except that no menu item is
-		    pre-selected. If both "noinsert" and "noselect" are
-		    present, "noselect" has precedence.
-
-	   fuzzy    Enable |fuzzy-matching| for completion candidates. This
-		    allows for more flexible and intuitive matching, where
-		    characters can be skipped and matches can be found even
-		    if the exact sequence is not typed.
-
-	   nosort   Disable sorting of completion candidates based on fuzzy
-		    scores when "fuzzy" is enabled. Candidates will appear
-		    in their original order.
-
 	   preinsert
 		    Preinsert the portion of the first candidate word that is
 		    not part of the current completion leader and using the
 		    |hl-ComplMatchIns| highlight group. Does not work when
-		    "fuzzy" is also included.
+		    "fuzzy" is set. Requires both "menu" and "menuone" to be
+		    set.
+
+	   preview  Show extra information about the currently selected
+		    completion in the preview window.  Only works in
+		    combination with "menu" or "menuone".
 
 					*'completepopup'* *'cpp'*
 'completepopup' 'cpp'	string (default empty)
diff --git a/src/edit.c b/src/edit.c
index 6f22b43..808aae1 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -146,7 +146,6 @@
 #ifdef FEAT_CONCEAL
     int		cursor_line_was_concealed;
 #endif
-    int		ins_completion = FALSE;
 
     // Remember whether editing was restarted after CTRL-O.
     did_restart_edit = restart_edit;
@@ -637,11 +636,8 @@
 	 * and the cursor is still in the completed word.  Only when there is
 	 * a match, skip this when no matches were found.
 	 */
-	ins_completion = ins_compl_active()
-	    && curwin->w_cursor.col >= ins_compl_col()
-	    && ins_compl_has_shown_match();
-
-	if (ins_completion && pum_wanted())
+	if (ins_compl_active() && curwin->w_cursor.col >= ins_compl_col()
+		&& ins_compl_has_shown_match() && pum_wanted())
 	{
 	    // BS: Delete one character from "compl_leader".
 	    if ((c == K_BS || c == Ctrl_H)
@@ -699,8 +695,6 @@
 		    ins_compl_delete();
 	    }
 	}
-	else if (ins_completion && !pum_wanted() && ins_compl_preinsert_effect())
-	    ins_compl_delete();
 
 	// Prepare for or stop CTRL-X mode.  This doesn't do completion, but
 	// it does fix up the text when finishing completion.
diff --git a/src/insexpand.c b/src/insexpand.c
index edc4265..8a6f8af 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -1985,12 +1985,15 @@
 }
 
 /*
- * Return TRUE when preinsert is set otherwise FALSE.
+ * Return TRUE when preinsert is set AND both 'menu' and 'menuone' flags
+ * are also set, otherwise return FALSE.
  */
     static int
 ins_compl_has_preinsert(void)
 {
-    return (get_cot_flags() & (COT_PREINSERT | COT_FUZZY)) == COT_PREINSERT;
+    int cur_cot_flags = get_cot_flags();
+    return (cur_cot_flags & (COT_PREINSERT | COT_FUZZY | COT_MENU | COT_MENUONE))
+	== (COT_PREINSERT | COT_MENU | COT_MENUONE);
 }
 
 /*
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index b302a3e..e91a99e 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -3217,10 +3217,11 @@
   call assert_equal("fobar", getline('.'))
   call assert_equal(5, col('.'))
 
+  " When the pum is not visible, the preinsert has no effect
   set cot=preinsert
   call feedkeys("Sfoo1 foo2\<CR>f\<C-X>\<C-N>bar", 'tx')
-  call assert_equal("fbar", getline('.'))
-  call assert_equal(4, col('.'))
+  call assert_equal("foo1bar", getline('.'))
+  call assert_equal(7, col('.'))
 
   bw!
   set cot&
diff --git a/src/version.c b/src/version.c
index f29e1f3..12d4434 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1160,
+/**/
     1159,
 /**/
     1158,
