All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 if exists("b:did_indent") | finish | endif
4 setlocal indentexpr=GetMarkdownIndent()
8 " Automatically insert bullets
9 setlocal formatoptions+=r
10 " Do not automatically insert bullets when auto-wrapping with text-width
11 setlocal formatoptions-=c
12 " Accept various markers as bullets
13 setlocal comments=b:*,b:+,b:-
15 " Automatically continue blockquote on line break
16 setlocal comments+=b:>
18 " Only define the function once
19 if exists("*GetMarkdownIndent") | finish | endif
21 function! s:is_li_start(line)
22 return a:line !~ '^ *\([*-]\)\%( *\1\)\{2}\%( \|\1\)*$' &&
23 \ a:line =~ '^\s*[*+-] \+'
26 function! s:is_blank_line(line)
30 function! s:prevnonblank(lnum)
32 while i > 1 && s:is_blank_line(getline(i))
38 function GetMarkdownIndent()
40 " Find a non-blank line above the current line.
41 let lnum = prevnonblank(v:lnum - 1)
42 " At the start of the file use zero indent.
43 if lnum == 0 | return 0 | endif
44 let ind = indent(lnum)
45 let line = getline(lnum) " Last line
46 let cline = getline(v:lnum) " Current line
47 if s:is_li_start(cline)
48 " Current line is the first line of a list item, do not change indent
50 elseif s:is_li_start(line)
51 " Last line is the first line of a list item, increase indent