vimwiki

Personal wiki for vim
git clone https://github.com/vimwiki/vimwiki.git
Log | Files | Refs | README | LICENSE

commit 7fe98bd20c52da5679f52662d3a73d470608389b
parent 20afe48edd7fdb0442bb0c305a3f398343774fa4
Author: Michael F. Schönitzer <michael@schoenitzer.de>
Date:   Sun,  9 Jul 2017 21:25:37 +0200

Clean up code by reusing code

Diffstat:
Mautoload/vimwiki/lst.vim | 96+++++++++++++++++++++++++++++++------------------------------------------------
1 file changed, 37 insertions(+), 59 deletions(-)

diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim @@ -808,10 +808,9 @@ function! s:remove_cb(item) "{{{ return item endfunction "}}} - -"Increment checkbox between [ ] and [X] +"Change state of checkbox "in the lines of the given range -function! vimwiki#lst#decrement_cb(from_line, to_line) "{{{ +function! s:change_cb(from_line, to_line, new_rate) "{{{ let from_item = s:get_corresponding_item(a:from_line) if from_item.type == 0 return @@ -819,64 +818,54 @@ function! vimwiki#lst#decrement_cb(from_line, to_line) "{{{ let parent_items_of_lines = [] - if from_item.cb != '' - - "if from_line has CB, toggle it and set all siblings to the same new state - let rate_first_line = s:get_rate(from_item) - let n=len(g:vimwiki_listsyms_list) - let new_rate = max([rate_first_line - 100/(n-1)-1, 0]) - - for cur_ln in range(from_item.lnum, a:to_line) - let cur_item = s:get_item(cur_ln) - if cur_item.type != 0 && cur_item.cb != '' - call s:set_state_plus_children(cur_item, new_rate) - let cur_parent_item = s:get_parent(cur_item) - if index(parent_items_of_lines, cur_parent_item) == -1 - call insert(parent_items_of_lines, cur_parent_item) - endif + for cur_ln in range(from_item.lnum, a:to_line) + let cur_item = s:get_item(cur_ln) + if cur_item.type != 0 && cur_item.cb != '' + call s:set_state_plus_children(cur_item, a:new_rate) + let cur_parent_item = s:get_parent(cur_item) + if index(parent_items_of_lines, cur_parent_item) == -1 + call insert(parent_items_of_lines, cur_parent_item) endif - endfor - - endif + endif + endfor for parent_item in parent_items_of_lines call s:update_state(parent_item) endfor endfunction "}}} -"Increment checkbox between [ ] and [X] + +"Decrement checkbox between [ ] and [X] "in the lines of the given range -function! vimwiki#lst#increment_cb(from_line, to_line) "{{{ +function! vimwiki#lst#decrement_cb(from_line, to_line) "{{{ let from_item = s:get_corresponding_item(a:from_line) if from_item.type == 0 return endif - let parent_items_of_lines = [] - - if from_item.cb != '' + "if from_line has CB, decrement it and set all siblings to the same new state + let rate_first_line = s:get_rate(from_item) + let n=len(g:vimwiki_listsyms_list) + let new_rate = max([rate_first_line - 100/(n-1)-1, 0]) - "if from_line has CB, toggle it and set all siblings to the same new state - let rate_first_line = s:get_rate(from_item) - let n=len(g:vimwiki_listsyms_list) - let new_rate = min([rate_first_line + 100/(n-1)+1, 100]) + call s:change_cb(a:from_line, a:to_line, new_rate) - for cur_ln in range(from_item.lnum, a:to_line) - let cur_item = s:get_item(cur_ln) - if cur_item.type != 0 && cur_item.cb != '' - call s:set_state_plus_children(cur_item, new_rate) - let cur_parent_item = s:get_parent(cur_item) - if index(parent_items_of_lines, cur_parent_item) == -1 - call insert(parent_items_of_lines, cur_parent_item) - endif - endif - endfor +endfunction "}}} +"Increment checkbox between [ ] and [X] +"in the lines of the given range +function! vimwiki#lst#increment_cb(from_line, to_line) "{{{ + let from_item = s:get_corresponding_item(a:from_line) + if from_item.type == 0 + return endif - for parent_item in parent_items_of_lines - call s:update_state(parent_item) - endfor + "if from_line has CB, increment it and set all siblings to the same new state + let rate_first_line = s:get_rate(from_item) + let n=len(g:vimwiki_listsyms_list) + let new_rate = min([rate_first_line + 100/(n-1)+1, 100]) + + call s:change_cb(a:from_line, a:to_line, new_rate) endfunction "}}} @@ -888,8 +877,6 @@ function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{ return endif - let parent_items_of_lines = [] - if from_item.cb == '' "if from_line has no CB, make a CB in every selected line @@ -906,29 +893,20 @@ function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{ endif endfor + for parent_item in parent_items_of_lines + call s:update_state(parent_item) + endfor + else "if from_line has CB, toggle it and set all siblings to the same new state let rate_first_line = s:get_rate(from_item) let new_rate = rate_first_line == 100 ? 0 : 100 - for cur_ln in range(from_item.lnum, a:to_line) - let cur_item = s:get_item(cur_ln) - if cur_item.type != 0 && cur_item.cb != '' - call s:set_state_plus_children(cur_item, new_rate) - let cur_parent_item = s:get_parent(cur_item) - if index(parent_items_of_lines, cur_parent_item) == -1 - call insert(parent_items_of_lines, cur_parent_item) - endif - endif - endfor + call s:change_cb(a:from_line, a:to_line, new_rate) endif - for parent_item in parent_items_of_lines - call s:update_state(parent_item) - endfor - endfunction "}}} function! vimwiki#lst#remove_cb(first_line, last_line) "{{{