dcd072c2fbb6

Markdown folding
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Thu, 23 Jun 2011 13:13:14 -0400
parents c36787971142
children df4798ba9a9d
branches/tags (none)
files vim/after/ftplugin/markdown.vim

Changes

--- /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