From 924cacd2fcf4e2f84886761ad458a9ac4e6407fa Mon Sep 17 00:00:00 2001 From: watiko Date: Wed, 3 Feb 2016 06:53:43 +0900 Subject: 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 --- src/nvim/search.c | 16 +++++++-------- src/nvim/testdir/Makefile | 1 + src/nvim/testdir/test_textobjects.in | 40 ++++++++++++++++++++++++++++++++++++ src/nvim/testdir/test_textobjects.ok | 16 +++++++++++++++ src/nvim/version.c | 2 +- 5 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 src/nvim/testdir/test_textobjects.in create mode 100644 src/nvim/testdir/test_textobjects.ok (limited to 'src') 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, -- cgit From 7aaffb70015b9df519cff694314d26b3a0f1201f Mon Sep 17 00:00:00 2001 From: watiko Date: Wed, 3 Feb 2016 07:07:39 +0900 Subject: vim-patch:7.4.694 Problem: Running tests changes the .viminfo file. Solution: Disable viminfo in the text objects test. https://github.com/vim/vim/commit/29d54df5cdd0ef4caa9c050854ddffdabece7a61 --- src/nvim/testdir/test_textobjects.in | 2 +- src/nvim/version.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/testdir/test_textobjects.in b/src/nvim/testdir/test_textobjects.in index d1cdafcd04..dc48efc67a 100644 --- a/src/nvim/testdir/test_textobjects.in +++ b/src/nvim/testdir/test_textobjects.in @@ -3,7 +3,7 @@ Tests for text-objects vim: set ft=vim : STARTTEST :so small.vim :if !has('textobjects') | e! test.ok | wq! test.out | endif -:set nocompatible +:set nocp viminfo+=nviminfo :" :function SelectionOut(data) : new diff --git a/src/nvim/version.c b/src/nvim/version.c index 2127efca51..d169592d0e 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -594,7 +594,7 @@ static int included_patches[] = { 697, 696, 695, - // 694, + 694, // 693, // 692 NA // 691 NA -- cgit From 4cbe52b3a3651047f51bd30801d8d9c26e0fce13 Mon Sep 17 00:00:00 2001 From: watiko Date: Wed, 3 Feb 2016 21:52:43 +0900 Subject: tests: Migrate legacy test textobjects --- src/nvim/testdir/Makefile | 1 - src/nvim/testdir/test_textobjects.in | 40 ------------------------------------ src/nvim/testdir/test_textobjects.ok | 16 --------------- 3 files changed, 57 deletions(-) delete mode 100644 src/nvim/testdir/test_textobjects.in delete mode 100644 src/nvim/testdir/test_textobjects.ok (limited to 'src') diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile index dfd83fb27d..fe511166f2 100644 --- a/src/nvim/testdir/Makefile +++ b/src/nvim/testdir/Makefile @@ -29,7 +29,6 @@ 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 deleted file mode 100644 index dc48efc67a..0000000000 --- a/src/nvim/testdir/test_textobjects.in +++ /dev/null @@ -1,40 +0,0 @@ -Tests for text-objects vim: set ft=vim : - -STARTTEST -:so small.vim -:if !has('textobjects') | e! test.ok | wq! test.out | endif -:set nocp viminfo+=nviminfo -:" -: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 deleted file mode 100644 index b670c7d816..0000000000 --- a/src/nvim/testdir/test_textobjects.ok +++ /dev/null @@ -1,16 +0,0 @@ -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 -- cgit