diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim index 369f3e3..389f368 100644 --- a/autoload/vimwiki/lst.vim +++ b/autoload/vimwiki/lst.vim @@ -1546,6 +1546,14 @@ function! s:cr_on_empty_list_item(lnum, behavior) endif endfunction +function! s:is_codeblock(lnum) + let syn_g = synIDattr(synID(a:lnum,1,1),'name') + if syn_g =~# 'textSnip*' || syn_g =~# 'VimwikiPre*' + return 1 + else + return 0 + endif +endfunction function! s:cr_on_empty_line(lnum, behavior) let lst = s:get_corresponding_item(a:lnum) @@ -1555,7 +1563,7 @@ function! s:cr_on_empty_line(lnum, behavior) exe 'normal!' "gi\x\\" if a:behavior == 2 || a:behavior == 3 - if lst.type == 0 + if lst.type == 0 || s:is_codeblock(a:lnum) " don't insert new bullet if not part of a list return else diff --git a/test/list_VimwikiReturn.vader b/test/list_VimwikiReturn.vader index 8ee5079..f30920b 100644 --- a/test/list_VimwikiReturn.vader +++ b/test/list_VimwikiReturn.vader @@ -41,6 +41,74 @@ Expect (Extended list): - New sub item - Item 5 +Given vimwiki (List with code block): + - Item 1 + - Item 2 + - Item 3 that is split across multiple lines + This is the second line. + This is the third line. + - Item 4 + - Sub item 1 + - Sub item split across multiple lines + This is the second line. + This is the third line. + ``` + int x = 2 + 2; + return 0; + ``` + - Item 5 + ```c + int x = 2 + 2; + return 0; + ``` + - Item 6 that is split + Across multiple lines. + Done. + +Do (CR and CR in code block): + 4j + A\Another item\ + 6j + A\int y = 1;\ + 1j + A\x = x + y;\ + 4j + A\int y = 2;\ + 3j + A\A new bullet doesn't get added here, oh well.\ + 3j + A\Done and Done\ + +Expect (No list continuation in code block): + - Item 1 + - Item 2 + - Item 3 that is split across multiple lines + This is the second line. + This is the third line. + - Another item + - Item 4 + - Sub item 1 + - Sub item split across multiple lines + This is the second line. + This is the third line. + ``` + int y = 1; + int x = 2 + 2; + x = x + y; + return 0; + ``` + - Item 5 + ```c + int y = 2; + int x = 2 + 2; + return 0; + ``` + A new bullet doesn't get added here, oh well. + - Item 6 that is split + Across multiple lines. + Done. + - Done and Done + Given vimwiki (List from help file): 1. item ---