-
Notifications
You must be signed in to change notification settings - Fork 47
/
keep-marks.vim
72 lines (58 loc) · 1.39 KB
/
keep-marks.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
64
65
66
67
68
69
70
71
72
call textobj#user#plugin('line', {
\ '-': {
\ 'select-a': 'al',
\ 'select-a-function': 'SelectA',
\ 'select': 'il',
\ 'pattern': '^\s*\zs.\{-}\ze\s*$',
\ },
\ })
function! SelectA()
if empty(getline('.'))
return 0
endif
normal! 0
let head_pos = getpos('.')
normal! $
let tail_pos = getpos('.')
return ['v', head_pos, tail_pos]
endfunction
describe 'Custom text object'
before
new
silent 1 put! =[
\ 'if (!foo) {',
\ ' bar = ''baz''',
\ ' qux()',
\ '}',
\ ]
let @0 = '*nothing yanked*'
execute 'normal!' "1G2|vj\<Esc>"
end
after
close!
end
context 'defined by a function'
it 'keeps ''< and ''> marks'
Expect @0 ==# '*nothing yanked*'
Expect [line("'<"), col("'<")] == [1, 2]
Expect [line("'>"), col("'>")] == [2, 2]
normal 3Gyal
Expect @0 ==# ' qux()'
Expect [line("'<"), col("'<")] == [1, 2]
Expect [line("'>"), col("'>")] == [2, 2]
end
end
context 'defined by a pattern'
it 'keeps ''< and ''> marks'
Expect @0 ==# '*nothing yanked*'
Expect [line("'<"), col("'<")] == [1, 2]
Expect [line("'>"), col("'>")] == [2, 2]
normal 3Gyil
Expect @0 ==# 'qux()'
Expect [line("'<"), col("'<")] == [1, 2]
Expect [line("'>"), col("'>")] == [2, 2]
end
end
end
" __END__ "{{{1
" vim: foldmethod=marker