Properly handle lists with hard wraps. Fixes #443.

This change modifies the behavior of VimwikiReturn to not insert a new
list marker if not within a list. Mostly useful when mapping <CR> to
VimwikiReturn 3 5 or similar. The behavior of 'o' was also modified to
properly insert a marker in a list with hard line wraps.
This commit is contained in:
Rane Brown 2019-08-11 07:14:35 -06:00
parent b5d808b440
commit 5ce7c14a3d

View File

@ -1465,13 +1465,14 @@ function! vimwiki#lst#kbd_o()
let fold_end = foldclosedend('.')
let lnum = (fold_end == -1) ? line('.') : fold_end
let cur_item = s:get_item(lnum)
let parent = s:get_corresponding_item(lnum)
"inserting and deleting the x is necessary
"because otherwise the indent is lost
exe 'normal!' "ox\<C-H>"
if cur_item.lnum < s:get_last_line_of_item(cur_item)
call s:indent_multiline(cur_item, cur_item.lnum+1)
if parent.type != 0
call s:clone_marker_from_to(parent.lnum, cur_item.lnum+1)
else
call s:clone_marker_from_to(cur_item.lnum, cur_item.lnum+1)
call s:indent_multiline(cur_item, cur_item.lnum+1)
endif
startinsert!
endfunction
@ -1547,12 +1548,20 @@ endfunction
function! s:cr_on_empty_line(lnum, behavior)
let lst = s:get_corresponding_item(a:lnum)
"inserting and deleting the x is necessary
"because otherwise the indent is lost
exe 'normal!' "gi\<CR>x\<C-H>\<ESC>"
if a:behavior == 2 || a:behavior == 3
if lst.type == 0
" don't insert new bullet if not part of a list
return
else
call s:create_marker(a:lnum+1)
endif
endif
endfunction