File: keep-marks.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 (99 lines) | stat: -rw-r--r-- 1,982 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
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