diff options
author | Bram Moolenaar <Bram@vim.org> | 2012-10-21 00:10:39 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2012-10-21 00:10:39 +0200 |
commit | 9f340fa57b91db9c04307c99cd4475f197d7a5c8 (patch) | |
tree | b7be09f511971a7e931fb52cbbe0a2ec115f719c /src | |
parent | 205f9f5e2d4b25a94072644bbcdd2c8b20ad7b80 (diff) | |
download | vim-git-9f340fa57b91db9c04307c99cd4475f197d7a5c8.tar.gz |
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.c | 12 | ||||
-rw-r--r-- | src/option.c | 15 | ||||
-rw-r--r-- | src/proto/option.pro | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 19 insertions, 11 deletions
diff --git a/src/edit.c b/src/edit.c index 9017fd0f3..0d9409546 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 b6b0bf634..da9807156 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 7d3d8d651..fd71704ec 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 e0a63265a..0a39edeeb 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, |