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:
12
src/edit.c
12
src/edit.c
@@ -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
|
||||||
|
15
src/option.c
15
src/option.c
@@ -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;
|
||||||
|
}
|
||||||
|
@@ -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 : */
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user