changeset 30839:942f1b3bc694 v9.0.0754

patch 9.0.0754: 'indentexpr' overrules lisp indenting in one situation Commit: https://github.com/vim/vim/commit/a79b35b5781ae770334cec781d17fec3875f8108 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Oct 15 10:49:36 2022 +0100 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 https://github.com/vim/vim/issues/11327)
author Bram Moolenaar <Bram@vim.org>
date Sat, 15 Oct 2022 12:00:03 +0200
parents 667e4a093edd
children a61b09c33ed7
files src/change.c src/testdir/test_lispindent.vim src/version.c
diffstat 3 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/change.c
+++ b/src/change.c
@@ -2269,19 +2269,18 @@ open_line(
     else
 	vreplace_mode = 0;
 
-    // May do lisp indenting.
     if (!p_paste
 	    && leader == NULL
 	    && curbuf->b_p_lisp
 	    && curbuf->b_p_ai)
     {
+	// do lisp indenting
 	fixthisline(get_lisp_indent);
 	ai_col = (colnr_T)getwhitecols_curline();
     }
-
-    // May do indenting after opening a new line.
-    if (do_cindent)
+    else if (do_cindent)
     {
+	// do 'cindent' or 'indentexpr' indenting
 	do_c_expr_indent();
 	ai_col = (colnr_T)getwhitecols_curline();
     }
--- a/src/testdir/test_lispindent.vim
+++ b/src/testdir/test_lispindent.vim
@@ -91,6 +91,17 @@ func Test_lispindent_negative()
   call assert_equal(-1, lispindent(-1))
 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()
   " This was reading beyond the end of the line
   new
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    754,
+/**/
     753,
 /**/
     752,