From: Ciro Santilli Date: Sun, 7 Sep 2014 16:01:43 +0000 (+0200) Subject: Merge pull request #103 from fmoralesc/patch-1 X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/5da9db319c1c4382c8f9f55b3bf12917f001fbd7?ds=inline;hp=-c Merge pull request #103 from fmoralesc/patch-1 Toc: Pass errors if no atx headers are processed. --- 5da9db319c1c4382c8f9f55b3bf12917f001fbd7 diff --combined ftplugin/mkd.vim index d4113ad,e177bd1..42dca90 --- a/ftplugin/mkd.vim +++ b/ftplugin/mkd.vim @@@ -47,12 -47,12 +47,12 @@@ " For each level, contains the regexp that matches at that level only. let s:levelRegexpDict = { - \ 1: '\v^(#[^#]|.+\n\=+$)', - \ 2: '\v^(##[^#]|.+\n-+$)', - \ 3: '\v^###[^#]', - \ 4: '\v^####[^#]', - \ 5: '\v^#####[^#]', - \ 6: '\v^######[^#]' + \ 1: '\v^(#[^#]@=|.+\n\=+$)', + \ 2: '\v^(##[^#]@=|.+\n-+$)', + \ 3: '\v^###[^#]@=', + \ 4: '\v^####[^#]@=', + \ 5: '\v^#####[^#]@=', + \ 6: '\v^######[^#]@=' \ } " Maches any header level of any type. @@@ -302,27 -302,27 +302,27 @@@ function! s:Markdown_Toc(... endif try - silent vimgrep /\(^\S.*\(\n[=-]\+\)\@=\|^#\+\)/ % + silent lvimgrep /\(^\S.*\(\n[=-]\+\n\)\@=\|^#\+\)/ % catch /E480/ echom "Toc: No headers." return endtry if l:window_type ==# 'horizontal' - copen + lopen elseif l:window_type ==# 'vertical' - vertical copen + vertical lopen let &winwidth=(&columns/2) elseif l:window_type ==# 'tab' - tab copen + tab lopen else - copen + lopen endif set modifiable - %s/\v^([^|]*\|){2,2} #// + %s/\v^([^|]*\|){2,2} #//e for i in range(1, line('$')) - " this is the quickfix data for the current item - let d = getqflist()[i-1] + " this is the location-list data for the current item + let d = getloclist(0)[i-1] " atx headers if match(d.text, "^#") > -1 let l:level = len(matchstr(d.text, '#*', 'g'))-1 @@@ -392,26 -392,10 +392,26 @@@ function! s:HeaderDecrease(line1, line2 endfor let l:numSubstitutions = s:SetexToAtx(a:line1, a:line2) for l:level in range(replaceLevels[0], replaceLevels[1], -l:levelDelta) - execute 'silent! ' . a:line1 . ',' . (a:line2 - l:numSubstitutions) . 'substitute/' . s:levelRegexpDict[l:level] . '/' . repeat('#', l:level + l:levelDelta) . '\1/g' + execute 'silent! ' . a:line1 . ',' . (a:line2 - l:numSubstitutions) . 'substitute/' . s:levelRegexpDict[l:level] . '/' . repeat('#', l:level + l:levelDelta) . '/g' endfor endfunction +" Format table under cursor. +" Depends on Tabularize. +function! s:TableFormat() + let l:pos = getpos('.') + normal! { + " Search instead of `normal! j` because of the table at beginning of file edge case. + call search('|') + normal! j + " Remove everything that is not a pipe othewise well formated tables would grow + " because of addition of 2 spaces on the separator line by Tabularize /|. + s/[^|]//g + Tabularize /| + s/ /-/g + call setpos('.', l:pos) +endfunction + call MapNormVis('(Markdown_MoveToNextHeader)', 'Markdown_MoveToNextHeader') call MapNormVis('(Markdown_MoveToPreviousHeader)', 'Markdown_MoveToPreviousHeader') call MapNormVis('(Markdown_MoveToNextSiblingHeader)', 'Markdown_MoveToNextSiblingHeader') @@@ -437,11 -421,10 +437,11 @@@ if !get(g:, 'vim_markdown_no_default_ke vmap ]c (Markdown_MoveToCurHeader) endif +command! -buffer -range=% HeaderDecrease call s:HeaderDecrease(, ) +command! -buffer -range=% HeaderIncrease call s:HeaderDecrease(, , 1) +command! -buffer -range=% SetexToAtx call s:SetexToAtx(, ) +command! -buffer TableFormat call s:TableFormat() command! -buffer Toc call s:Markdown_Toc() command! -buffer Toch call s:Markdown_Toc('horizontal') command! -buffer Tocv call s:Markdown_Toc('vertical') command! -buffer Toct call s:Markdown_Toc('tab') -command! -buffer -range=% SetexToAtx call s:SetexToAtx(, ) -command! -buffer -range=% HeaderDecrease call s:HeaderDecrease(, ) -command! -buffer -range=% HeaderIncrease call s:HeaderDecrease(, , 1)