X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/2c06d3d58c80bd008212e7d4fd596a7d41c7b29f..2213b7b0fcf07f6917313ce4b5db979a40acf1cb:/ftplugin/mkd.vim diff --git a/ftplugin/mkd.vim b/ftplugin/mkd.vim index a1ab150..21043a6 100644 --- a/ftplugin/mkd.vim +++ b/ftplugin/mkd.vim @@ -47,12 +47,12 @@ " 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. @@ -60,7 +60,7 @@ let s:levelRegexpDict = { " 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. @@ -304,7 +304,7 @@ function! s:Markdown_Toc(...) try silent vimgrep /\(^\S.*\(\n[=-]\+\)\@=\|^#\+\)/ % catch /E480/ - echom "Toc: No headers." + echom "Toc: No headers." return endtry @@ -326,8 +326,9 @@ function! s:Markdown_Toc(...) " 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