Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

:Toc does not work with other quickfix list plugins #603

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 1 addition & 9 deletions ftplugin/markdown.vim
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ function! s:Toc(...)
endif
endif
" indent header based on level
let l:text = repeat(' ', h.level-1) . h.text
let l:text = h.level . '# ' . h.text
" keep track of the longest header size (heading level + title)
let l:total_len = strdisplaywidth(l:text)
if l:total_len > l:header_max_len
Expand Down Expand Up @@ -405,14 +405,6 @@ function! s:Toc(...)
else
lopen
endif
setlocal modifiable
for i in range(1, line('$'))
" this is the location-list data for the current item
let d = getloclist(0)[i-1]
call setline(i, d.text)
endfor
setlocal nomodified
setlocal nomodifiable
execute 'normal! ' . l:cursor_header . 'G'
endfunction

Expand Down
18 changes: 9 additions & 9 deletions test/folding-toc.vader
Original file line number Diff line number Diff line change
Expand Up @@ -121,28 +121,28 @@ Execute (check TOC):
let res = getloclist(0)
let elem = res[0]
AssertEqual elem.lnum, 1
AssertEqual elem.text, 'chap 1'
AssertEqual elem.text, '1# chap 1'
let elem = res[1]
AssertEqual elem.lnum, 15
AssertEqual elem.text, ' chap 1.1'
AssertEqual elem.text, '2# chap 1.1'
let elem = res[2]
AssertEqual elem.lnum, 25
AssertEqual elem.text, ' chap 1.1.1'
AssertEqual elem.text, '3# chap 1.1.1'
let elem = res[3]
AssertEqual elem.lnum, 30
AssertEqual elem.text, 'chap 2'
AssertEqual elem.text, '1# chap 2'
let elem = res[4]
AssertEqual elem.lnum, 34
AssertEqual elem.text, ' chap 2.1'
AssertEqual elem.text, '2# chap 2.1'
let elem = res[5]
AssertEqual elem.lnum, 41
AssertEqual elem.text, 'chap 3'
AssertEqual elem.text, '1# chap 3'
let elem = res[6]
AssertEqual elem.lnum, 45
AssertEqual elem.text, 'chap 4'
AssertEqual elem.text, '1# chap 4'
let elem = res[7]
AssertEqual elem.lnum, 50
AssertEqual elem.text, ' chap 4.1'
AssertEqual elem.text, '2# chap 4.1'

Given markdown;
---
Expand Down Expand Up @@ -175,5 +175,5 @@ Execute (check Toc of yaml front matter):
AssertEqual len(res), 1
let elem = res[0]
AssertEqual elem.lnum, 8
AssertEqual elem.text, ' heading'
AssertEqual elem.text, '2# heading'
unlet g:vim_markdown_frontmatter
6 changes: 3 additions & 3 deletions test/toc-autofit.vader
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ Execute (toc window autofit width):
:Toc
let real_width = winwidth(0)
:lclose
let expected_width = len(line) + 2*5 + 1 + 3 - 7
let expected_width = len(line) - len(matchstr(line, '^#\+ *')) + 1 + 3 + len('N# ')
AssertEqual real_width, expected_width
set nonumber
" 2 spaces * 5 additional header levels + 1 space for first header +
" 3 spaces for line numbers - 7 chars ('###### ') that don't show up on the TOC
" 1 space for first header + 3 spaces for line numbers.
" 7 chars ('###### ') are removed, and 3 char `N# ` are added.

73 changes: 41 additions & 32 deletions test/toc.vader
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,14 @@ test

Execute (Toc setex headers):
:Toc
:setl modifiable
:%s/\m^\([^|]*|\)\{2} //
:setl nomodifiable nomodified

Expect (setex headers):
header 1
header 2
header 3
1# header 1
2# header 2
3# header 3

Given markdown;
# header 1
Expand All @@ -49,11 +52,14 @@ test

Execute (Toc atx headers):
:Toc
:setl modifiable
:%s/\m^\([^|]*|\)\{2} //
:setl nomodifiable nomodified

Expect (atx headers):
header 1
header 2
header 3
1# header 1
2# header 2
3# header 3

Given markdown;
ATX tests.
Expand Down Expand Up @@ -135,34 +141,37 @@ setex h2

Execute (Toc multiple headers):
:Toc
:setl modifiable
:%s/\m^\([^|]*|\)\{2} //
:setl nomodifiable nomodified

Expect (multiple headers):
h1 space
h1 nospace
h1 2 spaces
h1 trailing hash
h2 space
h2 nospace
h2 trailing hash
h3 space
h3 nospace
h3 trailing hash
h4
h5
h6
h1 before h2
h2 between h1s
h1 after h2
setex h1
setex h2
setex h1 single punctuation
setex h1 punctuation longer than header
setex h1 before atx
atx h2
atx h3
atx h1
setex h2
atx h3 2
1# h1 space
1# h1 nospace
1# h1 2 spaces
1# h1 trailing hash
2# h2 space
2# h2 nospace
2# h2 trailing hash
3# h3 space
3# h3 nospace
3# h3 trailing hash
4# h4
5# h5
6# h6
1# h1 before h2
2# h2 between h1s
1# h1 after h2
1# setex h1
2# setex h2
1# setex h1 single punctuation
1# setex h1 punctuation longer than header
1# setex h1 before atx
2# atx h2
3# atx h3
1# atx h1
2# setex h2
3# atx h3 2

Execute:
:lclose
Expand Down
Loading