Fix 'VimwikiReturn 3 5' behavior within code blocks.
Previously a new list marker would get added when working within a code block that was part of a list. This change excludes code blocks from list marker creation.
This commit is contained in:
parent
e814c6ad93
commit
a17a9826bd
@ -1546,6 +1546,14 @@ function! s:cr_on_empty_list_item(lnum, behavior)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
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)
|
function! s:cr_on_empty_line(lnum, behavior)
|
||||||
let lst = s:get_corresponding_item(a:lnum)
|
let lst = s:get_corresponding_item(a:lnum)
|
||||||
@ -1555,7 +1563,7 @@ function! s:cr_on_empty_line(lnum, behavior)
|
|||||||
exe 'normal!' "gi\<CR>x\<C-H>\<ESC>"
|
exe 'normal!' "gi\<CR>x\<C-H>\<ESC>"
|
||||||
|
|
||||||
if a:behavior == 2 || a:behavior == 3
|
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
|
" don't insert new bullet if not part of a list
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
@ -41,6 +41,74 @@ Expect (Extended list):
|
|||||||
- New sub item
|
- New sub item
|
||||||
- Item 5
|
- 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\<CR>Another item\<Esc>
|
||||||
|
6j
|
||||||
|
A\<CR>int y = 1;\<Esc>
|
||||||
|
1j
|
||||||
|
A\<CR>x = x + y;\<Esc>
|
||||||
|
4j
|
||||||
|
A\<CR>int y = 2;\<Esc>
|
||||||
|
3j
|
||||||
|
A\<CR>A new bullet doesn't get added here, oh well.\<Esc>
|
||||||
|
3j
|
||||||
|
A\<CR>Done and Done\<Esc>
|
||||||
|
|
||||||
|
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):
|
Given vimwiki (List from help file):
|
||||||
1. item
|
1. item
|
||||||
---
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user