Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
" ---------------------------------------------------------------------------
" Automagic Clojure folding on defn's and defmacro's
"
function GetClojureFold()
if getline(v:lnum) =~ '^\s*(defn.*\s'
return ">1"
elseif getline(v:lnum) =~ '^\s*(defmacro.*\s'
return ">1"
elseif getline(v:lnum) =~ '^\s*(defmethod.*\s'
return ">1"
elseif getline(v:lnum) =~ '^\s*$'
let my_cljnum = v:lnum
let my_cljmax = line("$")
while (1)
let my_cljnum = my_cljnum + 1
if my_cljnum > my_cljmax
return "<1"
endif
let my_cljdata = getline(my_cljnum)
" If we match an empty line, stop folding
if my_cljdata =~ '^$'
return "<1"
else
return "="
endif
endwhile
else
return "="
endif
endfunction
function TurnOnClojureFolding()
setlocal foldexpr=GetClojureFold()
setlocal foldmethod=expr
endfunction
autocmd FileType clojure call TurnOnClojureFolding()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.