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
|
" Description: Simple script (hack ?) that closes opened parens
" Author: Adrien Pierard <pierarda#iro.umontreal.ca>
" Modified: 04/05/07
" Version: 0.1
"
" Usage: I mapped it to <Leader>p
" So, just go to normal mode, and type the shortcut, or :call
" RunScmCloseParens() yourself
let b:msg = ""
let b:bcpt = 0
function! SetCursorWhereItIsGoodToPutItEh()
let line = substitute(getline("."), "\\s\\+$", "", "")
call setline(line("."),line)
norm $
let charUnderCursor = strpart(line("."), col(".") - 1, 1)
norm a)
call CountAsMuchAsPossible()
endfunction
function! CountAsMuchAsPossible()
let cpt = 0
while (CanWeGoOn() > 0)
let cpt = cpt + 1
call OhGetBackAndSetAnotherOne()
endwhile
let line = substitute(getline("."), ")$", "", "")
call setline(line("."),line)
let b:cpt = cpt
endfunction
function! CanWeGoOn()
return (searchpair('(', '', ')' , 'b' ))
endfunction
function! OhGetBackAndSetAnotherOne()
call searchpair('(', '', ')')
norm a)
endfunction
function! InitScmCloseParens()
if ! exists("g:ScmCloseParens")
let g:ScmCloseParens = "Scheme on you !"
execute 'nmap <Leader>p :call RunScmCloseParens()<Cr>'
endif
endfunction
fun! RunScmCloseParens()
let b:bcpt = 0
call SetCursorWhereItIsGoodToPutItEh()
norm :echo b:bcpt
endfunction
call InitScmCloseParens()
|