Skip to content

Commit

Permalink
Use protected plugs for commands
Browse files Browse the repository at this point in the history
Refers #48
  • Loading branch information
kotarak committed Jul 3, 2010
1 parent 5a48a7c commit 2d3f20a
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 29 deletions.
22 changes: 18 additions & 4 deletions autoload/vimclojure.vim
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,15 @@ function! vimclojure#BufferName()
endfunction

" Key mappings and Plugs
function! vimclojure#MakePlug(mode, plug, f)
function! vimclojure#MakePlug(mode, plug, f, args)
execute a:mode . "noremap <Plug>Clojure" . a:plug
\ . " :call " . a:f . "<CR>"
\ . " :call " . a:f . "(" . a:args . ")<CR>"
endfunction

function! vimclojure#MakeProtectedPlug(mode, plug, f, args)
execute a:mode . "noremap <Plug>Clojure" . a:plug
\ . " :call vimclojure#ProtectedPlug(function(\""
\ . a:f . "\"), " . a:args . ")<CR>"
endfunction

function! vimclojure#MapPlug(mode, keys, plug)
Expand All @@ -161,6 +167,15 @@ function! vimclojure#MapPlug(mode, keys, plug)
endif
endfunction

function! vimclojure#ProtectedPlug(f, ...)
try
return call(a:f, a:000)
catch /.*/
let buf = g:vimclojure#ResultBuffer.New()
call buf.showText(v:exception)
endtry
endfunction

" A Buffer...
if !exists("g:vimclojure#SplitPos")
let vimclojure#SplitPos = "top"
Expand Down Expand Up @@ -365,8 +380,7 @@ function! vimclojure#ExecuteNailWithInput(nail, input, ...)
let output = system(cmd)

if v:shell_error
echoerr "Couldn't execute Nail! "
\ . substitute(output, '\n\(\t\?\)', ' ', 'g')
throw "Couldn't execute Nail!\n" . output
endif
finally
call delete(inputfile)
Expand Down
50 changes: 25 additions & 25 deletions plugin/clojure.vim
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,41 @@ let clojure_loaded = "2.2.0-SNAPSHOT"
let s:cpo_save = &cpo
set cpo&vim

command -nargs=0 ClojureRepl call vimclojure#StartRepl()
command! -nargs=0 ClojureRepl call vimclojure#StartRepl()

call vimclojure#MakePlug("n", "AddToLispWords", 'vimclojure#AddToLispWords(expand("<cword>"))')
call vimclojure#MakeProtectedPlug("n", "AddToLispWords", "vimclojure#AddToLispWords", "expand(\"<cword>\")")

call vimclojure#MakePlug("n", "DocLookupWord", 'vimclojure#DocLookup(expand("<cword>"))')
call vimclojure#MakePlug("n", "DocLookupInteractive", 'vimclojure#DocLookup(input("Symbol to look up: "))')
call vimclojure#MakePlug("n", "JavadocLookupWord", 'vimclojure#JavadocLookup(expand("<cword>"))')
call vimclojure#MakePlug("n", "JavadocLookupInteractive", 'vimclojure#JavadocLookup(input("Class to lookup: "))')
call vimclojure#MakePlug("n", "FindDoc", 'vimclojure#FindDoc())')
call vimclojure#MakeProtectedPlug("n", "DocLookupWord", "vimclojure#DocLookup", "expand(\"<cword>\")")
call vimclojure#MakeProtectedPlug("n", "DocLookupInteractive", "vimclojure#DocLookup", "input(\"Symbol to look up: \")")
call vimclojure#MakeProtectedPlug("n", "JavadocLookupWord", "vimclojure#JavadocLookup", "expand(\"<cword>\")")
call vimclojure#MakeProtectedPlug("n", "JavadocLookupInteractive", "vimclojure#JavadocLookup", "input(\"Class to lookup: \")")
call vimclojure#MakeProtectedPlug("n", "FindDoc", "vimclojure#FindDoc", "")

call vimclojure#MakePlug("n", "MetaLookupWord", 'vimclojure#MetaLookup(expand("<cword>"))')
call vimclojure#MakePlug("n", "MetaLookupInteractive", 'vimclojure#MetaLookup(input("Symbol to look up: "))')
call vimclojure#MakeProtectedPlug("n", "MetaLookupWord", "vimclojure#MetaLookup", "expand(\"<cword>\")")
call vimclojure#MakeProtectedPlug("n", "MetaLookupInteractive", "vimclojure#MetaLookup", "input(\"Symbol to look up: \")")

call vimclojure#MakePlug("n", "SourceLookupWord", 'vimclojure#SourceLookup(expand("<cword>"))')
call vimclojure#MakePlug("n", "SourceLookupInteractive", 'vimclojure#SourceLookup(input("Symbol to look up: "))')
call vimclojure#MakeProtectedPlug("n", "SourceLookupWord", "vimclojure#SourceLookup", "expand(\"<cword>\")")
call vimclojure#MakeProtectedPlug("n", "SourceLookupInteractive", "vimclojure#SourceLookup", "input(\"Symbol to look up: \")")

call vimclojure#MakePlug("n", "GotoSourceWord", 'vimclojure#GotoSource(expand("<cword>"))')
call vimclojure#MakePlug("n", "GotoSourceInteractive", 'vimclojure#GotoSource(input("Symbol to go to: "))')
call vimclojure#MakeProtectedPlug("n", "GotoSourceWord", "vimclojure#GotoSource", "expand(\"<cword>\")")
call vimclojure#MakeProtectedPlug("n", "GotoSourceInteractive", "vimclojure#GotoSource", "input(\"Symbol to go to: \")")

call vimclojure#MakePlug("n", "RequireFile", 'vimclojure#RequireFile(0)')
call vimclojure#MakePlug("n", "RequireFileAll", 'vimclojure#RequireFile(1)')
call vimclojure#MakeProtectedPlug("n", "RequireFile", "vimclojure#RequireFile", "0")
call vimclojure#MakeProtectedPlug("n", "RequireFileAll", "vimclojure#RequireFile", "1")

call vimclojure#MakePlug("n", "RunTests", 'vimclojure#RunTests(0)')
call vimclojure#MakeProtectedPlug("n", "RunTests", "vimclojure#RunTests", "0")

call vimclojure#MakePlug("n", "MacroExpand", 'vimclojure#MacroExpand(0)')
call vimclojure#MakePlug("n", "MacroExpand1", 'vimclojure#MacroExpand(1)')
call vimclojure#MakeProtectedPlug("n", "MacroExpand", "vimclojure#MacroExpand", "0")
call vimclojure#MakeProtectedPlug("n", "MacroExpand1", "vimclojure#MacroExpand", "1")

call vimclojure#MakePlug("n", "EvalFile", 'vimclojure#EvalFile()')
call vimclojure#MakePlug("n", "EvalLine", 'vimclojure#EvalLine()')
call vimclojure#MakePlug("v", "EvalBlock", 'vimclojure#EvalBlock()')
call vimclojure#MakePlug("n", "EvalToplevel", 'vimclojure#EvalToplevel()')
call vimclojure#MakePlug("n", "EvalParagraph", 'vimclojure#EvalParagraph()')
call vimclojure#MakeProtectedPlug("n", "EvalFile", "vimclojure#EvalFile", "")
call vimclojure#MakeProtectedPlug("n", "EvalLine", "vimclojure#EvalLine", "")
call vimclojure#MakeProtectedPlug("v", "EvalBlock", "vimclojure#EvalBlock", "")
call vimclojure#MakeProtectedPlug("n", "EvalToplevel", "vimclojure#EvalToplevel", "")
call vimclojure#MakeProtectedPlug("n", "EvalParagraph", "vimclojure#EvalParagraph", "")

call vimclojure#MakePlug("n", "StartRepl", 'vimclojure#Repl.New("user")')
call vimclojure#MakePlug("n", "StartLocalRepl", 'vimclojure#Repl.New(b:vimclojure_namespace)')
call vimclojure#MakeProtectedPlug("n", "StartRepl", "vimclojure#Repl.New", "user")
call vimclojure#MakeProtectedPlug("n", "StartLocalRepl", "vimclojure#Repl.New", "b:vimclojure_namespace")

inoremap <Plug>ClojureReplEnterHook <Esc>:call b:vimclojure_repl.enterHook()<CR>
inoremap <Plug>ClojureReplUpHistory <C-O>:call b:vimclojure_repl.upHistory()<CR>
Expand Down

0 comments on commit 2d3f20a

Please sign in to comment.