# HG changeset patch # User Steve Losh # Date 1308849194 14400 # Node ID dcd072c2fbb6d7d8811e74228dcc2def8f7fc8d6 # Parent c367879711428cc8cbb21068eaefa8ec6ff680c5 Markdown folding diff -r c36787971142 -r dcd072c2fbb6 vim/after/ftplugin/markdown.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/after/ftplugin/markdown.vim Thu Jun 23 13:13:14 2011 -0400 @@ -0,0 +1,43 @@ +" folding for Markdown headers, both styles (atx- and setex-) +" http://daringfireball.net/projects/markdown/syntax#header +" +" this code can be placed in file +" $HOME/.vim/after/ftplugin/markdown.vim + +func! Foldexpr_markdown(lnum) + let l1 = getline(a:lnum) + + if l1 =~ '^\s*$' + " ignore empty lines + return '=' + endif + + let l2 = getline(a:lnum+1) + + if l2 =~ '^==\+\s*' + " next line is underlined (level 1) + return '>1' + elseif l2 =~ '^--\+\s*' + " next line is underlined (level 2) + return '>2' + elseif l1 =~ '^#' + " current line starts with hashes + return '>'.matchend(l1, '^#\+') + elseif a:lnum == 1 + " fold any 'preamble' + return '>1' + else + " keep previous foldlevel + return '=' + endif +endfunc + +setlocal foldexpr=Foldexpr_markdown(v:lnum) +setlocal foldmethod=expr + +"---------- everything after this is optional ----------------------- +" change the following fold options to your liking +" see ':help fold-options' for more +setlocal foldenable +setlocal foldlevel=0 +setlocal foldcolumn=0