mirror of
https://github.com/vim/vim.git
synced 2025-10-03 05:14:07 -04:00
updated for version 7.3.178
Problem: C-indent doesn't handle code right after { correctly. Solution: Fix detecting unterminated line. (Lech Lorens)
This commit is contained in:
21
src/misc1.c
21
src/misc1.c
@@ -4983,7 +4983,7 @@ cin_skipcomment(s)
|
||||
}
|
||||
|
||||
/*
|
||||
* Return TRUE if there there is no code at *s. White space and comments are
|
||||
* Return TRUE if there is no code at *s. White space and comments are
|
||||
* not considered code.
|
||||
*/
|
||||
static int
|
||||
@@ -5458,8 +5458,11 @@ cin_islinecomment(p)
|
||||
}
|
||||
|
||||
/*
|
||||
* Recognize a line that starts with '{' or '}', or ends with ';', '{' or '}'.
|
||||
* Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
|
||||
* '}'.
|
||||
* Don't consider "} else" a terminated line.
|
||||
* Don't consider a line where there are unmatched opening braces before '}',
|
||||
* ';' or ',' a terminated line.
|
||||
* Return the character terminating the line (ending char's have precedence if
|
||||
* both apply in order to determine initializations).
|
||||
*/
|
||||
@@ -5470,6 +5473,7 @@ cin_isterminated(s, incl_open, incl_comma)
|
||||
int incl_comma; /* recognize a trailing comma */
|
||||
{
|
||||
char_u found_start = 0;
|
||||
unsigned n_open = 0;
|
||||
|
||||
s = cin_skipcomment(s);
|
||||
|
||||
@@ -5480,10 +5484,19 @@ cin_isterminated(s, incl_open, incl_comma)
|
||||
{
|
||||
/* skip over comments, "" strings and 'c'haracters */
|
||||
s = skip_string(cin_skipcomment(s));
|
||||
if ((*s == ';' || (incl_open && *s == '{') || *s == '}'
|
||||
|| (incl_comma && *s == ','))
|
||||
if (*s == '}' && n_open > 0)
|
||||
--n_open;
|
||||
if (n_open == 0
|
||||
&& (*s == ';' || *s == '}' || (incl_comma && *s == ','))
|
||||
&& cin_nocode(s + 1))
|
||||
return *s;
|
||||
else if (*s == '{')
|
||||
{
|
||||
if (incl_open && cin_nocode(s + 1))
|
||||
return *s;
|
||||
else
|
||||
++n_open;
|
||||
}
|
||||
|
||||
if (*s)
|
||||
s++;
|
||||
|
@@ -1343,6 +1343,22 @@ func(int a
|
||||
#if defined(FOO)
|
||||
, int b
|
||||
, int c
|
||||
#endif
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
:set cino&
|
||||
2kdd=][
|
||||
ENDTEST
|
||||
|
||||
void func(void)
|
||||
{
|
||||
if(x==y)
|
||||
if(y==z)
|
||||
foo=1;
|
||||
else { bar=1;
|
||||
baz=2;
|
||||
}
|
||||
printf("Foo!\n");
|
||||
|
@@ -1204,3 +1204,15 @@ func(int a
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void func(void)
|
||||
{
|
||||
if(x==y)
|
||||
if(y==z)
|
||||
foo=1;
|
||||
else { bar=1;
|
||||
baz=2;
|
||||
}
|
||||
printf("Foo!\n");
|
||||
}
|
||||
|
||||
|
@@ -714,6 +714,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
178,
|
||||
/**/
|
||||
177,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user