" 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.
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} #//
+ setlocal modifiable
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
endif
call setline(i, repeat(' ', l:level). d.text)
endfor
- set nomodified
- set nomodifiable
+ setlocal nomodified
+ setlocal nomodifiable
normal! gg
endfunction
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