0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.0.0754: 'indentexpr' overrules lisp indenting in one situation

Problem:    'indentexpr' overrules lisp indenting in one situation.
Solution:   Add "else" to keep the lisp indent. (issue #11327)
This commit is contained in:
Bram Moolenaar 2022-10-15 10:49:36 +01:00
parent b77bdce120
commit a79b35b578
3 changed files with 16 additions and 4 deletions

View File

@ -2269,19 +2269,18 @@ open_line(
else else
vreplace_mode = 0; vreplace_mode = 0;
// May do lisp indenting.
if (!p_paste if (!p_paste
&& leader == NULL && leader == NULL
&& curbuf->b_p_lisp && curbuf->b_p_lisp
&& curbuf->b_p_ai) && curbuf->b_p_ai)
{ {
// do lisp indenting
fixthisline(get_lisp_indent); fixthisline(get_lisp_indent);
ai_col = (colnr_T)getwhitecols_curline(); ai_col = (colnr_T)getwhitecols_curline();
} }
else if (do_cindent)
// May do indenting after opening a new line.
if (do_cindent)
{ {
// do 'cindent' or 'indentexpr' indenting
do_c_expr_indent(); do_c_expr_indent();
ai_col = (colnr_T)getwhitecols_curline(); ai_col = (colnr_T)getwhitecols_curline();
} }

View File

@ -91,6 +91,17 @@ func Test_lispindent_negative()
call assert_equal(-1, lispindent(-1)) call assert_equal(-1, lispindent(-1))
endfunc endfunc
func Test_lispindent_with_indentexpr()
enew
setl ai lisp nocin indentexpr=11
exe "normal a(x\<CR>1\<CR>2)\<Esc>"
let expected = ['(x', ' 1', ' 2)']
call assert_equal(expected, getline(1, 3))
normal 1G=G
call assert_equal(expected, getline(1, 3))
bwipe!
endfunc
func Test_lisp_indent_works() func Test_lisp_indent_works()
" This was reading beyond the end of the line " This was reading beyond the end of the line
new new

View File

@ -695,6 +695,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 */
/**/
754,
/**/ /**/
753, 753,
/**/ /**/