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:
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) "{{{