-
Notifications
You must be signed in to change notification settings - Fork 46
/
default_rules.vimspec
154 lines (132 loc) · 5.23 KB
/
default_rules.vimspec
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
Describe default rule
Before all
call lexima#set_default_rules()
new | only!
End
After each
let g:lexima_disable_on_nofile = 0
new | only!
End
It should input the closing pair when opening pair is input
call Expect('(').to_change_input_as('()')
call Expect('\(').to_change_input_as('\(')
call Expect('[').to_change_input_as('[]')
call Expect('\[').to_change_input_as('\[')
call Expect('{').to_change_input_as('{}')
call Expect('"').to_change_input_as('""')
call Expect('\"').to_change_input_as('\"')
call Expect('"""').to_change_input_as('""""""')
call Expect("'").to_change_input_as("''")
call Expect("\\'").to_change_input_as("\\'")
call Expect("'''").to_change_input_as("''''''")
call Expect('`').to_change_input_as('``')
call Expect('```').to_change_input_as('``````')
call Expect("I'm").to_change_input_as("I'm")
call Expect("(\<CR>").to_change_input_as("(\n\n)")
call Expect("{\<CR>").to_change_input_as("{\n\n}")
End
It should leave the closing pair when closing pair is input
call Expect('()').to_change_input_as('()')
call Expect('[]').to_change_input_as('[]')
call Expect('{}').to_change_input_as('{}')
call Expect('""').to_change_input_as('""')
call Expect('"""";').to_change_input_as('"""""";')
call Expect("''").to_change_input_as("''")
call Expect("'''';").to_change_input_as("'''''';")
call Expect('``').to_change_input_as('``')
call Expect('````;').to_change_input_as('``````;')
End
It should delete the pairs when backspace is input
call Expect("(\<BS>").to_change_input_as('')
call Expect("[\<BS>").to_change_input_as('')
call Expect("{\<BS>").to_change_input_as('')
call Expect("\"\<BS>").to_change_input_as('')
call Expect("'\<BS>").to_change_input_as('')
End
It should not input the pair of double quote for Vim script's comment
setf vim
call Expect('"').to_change_input_as('"')
call Expect('call("').to_change_input_as('call("")')
call Expect('call "').to_change_input_as('call "')
End
It should add an extra space inside brackets and delete
call Expect("( ").to_change_input_as("( )")
call Expect("{ ").to_change_input_as("{ }")
call Expect("( \<BS>").to_change_input_as("()")
call Expect("{ \<BS>").to_change_input_as("{}")
End
It should leave the extra space inside brackets
call Expect("( x)").to_change_input_as("( x )")
call Expect("{ foo bar}").to_change_input_as("{ foo bar }")
End
It should not input the pair of the single quote for some language's specification
for ft in ['haskell', 'lisp', 'clojure', 'ocaml', 'scala']
enew!
execute 'setf ' . ft
call Expect("'" . ft).to_change_input_as("'" . ft)
endfor
End
It should leave the single quote in spite of preceeding \ for strong quote in some language
for ft in ['vim', 'sh', 'csh', 'ruby', 'tcsh', 'zsh']
enew!
execute 'setf ' . ft
call Expect("'" . ft . "\\'").to_change_input_as("'" . ft . "\\'")
endfor
End
It with leave can repeat with dots
for i in range(1, 3)
call setline(i, '()(-)')
endfor
normal! gg2|
execute "normal aHOGE(FUGA(PIYO), x(y\<Esc>"
normal! j0.
normal! j$.
call Expect(['()HOGE(FUGA(PIYO), x(y))(-)', '(HOGE(FUGA(PIYO), x(y)))(-)', '()(-)HOGE(FUGA(PIYO), x(y))', ]).to_be_displayed()
End
It can repeat if CR input
execute "normal oHOGE(\<CR>\<Esc>"
normal! G.G.
call Expect(['', 'HOGE(', '', ')', 'HOGE(', '', ')', 'HOGE(', '', ')']).to_be_displayed()
End
It can repeat if CR input with set smartindent
setlocal smartindent
execute "normal oHOGE(\<CR>\<Esc>"
normal! G.G.
call Expect(['', 'HOGE(', '', ')', 'HOGE(', '', ')', 'HOGE(', '', ')']).to_be_displayed()
setlocal smartindent&
End
It automatically inputs pair braces with newline
execute "normal aHOGE({\<CR>FUGA{\<CR>PIYO{\<CR>\<Esc>"
call Expect(['HOGE({', 'FUGA{', 'PIYO{', '', '}', '}', '})']).to_be_displayed()
End
It automatically inputs pair braces with newline and set smartindent
setlocal smartindent noexpandtab shiftwidth=4 tabstop=4
execute "normal aHOGE({\<CR>FUGA{\<CR>PIYO{\<CR>\<Esc>"
call Expect(['HOGE({', "\tFUGA{", "\t\tPIYO{", '', "\t\t}", "\t}", '})']).to_be_displayed()
setlocal smartindent&
End
It automatically inputs pair braces with newline and set indentexpr
setlocal ft=ruby et sw=2
execute "normal amodule Hoge\<CR>def piyo\<CR>foo {\<CR>\<Esc>"
call Expect(['module Hoge', ' def piyo', ' foo {', '', ' }', ' end', 'end']).to_be_displayed()
setlocal ft= et& sw&
End
It can move the cursor
call Expect("HOGE(\"GA\<Left>\<Left>FU").to_change_input_as('HOGE("FUGA")')
End
It fixes the cursor position when escape the insertmode
setlocal smartindent shiftwidth=2 expandtab
call Expect("({\<CR>;").to_change_input_as("({\n ;\n})")
call Expect(line('.')).to_equal(2)
call Expect(col('.')).to_equal(3)
End
It is disabled when buftype=nofile
let g:lexima_disable_on_nofile = 1
setlocal buftype=nofile
call Expect('hoge((').to_change_input_as('hoge((')
End
It is disabled when b:lexima_disabled = 1
let b:lexima_disabled = 1
call Expect('hoge((').to_change_input_as('hoge((')
End
End