vimwiki

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

commit 6b9df766bb9c677894172539f52010dbf4f98566
parent f88877376732804ad9ed3adcccfb83302c21bd0a
Author: Michael F. Schönitzer <michael@schoenitzer.de>
Date:   Sat,  5 Aug 2017 14:50:58 +0200

Remove duplicated code

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

diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim @@ -843,43 +843,9 @@ function! s:change_cb(from_line, to_line, new_rate) "{{{ endfunction "}}} -"Decrement checkbox between [ ] and [X] -"in the lines of the given range -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 - - "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]) - - call s:change_cb(a:from_line, a:to_line, new_rate) - -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 - - "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 "}}} - -"Toggles checkbox between [ ] and [X] or creates one -"in the lines of the given range -function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{ +"Toggles checkbox between two states in the lines of the given range, +"creates chceckboxes if there aren't any. +function! s:toggle_create_cb(from_line, to_line, state1, state2) "{{{ let from_item = s:get_corresponding_item(a:from_line) if from_item.type == 0 return @@ -909,7 +875,7 @@ function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{ "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 + let new_rate = rate_first_line == a:state1 ? a:state2 : a:state1 call s:change_cb(a:from_line, a:to_line, new_rate) @@ -917,44 +883,50 @@ function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{ endfunction "}}} -"Toggles checkbox between [ ] and [-] or creates one +"Decrement checkbox between [ ] and [X] "in the lines of the given range -function! vimwiki#lst#toggle_rejected_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 - 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 no CB, make a CB in every selected line - let parent_items_of_lines = [] - for cur_ln in range(from_item.lnum, a:to_line) - let cur_item = s:get_item(cur_ln) - let success = s:create_cb(cur_item) + call s:change_cb(a:from_line, a:to_line, new_rate) - if success - 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 "}}} - for parent_item in parent_items_of_lines - call s:update_state(parent_item) - endfor +"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 - else + "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]) - "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 == -1 ? 0 : -1 + call s:change_cb(a:from_line, a:to_line, new_rate) - call s:change_cb(a:from_line, a:to_line, new_rate) +endfunction "}}} - endif +"Toggles checkbox between [ ] and [X] or creates one +"in the lines of the given range +function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{ + return s:toggle_create_cb(a:from_line, a:to_line, 100, 0) +endfunction "}}} +"Toggles checkbox between [ ] and [-] or creates one +"in the lines of the given range +function! vimwiki#lst#toggle_rejected_cb(from_line, to_line) "{{{ + return s:toggle_create_cb(a:from_line, a:to_line, -1, 0) endfunction "}}} function! vimwiki#lst#remove_cb(first_line, last_line) "{{{