diff options
author | Bram Moolenaar <Bram@vim.org> | 2011-10-04 18:03:47 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2011-10-04 18:03:47 +0200 |
commit | e79d1535cf1933729bb7352123c12cb91fd2ce0c (patch) | |
tree | 73e345a51d5319368836380dceda3553c752a890 | |
parent | aa0e80471f663385a143af419708067b1ea80de7 (diff) | |
download | vim-git-e79d1535cf1933729bb7352123c12cb91fd2ce0c.tar.gz |
updated for version 7.3.332v7.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)
-rw-r--r-- | src/misc1.c | 84 | ||||
-rw-r--r-- | src/testdir/test3.in | 14 | ||||
-rw-r--r-- | src/testdir/test3.ok | 10 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 72 insertions, 38 deletions
diff --git a/src/misc1.c b/src/misc1.c index 589a145cc..95b45479c 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -6389,6 +6389,7 @@ get_c_indent() int lookfor_cpp_namespace = FALSE; int cont_amount = 0; /* amount for continuation line */ int original_line_islabel; + int added_to_amount = 0; for (options = curbuf->b_p_cino; *options; ) { @@ -7216,52 +7217,59 @@ get_c_indent() else amount += ind_continuation; } - else if (lookfor_cpp_namespace) + else { - if (curwin->w_cursor.lnum == ourscope) - continue; + if (lookfor != LOOKFOR_TERM + && lookfor != LOOKFOR_CPP_BASECLASS) + { + amount = scope_amount; + if (theline[0] == '{') + { + amount += ind_open_extra; + added_to_amount = ind_open_extra; + } + } - if (curwin->w_cursor.lnum == 0 - || curwin->w_cursor.lnum - < ourscope - FIND_NAMESPACE_LIM) - break; + if (lookfor_cpp_namespace) + { + /* + * Looking for C++ namespace, need to look further + * back. + */ + if (curwin->w_cursor.lnum == ourscope) + continue; - l = ml_get_curline(); + if (curwin->w_cursor.lnum == 0 + || curwin->w_cursor.lnum + < ourscope - FIND_NAMESPACE_LIM) + break; - /* - * 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; - } + l = ml_get_curline(); - /* - * Skip preprocessor directives and blank lines. - */ - if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) - continue; + /* 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; + } - if (cin_is_cpp_namespace(l)) - { - amount += ind_cpp_namespace; - break; - } + /* Skip preprocessor directives and blank lines. */ + if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)) + continue; - if (cin_nocode(l)) - continue; + /* Finally the actual check for "namespace". */ + if (cin_is_cpp_namespace(l)) + { + amount += ind_cpp_namespace - added_to_amount; + break; + } - } - else if (lookfor != LOOKFOR_TERM - && lookfor != LOOKFOR_CPP_BASECLASS) - { - amount = scope_amount; - if (theline[0] == '{') - amount += ind_open_extra; + if (cin_nocode(l)) + continue; + } } break; } diff --git a/src/testdir/test3.in b/src/testdir/test3.in index 55ca2a5a7..f987478f6 100644 --- a/src/testdir/test3.in +++ b/src/testdir/test3.in @@ -1309,6 +1309,20 @@ protected: }; 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 :set cino=+20 2kdd]]=][ ENDTEST diff --git a/src/testdir/test3.ok b/src/testdir/test3.ok index 396230744..c95b18846 100644 --- a/src/testdir/test3.ok +++ b/src/testdir/test3.ok @@ -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 foo() { diff --git a/src/version.c b/src/version.c index 6b1676d2d..756c6366c 100644 --- a/src/version.c +++ b/src/version.c @@ -710,6 +710,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 332, +/**/ 331, /**/ 330, |