mirror of
https://github.com/vim/vim.git
synced 2025-10-05 05:34:07 -04:00
updated for version 7.3.164
Problem: C-indenting: a preprocessor statement confuses detection of a function delcaration. Solution: Ignore preprocessor lines. (Lech Lorens) Also recognize the style to put a comma before the argument name.
This commit is contained in:
31
src/misc1.c
31
src/misc1.c
@@ -5396,8 +5396,7 @@ cin_get_equal_amount(lnum)
|
||||
cin_ispreproc(s)
|
||||
char_u *s;
|
||||
{
|
||||
s = skipwhite(s);
|
||||
if (*s == '#')
|
||||
if (*skipwhite(s) == '#')
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -5513,6 +5512,10 @@ cin_isfuncdecl(sp, first_lnum)
|
||||
else
|
||||
s = *sp;
|
||||
|
||||
/* Ignore line starting with #. */
|
||||
if (cin_ispreproc(s))
|
||||
return FALSE;
|
||||
|
||||
while (*s && *s != '(' && *s != ';' && *s != '\'' && *s != '"')
|
||||
{
|
||||
if (cin_iscomment(s)) /* ignore comments */
|
||||
@@ -5538,13 +5541,29 @@ cin_isfuncdecl(sp, first_lnum)
|
||||
retval = TRUE;
|
||||
goto done;
|
||||
}
|
||||
if (*s == ',' && cin_nocode(s + 1))
|
||||
if ((*s == ',' && cin_nocode(s + 1)) || s[1] == NUL || cin_nocode(s))
|
||||
{
|
||||
/* ',' at the end: continue looking in the next line */
|
||||
int comma = (*s == ',');
|
||||
|
||||
/* ',' at the end: continue looking in the next line.
|
||||
* At the end: check for ',' in the next line, for this style:
|
||||
* func(arg1
|
||||
* , arg2) */
|
||||
for (;;)
|
||||
{
|
||||
if (lnum >= curbuf->b_ml.ml_line_count)
|
||||
break;
|
||||
s = ml_get(++lnum);
|
||||
if (!cin_ispreproc(s))
|
||||
break;
|
||||
}
|
||||
if (lnum >= curbuf->b_ml.ml_line_count)
|
||||
break;
|
||||
|
||||
s = ml_get(++lnum);
|
||||
/* Require a comma at end of the line or a comma or ')' at the
|
||||
* start of next line. */
|
||||
s = skipwhite(s);
|
||||
if (!comma && *s != ',' && *s != ')')
|
||||
break;
|
||||
}
|
||||
else if (cin_iscomment(s)) /* ignore comments */
|
||||
s = cin_skipcomment(s);
|
||||
|
Reference in New Issue
Block a user