blob: 2bfdebcb71017b71db6f77002b4ee3e681d629fc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
" Only do this when not yet done for this buffer
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
" Specify format for comments (lists, quotes)
setlocal comments+=fb:* " Bulleted lists
setlocal comments+=fb:- " Dashed lists
setlocal comments+=fb:+ " Plussed lists (?)
setlocal comments+=n:> " Mail-style quotes
let &l:commentstring = '> %s'
let b:undo_ftplugin = 'setlocal comments< commentstring<'
" Specify format options
setlocal formatoptions+=ln
let &l:formatlistpat = '^\s*\d\+\.\s\+\|^[-*+]\s\+\|^\[^\ze[^\]]\+\]:'
let b:undo_ftplugin .= '|setlocal formatoptions< formatlistpat<'
function! MarkdownFold()
let line = getline(v:lnum)
" Regular headers
let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=')
if depth > 0
return ">" . depth
endif
" Setext style headings
let nextline = getline(v:lnum + 1)
if (line =~ '^.\+$') && (nextline =~ '^=\+$')
return ">1"
endif
if (line =~ '^.\+$') && (nextline =~ '^-\+$')
return ">2"
endif
return "="
endfunction
if has("folding") && exists("g:markdown_folding")
setlocal foldexpr=MarkdownFold()
setlocal foldmethod=expr
let b:undo_ftplugin .= " foldexpr< foldmethod<"
endif
" Spellcheck documents we're actually editing (not just viewing)
if &modifiable && !&readonly
setlocal spell
let b:undo_ftplugin .= '|setlocal spell<'
endif
" Tolerate leading lowercase letters in README.md files, for things like
" headings being filenames
if expand('%:t') ==# 'README.md'
setlocal spellcapcheck=
let b:undo_ftplugin .= '|setlocal spellcapcheck<'
endif
" Stop here if the user doesn't want ftplugin mappings
if exists('no_plugin_maps') || exists('no_markdown_maps')
finish
endif
" Quote operator
nnoremap <buffer> <expr> <LocalLeader>q
\ quote#Quote()
xnoremap <buffer> <expr> <LocalLeader>q
\ quote#Quote()
let b:undo_ftplugin .= '|nunmap <buffer> <LocalLeader>q'
\ . '|xunmap <buffer> <LocalLeader>q'
" Quote operator with reformatting
nnoremap <buffer> <expr> <LocalLeader>Q
\ quote#QuoteReformat()
xnoremap <buffer> <expr> <LocalLeader>Q
\ quote#QuoteReformat()
let b:undo_ftplugin .= '|nunmap <buffer> <LocalLeader>Q'
\ . '|xunmap <buffer> <LocalLeader>Q'
" Autoformat headings
command! -buffer -nargs=1 MarkdownHeading
\ call markdown#Heading(<f-args>)
nnoremap <buffer> <LocalLeader>=
\ :<C-U>MarkdownHeading =<CR>
nnoremap <buffer> <LocalLeader>-
\ :<C-U>MarkdownHeading -<CR>
let b:undo_ftplugin .= '|delcommand MarkdownHeading'
\ . '|nunmap <buffer> <LocalLeader>='
\ . '|nunmap <buffer> <LocalLeader>-'
|