blob: 6824c18a4958fca075b5263ae650b56dc8c96da4 (
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
|
function! Sc(char)
let closing = {'(': ')', '[': ']', '{': '}', '<': '>', '"': '"', "'": "'"}
if has_key(closing, a:char)
let line = getline('.')
let col = col('.') - 1
let before = col > 0 ? line[col-1] : ''
let after = col < len(line) ? line[col] : ''
if before =~ '\w' && after =~ '\w'
return a:char
endif
if (a:char == '"' || a:char == "'") && before == a:char
return a:char
endif
if after == closing[a:char]
return "\<Right>"
endif
return a:char . closing[a:char] . "\<Left>"
endif
return a:char
endfunction
inoremap ( <C-R>=Sc('(')<CR>
inoremap [ <C-R>=Sc('[')<CR>
inoremap { <C-R>=Sc('{')<CR>
inoremap < <C-R>=Sc('<')<CR>
inoremap " <C-R>=Sc('"')<CR>
inoremap ' <C-R>=Sc("'")<CR>
|