[vim/f19] - patchlevel 892

Karsten Hopp karsten at fedoraproject.org
Mon Apr 15 15:08:47 UTC 2013


commit 7c0976d098455ffea616e52e6ed5aed7e6c43936
Author: Karsten Hopp <karsten at redhat.com>
Date:   Mon Apr 15 17:02:41 2013 +0200

    - patchlevel 892

 7.3.892 |  295 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 295 insertions(+), 0 deletions(-)
---
diff --git a/7.3.892 b/7.3.892
new file mode 100644
index 0000000..4031d4d
--- /dev/null
+++ b/7.3.892
@@ -0,0 +1,295 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.892
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.892 (after 7.3.891)
+Problem:    Still merging problems for viminfo history.
+Solution:   Do not merge lines when writing, don't write old viminfo lines.
+Files:	    src/ex_getln.c, src/ex_cmds.c, src/proto/ex_getln.pro
+
+
+*** ../vim-7.3.891/src/ex_getln.c	2013-04-14 16:26:08.000000000 +0200
+--- src/ex_getln.c	2013-04-14 23:12:37.000000000 +0200
+***************
+*** 68,74 ****
+  
+  static int	hist_char2type __ARGS((int c));
+  
+! static int	in_history __ARGS((int, char_u *, int, int));
+  # ifdef FEAT_EVAL
+  static int	calc_hist_idx __ARGS((int histype, int num));
+  # endif
+--- 68,74 ----
+  
+  static int	hist_char2type __ARGS((int c));
+  
+! static int	in_history __ARGS((int, char_u *, int, int, int));
+  # ifdef FEAT_EVAL
+  static int	calc_hist_idx __ARGS((int histype, int num));
+  # endif
+***************
+*** 5397,5407 ****
+   * If 'move_to_front' is TRUE, matching entry is moved to end of history.
+   */
+      static int
+! in_history(type, str, move_to_front, sep)
+      int	    type;
+      char_u  *str;
+      int	    move_to_front;	/* Move the entry to the front if it exists */
+      int	    sep;
+  {
+      int	    i;
+      int	    last_i = -1;
+--- 5397,5408 ----
+   * If 'move_to_front' is TRUE, matching entry is moved to end of history.
+   */
+      static int
+! in_history(type, str, move_to_front, sep, writing)
+      int	    type;
+      char_u  *str;
+      int	    move_to_front;	/* Move the entry to the front if it exists */
+      int	    sep;
++     int	    writing;		/* ignore entries read from viminfo */
+  {
+      int	    i;
+      int	    last_i = -1;
+***************
+*** 5419,5424 ****
+--- 5420,5426 ----
+  	 * well. */
+  	p = history[type][i].hisstr;
+  	if (STRCMP(str, p) == 0
++ 		&& !(writing && history[type][i].viminfo)
+  		&& (type != HIST_SEARCH || sep == p[STRLEN(p) + 1]))
+  	{
+  	    if (!move_to_front)
+***************
+*** 5513,5519 ****
+  	}
+  	last_maptick = -1;
+      }
+!     if (!in_history(histype, new_entry, TRUE, sep))
+      {
+  	if (++hisidx[histype] == hislen)
+  	    hisidx[histype] = 0;
+--- 5515,5521 ----
+  	}
+  	last_maptick = -1;
+      }
+!     if (!in_history(histype, new_entry, TRUE, sep, FALSE))
+      {
+  	if (++hisidx[histype] == hislen)
+  	    hisidx[histype] = 0;
+***************
+*** 6032,6039 ****
+   * This allocates history arrays to store the read history lines.
+   */
+      void
+! prepare_viminfo_history(asklen)
+      int	    asklen;
+  {
+      int	    i;
+      int	    num;
+--- 6034,6042 ----
+   * This allocates history arrays to store the read history lines.
+   */
+      void
+! prepare_viminfo_history(asklen, writing)
+      int	    asklen;
++     int	    writing;
+  {
+      int	    i;
+      int	    num;
+***************
+*** 6041,6047 ****
+      int	    len;
+  
+      init_history();
+!     viminfo_add_at_front = (asklen != 0);
+      if (asklen > hislen)
+  	asklen = hislen;
+  
+--- 6044,6050 ----
+      int	    len;
+  
+      init_history();
+!     viminfo_add_at_front = (asklen != 0 && !writing);
+      if (asklen > hislen)
+  	asklen = hislen;
+  
+***************
+*** 6073,6080 ****
+   * new.
+   */
+      int
+! read_viminfo_history(virp)
+      vir_T	*virp;
+  {
+      int		type;
+      long_u	len;
+--- 6076,6084 ----
+   * new.
+   */
+      int
+! read_viminfo_history(virp, writing)
+      vir_T	*virp;
++     int		writing;
+  {
+      int		type;
+      long_u	len;
+***************
+*** 6090,6096 ****
+  	    int sep = (*val == ' ' ? NUL : *val);
+  
+  	    if (!in_history(type, val + (type == HIST_SEARCH),
+! 						   viminfo_add_at_front, sep))
+  	    {
+  		/* Need to re-allocate to append the separator byte. */
+  		len = STRLEN(val);
+--- 6094,6100 ----
+  	    int sep = (*val == ' ' ? NUL : *val);
+  
+  	    if (!in_history(type, val + (type == HIST_SEARCH),
+! 					  viminfo_add_at_front, sep, writing))
+  	    {
+  		/* Need to re-allocate to append the separator byte. */
+  		len = STRLEN(val);
+***************
+*** 6120,6125 ****
+--- 6124,6132 ----
+      return viminfo_readline(virp);
+  }
+  
++ /*
++  * Finish reading history lines from viminfo.  Not used when writing viminfo.
++  */
+      void
+  finish_viminfo_history()
+  {
+***************
+*** 6216,6222 ****
+  		{
+  		    p = round == 1 ? history[type][i].hisstr
+  						   : viminfo_history[type][i];
+! 		    if (p != NULL)
+  		    {
+  			--num_saved;
+  			fputc(hist_type2char(type, TRUE), fp);
+--- 6223,6229 ----
+  		{
+  		    p = round == 1 ? history[type][i].hisstr
+  						   : viminfo_history[type][i];
+! 		    if (p != NULL && (round == 2 || !history[type][i].viminfo))
+  		    {
+  			--num_saved;
+  			fputc(hist_type2char(type, TRUE), fp);
+***************
+*** 6245,6250 ****
+--- 6252,6261 ----
+  		    }
+  		}
+  	}
++ 	for (i = 0; i < viminfo_hisidx[type]; ++i)
++ 	    vim_free(viminfo_history[type][i]);
++ 	vim_free(viminfo_history[type]);
++ 	viminfo_history[type] = NULL;
+      }
+  }
+  #endif /* FEAT_VIMINFO */
+*** ../vim-7.3.891/src/ex_cmds.c	2013-03-07 16:41:26.000000000 +0100
+--- src/ex_cmds.c	2013-04-14 23:08:26.000000000 +0200
+***************
+*** 2113,2119 ****
+      buf_T	*buf;
+  
+  #ifdef FEAT_CMDHIST
+!     prepare_viminfo_history(forceit ? 9999 : 0);
+  #endif
+      eof = viminfo_readline(virp);
+      while (!eof && virp->vir_line[0] != '>')
+--- 2113,2119 ----
+      buf_T	*buf;
+  
+  #ifdef FEAT_CMDHIST
+!     prepare_viminfo_history(forceit ? 9999 : 0, writing);
+  #endif
+      eof = viminfo_readline(virp);
+      while (!eof && virp->vir_line[0] != '>')
+***************
+*** 2161,2167 ****
+  	    case '=':
+  	    case '@':
+  #ifdef FEAT_CMDHIST
+! 		eof = read_viminfo_history(virp);
+  #else
+  		eof = viminfo_readline(virp);
+  #endif
+--- 2161,2167 ----
+  	    case '=':
+  	    case '@':
+  #ifdef FEAT_CMDHIST
+! 		eof = read_viminfo_history(virp, writing);
+  #else
+  		eof = viminfo_readline(virp);
+  #endif
+***************
+*** 2182,2188 ****
+  
+  #ifdef FEAT_CMDHIST
+      /* Finish reading history items. */
+!     finish_viminfo_history();
+  #endif
+  
+      /* Change file names to buffer numbers for fmarks. */
+--- 2182,2189 ----
+  
+  #ifdef FEAT_CMDHIST
+      /* Finish reading history items. */
+!     if (!writing)
+! 	finish_viminfo_history();
+  #endif
+  
+      /* Change file names to buffer numbers for fmarks. */
+*** ../vim-7.3.891/src/proto/ex_getln.pro	2011-05-19 18:26:34.000000000 +0200
+--- src/proto/ex_getln.pro	2013-04-14 23:12:02.000000000 +0200
+***************
+*** 48,55 ****
+  void remove_key_from_history __ARGS((void));
+  int get_list_range __ARGS((char_u **str, int *num1, int *num2));
+  void ex_history __ARGS((exarg_T *eap));
+! void prepare_viminfo_history __ARGS((int asklen));
+! int read_viminfo_history __ARGS((vir_T *virp));
+  void finish_viminfo_history __ARGS((void));
+  void write_viminfo_history __ARGS((FILE *fp));
+  void cmd_pchar __ARGS((int c, int offset));
+--- 48,55 ----
+  void remove_key_from_history __ARGS((void));
+  int get_list_range __ARGS((char_u **str, int *num1, int *num2));
+  void ex_history __ARGS((exarg_T *eap));
+! void prepare_viminfo_history __ARGS((int asklen, int writing));
+! int read_viminfo_history __ARGS((vir_T *virp, int writing));
+  void finish_viminfo_history __ARGS((void));
+  void write_viminfo_history __ARGS((FILE *fp));
+  void cmd_pchar __ARGS((int c, int offset));
+*** ../vim-7.3.891/src/version.c	2013-04-14 16:26:08.000000000 +0200
+--- src/version.c	2013-04-14 22:53:04.000000000 +0200
+***************
+*** 730,731 ****
+--- 730,733 ----
+  {   /* Add new patch number below this line */
++ /**/
++     892,
+  /**/
+
+-- 
+"Hit any key to continue" is a lie.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- 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    ///


More information about the scm-commits mailing list