0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

updated for version 7.3.693

Problem:    Can't make 'softtabstop' follow 'shiftwidth'.
Solution:   When 'softtabstop' is negative use the value of 'shiftwidth'.
            (so8res)
This commit is contained in:
Bram Moolenaar
2012-10-21 00:10:39 +02:00
parent 205f9f5e2d
commit 9f340fa57b
4 changed files with 19 additions and 11 deletions

View File

@@ -8885,7 +8885,7 @@ ins_bs(c, mode, inserted_space_p)
*/ */
if ( mode == BACKSPACE_CHAR if ( mode == BACKSPACE_CHAR
&& ((p_sta && in_indent) && ((p_sta && in_indent)
|| (curbuf->b_p_sts != 0 || (get_sts_value() != 0
&& curwin->w_cursor.col > 0 && curwin->w_cursor.col > 0
&& (*(ml_get_cursor() - 1) == TAB && (*(ml_get_cursor() - 1) == TAB
|| (*(ml_get_cursor() - 1) == ' ' || (*(ml_get_cursor() - 1) == ' '
@@ -8901,7 +8901,7 @@ ins_bs(c, mode, inserted_space_p)
if (p_sta && in_indent) if (p_sta && in_indent)
ts = (int)get_sw_value(); ts = (int)get_sw_value();
else else
ts = (int)curbuf->b_p_sts; ts = (int)get_sts_value();
/* Compute the virtual column where we want to be. Since /* Compute the virtual column where we want to be. Since
* 'showbreak' may get in the way, need to get the last column of * 'showbreak' may get in the way, need to get the last column of
* the previous character. */ * the previous character. */
@@ -9590,7 +9590,7 @@ ins_tab()
*/ */
if (!curbuf->b_p_et if (!curbuf->b_p_et
&& !(p_sta && ind && curbuf->b_p_ts != get_sw_value()) && !(p_sta && ind && curbuf->b_p_ts != get_sw_value())
&& curbuf->b_p_sts == 0) && get_sts_value() == 0)
return TRUE; return TRUE;
if (stop_arrow() == FAIL) if (stop_arrow() == FAIL)
@@ -9606,8 +9606,8 @@ ins_tab()
if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */
temp = (int)get_sw_value(); temp = (int)get_sw_value();
else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */
temp = (int)curbuf->b_p_sts; temp = (int)get_sts_value();
else /* otherwise use 'tabstop' */ else /* otherwise use 'tabstop' */
temp = (int)curbuf->b_p_ts; temp = (int)curbuf->b_p_ts;
temp -= get_nolist_virtcol() % temp; temp -= get_nolist_virtcol() % temp;
@@ -9635,7 +9635,7 @@ ins_tab()
/* /*
* When 'expandtab' not set: Replace spaces by TABs where possible. * 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; char_u *ptr;
#ifdef FEAT_VREPLACE #ifdef FEAT_VREPLACE

View File

@@ -8509,11 +8509,6 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
p_window = Rows - 1; p_window = Rows - 1;
} }
if (curbuf->b_p_sts < 0)
{
errmsg = e_positive;
curbuf->b_p_sts = 0;
}
if (curbuf->b_p_ts <= 0) if (curbuf->b_p_ts <= 0)
{ {
errmsg = e_positive; errmsg = e_positive;
@@ -11429,3 +11424,13 @@ get_sw_value()
{ {
return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts; 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;
}

View File

@@ -57,4 +57,5 @@ void save_file_ff __ARGS((buf_T *buf));
int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); int file_ff_differs __ARGS((buf_T *buf, int ignore_empty));
int check_ff_value __ARGS((char_u *p)); int check_ff_value __ARGS((char_u *p));
long get_sw_value __ARGS((void)); long get_sw_value __ARGS((void));
long get_sts_value __ARGS((void));
/* vim: set ft=c : */ /* vim: set ft=c : */

View File

@@ -719,6 +719,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
693,
/**/ /**/
692, 692,
/**/ /**/