aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2018-09-11 13:55:46 -0400
committerJustin M. Keyes <justinkz@gmail.com>2018-09-11 19:55:46 +0200
commit61df24b9982c26c068e5fafbc79fd059a067d998 (patch)
tree763ac76a3580a635aa3bafc46c5d539a96fdd8b4
parentd6b3c09129dee687b33db719be5bb3e2b51deccc (diff)
downloadrneovim-61df24b9982c26c068e5fafbc79fd059a067d998.tar.gz
rneovim-61df24b9982c26c068e5fafbc79fd059a067d998.tar.bz2
rneovim-61df24b9982c26c068e5fafbc79fd059a067d998.zip
vim-patch:8.0.1154: 'indentkeys' does not work properly (#8980)
Problem: 'indentkeys' does not work properly. (Gary Johnson) Solution: Get the cursor line again. (Christian Brabandt, closes vim/vim#2151) https://github.com/vim/vim/commit/1b38344e00af65df12946fffda7f3201621c35ef
-rw-r--r--src/nvim/edit.c2
-rw-r--r--src/nvim/testdir/test_edit.vim27
2 files changed, 28 insertions, 1 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index e42fe4efb0..53fe164050 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -6950,7 +6950,7 @@ bool in_cinkeys(int keytyped, int when, bool line_is_empty)
if (match && try_match_word && !try_match) {
/* "0=word": Check if there are only blanks before the
* word. */
- if (getwhitecols(line) !=
+ if (getwhitecols_curline() !=
(int)(curwin->w_cursor.col - (p - look))) {
match = false;
}
diff --git a/src/nvim/testdir/test_edit.vim b/src/nvim/testdir/test_edit.vim
index d2474c06fe..1effc8e12f 100644
--- a/src/nvim/testdir/test_edit.vim
+++ b/src/nvim/testdir/test_edit.vim
@@ -314,6 +314,33 @@ func! Test_edit_11()
bw!
endfunc
+func! Test_edit_11_indentexpr()
+ " Test that indenting kicks in
+ new
+ " Use indentexpr instead of cindenting
+ func! Do_Indent()
+ let pline=prevnonblank(v:lnum)
+ if empty(getline(v:lnum))
+ if getline(pline) =~ 'if\|then'
+ return shiftwidth()
+ else
+ return 0
+ endif
+ else
+ return 0
+ endif
+ endfunc
+ setl indentexpr=Do_Indent() indentkeys+=0=then,0=fi
+ call setline(1, ['if [ $this ]'])
+ call cursor(1, 1)
+ call feedkeys("othen\<cr>that\<cr>fi", 'tnix')
+ call assert_equal(['if [ $this ]', "then", "\<tab>that", "fi"], getline(1, '$'))
+ set cinkeys&vim indentkeys&vim
+ set nocindent indentexpr=
+ delfu Do_Indent
+ bw!
+endfunc
+
func! Test_edit_12()
" Test changing indent in replace mode
new