]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.629 v7.3.629
authorBram Moolenaar <Bram@vim.org>
Wed, 8 Aug 2012 16:01:05 +0000 (18:01 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 8 Aug 2012 16:01:05 +0000 (18:01 +0200)
Problem:    There is no way to make 'shiftwidth' follow 'tabstop'.
Solution:   When 'shiftwidth' is zero use the value of 'tabstop'. (Christian
            Brabandt)

src/edit.c
src/ex_getln.c
src/fold.c
src/misc1.c
src/ops.c
src/option.c
src/proto/option.pro
src/version.c

index 1c614333ffe724a251cabbd66ab435215e93daa4..5fde388f7304bdadb44350357c53b9292a11db0d 100644 (file)
@@ -8899,9 +8899,9 @@ ins_bs(c, mode, inserted_space_p)
 
            *inserted_space_p = FALSE;
            if (p_sta && in_indent)
-               ts = curbuf->b_p_sw;
+               ts = (int)get_sw_value();
            else
-               ts = curbuf->b_p_sts;
+               ts = (int)curbuf->b_p_sts;
            /* Compute the virtual column where we want to be.  Since
             * 'showbreak' may get in the way, need to get the last column of
             * the previous character. */
@@ -9589,7 +9589,7 @@ ins_tab()
      * When nothing special, insert TAB like a normal character
      */
     if (!curbuf->b_p_et
-           && !(p_sta && ind && curbuf->b_p_ts != curbuf->b_p_sw)
+           && !(p_sta && ind && curbuf->b_p_ts != get_sw_value())
            && curbuf->b_p_sts == 0)
        return TRUE;
 
@@ -9605,7 +9605,7 @@ ins_tab()
     AppendToRedobuff((char_u *)"\t");
 
     if (p_sta && ind)          /* insert tab in indent, use 'shiftwidth' */
-       temp = (int)curbuf->b_p_sw;
+       temp = (int)get_sw_value();
     else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */
        temp = (int)curbuf->b_p_sts;
     else                       /* otherwise use 'tabstop' */
index 0c7dd8036384dcf014f0599d1717771530c8a746..bc92488daeddc7f22609948e13714e83305bc921 100644 (file)
@@ -2268,10 +2268,12 @@ getexmodeline(promptc, cookie, indent)
 
            if (c1 == Ctrl_T)
            {
+               long        sw = get_sw_value();
+
                p = (char_u *)line_ga.ga_data;
                p[line_ga.ga_len] = NUL;
                indent = get_indent_str(p, 8);
-               indent += curbuf->b_p_sw - indent % curbuf->b_p_sw;
+               indent += sw - indent % sw;
 add_indent:
                while (get_indent_str(p, 8) < indent)
                {
@@ -2323,7 +2325,7 @@ redraw:
                    p[line_ga.ga_len] = NUL;
                    indent = get_indent_str(p, 8);
                    --indent;
-                   indent -= indent % curbuf->b_p_sw;
+                   indent -= indent % get_sw_value();
                }
                while (get_indent_str(p, 8) > indent)
                {
index 881a1961422f8f7c3bca701cdc9e413e7075688f..f8d9c1d7c434174a5c5c0a58e9d8c2ecb8077198 100644 (file)
@@ -3025,7 +3025,7 @@ foldlevelIndent(flp)
            flp->lvl = -1;
     }
     else
-       flp->lvl = get_indent_buf(buf, lnum) / buf->b_p_sw;
+       flp->lvl = get_indent_buf(buf, lnum) / get_sw_value();
     if (flp->lvl > flp->wp->w_p_fdn)
     {
        flp->lvl = flp->wp->w_p_fdn;
index 69ede43ff2530abbb69a2a9481d949a96f261918..e11e10e0cfa536458d37e854fcc06f4aecd0e607 100644 (file)
@@ -1389,9 +1389,11 @@ open_line(dir, flags, second_line_indent)
 #ifdef FEAT_SMARTINDENT
        if (did_si)
        {
+           int        sw = (int)get_sw_value();
+
            if (p_sr)
-               newindent -= newindent % (int)curbuf->b_p_sw;
-           newindent += (int)curbuf->b_p_sw;
+               newindent -= newindent % sw;
+           newindent += sw;
        }
 #endif
        /* Copy the indent */
@@ -6461,11 +6463,14 @@ find_last_paren(l, start, end)
     int
 get_c_indent()
 {
+    int sw = (int)get_sw_value();
+
     /*
      * spaces from a block's opening brace the prevailing indent for that
      * block should be
      */
-    int ind_level = curbuf->b_p_sw;
+
+    int ind_level = sw;
 
     /*
      * spaces from the edge of the line an open brace that's at the end of a
@@ -6512,12 +6517,12 @@ get_c_indent()
     /*
      * spaces from the switch() indent a "case xx" label should be located
      */
-    int ind_case = curbuf->b_p_sw;
+    int ind_case = sw;
 
     /*
      * spaces from the "case xx:" code after a switch() should be located
      */
-    int ind_case_code = curbuf->b_p_sw;
+    int ind_case_code = sw;
 
     /*
      * lineup break at end of case in switch() with case label
@@ -6528,45 +6533,45 @@ get_c_indent()
      * spaces from the class declaration indent a scope declaration label
      * should be located
      */
-    int ind_scopedecl = curbuf->b_p_sw;
+    int ind_scopedecl = sw;
 
     /*
      * spaces from the scope declaration label code should be located
      */
-    int ind_scopedecl_code = curbuf->b_p_sw;
+    int ind_scopedecl_code = sw;
 
     /*
      * amount K&R-style parameters should be indented
      */
-    int ind_param = curbuf->b_p_sw;
+    int ind_param = sw;
 
     /*
      * amount a function type spec should be indented
      */
-    int ind_func_type = curbuf->b_p_sw;
+    int ind_func_type = sw;
 
     /*
      * amount a cpp base class declaration or constructor initialization
      * should be indented
      */
-    int ind_cpp_baseclass = curbuf->b_p_sw;
+    int ind_cpp_baseclass = sw;
 
     /*
      * additional spaces beyond the prevailing indent a continuation line
      * should be located
      */
-    int ind_continuation = curbuf->b_p_sw;
+    int ind_continuation = sw;
 
     /*
      * spaces from the indent of the line with an unclosed parentheses
      */
-    int ind_unclosed = curbuf->b_p_sw * 2;
+    int ind_unclosed = sw * 2;
 
     /*
      * spaces from the indent of the line with an unclosed parentheses, which
      * itself is also unclosed
      */
-    int ind_unclosed2 = curbuf->b_p_sw;
+    int ind_unclosed2 = sw;
 
     /*
      * suppress ignoring spaces from the indent of a line starting with an
@@ -6719,12 +6724,12 @@ get_c_indent()
        if (*options == 's')        /* "2s" means two times 'shiftwidth' */
        {
            if (options == digits)
-               n = curbuf->b_p_sw;     /* just "s" is one 'shiftwidth' */
+               n = sw; /* just "s" is one 'shiftwidth' */
            else
            {
-               n *= curbuf->b_p_sw;
+               n *= sw;
                if (divider)
-                   n += (curbuf->b_p_sw * fraction + divider / 2) / divider;
+                   n += (sw * fraction + divider / 2) / divider;
            }
            ++options;
        }
index c60f3375ee2413f0c5883ccfef6a6c6647e29db3..561046d378047f15301f10757d4b43fdac19314d 100644 (file)
--- a/src/ops.c
+++ b/src/ops.c
@@ -332,7 +332,7 @@ shift_line(left, round, amount, call_changed_bytes)
 {
     int                count;
     int                i, j;
-    int                p_sw = (int)curbuf->b_p_sw;
+    int                p_sw = (int)get_sw_value();
 
     count = get_indent();      /* get current indent */
 
@@ -388,7 +388,7 @@ shift_block(oap, amount)
     int                        total;
     char_u             *newp, *oldp;
     int                        oldcol = curwin->w_cursor.col;
-    int                        p_sw = (int)curbuf->b_p_sw;
+    int                        p_sw = (int)get_sw_value();
     int                        p_ts = (int)curbuf->b_p_ts;
     struct block_def   bd;
     int                        incr;
index 97e45cd532d1022b2aa815be411a0ebdce5205a1..b6b0bf634685545b2f7ae3121a17cc2cdbc8cecd 100644 (file)
@@ -8125,7 +8125,7 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
     need_mouse_correct = TRUE;
 #endif
 
-    if (curbuf->b_p_sw <= 0)
+    if (curbuf->b_p_sw < 0)
     {
        errmsg = e_positive;
        curbuf->b_p_sw = curbuf->b_p_ts;
@@ -11419,3 +11419,13 @@ check_ff_value(p)
 {
     return check_opt_strings(p, p_ff_values, FALSE);
 }
+
+/*
+ * Return the effective shiftwidth value for current buffer, using the
+ * 'tabstop' value when 'shiftwidth' is zero.
+ */
+    long
+get_sw_value()
+{
+    return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts;
+}
index 15cf2b4f859105f67ee1dcbe8bcf685f8b90be79..7d3d8d65156d79b0605902bb90c3b3c06d81de8f 100644 (file)
@@ -56,4 +56,5 @@ int can_bs __ARGS((int what));
 void save_file_ff __ARGS((buf_T *buf));
 int file_ff_differs __ARGS((buf_T *buf, int ignore_empty));
 int check_ff_value __ARGS((char_u *p));
+long get_sw_value __ARGS((void));
 /* vim: set ft=c : */
index c01083484abab1f281de8ba5c0b2a9b4f75ea39b..c35104b055eafacceeb301cf8ad7e515b4865e31 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    629,
 /**/
     628,
 /**/