Mercurial > vim
view src/testdir/test_eval.in @ 13060:1bdc12630fc0 v8.0.1405
patch 8.0.1405: duplicated code for getting a typed character
commit https://github.com/vim/vim/commit/c9e649ae816cdff0d1da8a97d40e695c6d3991bd
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Dec 18 18:14:47 2017 +0100
patch 8.0.1405: duplicated code for getting a typed character
Problem: Duplicated code for getting a typed character. CursorHold is
called too often in the GUI. (lilydjwg)
Solution: Refactor code to move code up from mch_inchar(). Don't fire
CursorHold if feedkeys() was used. (closes #2451)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 18 Dec 2017 18:15:05 +0100 |
parents | 9c420b8db435 |
children | 30f9a62f5f51 |
line wrap: on
line source
Test for various eval features. vim: set ft=vim : Note: system clipboard is saved, changed and restored. clipboard contents something else STARTTEST :so small.vim :set encoding=latin1 :set noswapfile :lang C :fun AppendRegContents(reg) call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg(a:reg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1))) :endfun :fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1) call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg, a:type, a:cont, a:strcont, a:cont1, a:strcont1)) endfun :command -nargs=? AR :call AppendRegContents(<q-args>) :fun SetReg(...) call call('setreg', a:000) call append('$', printf('{{{2 setreg(%s)', string(a:000)[1:-2])) call AppendRegContents(a:1) if a:1 isnot# '=' execute "silent normal! Go==\n==\e\"".a:1."P" endif endfun :fun ErrExe(str) call append('$', 'Executing '.a:str) try execute a:str catch $put =v:exception endtry endfun :fun Test() $put ='{{{1 let tests' let @" = 'abc' AR " let @" = "abc\n" AR " let @" = "abc\<C-m>" AR " let @= = '"abc"' AR = $put ='{{{1 Basic setreg tests' call SetReg('a', 'abcA', 'c') call SetReg('b', 'abcB', 'v') call SetReg('c', 'abcC', 'l') call SetReg('d', 'abcD', 'V') call SetReg('e', 'abcE', 'b') call SetReg('f', 'abcF', "\<C-v>") call SetReg('g', 'abcG', 'b10') call SetReg('h', 'abcH', "\<C-v>10") call SetReg('I', 'abcI') $put ='{{{1 Appending single lines with setreg()' call SetReg('A', 'abcAc', 'c') call SetReg('A', 'abcAl', 'l') call SetReg('A', 'abcAc2','c') call SetReg('b', 'abcBc', 'ca') call SetReg('b', 'abcBb', 'ba') call SetReg('b', 'abcBc2','ca') call SetReg('b', 'abcBb2','b50a') call SetReg('C', 'abcCl', 'l') call SetReg('C', 'abcCc', 'c') call SetReg('D', 'abcDb', 'b') call SetReg('E', 'abcEb', 'b') call SetReg('E', 'abcEl', 'l') call SetReg('F', 'abcFc', 'c') $put ='{{{1 Appending NL with setreg()' call setreg('a', 'abcA2', 'c') call setreg('b', 'abcB2', 'v') call setreg('c', 'abcC2', 'l') call setreg('d', 'abcD2', 'V') call setreg('e', 'abcE2', 'b') call setreg('f', 'abcF2', "\<C-v>") call setreg('g', 'abcG2', 'b10') call setreg('h', 'abcH2', "\<C-v>10") call setreg('I', 'abcI2') call SetReg('A', "\n") call SetReg('B', "\n", 'c') call SetReg('C', "\n") call SetReg('D', "\n", 'l') call SetReg('E', "\n") call SetReg('F', "\n", 'b') $put ='{{{1 Setting lists with setreg()' call SetReg('a', ['abcA3'], 'c') call SetReg('b', ['abcB3'], 'l') call SetReg('c', ['abcC3'], 'b') call SetReg('d', ['abcD3']) call SetReg('e', [1, 2, 'abc', 3]) call SetReg('f', [1, 2, 3]) $put ='{{{1 Appending lists with setreg()' call SetReg('A', ['abcA3c'], 'c') call SetReg('b', ['abcB3l'], 'la') call SetReg('C', ['abcC3b'], 'lb') call SetReg('D', ['abcD32']) call SetReg('A', ['abcA32']) call SetReg('B', ['abcB3c'], 'c') call SetReg('C', ['abcC3l'], 'l') call SetReg('D', ['abcD3b'], 'b') $put ='{{{1 Appending lists with NL with setreg()' call SetReg('A', ["\n", 'abcA3l2'], 'l') call SetReg('B', ["\n", 'abcB3c2'], 'c') call SetReg('C', ["\n", 'abcC3b2'], 'b') call SetReg('D', ["\n", 'abcD3b50'],'b50') $put ='{{{1 Setting lists with NLs with setreg()' call SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"]) call SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c') call SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l') call SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b') call SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10') $put ='{{{1 Search and expressions' call SetReg('/', ['abc/']) call SetReg('/', ["abc/\n"]) call SetReg('=', ['"abc/"']) call SetReg('=', ["\"abc/\n\""]) $put ='{{{1 System clipboard' if has('clipboard') " Save and restore system clipboard. " If no connection to X-Server is possible, test should succeed. let _clipreg = ['*', getreg('*'), getregtype('*')] let _clipopt = &cb let &cb='unnamed' 5y AR * tabdo :windo :echo "hi" 6y AR * let &cb=_clipopt call call('setreg', _clipreg) else call AppendRegParts('*', 'V', "clipboard contents\n", "['clipboard contents']", "clipboard contents\n", "['clipboard contents']") call AppendRegParts('*', 'V', "something else\n", "['something else']", "something else\n", "['something else']") endif $put ='{{{1 Errors' call ErrExe('call setreg()') call ErrExe('call setreg(1)') call ErrExe('call setreg(1, 2, 3, 4)') call ErrExe('call setreg([], 2)') call ErrExe('call setreg(1, {})') call ErrExe('call setreg(1, 2, [])') call ErrExe('call setreg("/", ["1", "2"])') call ErrExe('call setreg("=", ["1", "2"])') call ErrExe('call setreg(1, ["", "", [], ""])') endfun :" :call Test() :" :delfunction SetReg :delfunction AppendRegContents :delfunction ErrExe :delfunction Test :delcommand AR :call garbagecollect(1) :" :" function name not starting with capital :try :func! g:test() :echo "test" :endfunc :catch :$put =v:exception :endtry :" :" function name includes a colon :try :func! b:test() :echo "test" :endfunc :catch :$put =v:exception :endtry :" :" function name folowed by # :try :func! test2() "# :echo "test2" :endfunc :catch :$put =v:exception :endtry :" :" function name starting with/without "g:", buffer-local funcref. :function! g:Foo(n) : $put ='called Foo(' . a:n . ')' :endfunction :let b:my_func = function('Foo') :call b:my_func(1) :echo g:Foo(2) :echo Foo(3) :" :" script-local function used in Funcref must exist. :so test_eval_func.vim :" :" Using $ instead of '$' must give an error :try : call append($, 'foobar') :catch :$put =v:exception :endtry :" :$put ='{{{1 getcurpos/setpos' /^012345678 6l:let sp = getcurpos() 0:call setpos('.', sp) jyl:$put :" :" substring and variable name :let str = 'abcdef' :let n = 3 :$put =str[n:] :$put =str[:n] :$put =str[n:n] :unlet n :let nn = 3 :$put =str[nn:] :$put =str[:nn] :$put =str[nn:nn] :unlet nn :let b:nn = 4 :$put =str[b:nn:] :$put =str[:b:nn] :$put =str[b:nn:b:nn] :unlet b:nn :" :/^start:/+1,$wq! test.out :" vim: et ts=4 isk-=\: fmr=???,??? :call getchar() ENDTEST 012345678 012345678 start: