1
0
forked from aniani/vim

updated for version 7.3.332

Problem:    Indent after "public:" is not increased in C++ code. (Lech Lorens)
Solution:   Check for namespace after the regular checks. (partly by Martin
            Gieseking)
This commit is contained in:
Bram Moolenaar 2011-10-04 18:03:47 +02:00
parent aa0e80471f
commit e79d1535cf
4 changed files with 78 additions and 44 deletions

View File

@ -6389,6 +6389,7 @@ get_c_indent()
int lookfor_cpp_namespace = FALSE; int lookfor_cpp_namespace = FALSE;
int cont_amount = 0; /* amount for continuation line */ int cont_amount = 0; /* amount for continuation line */
int original_line_islabel; int original_line_islabel;
int added_to_amount = 0;
for (options = curbuf->b_p_cino; *options; ) for (options = curbuf->b_p_cino; *options; )
{ {
@ -7216,52 +7217,59 @@ get_c_indent()
else else
amount += ind_continuation; amount += ind_continuation;
} }
else if (lookfor_cpp_namespace) else
{ {
if (curwin->w_cursor.lnum == ourscope) if (lookfor != LOOKFOR_TERM
continue;
if (curwin->w_cursor.lnum == 0
|| curwin->w_cursor.lnum
< ourscope - FIND_NAMESPACE_LIM)
break;
l = ml_get_curline();
/*
* If we're in a comment now, skip to the start of the
* comment.
*/
trypos = find_start_comment(ind_maxcomment);
if (trypos != NULL)
{
curwin->w_cursor.lnum = trypos->lnum + 1;
curwin->w_cursor.col = 0;
continue;
}
/*
* Skip preprocessor directives and blank lines.
*/
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
continue;
if (cin_is_cpp_namespace(l))
{
amount += ind_cpp_namespace;
break;
}
if (cin_nocode(l))
continue;
}
else if (lookfor != LOOKFOR_TERM
&& lookfor != LOOKFOR_CPP_BASECLASS) && lookfor != LOOKFOR_CPP_BASECLASS)
{ {
amount = scope_amount; amount = scope_amount;
if (theline[0] == '{') if (theline[0] == '{')
amount += ind_open_extra; {
amount += ind_open_extra;
added_to_amount = ind_open_extra;
}
}
if (lookfor_cpp_namespace)
{
/*
* Looking for C++ namespace, need to look further
* back.
*/
if (curwin->w_cursor.lnum == ourscope)
continue;
if (curwin->w_cursor.lnum == 0
|| curwin->w_cursor.lnum
< ourscope - FIND_NAMESPACE_LIM)
break;
l = ml_get_curline();
/* If we're in a comment now, skip to the start of
* the comment. */
trypos = find_start_comment(ind_maxcomment);
if (trypos != NULL)
{
curwin->w_cursor.lnum = trypos->lnum + 1;
curwin->w_cursor.col = 0;
continue;
}
/* Skip preprocessor directives and blank lines. */
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
continue;
/* Finally the actual check for "namespace". */
if (cin_is_cpp_namespace(l))
{
amount += ind_cpp_namespace - added_to_amount;
break;
}
if (cin_nocode(l))
continue;
}
} }
break; break;
} }

View File

@ -1308,6 +1308,20 @@ protected:
void testfall(); void testfall();
}; };
STARTTEST
:set cino=(0,gs,hs
2kdd]]=][
ENDTEST
class Foo : public Bar
{
public:
virtual void method1(void) = 0;
virtual void method2(int arg1,
int arg2,
int arg3) = 0;
};
STARTTEST STARTTEST
:set cino=+20 :set cino=+20
2kdd]]=][ 2kdd]]=][

View File

@ -1190,6 +1190,16 @@ protected:
}; };
class Foo : public Bar
{
public:
virtual void method1(void) = 0;
virtual void method2(int arg1,
int arg2,
int arg3) = 0;
};
void void
foo() foo()
{ {

View File

@ -709,6 +709,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 */
/**/
332,
/**/ /**/
331, 331,
/**/ /**/