commit 1f85a3c8551be23da0c295e645213489993cf095
parent ba84981b5ae54af32e320cd04b583dd7e9fe1c6c
Author: Rane Brown <ranebrown@users.noreply.github.com>
Date: Tue, 15 Oct 2019 12:15:14 -0600
Merge pull request #735 from simias/fix-407
Fix off-by-one error in get_next_line and get_prev_line
Diffstat:
3 files changed, 201 insertions(+), 6 deletions(-)
diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim
@@ -419,11 +419,13 @@ function! s:get_next_line(lnum, ...)
while cur_ln <= line('$') && getline(cur_ln) !~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
let cur_ln += 1
endwhile
- let next_line = cur_ln
+ let next_line = cur_ln + 1
else
- let next_line = nextnonblank(a:lnum+1)
+ let next_line = a:lnum + 1
endif
+ let next_line = nextnonblank(next_line)
+
if a:0 > 0 && getline(next_line) =~# vimwiki#vars#get_syntaxlocal('rxHeader')
let next_line = s:get_next_line(next_line, 1)
endif
@@ -440,19 +442,19 @@ endfunction
"Returns: lnum-1 in most cases, but skips blank lines and preformatted text
"0 in case of nonvalid line and a header, because a header ends every list
function! s:get_prev_line(lnum)
- let prev_line = prevnonblank(a:lnum-1)
+ let cur_ln = a:lnum - 1
- if getline(prev_line) =~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
- let cur_ln = a:lnum - 1
+ if getline(cur_ln) =~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
while 1
if cur_ln == 0 || getline(cur_ln) =~# vimwiki#vars#get_syntaxlocal('rxPreStart')
break
endif
let cur_ln -= 1
endwhile
- let prev_line = cur_ln
endif
+ let prev_line = prevnonblank(cur_ln)
+
if prev_line < 0 || prev_line > line('$') ||
\ getline(prev_line) =~# vimwiki#vars#get_syntaxlocal('rxHeader')
return 0
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -3479,6 +3479,8 @@ https://github.com/vimwiki-backup/vimwiki/issues.
2.5 (in progress)~
New:~
+ * PR #735: Make list-toggling work properly even when code blocks are
+ embedded within the list in Markdown mode.
* PR #711: Allow forcing VimwikiAll2HTML with !
* PR #702: Make remapping documentation more accessible to newer vim users
* PR #673: Add :VimwikiGoto key mapping.
diff --git a/test/list_update.vader b/test/list_update.vader
@@ -0,0 +1,191 @@
+Include: vader_includes/vader_setup.vader
+
+Given vimwiki (Sample nested list, vimwiki syntax):
+ * [ ] Top Level
+ * [ ] Child 1
+ * [ ] Child 2
+
+ * [ ] Post space
+
+ {{{code
+ * [ ] print "hello, world"
+ }}}
+
+ {{{morecode
+ print "hello again"
+ }}}
+
+ * [ ] Post code
+ * [ ] Sub-child
+
+ * [ ] Sub-sub-child
+
+Execute (Set syntax to default):
+ call SetSyntax('default')
+
+Do (Toggle top-level):
+ \<C-Space>
+
+Expect (All tree toggled):
+ * [X] Top Level
+ * [X] Child 1
+ * [X] Child 2
+
+ * [X] Post space
+
+ {{{code
+ * [ ] print "hello, world"
+ }}}
+
+ {{{morecode
+ print "hello again"
+ }}}
+
+ * [X] Post code
+ * [X] Sub-child
+
+ * [X] Sub-sub-child
+
+Do (Toggle child):
+ j
+ \<C-Space>
+
+Expect (Child toggled, top updated):
+ * [.] Top Level
+ * [X] Child 1
+ * [ ] Child 2
+
+ * [ ] Post space
+
+ {{{code
+ * [ ] print "hello, world"
+ }}}
+
+ {{{morecode
+ print "hello again"
+ }}}
+
+ * [ ] Post code
+ * [ ] Sub-child
+
+ * [ ] Sub-sub-child
+
+Do (Toggle sub-child):
+ G
+ \<C-Space>
+
+Expect (Sub-child toggled, parents updated):
+ * [.] Top Level
+ * [ ] Child 1
+ * [ ] Child 2
+
+ * [ ] Post space
+
+ {{{code
+ * [ ] print "hello, world"
+ }}}
+
+ {{{morecode
+ print "hello again"
+ }}}
+
+ * [o] Post code
+ * [ ] Sub-child
+
+ * [X] Sub-sub-child
+
+Given markdown (Sample nested list, markdown syntax):
+ * [ ] Top Level
+ * [ ] Child 1
+ * [ ] Child 2
+
+ * [ ] Post space
+
+ ```code
+ * [ ] print "hello, world"
+ ```
+
+ ```morecode
+ print "hello again"
+ ```
+
+ * [ ] Post code
+ * [ ] Sub-child
+
+ * [ ] Sub-sub-child
+
+Execute (Set syntax to markdown):
+ call SetSyntax('markdown')
+
+Do (Toggle top-level):
+ \<C-Space>
+
+Expect (All tree toggled):
+ * [X] Top Level
+ * [X] Child 1
+ * [X] Child 2
+
+ * [X] Post space
+
+ ```code
+ * [ ] print "hello, world"
+ ```
+
+ ```morecode
+ print "hello again"
+ ```
+
+ * [X] Post code
+ * [X] Sub-child
+
+ * [X] Sub-sub-child
+
+Do (Toggle child):
+ j
+ \<C-Space>
+
+Expect (Child toggled, top updated):
+ * [.] Top Level
+ * [X] Child 1
+ * [ ] Child 2
+
+ * [ ] Post space
+
+ ```code
+ * [ ] print "hello, world"
+ ```
+
+ ```morecode
+ print "hello again"
+ ```
+
+ * [ ] Post code
+ * [ ] Sub-child
+
+ * [ ] Sub-sub-child
+
+Do (Toggle sub-child):
+ G
+ \<C-Space>
+
+Expect (Sub-child toggled, parents updated):
+ * [.] Top Level
+ * [ ] Child 1
+ * [ ] Child 2
+
+ * [ ] Post space
+
+ ```code
+ * [ ] print "hello, world"
+ ```
+
+ ```morecode
+ print "hello again"
+ ```
+
+ * [o] Post code
+ * [ ] Sub-child
+
+ * [X] Sub-sub-child
+
+Include: vader_includes/vader_teardown.vader