Blob Blame History Raw
To: vim-dev@vim.org
Subject: Patch 7.0.068
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.068
Problem:    When 'ignorecase' is set and using Insert mode completion,
	    typing characters to change the list of matches, case is not
	    ignored. (Hugo Ahlenius)
Solution:   Store the 'ignorecase' flag with the matches where needed.
Files:	    src/edit.c, src/search.c, src/spell.c


*** ../vim-7.0.067/src/edit.c	Tue Aug 29 16:10:54 2006
--- src/edit.c	Tue Aug 29 14:57:46 2006
***************
*** 2405,2411 ****
      /* compl_pattern doesn't need to be set */
      compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
      if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
! 			-1, FALSE, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
  	return;
  
      /* Handle like dictionary completion. */
--- 2405,2411 ----
      /* compl_pattern doesn't need to be set */
      compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
      if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
! 			-1, p_ic, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
  	return;
  
      /* Handle like dictionary completion. */
***************
*** 2821,2827 ****
  			ptr = find_word_end(ptr);
  		    add_r = ins_compl_add_infercase(regmatch->startp[0],
  					  (int)(ptr - regmatch->startp[0]),
! 						     FALSE, files[i], *dir, 0);
  		    if (thesaurus)
  		    {
  			char_u *wstart;
--- 2821,2827 ----
  			ptr = find_word_end(ptr);
  		    add_r = ins_compl_add_infercase(regmatch->startp[0],
  					  (int)(ptr - regmatch->startp[0]),
! 						     p_ic, files[i], *dir, 0);
  		    if (thesaurus)
  		    {
  			char_u *wstart;
***************
*** 2857,2863 ****
  				ptr = find_word_end(ptr);
  			    add_r = ins_compl_add_infercase(wstart,
  				    (int)(ptr - wstart),
! 				    FALSE, files[i], *dir, 0);
  			}
  		    }
  		    if (add_r == OK)
--- 2857,2863 ----
  				ptr = find_word_end(ptr);
  			    add_r = ins_compl_add_infercase(wstart,
  				    (int)(ptr - wstart),
! 				    p_ic, files[i], *dir, 0);
  			}
  		    }
  		    if (add_r == OK)
***************
*** 3826,3832 ****
  		    TAG_INS_COMP | (ctrl_x_mode ? TAG_VERBOSE : 0),
  		    TAG_MANY, curbuf->b_ffname) == OK && num_matches > 0)
  	    {
! 		ins_compl_add_matches(num_matches, matches, FALSE);
  	    }
  	    p_ic = save_p_ic;
  	    break;
--- 3826,3832 ----
  		    TAG_INS_COMP | (ctrl_x_mode ? TAG_VERBOSE : 0),
  		    TAG_MANY, curbuf->b_ffname) == OK && num_matches > 0)
  	    {
! 		ins_compl_add_matches(num_matches, matches, p_ic);
  	    }
  	    p_ic = save_p_ic;
  	    break;
***************
*** 3867,3873 ****
  	    num_matches = expand_spelling(first_match_pos.lnum,
  				 first_match_pos.col, compl_pattern, &matches);
  	    if (num_matches > 0)
! 		ins_compl_add_matches(num_matches, matches, FALSE);
  #endif
  	    break;
  
--- 3867,3873 ----
  	    num_matches = expand_spelling(first_match_pos.lnum,
  				 first_match_pos.col, compl_pattern, &matches);
  	    if (num_matches > 0)
! 		ins_compl_add_matches(num_matches, matches, p_ic);
  #endif
  	    break;
  
***************
*** 4001,4007 ****
  			    continue;
  		    }
  		}
! 		if (ins_compl_add_infercase(ptr, len, FALSE,
  				 ins_buf == curbuf ? NULL : ins_buf->b_sfname,
  					   0, flags) != NOTDONE)
  		{
--- 4001,4007 ----
  			    continue;
  		    }
  		}
! 		if (ins_compl_add_infercase(ptr, len, p_ic,
  				 ins_buf == curbuf ? NULL : ins_buf->b_sfname,
  					   0, flags) != NOTDONE)
  		{
***************
*** 4809,4815 ****
  	vim_free(compl_orig_text);
  	compl_orig_text = vim_strnsave(line + compl_col, compl_length);
  	if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
! 			-1, FALSE, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
  	{
  	    vim_free(compl_pattern);
  	    compl_pattern = NULL;
--- 4809,4815 ----
  	vim_free(compl_orig_text);
  	compl_orig_text = vim_strnsave(line + compl_col, compl_length);
  	if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
! 			-1, p_ic, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
  	{
  	    vim_free(compl_pattern);
  	    compl_pattern = NULL;
*** ../vim-7.0.067/src/search.c	Fri May  5 23:15:17 2006
--- src/search.c	Tue Aug 29 14:56:15 2006
***************
*** 4871,4877 ****
  			goto exit_matched;
  		}
  
! 		add_r = ins_compl_add_infercase(aux, i, FALSE,
  			curr_fname == curbuf->b_fname ? NULL : curr_fname,
  			dir, reuse);
  		if (add_r == OK)
--- 4876,4882 ----
  			goto exit_matched;
  		}
  
! 		add_r = ins_compl_add_infercase(aux, i, p_ic,
  			curr_fname == curbuf->b_fname ? NULL : curr_fname,
  			dir, reuse);
  		if (add_r == OK)
*** ../vim-7.0.067/src/spell.c	Sun Jul 23 21:52:16 2006
--- src/spell.c	Tue Aug 29 14:56:26 2006
***************
*** 15658,15664 ****
  		    ? MB_STRNICMP(p, pat, STRLEN(pat)) == 0
  		    : STRNCMP(p, pat, STRLEN(pat)) == 0)
  		&& ins_compl_add_infercase(p, (int)STRLEN(p),
! 					  FALSE, NULL, *dir, 0) == OK)
  	/* if dir was BACKWARD then honor it just once */
  	*dir = FORWARD;
  }
--- 15662,15668 ----
  		    ? MB_STRNICMP(p, pat, STRLEN(pat)) == 0
  		    : STRNCMP(p, pat, STRLEN(pat)) == 0)
  		&& ins_compl_add_infercase(p, (int)STRLEN(p),
! 					  p_ic, NULL, *dir, 0) == OK)
  	/* if dir was BACKWARD then honor it just once */
  	*dir = FORWARD;
  }
*** ../vim-7.0.067/src/version.c	Tue Aug 29 16:10:54 2006
--- src/version.c	Tue Aug 29 16:13:49 2006
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     68,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
266. You hear most of your jokes via e-mail instead of in person.

 /// 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    ///