diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 588daf6..c2ad86e 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 Mar 07
+*options.txt*	For Vim version 9.1.  Last change: 2025 Mar 12
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2107,14 +2107,23 @@
 						*'completefuzzycollect'* *'cfc'*
 'completefuzzycollect' 'cfc'	string	(default: empty)
 				global
-	This option enables fuzzy collection for (only some) specific
-	|ins-completion| modes, adjusting how items are gathered for fuzzy
-	matching based on input.
-	The option can contain the following values (separated by commas),
-	each enabling fuzzy collection for a specific completion mode:
-	files		file names
-	keyword		keyword completion in 'complete' and current file
-	whole_line	whole lines
+	A comma-separated list of option enables fuzzy collection for specific
+	|ins-completion| modes, affecting how items are gathered during
+	completion. When set, fuzzy matching is used to find completion
+	candidates instead of the standard prefix-based matching. This option
+	can contain the following values are:
+
+	keyword		keywords in the current file |i_CTRL-X_CTRL-N|
+			keywords with the ".", "w", "b", "u", "U" and
+			"k{dict}" flags in 'complete'. |i_CTRL-N| |i_CTRL-P|
+
+	files		file names  |i_CTRL-X_CTRL-F|
+
+	whole_line	whole lines |i_CTRL-X_CTRL-L|
+
+	When used with 'completeopt' "longest" option, fuzzy collection can
+	identify the longest common string among the best fuzzy matches and
+	automatically insert it.
 
 						*'completeitemalign'* *'cia'*
 'completeitemalign' 'cia' string (default: "abbr,kind,menu")
diff --git a/src/insexpand.c b/src/insexpand.c
index d8bb081..35d20d0 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -3671,7 +3671,7 @@
 	ins_compl_next_state_T *st,
 	int		*compl_type_arg,
 	pos_T		*start_match_pos,
-	int		in_fuzzy)
+	int		fuzzy_collect)
 {
     int	    compl_type = -1;
     int	    status = INS_COMPL_CPT_OK;
@@ -3687,7 +3687,7 @@
 	st->first_match_pos = *start_match_pos;
 	// Move the cursor back one character so that ^N can match the
 	// word immediately after the cursor.
-	if (ctrl_x_mode_normal() && (!in_fuzzy && dec(&st->first_match_pos) < 0))
+	if (ctrl_x_mode_normal() && (!fuzzy_collect && dec(&st->first_match_pos) < 0))
 	{
 	    // Move the cursor to after the last character in the
 	    // buffer, so that word at start of buffer is found
@@ -4487,7 +4487,6 @@
     int		i;
     int		found_new_match;
     int		type = ctrl_x_mode;
-    int		in_fuzzy = (get_cot_flags() & COT_FUZZY) != 0;
 
     if (!compl_started)
     {
@@ -4528,7 +4527,7 @@
 	if ((ctrl_x_mode_normal() || ctrl_x_mode_line_or_eval())
 					&& (!compl_started || st.found_all))
 	{
-	    int status = process_next_cpt_value(&st, &type, ini, in_fuzzy);
+	    int status = process_next_cpt_value(&st, &type, ini, cfc_has_mode());
 
 	    if (status == INS_COMPL_CPT_END)
 		break;
diff --git a/src/search.c b/src/search.c
index 654b896..064ed3e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -5229,7 +5229,7 @@
  * - `*len` is set to the length of the matched word.
  * - `*score` contains the match score.
  *
- * If no match is found, `*ptr` is updated to to the end of the line.
+ * If no match is found, `*ptr` is updated to the end of the line.
  */
     int
 fuzzy_match_str_in_line(
@@ -5313,10 +5313,7 @@
     pos_T	circly_end;
     int		found_new_match = FALSE;
     int		looped_around = FALSE;
-
-    int whole_line = ctrl_x_mode_whole_line();
-    if (whole_line)
-	current_pos.lnum += dir;
+    int		whole_line = ctrl_x_mode_whole_line();
 
     if (buf == curbuf)
         circly_end = *start_pos;
@@ -5327,6 +5324,9 @@
         circly_end.coladd = 0;
     }
 
+    if (whole_line && start_pos->lnum != pos->lnum)
+	current_pos.lnum += dir;
+
     do {
 
 	// Check if looped around and back to start position
@@ -5338,13 +5338,15 @@
 	{
 	    // Get the current line buffer
 	    *ptr = ml_get_buf(buf, current_pos.lnum, FALSE);
+	    if (!whole_line)
+		*ptr += current_pos.col;
+
 	    // If ptr is end of line is reached, move to next line
 	    // or previous line based on direction
 	    if (*ptr != NULL && **ptr != NUL)
 	    {
 		if (!whole_line)
 		{
-		    *ptr += current_pos.col;
 		    // Try to find a fuzzy match in the current line starting
 		    // from current position
 		    found_new_match = fuzzy_match_str_in_line(ptr, pattern,
@@ -5371,8 +5373,6 @@
 				    else
 				       next_word_end = find_word_end(next_word_end);
 				}
-				else if (looped_around)
-				    found_new_match = FALSE;
 
 				*len = next_word_end - *ptr;
 				current_pos.col = *len;
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index e63b133..e2a69f3 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -2949,6 +2949,12 @@
   call feedkeys("STe\<C-X>\<C-N>x\<CR>\<Esc>0", 'tx!')
   call assert_equal('Tex', getline(line('.') - 1))
 
+  call setline(1, ['fuzzy', 'fuzzycollect', 'completefuzzycollect'])
+  call feedkeys("Gofuzzy\<C-X>\<C-N>\<C-N>\<C-N>\<CR>\<Esc>0", 'tx!')
+  call assert_equal('fuzzycollect', getline(line('.') - 1))
+  call feedkeys("Gofuzzy\<C-X>\<C-N>\<C-N>\<C-N>\<C-N>\<CR>\<Esc>0", 'tx!')
+  call assert_equal('completefuzzycollect', getline(line('.') - 1))
+
   bw!
   bw!
   set completeopt& cfc& cpt&
diff --git a/src/version.c b/src/version.c
index 474d2c7..65332f5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1197,
+/**/
     1196,
 /**/
     1195,
