mirror of
https://github.com/vim/vim.git
synced 2025-10-04 05:25:06 -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.
|
* not considered code.
|
||||||
*/
|
*/
|
||||||
static int
|
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 "} 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
|
* Return the character terminating the line (ending char's have precedence if
|
||||||
* both apply in order to determine initializations).
|
* 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 */
|
int incl_comma; /* recognize a trailing comma */
|
||||||
{
|
{
|
||||||
char_u found_start = 0;
|
char_u found_start = 0;
|
||||||
|
unsigned n_open = 0;
|
||||||
|
|
||||||
s = cin_skipcomment(s);
|
s = cin_skipcomment(s);
|
||||||
|
|
||||||
@@ -5480,10 +5484,19 @@ cin_isterminated(s, incl_open, incl_comma)
|
|||||||
{
|
{
|
||||||
/* skip over comments, "" strings and 'c'haracters */
|
/* skip over comments, "" strings and 'c'haracters */
|
||||||
s = skip_string(cin_skipcomment(s));
|
s = skip_string(cin_skipcomment(s));
|
||||||
if ((*s == ';' || (incl_open && *s == '{') || *s == '}'
|
if (*s == '}' && n_open > 0)
|
||||||
|| (incl_comma && *s == ','))
|
--n_open;
|
||||||
|
if (n_open == 0
|
||||||
|
&& (*s == ';' || *s == '}' || (incl_comma && *s == ','))
|
||||||
&& cin_nocode(s + 1))
|
&& cin_nocode(s + 1))
|
||||||
return *s;
|
return *s;
|
||||||
|
else if (*s == '{')
|
||||||
|
{
|
||||||
|
if (incl_open && cin_nocode(s + 1))
|
||||||
|
return *s;
|
||||||
|
else
|
||||||
|
++n_open;
|
||||||
|
}
|
||||||
|
|
||||||
if (*s)
|
if (*s)
|
||||||
s++;
|
s++;
|
||||||
|
@@ -1343,6 +1343,22 @@ func(int a
|
|||||||
#if defined(FOO)
|
#if defined(FOO)
|
||||||
, int b
|
, int b
|
||||||
, int c
|
, int c
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
STARTTEST
|
||||||
|
:set cino&
|
||||||
|
2kdd=][
|
||||||
|
ENDTEST
|
||||||
|
|
||||||
|
void func(void)
|
||||||
|
{
|
||||||
|
if(x==y)
|
||||||
|
if(y==z)
|
||||||
|
foo=1;
|
||||||
|
else { bar=1;
|
||||||
baz=2;
|
baz=2;
|
||||||
}
|
}
|
||||||
printf("Foo!\n");
|
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[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
178,
|
||||||
/**/
|
/**/
|
||||||
177,
|
177,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user