diff options
author | watiko <service@mail.watiko.net> | 2016-02-03 06:53:43 +0900 |
---|---|---|
committer | watiko <service@mail.watiko.net> | 2016-02-03 21:56:22 +0900 |
commit | 924cacd2fcf4e2f84886761ad458a9ac4e6407fa (patch) | |
tree | 6405c6da7693fd1f8fd0a7df5c0a531251ee58d3 /src | |
parent | 4f4b8ea4489b445d0f9e0b8e1b9885555d0d861f (diff) | |
download | rneovim-924cacd2fcf4e2f84886761ad458a9ac4e6407fa.tar.gz rneovim-924cacd2fcf4e2f84886761ad458a9ac4e6407fa.tar.bz2 rneovim-924cacd2fcf4e2f84886761ad458a9ac4e6407fa.zip |
vim-patch:7.4.662
Problem: When 'M' is in the 'cpo' option then selecting a text object in
parenthesis does not work correctly.
Solution: Keep 'M' in 'cpo' when finding a match. (Hirohito Higashi)
https://github.com/vim/vim/commit/438b64ab71cd724129c4eec840be16c52602ebc8
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/search.c | 16 | ||||
-rw-r--r-- | src/nvim/testdir/Makefile | 1 | ||||
-rw-r--r-- | src/nvim/testdir/test_textobjects.in | 40 | ||||
-rw-r--r-- | src/nvim/testdir/test_textobjects.ok | 16 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
5 files changed, 66 insertions, 9 deletions
diff --git a/src/nvim/search.c b/src/nvim/search.c index d393ee7d02..2dd0201259 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -3076,18 +3076,18 @@ current_block ( } else old_end = VIsual; - /* - * Search backwards for unclosed '(', '{', etc.. - * Put this position in start_pos. - * Ignore quotes here. - */ + // Search backwards for unclosed '(', '{', etc.. + // Put this position in start_pos. + // Ignore quotes here. Keep the "M" flag in 'cpo', as that is what the + // user wants. save_cpo = p_cpo; - p_cpo = (char_u *)"%"; + p_cpo = (char_u *)(vim_strchr(p_cpo, CPO_MATCHBSL) != NULL ? "%M" : "%"); while (count-- > 0) { - if ((pos = findmatch(NULL, what)) == NULL) + if ((pos = findmatch(NULL, what)) == NULL) { break; + } curwin->w_cursor = *pos; - start_pos = *pos; /* the findmatch for end_pos will overwrite *pos */ + start_pos = *pos; // the findmatch for end_pos will overwrite *pos } p_cpo = save_cpo; diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile index fe511166f2..dfd83fb27d 100644 --- a/src/nvim/testdir/Makefile +++ b/src/nvim/testdir/Makefile @@ -29,6 +29,7 @@ SCRIPTS := \ test_close_count.out \ test_command_count.out \ test_marks.out \ + test_textobjects.out \ NEW_TESTS = diff --git a/src/nvim/testdir/test_textobjects.in b/src/nvim/testdir/test_textobjects.in new file mode 100644 index 0000000000..d1cdafcd04 --- /dev/null +++ b/src/nvim/testdir/test_textobjects.in @@ -0,0 +1,40 @@ +Tests for text-objects vim: set ft=vim : + +STARTTEST +:so small.vim +:if !has('textobjects') | e! test.ok | wq! test.out | endif +:set nocompatible +:" +:function SelectionOut(data) +: new +: call setline(1, a:data) +: call setreg('"', '') +: normal! ggfrmavi)y +: $put =getreg('\"') +: call setreg('"', '') +: normal! `afbmavi)y +: $put =getreg('\"') +: call setreg('"', '') +: normal! `afgmavi)y +: $put =getreg('\"') +: %yank a +: q! +: $put =getreg('a') +:endfunction +:" +:$put ='# Test for vi) without cpo-M' +:set cpo-=M +:call SelectionOut('(red \(blue) green)') +:" +:$put ='# Test for vi) with cpo-M #1' +:set cpo+=M +:call SelectionOut('(red \(blue) green)') +:" +:$put ='# Test for vi) with cpo-M #2' +:set cpo+=M +:call SelectionOut('(red (blue\) green)') +:/^Results/,$w test.out +:qa! +ENDTEST + +Results of text-objects diff --git a/src/nvim/testdir/test_textobjects.ok b/src/nvim/testdir/test_textobjects.ok new file mode 100644 index 0000000000..b670c7d816 --- /dev/null +++ b/src/nvim/testdir/test_textobjects.ok @@ -0,0 +1,16 @@ +Results of text-objects +# Test for vi) without cpo-M +(red \(blue) green) +red \(blue +red \(blue + +# Test for vi) with cpo-M #1 +(red \(blue) green) +red \(blue) green +blue +red \(blue) green +# Test for vi) with cpo-M #2 +(red (blue\) green) +red (blue\) green +blue\ +red (blue\) green diff --git a/src/nvim/version.c b/src/nvim/version.c index f865e13f55..2127efca51 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -626,7 +626,7 @@ static int included_patches[] = { 665, // 664 NA // 663 NA - // 662, + 662, // 661 NA 660, 659, |