summaryrefslogtreecommitdiffstats
path: root/patches/source/vim/patches/7.4.073
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2018-05-25 23:29:36 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 15:18:32 -0700
commit8ff4f2f51a6cf07fc33742ce3bee81328896e49b (patch)
tree4a166b8389404be98a6c098babaa444e2dec8f48 /patches/source/vim/patches/7.4.073
parent76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 (diff)
downloadcurrent-14.1.tar.gz
current-14.1.tar.xz
Fri May 25 23:29:36 UTC 201814.1
patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.1.txz: Rebuilt. Handle removal of US/Pacific-New timezone. If we see that the machine is using this, it will be automatically switched to US/Pacific.
Diffstat (limited to 'patches/source/vim/patches/7.4.073')
-rw-r--r--patches/source/vim/patches/7.4.073404
1 files changed, 404 insertions, 0 deletions
diff --git a/patches/source/vim/patches/7.4.073 b/patches/source/vim/patches/7.4.073
new file mode 100644
index 000000000..7d9cedcff
--- /dev/null
+++ b/patches/source/vim/patches/7.4.073
@@ -0,0 +1,404 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.073
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.073
+Problem: Setting undolevels for one buffer changes undo in another.
+Solution: Make 'undolevels' a global-local option. (Christian Brabandt)
+Files: runtime/doc/options.txt, src/buffer.c, src/option.c, src/option.h
+ src/structs.h, src/undo.c
+
+
+*** ../vim-7.4.072/runtime/doc/options.txt 2013-08-10 13:24:57.000000000 +0200
+--- runtime/doc/options.txt 2013-11-06 04:18:43.000000000 +0100
+***************
+*** 7594,7600 ****
+ *'undolevels'* *'ul'*
+ 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS,
+ Win32 and OS/2)
+! global
+ {not in Vi}
+ Maximum number of changes that can be undone. Since undo information
+ is kept in memory, higher numbers will cause more memory to be used
+--- 7594,7600 ----
+ *'undolevels'* *'ul'*
+ 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS,
+ Win32 and OS/2)
+! global or local to buffer |global-local|
+ {not in Vi}
+ Maximum number of changes that can be undone. Since undo information
+ is kept in memory, higher numbers will cause more memory to be used
+***************
+*** 7605,7612 ****
+ < But you can also get Vi compatibility by including the 'u' flag in
+ 'cpoptions', and still be able to use CTRL-R to repeat undo.
+ Also see |undo-two-ways|.
+! Set to a negative number for no undo at all: >
+! set ul=-1
+ < This helps when you run out of memory for a single change.
+ Also see |clear-undo|.
+
+--- 7605,7613 ----
+ < But you can also get Vi compatibility by including the 'u' flag in
+ 'cpoptions', and still be able to use CTRL-R to repeat undo.
+ Also see |undo-two-ways|.
+! Set to -1 for no undo at all. You might want to do this only for the
+! current buffer: >
+! setlocal ul=-1
+ < This helps when you run out of memory for a single change.
+ Also see |clear-undo|.
+
+*** ../vim-7.4.072/src/buffer.c 2013-11-05 17:40:47.000000000 +0100
+--- src/buffer.c 2013-11-06 04:25:27.000000000 +0100
+***************
+*** 1949,1954 ****
+--- 1949,1955 ----
+ clear_string_option(&buf->b_p_qe);
+ #endif
+ buf->b_p_ar = -1;
++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
+ }
+
+ /*
+*** ../vim-7.4.072/src/option.c 2013-11-05 07:12:59.000000000 +0100
+--- src/option.c 2013-11-06 04:34:23.000000000 +0100
+***************
+*** 234,239 ****
+--- 234,240 ----
+ #ifdef FEAT_STL_OPT
+ # define PV_STL OPT_BOTH(OPT_WIN(WV_STL))
+ #endif
++ #define PV_UL OPT_BOTH(OPT_BUF(BV_UL))
+ #ifdef FEAT_WINDOWS
+ # define PV_WFH OPT_WIN(WV_WFH)
+ #endif
+***************
+*** 2683,2689 ****
+ #endif
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"undolevels", "ul", P_NUM|P_VI_DEF,
+! (char_u *)&p_ul, PV_NONE,
+ {
+ #if defined(UNIX) || defined(WIN3264) || defined(OS2) || defined(VMS)
+ (char_u *)1000L,
+--- 2684,2690 ----
+ #endif
+ {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"undolevels", "ul", P_NUM|P_VI_DEF,
+! (char_u *)&p_ul, PV_UL,
+ {
+ #if defined(UNIX) || defined(WIN3264) || defined(OS2) || defined(VMS)
+ (char_u *)1000L,
+***************
+*** 3313,3318 ****
+--- 3314,3320 ----
+
+ curbuf->b_p_initialized = TRUE;
+ curbuf->b_p_ar = -1; /* no local 'autoread' value */
++ curbuf->b_p_ul = NO_LOCAL_UNDOLEVEL;
+ check_buf_options(curbuf);
+ check_win_options(curwin);
+ check_options();
+***************
+*** 4512,4519 ****
+ ((flags & P_VI_DEF) || cp_val)
+ ? VI_DEFAULT : VIM_DEFAULT];
+ else if (nextchar == '<')
+! value = *(long *)get_varp_scope(&(options[opt_idx]),
+! OPT_GLOBAL);
+ else if (((long *)varp == &p_wc
+ || (long *)varp == &p_wcm)
+ && (*arg == '<'
+--- 4514,4529 ----
+ ((flags & P_VI_DEF) || cp_val)
+ ? VI_DEFAULT : VIM_DEFAULT];
+ else if (nextchar == '<')
+! {
+! /* For 'undolevels' NO_LOCAL_UNDOLEVEL means to
+! * use the global value. */
+! if ((long *)varp == &curbuf->b_p_ul
+! && opt_flags == OPT_LOCAL)
+! value = NO_LOCAL_UNDOLEVEL;
+! else
+! value = *(long *)get_varp_scope(
+! &(options[opt_idx]), OPT_GLOBAL);
+! }
+ else if (((long *)varp == &p_wc
+ || (long *)varp == &p_wcm)
+ && (*arg == '<'
+***************
+*** 8487,8492 ****
+--- 8497,8509 ----
+ u_sync(TRUE);
+ p_ul = value;
+ }
++ else if (pp == &curbuf->b_p_ul)
++ {
++ /* use the old value, otherwise u_sync() may not work properly */
++ curbuf->b_p_ul = old_value;
++ u_sync(TRUE);
++ curbuf->b_p_ul = value;
++ }
+
+ #ifdef FEAT_LINEBREAK
+ /* 'numberwidth' must be positive */
+***************
+*** 9720,9726 ****
+ /*
+ * Unset local option value, similar to ":set opt<".
+ */
+-
+ void
+ unset_global_local_option(name, from)
+ char_u *name;
+--- 9737,9742 ----
+***************
+*** 9793,9798 ****
+--- 9809,9817 ----
+ clear_string_option(&((win_T *)from)->w_p_stl);
+ break;
+ #endif
++ case PV_UL:
++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
++ break;
+ }
+ }
+
+***************
+*** 9841,9846 ****
+--- 9860,9866 ----
+ #ifdef FEAT_STL_OPT
+ case PV_STL: return (char_u *)&(curwin->w_p_stl);
+ #endif
++ case PV_UL: return (char_u *)&(curbuf->b_p_ul);
+ }
+ return NULL; /* "cannot happen" */
+ }
+***************
+*** 9905,9910 ****
+--- 9925,9932 ----
+ case PV_STL: return *curwin->w_p_stl != NUL
+ ? (char_u *)&(curwin->w_p_stl) : p->var;
+ #endif
++ case PV_UL: return curbuf->b_p_ul != NO_LOCAL_UNDOLEVEL
++ ? (char_u *)&(curbuf->b_p_ul) : p->var;
+
+ #ifdef FEAT_ARABIC
+ case PV_ARAB: return (char_u *)&(curwin->w_p_arab);
+***************
+*** 10445,10450 ****
+--- 10467,10473 ----
+ /* options that are normally global but also have a local value
+ * are not copied, start using the global value */
+ buf->b_p_ar = -1;
++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
+ #ifdef FEAT_QUICKFIX
+ buf->b_p_gp = empty_option;
+ buf->b_p_mp = empty_option;
+*** ../vim-7.4.072/src/option.h 2013-06-26 18:41:39.000000000 +0200
+--- src/option.h 2013-11-06 04:17:40.000000000 +0100
+***************
+*** 1031,1036 ****
+--- 1031,1037 ----
+ , BV_TW
+ , BV_TX
+ , BV_UDF
++ , BV_UL
+ , BV_WM
+ , BV_COUNT /* must be the last one */
+ };
+***************
+*** 1109,1111 ****
+--- 1110,1115 ----
+ , WV_WRAP
+ , WV_COUNT /* must be the last one */
+ };
++
++ /* Value for b_p_ul indicating the global value must be used. */
++ #define NO_LOCAL_UNDOLEVEL -123456
+*** ../vim-7.4.072/src/structs.h 2013-11-05 07:12:59.000000000 +0100
+--- src/structs.h 2013-11-06 04:26:17.000000000 +0100
+***************
+*** 1627,1632 ****
+--- 1627,1633 ----
+ char_u *b_p_dict; /* 'dictionary' local value */
+ char_u *b_p_tsr; /* 'thesaurus' local value */
+ #endif
++ long b_p_ul; /* 'undolevels' local value */
+ #ifdef FEAT_PERSISTENT_UNDO
+ int b_p_udf; /* 'undofile' */
+ #endif
+*** ../vim-7.4.072/src/undo.c 2013-09-08 15:40:45.000000000 +0200
+--- src/undo.c 2013-11-06 04:33:12.000000000 +0100
+***************
+*** 83,88 ****
+--- 83,89 ----
+
+ #include "vim.h"
+
++ static long get_undolevel __ARGS((void));
+ static void u_unch_branch __ARGS((u_header_T *uhp));
+ static u_entry_T *u_get_headentry __ARGS((void));
+ static void u_getbot __ARGS((void));
+***************
+*** 336,341 ****
+--- 337,353 ----
+ }
+
+ /*
++ * Get the undolevle value for the current buffer.
++ */
++ static long
++ get_undolevel()
++ {
++ if (curbuf->b_p_ul == NO_LOCAL_UNDOLEVEL)
++ return p_ul;
++ return curbuf->b_p_ul;
++ }
++
++ /*
+ * Common code for various ways to save text before a change.
+ * "top" is the line above the first changed line.
+ * "bot" is the line below the last changed line.
+***************
+*** 419,425 ****
+ curbuf->b_new_change = TRUE;
+ #endif
+
+! if (p_ul >= 0)
+ {
+ /*
+ * Make a new header entry. Do this first so that we don't mess
+--- 431,437 ----
+ curbuf->b_new_change = TRUE;
+ #endif
+
+! if (get_undolevel() >= 0)
+ {
+ /*
+ * Make a new header entry. Do this first so that we don't mess
+***************
+*** 449,455 ****
+ /*
+ * free headers to keep the size right
+ */
+! while (curbuf->b_u_numhead > p_ul && curbuf->b_u_oldhead != NULL)
+ {
+ u_header_T *uhfree = curbuf->b_u_oldhead;
+
+--- 461,468 ----
+ /*
+ * free headers to keep the size right
+ */
+! while (curbuf->b_u_numhead > get_undolevel()
+! && curbuf->b_u_oldhead != NULL)
+ {
+ u_header_T *uhfree = curbuf->b_u_oldhead;
+
+***************
+*** 530,536 ****
+ }
+ else
+ {
+! if (p_ul < 0) /* no undo at all */
+ return OK;
+
+ /*
+--- 543,549 ----
+ }
+ else
+ {
+! if (get_undolevel() < 0) /* no undo at all */
+ return OK;
+
+ /*
+***************
+*** 1972,1978 ****
+ {
+ if (curbuf->b_u_curhead == NULL) /* first undo */
+ curbuf->b_u_curhead = curbuf->b_u_newhead;
+! else if (p_ul > 0) /* multi level undo */
+ /* get next undo */
+ curbuf->b_u_curhead = curbuf->b_u_curhead->uh_next.ptr;
+ /* nothing to undo */
+--- 1985,1991 ----
+ {
+ if (curbuf->b_u_curhead == NULL) /* first undo */
+ curbuf->b_u_curhead = curbuf->b_u_newhead;
+! else if (get_undolevel() > 0) /* multi level undo */
+ /* get next undo */
+ curbuf->b_u_curhead = curbuf->b_u_curhead->uh_next.ptr;
+ /* nothing to undo */
+***************
+*** 1993,1999 ****
+ }
+ else
+ {
+! if (curbuf->b_u_curhead == NULL || p_ul <= 0)
+ {
+ beep_flush(); /* nothing to redo */
+ if (count == startcount - 1)
+--- 2006,2012 ----
+ }
+ else
+ {
+! if (curbuf->b_u_curhead == NULL || get_undolevel() <= 0)
+ {
+ beep_flush(); /* nothing to redo */
+ if (count == startcount - 1)
+***************
+*** 2751,2757 ****
+ if (im_is_preediting())
+ return; /* XIM is busy, don't break an undo sequence */
+ #endif
+! if (p_ul < 0)
+ curbuf->b_u_synced = TRUE; /* no entries, nothing to do */
+ else
+ {
+--- 2764,2770 ----
+ if (im_is_preediting())
+ return; /* XIM is busy, don't break an undo sequence */
+ #endif
+! if (get_undolevel() < 0)
+ curbuf->b_u_synced = TRUE; /* no entries, nothing to do */
+ else
+ {
+***************
+*** 2911,2917 ****
+ }
+ if (!curbuf->b_u_synced)
+ return; /* already unsynced */
+! if (p_ul < 0)
+ return; /* no entries, nothing to do */
+ else
+ {
+--- 2924,2930 ----
+ }
+ if (!curbuf->b_u_synced)
+ return; /* already unsynced */
+! if (get_undolevel() < 0)
+ return; /* no entries, nothing to do */
+ else
+ {
+*** ../vim-7.4.072/src/version.c 2013-11-06 04:04:29.000000000 +0100
+--- src/version.c 2013-11-06 05:21:43.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 73,
+ /**/
+
+--
+Living on Earth includes an annual free trip around the Sun.
+
+ /// Bram Moolenaar -- Bram@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 ///