# HG changeset patch # User Christian Brabandt # Date 1471182305 -7200 # Node ID 86f73f026a9acdddd32aa21ec15c6af7f197b61f # Parent a6874bce626420541575dc27e27064e893ac7dcb commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817 Author: Bram Moolenaar Date: Sun Aug 14 15:32:11 2016 +0200 patch 7.4.2208 Problem: Test for mappings is old style. Solution: Convert the test to new style. diff --git a/src/Makefile b/src/Makefile --- a/src/Makefile +++ b/src/Makefile @@ -2028,7 +2028,6 @@ test1 \ test_listchars \ test_listlbr \ test_listlbr_utf8 \ - test_mapping \ test_marks \ test_nested_function \ test_search_mbyte \ @@ -2094,6 +2093,7 @@ test_arglist \ test_largefile \ test_lispwords \ test_man \ + test_mapping \ test_match \ test_matchadd_conceal \ test_matchadd_conceal_utf8 \ diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -98,7 +98,6 @@ SCRIPTS_ALL = \ test_insertcount.out \ test_listchars.out \ test_listlbr.out \ - test_mapping.out \ test_marks.out \ test_nested_function.out \ test_search_mbyte.out \ diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim --- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -23,6 +23,7 @@ source test_lambda.vim source test_lispwords.vim source test_match.vim source test_menu.vim +source test_mapping.vim source test_messages.vim source test_partial.vim source test_popup.vim diff --git a/src/testdir/test_mapping.in b/src/testdir/test_mapping.in deleted file mode 100644 --- a/src/testdir/test_mapping.in +++ /dev/null @@ -1,72 +0,0 @@ -Test for mappings and abbreviations - -STARTTEST -:so small.vim -:so mbyte.vim -:set encoding=utf-8 -: " abbreviations with р (0x80) should work -:inoreab чкпр vim -GAчкпр - -:" mapping of ctrl-c in Insert mode -:set cpo-=< cpo-=k -:inoremap -:cnoremap dummy -:cunmap -GA -TEST2: CTRL-C |A| - -:unmap -:unmap! -:" -:" mapping of ctrl-c in Visual mode -:vnoremap :$put ='vmap works' -GV -:vunmap -:" -:" langmap should not get remapped in insert mode -:inoremap { FAIL_ilangmap -:set langmap=+{ langnoremap -o+ -:" Insert-mode expr mapping with langmap -:inoremap { "FAIL_iexplangmap" -o+ -:" langmap should not get remapped in Command-line mode -:cnoremap { FAIL_clangmap -:call append(line('$'), '+') -:cunmap { -:" Command-line mode expr mapping with langmap -:cnoremap { "FAIL_cexplangmap" -:call append(line('$'), '+') -:cunmap { -:" -:" issue #212 (feedkeys insert mapping at current position) -:nnoremap . :call feedkeys(".", "in") -:/^a b -0qqdw.ifooqj0@q:unmap . - -:" U works only within a single line -:imapclear -:imap ( ()U -G2oki -Test1: text with a (here some more textk. -:" test undo -G2oki -Test2: text wit a (here some more text [und undo]uk.u -:" -:imapclear -:set whichwrap=<,>,[,] -G3o2k -:exe ":norm! iTest3: text with a (parenthesis here\U\new line here\\\." - - - -:/^test/,$w! test.out -:qa! -ENDTEST - -test starts here: - -a b c d -a b c d - diff --git a/src/testdir/test_mapping.ok b/src/testdir/test_mapping.ok deleted file mode 100644 --- a/src/testdir/test_mapping.ok +++ /dev/null @@ -1,22 +0,0 @@ -test starts here: - -fooc d -fooc d -vim -TEST2: CTRL-C |A| - -vmap works -+ -+ -+ -+ - -Test1: text with a (here some more text) -Test1: text with a (here some more text) - - -Test2: text wit a (here some more text [und undo]) - -new line here -Test3: text with a (parenthesis here -new line here diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim new file mode 100644 --- /dev/null +++ b/src/testdir/test_mapping.vim @@ -0,0 +1,100 @@ +" Tests for mappings and abbreviations + +if !has('multi_byte') + finish +endif + +func Test_abbreviation() + " abbreviation with 0x80 should work + inoreab чкпр vim + call feedkeys("Goчкпр \", "xt") + call assert_equal('vim ', getline('$')) + iunab чкпр + set nomodified +endfunc + +func Test_map_ctrl_c_insert() + " mapping of ctrl-c in Insert mode + set cpo-=< cpo-=k + inoremap + cnoremap dummy + cunmap + call feedkeys("GoTEST2: CTRL-C |\A|\", "xt") + call assert_equal('TEST2: CTRL-C |A|', getline('$')) + unmap! + set nomodified +endfunc + +func Test_map_ctrl_c_visual() + " mapping of ctrl-c in Visual mode + vnoremap :$put ='vmap works' + call feedkeys("GV\\", "xt") + call assert_equal('vmap works', getline('$')) + vunmap + set nomodified +endfunc + +func Test_map_langmap() + " langmap should not get remapped in insert mode + inoremap { FAIL_ilangmap + set langmap=+{ langnoremap + call feedkeys("Go+\", "xt") + call assert_equal('+', getline('$')) + + " Insert-mode expr mapping with langmap + inoremap { "FAIL_iexplangmap" + call feedkeys("Go+\", "xt") + call assert_equal('+', getline('$')) + iunmap { + + " langmap should not get remapped in Command-line mode + cnoremap { FAIL_clangmap + call feedkeys(":call append(line('$'), '+')\", "xt") + call assert_equal('+', getline('$')) + cunmap { + + " Command-line mode expr mapping with langmap + cnoremap { "FAIL_cexplangmap" + call feedkeys(":call append(line('$'), '+')\", "xt") + call assert_equal('+', getline('$')) + cunmap { + set nomodified +endfunc + +func Test_map_feedkeys() + " issue #212 (feedkeys insert mapping at current position) + nnoremap . :call feedkeys(".", "in") + call setline('$', ['a b c d', 'a b c d']) + $-1 + call feedkeys("0qqdw.ifoo\qj0@q\", "xt") + call assert_equal(['fooc d', 'fooc d'], getline(line('$') - 1, line('$'))) + unmap . + set nomodified +endfunc + +func Test_map_cursor() + " U works only within a single line + imapclear + imap ( ()U + call feedkeys("G2o\ki\Test1: text with a (here some more text\k.", "xt") + call assert_equal('Test1: text with a (here some more text)', getline(line('$') - 2)) + call assert_equal('Test1: text with a (here some more text)', getline(line('$') - 1)) + + " test undo + call feedkeys("G2o\ki\Test2: text wit a (here some more text [und undo]\u\k.u", "xt") + call assert_equal('', getline(line('$') - 2)) + call assert_equal('Test2: text wit a (here some more text [und undo])', getline(line('$') - 1)) + set nomodified + imapclear +endfunc + +" This isn't actually testing a mapping, but similar use of CTRL-G U as above. +func Test_break_undo() + :set whichwrap=<,>,[,] + call feedkeys("G4o2k", "xt") + exe ":norm! iTest3: text with a (parenthesis here\U\new line here\\\." + call assert_equal('new line here', getline(line('$') - 3)) + call assert_equal('Test3: text with a (parenthesis here', getline(line('$') - 2)) + call assert_equal('new line here', getline(line('$') - 1)) + set nomodified +endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2208, +/**/ 2207, /**/ 2206,