Fix: Folding by 'syntax' does nothing with Markdown syntax (Issue #1009)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Fold
|
||||
|
||||
Execute (Save state):
|
||||
Log 'Previous foldmethod: ' . &foldmethod
|
||||
let save_foldmethod = &foldmethod
|
||||
|
||||
Given vimwiki (Markdown Headers):
|
||||
Some stuff 1
|
||||
# Header level 1 2
|
||||
## Header level 2 3
|
||||
Content 4
|
||||
### Header level 3 5
|
||||
# Header level 1 6
|
||||
Content 7
|
||||
## Just to end 8: Vader cannot match end-of-file
|
||||
|
||||
Execute (Markdown and Fold Syntax):
|
||||
call SetSyntax('markdown')
|
||||
set foldmethod=syntax
|
||||
|
||||
Execute (Assert Markdown: Fold Syntax):
|
||||
Log 'Supposing it starts at foldlevel 0'
|
||||
AssertEqual 'line 1:0', 'line 1:' . foldlevel(1)
|
||||
AssertEqual 'line 2:0', 'line 2:' . foldlevel(2)
|
||||
AssertEqual 'line 3:1', 'line 3:' . foldlevel(3)
|
||||
AssertEqual 'line 4:2', 'line 4:' . foldlevel(4)
|
||||
AssertEqual 'line 5:2', 'line 5:' . foldlevel(5)
|
||||
AssertEqual 'line 6:0', 'line 6:' . foldlevel(6)
|
||||
AssertEqual 'line 7:0', 'line 7:' . foldlevel(7)
|
||||
|
||||
|
||||
Given vimwiki (Wiki Headers):
|
||||
Some stuff 1
|
||||
= Header level 1 2 =
|
||||
== Header level 2 3 ==
|
||||
Content 4
|
||||
=== Header level 3 5 ===
|
||||
= Header level 1 6 =
|
||||
Content 7
|
||||
== Just to end 8 ==
|
||||
|
||||
Execute (Markdown and Fold Syntax):
|
||||
call SetSyntax('default')
|
||||
set foldmethod=syntax
|
||||
|
||||
Execute (Assert Markdown: Fold Syntax):
|
||||
Log 'Supposing it starts at foldlevel 0'
|
||||
AssertEqual 'line 1:0', 'line 1:' . foldlevel(1)
|
||||
AssertEqual 'line 2:0', 'line 2:' . foldlevel(2)
|
||||
AssertEqual 'line 3:1', 'line 3:' . foldlevel(3)
|
||||
AssertEqual 'line 4:2', 'line 4:' . foldlevel(4)
|
||||
AssertEqual 'line 5:2', 'line 5:' . foldlevel(5)
|
||||
AssertEqual 'line 6:0', 'line 6:' . foldlevel(6)
|
||||
AssertEqual 'line 7:0', 'line 7:' . foldlevel(7)
|
||||
|
||||
Execute (Restore state):
|
||||
let &foldmethod = save_foldmethod
|
||||
Log 'Next foldmethod: ' . &foldmethod
|
||||
|
||||
@@ -2,8 +2,15 @@
|
||||
#
|
||||
# Note: some trailing spaces are necessary at the end of list items like `1.`
|
||||
# better read this file with `set list`
|
||||
#
|
||||
# Warning: Foldmethod dependant (and foldlevel ...)
|
||||
|
||||
|
||||
Execute (Save State):
|
||||
let msg = 'Error: foldmethod must be manual for theses tests to work,'
|
||||
let msg .= ' it is the default, so please restore it in the test that changed it'
|
||||
AssertEqual &foldmethod, 'manual', msg
|
||||
|
||||
Given vimwiki (List Blockquote (Issue #55) {{{2):
|
||||
1. Outer Item 1
|
||||
1. Inner Item 1
|
||||
|
||||
+5
-2
@@ -467,7 +467,7 @@ Given vimwiki (Wiki Headers):
|
||||
Execute (Set syntax default):
|
||||
call SetSyntax('default')
|
||||
|
||||
Execute (Assert Syntax Header):
|
||||
Execute (Assert Wiki Syntax Header):
|
||||
AssertEqual 'VimwikiHeader1', SyntaxAt(1, 10)
|
||||
AssertEqual 'VimwikiHeader2', SyntaxAt(2, 10)
|
||||
AssertEqual 'VimwikiHeader3', SyntaxAt(3, 10)
|
||||
@@ -486,7 +486,10 @@ Given vimwiki (Markdown Headers):
|
||||
Execute (Set syntax markdown):
|
||||
call SetSyntax('markdown')
|
||||
|
||||
Execute (Assert Syntax Header):
|
||||
Execute (Assert Markdown Syntax Header):
|
||||
Log "Syntax of first heading: " . string(GetSyntaxStack())
|
||||
Log "Regex of rxListWithoutCb: " . vimwiki#vars#get_wikilocal('rxListItemWithoutCB')
|
||||
Log "Bullet types: " . string(vimwiki#vars#get_wikilocal('bullet_types'))
|
||||
AssertEqual 'VimwikiHeader1' , SyntaxAt(1, 10)
|
||||
AssertEqual 'VimwikiHeader2' , SyntaxAt(2, 10)
|
||||
AssertEqual 'VimwikiHeader3' , SyntaxAt(3, 10)
|
||||
|
||||
+18
-1
@@ -89,21 +89,30 @@
|
||||
" Define functions
|
||||
" Change the syntax using a temporary wiki
|
||||
function! SetSyntax(vw_syn)
|
||||
" Change extension and wiki_nr
|
||||
let index=0
|
||||
if a:vw_syn ==# 'default'
|
||||
let ext = 'wiki'
|
||||
let index=0
|
||||
elseif a:vw_syn ==# 'markdown'
|
||||
let ext = 'md'
|
||||
let index=1
|
||||
elseif a:vw_syn ==# 'media'
|
||||
let ext = 'mw'
|
||||
let index=2
|
||||
else
|
||||
Log 'ERROR: Invalid syntax "' . a:vw_syn . '" in SetSyntax()'
|
||||
Log 'NOTE: function only accepts "media" for setting mediawiki syntax'
|
||||
return
|
||||
endif
|
||||
|
||||
" Change temporary wiki
|
||||
let path = expand('%:p:h')
|
||||
let new_temp_wiki_settings = {'path': path,
|
||||
let new_temp_wiki_settings = {
|
||||
\ 'path': path,
|
||||
\ 'ext': ext,
|
||||
\ 'syntax': a:vw_syn,
|
||||
\ 'bullet_types': g:vimwiki_wikilocal_vars[index]['bullet_types'],
|
||||
\ }
|
||||
|
||||
" Remove any temporary wikis each time this function is called.
|
||||
@@ -306,6 +315,14 @@
|
||||
return synIDattr(synIDtrans(l:s), 'name')
|
||||
endfun
|
||||
|
||||
" Debug helper
|
||||
function! GetSyntaxStack()
|
||||
if !exists('*synstack')
|
||||
return
|
||||
endif
|
||||
return map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
|
||||
endfunc
|
||||
|
||||
" Run Assert only if vim version higth enough
|
||||
function! AssertIfVersion(version, one, two)
|
||||
if v:version < a:version | return | endif
|
||||
|
||||
Reference in New Issue
Block a user