summaryrefslogtreecommitdiffstats
path: root/src/cindent.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cindent.c')
-rw-r--r--src/cindent.c29
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