[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