# HG changeset patch
# User Steve Losh <steve@stevelosh.com>
# 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