diff options
Diffstat (limited to 'src/cindent.c')
-rw-r--r-- | src/cindent.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/cindent.c b/src/cindent.c index ad3052249d..4fa165e699 100644 --- a/src/cindent.c +++ b/src/cindent.c @@ -2144,13 +2144,30 @@ get_c_indent(void) // If we're inside a "//" comment and there is a "//" comment in a // previous line, lineup with that one. - if (cin_islinecomment(theline) - && (trypos = find_line_comment()) != NULL) // XXX + if (cin_islinecomment(theline)) { - // find how indented the line beginning the comment is - getvcol(curwin, trypos, &col, NULL, NULL); - amount = col; - goto theend; + pos_T linecomment_pos; + + trypos = find_line_comment(); // XXX + if (trypos == NULL && curwin->w_cursor.lnum > 1) + { + // There may be a statement before the comment, search from the end + // of the line for a comment start. + linecomment_pos.col = + check_linecomment(ml_get(curwin->w_cursor.lnum - 1)); + if (linecomment_pos.col != MAXCOL) + { + trypos = &linecomment_pos; + trypos->lnum = curwin->w_cursor.lnum - 1; + } + } + if (trypos != NULL) + { + // find how indented the line beginning the comment is + getvcol(curwin, trypos, &col, NULL, NULL); + amount = col; + goto theend; + } } // If we're inside a comment and not looking at the start of the |