summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2012-10-21 00:10:39 +0200
committerBram Moolenaar <Bram@vim.org>2012-10-21 00:10:39 +0200
commit9f340fa57b91db9c04307c99cd4475f197d7a5c8 (patch)
treeb7be09f511971a7e931fb52cbbe0a2ec115f719c /src
parent205f9f5e2d4b25a94072644bbcdd2c8b20ad7b80 (diff)
updated for version 7.3.693v7.3.693
Problem: Can't make 'softtabstop' follow 'shiftwidth'. Solution: When 'softtabstop' is negative use the value of 'shiftwidth'. (so8res)
Diffstat (limited to 'src')
-rw-r--r--src/edit.c12
-rw-r--r--src/option.c15
-rw-r--r--src/proto/option.pro1
-rw-r--r--src/version.c2
4 files changed, 19 insertions, 11 deletions
diff --git a/src/edit.c b/src/edit.c
index 9017fd0f31..0d94095466 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -8885,7 +8885,7 @@ ins_bs(c, mode, inserted_space_p)
*/
if ( mode == BACKSPACE_CHAR
&& ((p_sta && in_indent)
- || (curbuf->b_p_sts != 0
+ || (get_sts_value() != 0
&& curwin->w_cursor.col > 0
&& (*(ml_get_cursor() - 1) == TAB
|| (*(ml_get_cursor() - 1) == ' '
@@ -8901,7 +8901,7 @@ ins_bs(c, mode, inserted_space_p)
if (p_sta && in_indent)
ts = (int)get_sw_value();
else
- ts = (int)curbuf->b_p_sts;
+ ts = (int)get_sts_value();
/* 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. */
@@ -9590,7 +9590,7 @@ ins_tab()
*/
if (!curbuf->b_p_et
&& !(p_sta && ind && curbuf->b_p_ts != get_sw_value())
- && curbuf->b_p_sts == 0)
+ && get_sts_value() == 0)
return TRUE;
if (stop_arrow() == FAIL)
@@ -9606,8 +9606,8 @@ ins_tab()
if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */
temp = (int)get_sw_value();
- else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */
- temp = (int)curbuf->b_p_sts;
+ else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */
+ temp = (int)get_sts_value();
else /* otherwise use 'tabstop' */
temp = (int)curbuf->b_p_ts;
temp -= get_nolist_virtcol() % temp;
@@ -9635,7 +9635,7 @@ ins_tab()
/*
* When 'expandtab' not set: Replace spaces by TABs where possible.
*/
- if (!curbuf->b_p_et && (curbuf->b_p_sts || (p_sta && ind)))
+ if (!curbuf->b_p_et && (get_sts_value() || (p_sta && ind)))
{
char_u *ptr;
#ifdef FEAT_VREPLACE
diff --git a/src/option.c b/src/option.c
index b6b0bf6346..da9807156d 100644
--- a/src/option.c
+++ b/src/option.c
@@ -8509,11 +8509,6 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
p_window = Rows - 1;
}
- if (curbuf->b_p_sts < 0)
- {
- errmsg = e_positive;
- curbuf->b_p_sts = 0;
- }
if (curbuf->b_p_ts <= 0)
{
errmsg = e_positive;
@@ -11429,3 +11424,13 @@ get_sw_value()
{
return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts;
}
+
+/*
+ * Return the effective softtabstop value for the current buffer, using the
+ * 'tabstop' value when 'softtabstop' is negative.
+ */
+ long
+get_sts_value()
+{
+ return curbuf->b_p_sts < 0 ? get_sw_value() : curbuf->b_p_sts;
+}
diff --git a/src/proto/option.pro b/src/proto/option.pro
index 7d3d8d6515..fd71704ec1 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -57,4 +57,5 @@ 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));
+long get_sts_value __ARGS((void));
/* vim: set ft=c : */
diff --git a/src/version.c b/src/version.c
index e0a63265af..0a39edeeb6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -720,6 +720,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 693,
+/**/
692,
/**/
691,