summaryrefslogtreecommitdiff
path: root/src/testdir/test94.in
blob: 1d32f554f08e734faa047113077bb1873bcc0882 (plain)
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
Test for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set nocp
:
:" User functions
:function MoveToCap()
:  call search('\u', 'W')
:endfunction
:function SelectInCaps()
:  let [line1, col1] = searchpos('\u', 'bcnW')
:  let [line2, col2] = searchpos('.\u', 'nW')
:  call setpos("'<", [0, line1, col1, 0])
:  call setpos("'>", [0, line2, col2, 0])
:  normal! gv
:endfunction
:function MoveToEndCount(count)
:  normal! v:count . e
:endfunction
:
:" Visual modes followed by operator
/^apple
lvld.l3vd.:
/^line 1
Vcnewlinej.j2Vd.:
/^xxxx
jlc  l.l2c----l.:
:
:" Visual mode maps (movement and text object)
:vnoremap W /\u/s-1<CR>
:vnoremap iW :<C-U>call SelectInCaps()<CR>
/^Kiwi
vWcNol.fD2vd.:
/^Jambu
llviWc-l.l2vdl.:
:
:" Operator-pending mode maps (movement and text object)
:onoremap W /\u/<CR>
:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
:onoremap iW :<C-U>call SelectInCaps()<CR>
/^Pineapple
cW-l.l2.l.:
/^Juniper
g?\WfD.:
/^Lemon
yiWPlciWNew:
:
:" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz
dV:
dv:
:set noma | let v:errmsg = ''
d:
:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'
dv:dV::set noma | let v:errmsg = ''
d::set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6

xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx

KiwiRaspberryDateWatermelonPeach
JambuRambutanBananaTangerineMango

PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
JuniperDurianZ
LemonNectarineZ

zzzz
zzzz