summaryrefslogtreecommitdiff
path: root/.vim/plugin/scmCloseParens.vim
diff options
context:
space:
mode:
Diffstat (limited to '.vim/plugin/scmCloseParens.vim')
-rw-r--r--.vim/plugin/scmCloseParens.vim58
1 files changed, 58 insertions, 0 deletions
diff --git a/.vim/plugin/scmCloseParens.vim b/.vim/plugin/scmCloseParens.vim
new file mode 100644
index 0000000..8aca684
--- /dev/null
+++ b/.vim/plugin/scmCloseParens.vim
@@ -0,0 +1,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()
+