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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
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()',
\ '}',
\ ]
silent $ delete _
let @" = '*nothing changed*'
execute 'normal!' "1G2|vj\<Esc>"
end
after
close!
end
context 'defined by a function'
it 'keeps ''< and ''> marks'
TODO
Expect @0 ==# '*nothing changed*'
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'
TODO
Expect @0 ==# '*nothing changed*'
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
context 'combined with operator c'
it 'also works fine'
TODO
Expect @" ==# '*nothing changed*'
Expect [line("'<"), col("'<")] == [1, 2]
Expect [line("'>"), col("'>")] == [2, 2]
normal 3Gcilxyzzy
Expect @" ==# 'qux()'
Expect getline(1, '$') ==# [
\ 'if (!foo) {',
\ ' bar = ''baz''',
\ ' xyzzy',
\ '}',
\ ]
Expect [line("'<"), col("'<")] == [1, 2]
Expect [line("'>"), col("'>")] == [2, 2]
end
end
end
" __END__ "{{{1
" vim: foldmethod=marker
|