forked from aniani/vim
updated for version 7.3.363
Problem: C indenting is wrong after #endif followed by a semicolon. Solution: Add special handling for a semicolon in a line by itself. (Lech Lorens)
This commit is contained in:
23
src/misc1.c
23
src/misc1.c
@@ -8142,6 +8142,29 @@ term_again:
|
||||
if (cin_ends_in(l, (char_u *)"};", NULL))
|
||||
break;
|
||||
|
||||
/*
|
||||
* Find a line only has a semicolon that belongs to a previous
|
||||
* line ending in '}', e.g. before an #endif. Don't increase
|
||||
* indent then.
|
||||
*/
|
||||
if (*(look = skipwhite(l)) == ';' && cin_nocode(look + 1))
|
||||
{
|
||||
pos_T curpos_save = curwin->w_cursor;
|
||||
|
||||
while (curwin->w_cursor.lnum > 1)
|
||||
{
|
||||
look = ml_get(--curwin->w_cursor.lnum);
|
||||
if (!(cin_nocode(look) || cin_ispreproc_cont(
|
||||
&look, &curwin->w_cursor.lnum)))
|
||||
break;
|
||||
}
|
||||
if (curwin->w_cursor.lnum > 0
|
||||
&& cin_ends_in(look, (char_u *)"}", NULL))
|
||||
break;
|
||||
|
||||
curwin->w_cursor = curpos_save;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the PREVIOUS line is a function declaration, the current
|
||||
* line (and the ones that follow) needs to be indented as
|
||||
|
Reference in New Issue
Block a user