-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathtest_readline2.vim
63 lines (58 loc) · 1.24 KB
/
test_readline2.vim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"----------------------------------------------------------------------
" cli test
"----------------------------------------------------------------------
function! s:test(prompt)
let rl = quickui#readline#new()
let index = 0
let accept = ''
let pos = 0
while 1
noautocmd redraw
echohl Question
echon a:prompt
let ts = float2nr(reltimefloat(reltime()) * 1000)
if 0
call rl.echo(rl.blink(ts))
else
let size = 15
let pos = rl.slide(pos, size)
echohl Title
echon "<"
call rl.echo(rl.blink(ts), pos, size)
echohl Title
echon ">"
echon " cursor=" . rl.cursor
echon " pos=". pos
endif
" echon rl.display()
try
let code = getchar(0)
catch /^Vim:Interrupt$/
let code = "\<c-c>"
endtry
if type(code) == v:t_number && code == 0
try
exec 'sleep 15m'
continue
catch /^Vim:Interrupt$/
let code = "\<c-c>"
endtry
endif
let ch = (type(code) == v:t_number)? nr2char(code) : code
if ch == ""
continue
elseif ch == "\<ESC>"
break
elseif ch == "\<cr>"
let accept = rl.update()
break
else
call rl.feed(ch)
endif
endwhile
echohl None
noautocmd redraw
echo ""
return accept
endfunc
call s:test('>>> ')