diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-01-31 15:44:54 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-01-31 15:44:54 +0800 |
commit | eda957db10e97b28a2734e0391d986676927d963 (patch) | |
tree | 1252a8a9d7978a42b6605db431ffeca5007021fb /src/nvim/indent_c.c | |
parent | ef5cd99df0e00ee5dc91bd1b2b0e5fe1e346cbd1 (diff) | |
download | rneovim-eda957db10e97b28a2734e0391d986676927d963.tar.gz rneovim-eda957db10e97b28a2734e0391d986676927d963.tar.bz2 rneovim-eda957db10e97b28a2734e0391d986676927d963.zip |
vim-patch:8.2.3787: no proper formatting of a C line comment after a statement
Problem: No proper formatting of a C line comment after a statement.
Solution: Find the start of the line comment, insert the comment leader and
indent the comment properly.
https://github.com/vim/vim/commit/6e371ecb27227ff8fedd8561d0f3880a17576848
Diffstat (limited to 'src/nvim/indent_c.c')
-rw-r--r-- | src/nvim/indent_c.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/nvim/indent_c.c b/src/nvim/indent_c.c index eb24e13d24..5ccf322b76 100644 --- a/src/nvim/indent_c.c +++ b/src/nvim/indent_c.c @@ -1906,12 +1906,25 @@ int 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 - // find how indented the line beginning the comment is - getvcol(curwin, trypos, &col, NULL, NULL); - amount = col; - goto theend; + if (cin_islinecomment(theline)) { + 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 |