" For each level, contains the regexp that matches at that level only.
let s:levelRegexpDict = {
- \ 1: '\v^(\s*#[^#]|.+\n\=+$)',
- \ 2: '\v^(\s*##[^#]|.+\n-+$)',
- \ 3: '\v^\s*###[^#]',
- \ 4: '\v^\s*####[^#]',
- \ 5: '\v^\s*#####[^#]',
- \ 6: '\v^\s*######[^#]'
+ \ 1: '\v^(#[^#]|.+\n\=+$)',
+ \ 2: '\v^(##[^#]|.+\n-+$)',
+ \ 3: '\v^###[^#]',
+ \ 4: '\v^####[^#]',
+ \ 5: '\v^#####[^#]',
+ \ 6: '\v^######[^#]'
\ }
" Maches any header level of any type.
" This could be deduced from `s:levelRegexpDict`, but it is more
" efficient to have a single regexp for this.
"
-let s:headersRegexp = '\v^(\s*#|.+\n(\=+|-+)$)'
+let s:headersRegexp = '\v^(#|.+\n(\=+|-+)$)'
" Returns the line number of the first header before `line`, called the
" current header.
try
silent vimgrep /\(^\S.*\(\n[=-]\+\)\@=\|^#\+\)/ %
catch /E480/
- echom "Toc: No headers."
+ echom "Toc: No headers."
return
endtry
" atx headers
if match(d.text, "^#") > -1
let l:level = len(matchstr(d.text, '#*', 'g'))-1
- let d.text = d.text[l:level+2:]
- " setex headers
+ let d.text = substitute(d.text, '\v^#*[ ]*', '', '')
+ let d.text = substitute(d.text, '\v[ ]*#*$', '', '')
+ " setex headers
else
let l:next_line = getbufline(bufname(d.bufnr), d.lnum+1)
if match(l:next_line, "=") > -1
" Menmonic: Current
call <sid>MapNormVis('<Plug>(Markdown_MoveToCurHeader)', '<sid>Markdown_MoveToCurHeader')
-if ! exists('g:vim_markdown_no_default_key_mappings')
-\ || !g:vim_markdown_no_default_key_mappings
+if !get(g:, 'vim_markdown_no_default_key_mappings', 0)
nmap ]] <Plug>(Markdown_MoveToNextHeader)
nmap [[ <Plug>(Markdown_MoveToPreviousHeader)
nmap ][ <Plug>(Markdown_MoveToNextSiblingHeader)