Skip to content

Commit

Permalink
Highlight Exceptions and fold stracktraces
Browse files Browse the repository at this point in the history
  • Loading branch information
kotarak committed Oct 26, 2010
1 parent a551f83 commit ac0aa12
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 10 deletions.
22 changes: 15 additions & 7 deletions server/src/main/clojure/vimclojure/util.clj
Expand Up @@ -455,6 +455,13 @@
#(.getMethodName %)))
(remove noise?)))))

(defn print-exception
[e]
(print "! ")
(stacktrace/print-throwable e)
(newline)
(print-stacktrace (get-stacktrace e)))

; Pretty printing.
(defn pretty-print
"Print the given form in a pretty way. If Tom Faulhaber's pretty printer is
Expand All @@ -474,19 +481,20 @@
clojure.stacktrace and clojure.contrib.stacktrace in that order. Otherwise
defaults to simple printing."
[e]
(stacktrace/print-throwable e)
(newline)
(print-stacktrace (get-stacktrace e)))
(println "!! A crisis has arisen:")
(print-exception e))

(defn pretty-print-causetrace
"Print the causetrace of the given Throwable. Tries clj-stacktrace,
clojure.stacktrace and clojure.contrib.stacktrace in that order. Otherwise
defaults to simple printing."
[e]
(pretty-print-stacktrace e)
(when-let [c (.getCause e)]
(print "Caused by: ")
(recur c)))
(println "!! A crisis has arisen:")
(loop [e e]
(print-exception e)
(when-let [c (.getCause e)]
(println "!! Caused by:")
(recur c))))

; Load optional libraries
(defmacro defoptional
Expand Down
23 changes: 22 additions & 1 deletion vim/autoload/vimclojure.vim
Expand Up @@ -77,6 +77,25 @@ function! vimclojure#SynIdName()
return synIDattr(synID(line("."), col("."), 0), "name")
endfunction

function! vimclojure#GetExceptionFoldLevel(lnum)
if a:lnum == 1
return 0
endif

let pline = getline(a:lnum - 1)
let line = getline(a:lnum)

if line[0] == '+' && pline[0] == '!'
return ">1"
endif

if line[0] != '+' && line[0] != '|'
return 0
endif

return "="
endfunction

function! vimclojure#WithSaved(closure)
let v = a:closure.get(a:closure.tosafe)
try
Expand Down Expand Up @@ -384,7 +403,9 @@ let vimclojure#ClojureResultBuffer["__superResultBufferShowOutput"] =

function! vimclojure#ClojureResultBuffer.Init(instance) dict
call self.__superResultBufferInit(a:instance)
setfiletype clojure
let b:vimclojure_clojure_result_buffer = 1

set filetype=clojure

return a:instance
endfunction
Expand Down
6 changes: 6 additions & 0 deletions vim/ftplugin/clojure.vim
Expand Up @@ -139,4 +139,10 @@ endif

call vimclojure#MapPlug("n", "p", "CloseResultBuffer")

if exists("b:vimclojure_repl") || exists("b:vimclojure_clojure_result_buffer")
setlocal foldexpr=vimclojure#GetExceptionFoldLevel(v:lnum)
setlocal foldmethod=expr
setlocal foldenable
endif

let &cpo = s:cpo_save
8 changes: 6 additions & 2 deletions vim/syntax/clojure.vim
Expand Up @@ -168,7 +168,7 @@ if g:vimclojure#DynamicHighlighting != 0 && exists("b:vimclojure_namespace")
endtry
endif

syn cluster clojureAtomCluster contains=clojureError,clojureFunc,clojureMacro,clojureCond,clojureDefine,clojureRepeat,clojureException,clojureConstant,clojureVariable,clojureSpecial,clojureKeyword,clojureString,clojureCharacter,clojureNumber,clojureBoolean,clojureQuote,clojureUnquote,clojureDispatch,clojurePattern
syn cluster clojureAtomCluster contains=clojureError,clojureFunc,clojureMacro,clojureCond,clojureDefine,clojureRepeat,clojureConstant,clojureVariable,clojureSpecial,clojureKeyword,clojureString,clojureCharacter,clojureNumber,clojureBoolean,clojureQuote,clojureUnquote,clojureDispatch,clojurePattern
syn cluster clojureTopCluster contains=@clojureAtomCluster,clojureComment,clojureSexp,clojureAnonFn,clojureVector,clojureMap,clojureSet

syn keyword clojureTodo contained FIXME XXX TODO FIXME: XXX: TODO:
Expand Down Expand Up @@ -233,6 +233,10 @@ syn region clojureComment matchgroup=clojureParen0 start="(comment"rs=s+1 m
syn region clojureComment start="#!" end="\n"
syn match clojureComment "#_"

if exists("b:vimclojure_repl") || exists("b:vimclojure_clojure_result_buffer")
syn region clojureException start=/^!!/ end=/\n/
endif

syn sync fromstart

if version >= 600
Expand All @@ -252,7 +256,6 @@ HiLink clojurePattern Constant
HiLink clojureVariable Identifier
HiLink clojureCond Conditional
HiLink clojureDefine Define
HiLink clojureException Exception
HiLink clojureFunc Function
HiLink clojureMacro Macro
HiLink clojureRepeat Repeat
Expand All @@ -268,6 +271,7 @@ HiLink clojureComment Comment
HiLink clojureTodo Todo

HiLink clojureError Error
HiLink clojureException Error

HiLink clojureParen0 Delimiter

Expand Down

0 comments on commit ac0aa12

Please sign in to comment.