File: map.vim

package info (click to toggle)
vim-textobj-user 0.7.6-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 208 kB
  • sloc: makefile: 2
file content (75 lines) | stat: -rw-r--r-- 2,538 bytes parent folder | download | duplicates (2)
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
function! Normal(s)
  execute 'silent!' 'normal' a:s
endfunction

describe 'textobj#user#map'
  before
    new
  end

  after
    close!
  end

  it 'defines key mappings to use text objects'
    call textobj#user#map('datetime', {
    \   'time1': {
    \     'select': ['<buffer> aT', '<buffer> iT', '<buffer> <C-x>y'],
    \     'move-n': '<buffer> j',
    \   }
    \ })
    Expect maparg('aT', 'n') ==# ''
    Expect maparg('aT', 'o') ==# '<Plug>(textobj-datetime-time1)'
    Expect maparg('aT', 's') ==# ''
    Expect maparg('aT', 'x') ==# '<Plug>(textobj-datetime-time1)'
    Expect maparg('iT', 'n') ==# ''
    Expect maparg('iT', 'o') ==# '<Plug>(textobj-datetime-time1)'
    Expect maparg('iT', 's') ==# ''
    Expect maparg('iT', 'x') ==# '<Plug>(textobj-datetime-time1)'
    Expect maparg('<C-x>y', 'n') ==# ''
    Expect maparg('<C-x>y', 'o') ==# '<Plug>(textobj-datetime-time1)'
    Expect maparg('<C-x>y', 's') ==# '<Plug>(textobj-datetime-time1)'
    Expect maparg('<C-x>y', 'x') ==# '<Plug>(textobj-datetime-time1)'
    Expect maparg('j', 'n') ==# '<Plug>(textobj-datetime-time1-n)'
    Expect maparg('j', 'o') ==# '<Plug>(textobj-datetime-time1-n)'
    Expect maparg('j', 's') ==# ''
    Expect maparg('j', 'x') ==# '<Plug>(textobj-datetime-time1-n)'
  end

  it 'defines failsafe key mappings for unexisting text objects'
    Expect maparg('<Plug>(textobj-datetime-time2)', 'o') == ''
    Expect maparg('<Plug>(textobj-datetime-time2)', 's') == ''
    Expect maparg('<Plug>(textobj-datetime-time2)', 'x') == ''

    call textobj#user#map('datetime', {
    \   'time2': {
    \     'select': ['<buffer> aT', '<buffer> iT'],
    \   }
    \ })

    Expect maparg('<Plug>(textobj-datetime-time2)', 'o') != ''
    Expect maparg('<Plug>(textobj-datetime-time2)', 's') != ''
    Expect maparg('<Plug>(textobj-datetime-time2)', 'x') != ''

    Expect expr { Normal("vaT\<Esc>") } to_throw 'Text object.*not defined'
    Expect expr { Normal("daT") } to_throw 'Text object.*not defined'

    noremap <buffer> <Plug>(textobj-datetime-time2)  <Nop>

    Expect expr { Normal("vaT\<Esc>") } not to_throw
    Expect expr { Normal("daT") } not to_throw
  end

  it 'does not define failsafe key mappings for existing text objects'
    noremap <buffer> <Plug>(textobj-datetime-time3)  <Nop>

    call textobj#user#map('datetime', {
    \   'time3': {
    \     'select': ['<buffer> aT', '<buffer> iT'],
    \   }
    \ })

    Expect expr { Normal("vaT\<Esc>") } not to_throw
    Expect expr { Normal("daT") } not to_throw
  end
end