0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 7.4.891

Problem:    Indentation of array initializer is wrong.
Solution:   Avoid that calling find_start_rawstring() changes the position
            returned by find_start_comment(), add a test. (Hirohito Higashi)
This commit is contained in:
Bram Moolenaar 2015-10-07 11:41:49 +02:00
parent 094454fa70
commit 089af18d1f
4 changed files with 65 additions and 4 deletions

View File

@ -5345,8 +5345,19 @@ find_start_comment(ind_maxcomment) /* XXX */
static pos_T *
ind_find_start_CORS() /* XXX */
{
pos_T *comment_pos = find_start_comment(curbuf->b_ind_maxcomment);
pos_T *rs_pos = find_start_rawstring(curbuf->b_ind_maxcomment);
static pos_T comment_pos_copy;
pos_T *comment_pos;
pos_T *rs_pos;
comment_pos = find_start_comment(curbuf->b_ind_maxcomment);
if (comment_pos != NULL)
{
/* Need to make a copy of the static pos in findmatchlimit(),
* calling find_start_rawstring() may change it. */
comment_pos_copy = *comment_pos;
comment_pos = &comment_pos_copy;
}
rs_pos = find_start_rawstring(curbuf->b_ind_maxcomment);
/* If comment_pos is before rs_pos the raw string is inside the comment.
* If rs_pos is before comment_pos the comment is inside the raw string. */
@ -8334,7 +8345,8 @@ get_c_indent()
if (terminated == 0 || (lookfor != LOOKFOR_UNTERM
&& terminated == ','))
{
if (*skipwhite(l) == '[' || l[STRLEN(l) - 1] == '[')
if (lookfor != LOOKFOR_ENUM_OR_INIT &&
(*skipwhite(l) == '[' || l[STRLEN(l) - 1] == '['))
amount += ind_continuation;
/*
* if we're in the middle of a paren thing,
@ -8576,7 +8588,10 @@ get_c_indent()
*/
l = ml_get_curline();
amount = cur_amount;
if (*skipwhite(l) == ']' || l[STRLEN(l) - 1] == ']')
n = (int)STRLEN(l);
if (terminated == ',' && (*skipwhite(l) == ']'
|| (n >=2 && l[n - 2] == ']')))
break;
/*

View File

@ -910,6 +910,28 @@ const char* s = R"foo(
)foo";
}
{
int a[4] = {
[0] = 0,
[1] = 1,
[2] = 2,
[3] = 3,
};
}
{
a = b[2]
+ 3;
}
{
if (1)
/* aaaaa
* bbbbb
*/
a = 1;
}
/* end of AUTO */
STARTTEST

View File

@ -898,6 +898,28 @@ void getstring() {
)foo";
}
{
int a[4] = {
[0] = 0,
[1] = 1,
[2] = 2,
[3] = 3,
};
}
{
a = b[2]
+ 3;
}
{
if (1)
/* aaaaa
* bbbbb
*/
a = 1;
}
/* end of AUTO */

View File

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