]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.487 v7.3.487
authorBram Moolenaar <Bram@vim.org>
Wed, 28 Mar 2012 17:59:04 +0000 (19:59 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 28 Mar 2012 17:59:04 +0000 (19:59 +0200)
Problem:    When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical
            movement is reset unnecessarily.
Solution:   Do not set w_set_curswant for every option. Add a test for this.
            (Kana Natsuno) Add the P_CURSWANT flag for options.

src/option.c
src/testdir/Make_amiga.mak
src/testdir/Make_dos.mak
src/testdir/Make_ming.mak
src/testdir/Make_os2.mak
src/testdir/Make_vms.mms
src/testdir/Makefile
src/testdir/test84.in [new file with mode: 0644]
src/testdir/test84.ok [new file with mode: 0644]
src/version.c

index 67d0bc7067fada60731bf23cc07b2afc95f63182..9acb270f1e05e864bb092aa254cb24d9d4a8ed13 100644 (file)
@@ -433,17 +433,19 @@ struct vimoption
 #define P_RCLR         0x7000  /* clear and redraw all */
 
 #define P_COMMA                0x8000  /* comma separated list */
-#define P_NODUP                0x10000L/* don't allow duplicate strings */
-#define P_FLAGLIST     0x20000L/* list of single-char flags */
-
-#define P_SECURE       0x40000L/* cannot change in modeline or secure mode */
-#define P_GETTEXT      0x80000L/* expand default value with _() */
-#define P_NOGLOB       0x100000L/* do not use local value for global vimrc */
-#define P_NFNAME       0x200000L/* only normal file name chars allowed */
-#define P_INSECURE     0x400000L/* option was set from a modeline */
-#define P_PRI_MKRC     0x800000L/* priority for :mkvimrc (setting option has
+#define P_NODUP                0x10000L /* don't allow duplicate strings */
+#define P_FLAGLIST     0x20000L /* list of single-char flags */
+
+#define P_SECURE       0x40000L /* cannot change in modeline or secure mode */
+#define P_GETTEXT      0x80000L /* expand default value with _() */
+#define P_NOGLOB       0x100000L /* do not use local value for global vimrc */
+#define P_NFNAME       0x200000L /* only normal file name chars allowed */
+#define P_INSECURE     0x400000L /* option was set from a modeline */
+#define P_PRI_MKRC     0x800000L /* priority for :mkvimrc (setting option has
                                   side effects) */
-#define P_NO_ML       0x1000000L/* not allowed in modeline */
+#define P_NO_ML       0x1000000L /* not allowed in modeline */
+#define P_CURSWANT    0x2000000L /* update curswant required; not needed when
+                                 * there is a redraw flag */
 
 #define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
 
@@ -479,7 +481,7 @@ static struct vimoption
 #endif
        options[] =
 {
-    {"aleph",      "al",   P_NUM|P_VI_DEF,
+    {"aleph",      "al",   P_NUM|P_VI_DEF|P_CURSWANT,
 #ifdef FEAT_RIGHTLEFT
                            (char_u *)&p_aleph, PV_NONE,
 #else
@@ -501,7 +503,7 @@ static struct vimoption
                            {(char_u *)FALSE, (char_u *)FALSE}
 #endif
                            SCRIPTID_INIT},
-    {"arabic",     "arab", P_BOOL|P_VI_DEF|P_VIM,
+    {"arabic",     "arab", P_BOOL|P_VI_DEF|P_VIM|P_CURSWANT,
 #ifdef FEAT_ARABIC
                            (char_u *)VAR_WIN, PV_ARAB,
 #else
@@ -778,7 +780,7 @@ static struct vimoption
     {"columns",            "co",   P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
                            (char_u *)&Columns, PV_NONE,
                            {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT},
-    {"comments",    "com",  P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+    {"comments",    "com",  P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT,
 #ifdef FEAT_COMMENTS
                            (char_u *)&p_com, PV_COM,
                            {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-",
@@ -788,7 +790,7 @@ static struct vimoption
                            {(char_u *)0L, (char_u *)0L}
 #endif
                            SCRIPTID_INIT},
-    {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF,
+    {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
 #ifdef FEAT_FOLDING
                            (char_u *)&p_cms, PV_CMS,
                            {(char_u *)"/*%s*/", (char_u *)0L}
@@ -953,7 +955,7 @@ static struct vimoption
     {"debug",      NULL,   P_STRING|P_VI_DEF,
                            (char_u *)&p_debug, PV_NONE,
                            {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
-    {"define",     "def",  P_STRING|P_ALLOCED|P_VI_DEF,
+    {"define",     "def",  P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
 #ifdef FEAT_FIND_ID
                            (char_u *)&p_def, PV_DEF,
                            {(char_u *)"^\\s*#\\s*define", (char_u *)0L}
@@ -983,7 +985,7 @@ static struct vimoption
                            (char_u *)NULL, PV_NONE,
 #endif
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
-    {"diffexpr",    "dex",  P_STRING|P_VI_DEF|P_SECURE,
+    {"diffexpr",    "dex",  P_STRING|P_VI_DEF|P_SECURE|P_CURSWANT,
 #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
                            (char_u *)&p_dex, PV_NONE,
                            {(char_u *)"", (char_u *)0L}
@@ -1099,7 +1101,7 @@ static struct vimoption
                            {(char_u *)0L, (char_u *)0L}
 #endif
                            SCRIPTID_INIT},
-    {"fileformat",  "ff",   P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC,
+    {"fileformat",  "ff",   P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC|P_CURSWANT,
                            (char_u *)&p_ff, PV_FF,
                            {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT},
     {"fileformats", "ffs",  P_STRING|P_VIM|P_COMMA|P_NODUP,
@@ -1159,7 +1161,7 @@ static struct vimoption
     {"foldlevel",   "fdl",  P_NUM|P_VI_DEF|P_RWIN,
                            (char_u *)VAR_WIN, PV_FDL,
                            {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
-    {"foldlevelstart","fdls", P_NUM|P_VI_DEF,
+    {"foldlevelstart","fdls", P_NUM|P_VI_DEF|P_CURSWANT,
                            (char_u *)&p_fdls, PV_NONE,
                            {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT},
     {"foldmarker",  "fmr",  P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
@@ -1176,7 +1178,7 @@ static struct vimoption
     {"foldnestmax", "fdn",  P_NUM|P_VI_DEF|P_RWIN,
                            (char_u *)VAR_WIN, PV_FDN,
                            {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
-    {"foldopen",    "fdo",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+    {"foldopen",    "fdo",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT,
                            (char_u *)&p_fdo, PV_NONE,
                 {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
                                                 (char_u *)0L} SCRIPTID_INIT},
@@ -1741,7 +1743,7 @@ static struct vimoption
     {"matchtime",   "mat",  P_NUM|P_VI_DEF,
                            (char_u *)&p_mat, PV_NONE,
                            {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT},
-    {"maxcombine",  "mco",  P_NUM|P_VI_DEF,
+    {"maxcombine",  "mco",  P_NUM|P_VI_DEF|P_CURSWANT,
 #ifdef FEAT_MBYTE
                            (char_u *)&p_mco, PV_NONE,
 #else
@@ -2710,7 +2712,7 @@ static struct vimoption
                            {(char_u *)0L, (char_u *)0L}
 #endif
                            SCRIPTID_INIT},
-    {"virtualedit", "ve",   P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM,
+    {"virtualedit", "ve",   P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM|P_CURSWANT,
 #ifdef FEAT_VIRTUALEDIT
                            (char_u *)&p_ve, PV_NONE,
                            {(char_u *)"", (char_u *)""}
@@ -7064,8 +7066,10 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf,
     }
 #endif
 
-    if (curwin->w_curswant != MAXCOL)
-       curwin->w_set_curswant = TRUE;  /* in case 'showbreak' changed */
+    if (curwin->w_curswant != MAXCOL
+                    && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+       curwin->w_set_curswant = TRUE;
+
 #ifdef FEAT_GUI
     /* check redraw when it's not a GUI option or the GUI is active. */
     if (!redraw_gui_only || gui.in_use)
@@ -7587,9 +7591,6 @@ set_bool_option(opt_idx, varp, value, opt_flags)
          || (int *)varp == &curwin->w_p_nu
          || (int *)varp == &curwin->w_p_rnu)
     {
-       if (curwin->w_curswant != MAXCOL)
-           curwin->w_set_curswant = TRUE;
-
        /* If 'number' is set, reset 'relativenumber'. */
        /* If 'relativenumber' is set, reset 'number'. */
        if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
@@ -7834,8 +7835,6 @@ set_bool_option(opt_idx, varp, value, opt_flags)
     {
        if (curwin->w_p_wrap)
            curwin->w_leftcol = 0;
-       if (curwin->w_curswant != MAXCOL)
-           curwin->w_set_curswant = TRUE;
     }
 
 #ifdef FEAT_WINDOWS
@@ -8062,31 +8061,8 @@ set_bool_option(opt_idx, varp, value, opt_flags)
            curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
 # endif
        }
-       if (curwin->w_curswant != MAXCOL)
-           curwin->w_set_curswant = TRUE;
     }
 
-    else if ((int *)varp == &p_arshape)
-    {
-       if (curwin->w_curswant != MAXCOL)
-           curwin->w_set_curswant = TRUE;
-    }
-#endif
-
-#ifdef FEAT_LINEBREAK
-    if ((int *)varp == &curwin->w_p_lbr)
-    {
-       if (curwin->w_curswant != MAXCOL)
-           curwin->w_set_curswant = TRUE;
-    }
-#endif
-
-#ifdef FEAT_RIGHTLEFT
-    if ((int *)varp == &curwin->w_p_rl)
-    {
-       if (curwin->w_curswant != MAXCOL)
-           curwin->w_set_curswant = TRUE;
-    }
 #endif
 
     /*
@@ -8096,7 +8072,9 @@ set_bool_option(opt_idx, varp, value, opt_flags)
     options[opt_idx].flags |= P_WAS_SET;
 
     comp_col();                            /* in case 'ruler' or 'showcmd' changed */
-
+    if (curwin->w_curswant != MAXCOL
+                    && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+       curwin->w_set_curswant = TRUE;
     check_redraw(options[opt_idx].flags);
 
     return NULL;
@@ -8611,8 +8589,9 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
     options[opt_idx].flags |= P_WAS_SET;
 
     comp_col();                            /* in case 'columns' or 'ls' changed */
-    if (curwin->w_curswant != MAXCOL)
-       curwin->w_set_curswant = TRUE;  /* in case 'tabstop' changed */
+    if (curwin->w_curswant != MAXCOL
+                    && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+       curwin->w_set_curswant = TRUE;
     check_redraw(options[opt_idx].flags);
 
     return errmsg;
index ba261ab6aee619bb69ed82e92a677a9ae43d1bdf..b01d49b85b43fef8a5c816549253f71097941fbe 100644 (file)
@@ -29,7 +29,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
                test66.out test67.out test68.out test69.out test70.out \
                test71.out test72.out test73.out test74.out test75.out \
                test76.out test77.out test78.out test79.out test80.out \
-               test81.out test82.out test83.out
+               test81.out test82.out test83.out test84.out
 
 .SUFFIXES: .in .out
 
@@ -132,3 +132,4 @@ test80.out: test80.in
 test81.out: test81.in
 test82.out: test82.in
 test83.out: test83.in
+test84.out: test84.in
index 9d0817354db431fdc165aead1c3ac155660a9ed6..d322504a80a21767340b6ff1c21140c94b747089 100644 (file)
@@ -29,7 +29,8 @@ SCRIPTS =     test3.out test4.out test5.out test6.out test7.out \
                test42.out test52.out test65.out test66.out test67.out \
                test68.out test69.out test71.out test72.out test73.out \
                test74.out test75.out test76.out test77.out test78.out \
-               test79.out test80.out test81.out test82.out test83.out
+               test79.out test80.out test81.out test82.out test83.out \
+               test84.out
 
 SCRIPTS32 =    test50.out test70.out
 
index 5f9dbdd0db1c6ba6ea456d7e0630e807611fe78b..0a680c50037e70b626e99b71cc8dbac0ac24aca2 100644 (file)
@@ -49,7 +49,8 @@ SCRIPTS =     test3.out test4.out test5.out test6.out test7.out \
                test42.out test52.out test65.out test66.out test67.out \
                test68.out test69.out test71.out test72.out test73.out \
                test74.out test75.out test76.out test77.out test78.out \
-               test79.out test80.out test81.out test82.out test83.out
+               test79.out test80.out test81.out test82.out test83.out \
+               test84.out
 
 SCRIPTS32 =    test50.out test70.out
 
index 363bede3ca17a97ca7aaef7b81d9bb517922c486..9cef9aa263891e3b69c1294be2adf737267f4a98 100644 (file)
@@ -29,7 +29,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
                test66.out test67.out test68.out test69.out test70.out \
                test71.out test72.out test73.out test74.out test75.out \
                test76.out test77.out test78.out test79.out test80.out \
-               test81.out test82.out test83.out
+               test81.out test82.out test83.out test84.out
 
 .SUFFIXES: .in .out
 
index 4e6ae6370d050123d57cd57c66bcfa1f149d6c61..4e961cff0886003ede948de311c33e72715ed753 100644 (file)
@@ -4,7 +4,7 @@
 # Authors:     Zoltan Arpadffy, <arpadffy@polarhome.com>
 #              Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
 #
-# Last change:  2011 Jul 15
+# Last change:  2012 Mar 28
 #
 # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
 # Edit the lines in the Configuration section below to select.
@@ -76,7 +76,7 @@ SCRIPT = test1.out  test2.out  test3.out  test4.out  test5.out  \
         test66.out test67.out test68.out test69.out \
         test71.out test72.out test74.out test75.out test76.out \
         test77.out test78.out test79.out test80.out test81.out \
-        test82.out test83.out
+        test82.out test83.out test84.out
 
 # Known problems:
 # Test 30: a problem around mac format - unknown reason
index a1cc22db780b48f469583d208d21730af7733003..405ebd414868f0ac185f97ebe5dc11f6a4216b7f 100644 (file)
@@ -26,7 +26,8 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
                test64.out test65.out test66.out test67.out test68.out \
                test69.out test70.out test71.out test72.out test73.out \
                test74.out test75.out test76.out test77.out test78.out \
-               test79.out test80.out test81.out test82.out test83.out
+               test79.out test80.out test81.out test82.out test83.out \
+               test84.out
 
 SCRIPTS_GUI = test16.out
 
diff --git a/src/testdir/test84.in b/src/testdir/test84.in
new file mode 100644 (file)
index 0000000..25482db
--- /dev/null
@@ -0,0 +1,35 @@
+Tests for curswant not changing when setting an option
+
+STARTTEST
+:so small.vim
+:/^start target options$/+1,/^end target options$/-1 yank
+:let target_option_names = split(@0)
+:function TestCurswant(option_name)
+:  normal! ggf8j
+:  let curswant_before = winsaveview().curswant
+:  execute 'let' '&'.a:option_name '=' '&'.a:option_name
+:  let curswant_after = winsaveview().curswant
+:  return [a:option_name, curswant_before, curswant_after]
+:endfunction
+:
+:new
+:put =['1234567890', '12345']
+:1 delete _
+:let result = []
+:for option_name in target_option_names
+:  call add(result, TestCurswant(option_name))
+:endfor
+:
+:new
+:put =map(copy(result), 'join(v:val, '' '')')
+:1 delete _
+:write test.out
+:
+:qall!
+ENDTEST
+
+start target options
+       tabstop
+       timeoutlen
+       ttimeoutlen
+end target options
diff --git a/src/testdir/test84.ok b/src/testdir/test84.ok
new file mode 100644 (file)
index 0000000..8b8e4ee
--- /dev/null
@@ -0,0 +1,3 @@
+tabstop 7 4
+timeoutlen 7 7
+ttimeoutlen 7 7
index efa29f61975cae5f64f4603243f37715be4900f3..ba2b0304511c7ff7007ae6260d365fdc708e3653 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    487,
 /**/
     486,
 /**/