From 19f398c73eae6324437b5a645e4c172b2639e9ea Mon Sep 17 00:00:00 2001 From: EinfachToll Date: Fri, 16 Feb 2018 07:26:42 +0100 Subject: [PATCH] Cherry-pick the changes from dev -- part 1 --- autoload/vimwiki/html.vim | 12 +++++-- autoload/vimwiki/lst.vim | 16 ++++----- autoload/vimwiki/vars.vim | 5 +-- doc/vimwiki.txt | 75 +++++++++++++++++++++++++-------------- syntax/vimwiki.vim | 6 ++-- 5 files changed, 73 insertions(+), 41 deletions(-) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index a6a1f63..d01b056 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -860,7 +860,11 @@ function! s:process_tag_list(line, lists) "{{{ let chk = matchlist(a:line, a:rx_list) if !empty(chk) && len(chk[1]) > 0 let completion = index(vimwiki#vars#get_syntaxlocal('listsyms_list'), chk[1]) - if completion >= 0 && completion <=4 + let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list')) + if completion == 0 + let st_tag = '
  • ' + elseif completion > 0 && completion < n + let completion = float2nr(round(completion / (n-1.0) * 3.0 + 0.5 )) let st_tag = '
  • ' endif endif @@ -979,7 +983,11 @@ function! s:process_tag_para(line, para) "{{{ let para = 1 endif let processed = 1 - call add(lines, a:line) + if vimwiki#vars#get_global('text_ignore_newline') + call add(lines, a:line) + else + call add(lines, a:line."
    ") + endif elseif para && a:line =~# '^\s*$' call add(lines, "

    ") let para = 0 diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim index 41ef51b..b959b75 100644 --- a/autoload/vimwiki/lst.vim +++ b/autoload/vimwiki/lst.vim @@ -697,7 +697,8 @@ function! s:get_rate(item) "{{{ return -1 endif let state = a:item.cb - return index(vimwiki#vars#get_syntaxlocal('listsyms_list'), state) * 25 + let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list')) + return index(vimwiki#vars#get_syntaxlocal('listsyms_list'), state) * 100/(n-1) endfunction "}}} "Set state of the list item to [ ] or [o] or whatever @@ -732,17 +733,16 @@ endfunction "}}} "Returns: the appropriate symbol for a given percent rate function! s:rate_to_state(rate) "{{{ + let listsyms_list = vimwiki#vars#get_syntaxlocal('listsyms_list') let state = '' + let n = len(listsyms_list) if a:rate == 100 - let state = vimwiki#vars#get_syntaxlocal('listsyms_list')[4] + let state = listsyms_list[n-1] elseif a:rate == 0 - let state = vimwiki#vars#get_syntaxlocal('listsyms_list')[0] - elseif a:rate >= 67 - let state = vimwiki#vars#get_syntaxlocal('listsyms_list')[3] - elseif a:rate >= 34 - let state = vimwiki#vars#get_syntaxlocal('listsyms_list')[2] + let state = listsyms_list[0] else - let state = vimwiki#vars#get_syntaxlocal('listsyms_list')[1] + let index = float2nr(ceil(a:rate/100.0*(n-2))) + let state = listsyms_list[index] endif return state endfunction "}}} diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index 36fb9f5..ab0cf2a 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -47,6 +47,7 @@ function! s:populate_global_variables() \ 'html_header_numbering': 0, \ 'html_header_numbering_sym': '', \ 'list_ignore_newline': 1, + \ 'text_ignore_newline': 1, \ 'listsyms': ' .oOX', \ 'map_prefix': 'w', \ 'menu': 'Vimwiki', @@ -384,13 +385,13 @@ function! vimwiki#vars#populate_syntax_vars(syntax) if g:vimwiki_syntax_variables[a:syntax].recurring_bullets let g:vimwiki_syntax_variables[a:syntax].rxListItemAndChildren = \ '^\('.g:vimwiki_syntax_variables[a:syntax].rxListBullet.'\)\s\+\[' - \ . g:vimwiki_syntax_variables[a:syntax].listsyms_list[4].'\]\s.*\%(\n\%(\1\%(' + \ . g:vimwiki_syntax_variables[a:syntax].listsyms_list[-1].'\]\s.*\%(\n\%(\1\%(' \ .g:vimwiki_syntax_variables[a:syntax].rxListBullet.'\).*\|^$\|\s.*\)\)*' else let g:vimwiki_syntax_variables[a:syntax].rxListItemAndChildren = \ '^\(\s*\)\%('.g:vimwiki_syntax_variables[a:syntax].rxListBullet.'\|' \ . g:vimwiki_syntax_variables[a:syntax].rxListNumber.'\)\s\+\[' - \ . g:vimwiki_syntax_variables[a:syntax].listsyms_list[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*' + \ . g:vimwiki_syntax_variables[a:syntax].listsyms_list[-1].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*' endif " 0. URL : free-standing links: keep URL UR(L) strip trailing punct: URL; URL) UR(L)) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index d795ba7..6baceec 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -1277,40 +1277,50 @@ Tags-related commands and options: 6. Folding/Outline *vimwiki-folding* Vimwiki can fold or outline sections using headers and preformatted blocks. -Alternatively, one can fold list subitems instead. +Alternatively, one can fold list subitems instead. Folding is not enabled +by default, and requires the |g:vimwiki_folding| variable to be set. + +Example for list folding with |g:vimwiki_folding| set to 'list': -Example for list folding: = My current task = - * [ ] Do stuff 1 - * [ ] Do substuff 1.1 - * [ ] Do substuff 1.2 - * [ ] Do substuff 1.2.1 - * [ ] Do substuff 1.2.2 - * [ ] Do substuff 1.3 - * [ ] Do stuff 2 - * [ ] Do stuff 3 +* [ ] Do stuff 1 + * [ ] Do substuff 1.1 + * [ ] Do substuff 1.2 + * [ ] Do substuff 1.2.1 + * [ ] Do substuff 1.2.2 + * [ ] Do substuff 1.3 +* [ ] Do stuff 2 +* [ ] Do stuff 3 Hit |zM| : -= My current task = [8] --------------------------------------~ += My current task = +* [ ] Do stuff 1 [6] --------------------------------------~ +* [ ] Do stuff 2 +* [ ] Do stuff 3 Hit |zr| : -= My current task =~ - * [ ] Do stuff 1 [5] --------------------------------------~ - * [ ] Do stuff 2~ - * [ ] Do stuff 3~ += My current task = +* [ ] Do stuff 1 + * [ ] Do substuff 1.1 + * [ ] Do substuff 1.2 [3] -------------------------------~ + * [ ] Do substuff 1.3 +* [ ] Do stuff 2 +* [ ] Do stuff 3 -Hit |zr| one more time: -= My current task =~ - * [ ] Do stuff 1~ - * [ ] Do substuff 1.1~ - * [ ] Do substuff 1.2 [2] -------------------------------~ - * [ ] Do substuff 1.3~ - * [ ] Do stuff 2~ - * [ ] Do stuff 3~ +Hit |zr| one more time : += My current task = +* [ ] Do stuff 1 + * [ ] Do substuff 1.1 + * [ ] Do substuff 1.2 + * [ ] Do substuff 1.2.1 + * [ ] Do substuff 1.2.2 + * [ ] Do substuff 1.3 +* [ ] Do stuff 2 +* [ ] Do stuff 3 Note: If you use the default Vimwiki syntax, folding on list items will work properly only if all of them are indented using the current 'shiftwidth'. -For MediaWiki, * or # should be in the first column. +For MediaWiki syntax, * or # should be in the first column. To turn folding on/off check |g:vimwiki_folding|. @@ -2241,11 +2251,11 @@ Default: 'Vimwiki' ------------------------------------------------------------------------------ *g:vimwiki_listsyms* -String of 5 symbols to show the progression of todo list items. +String of at least two symbols to show the progression of todo list items. Default value is ' .oOX'. The first char is for 0% done items. -The fifth is for 100% done items. +The last is for 100% done items. You can set it to some more fancy symbols like this: > @@ -2298,6 +2308,19 @@ Value Description~ Default: 1 +------------------------------------------------------------------------------ +*g:vimwiki_text_ignore_newline* + +This is HTML related. +Convert newlines to
    s in text. + +Value Description~ +0 Newlines in text are converted to
    s. +1 Ignore newlines. + +Default: 1 + + ------------------------------------------------------------------------------ *g:vimwiki_use_calendar* diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim index 44c07fe..e035711 100644 --- a/syntax/vimwiki.vim +++ b/syntax/vimwiki.vim @@ -235,9 +235,9 @@ execute 'syntax match VimwikiList /'.vimwiki#vars#get_syntaxlocal('rxListDefine' execute 'syntax match VimwikiListTodo /'.vimwiki#vars#get_syntaxlocal('rxListItem').'/' if vimwiki#vars#get_global('hl_cb_checked') == 1 - execute 'syntax match VimwikiCheckBoxDone ' - \ . ' /'.vimwiki#vars#get_syntaxlocal('rxListItemWithoutCB').'\s*\['.vimwiki#vars#get_syntaxlocal('listsyms_list')[4].'\]\s.*$/' - \ . ' contains=VimwikiNoExistsLink,VimwikiLink,@Spell' + execute 'syntax match VimwikiCheckBoxDone /'.vimwiki#vars#get_syntaxlocal('rxListItemWithoutCB') + \ .'\s*\['.vimwiki#vars#get_syntaxlocal('listsyms_list')[-1] + \ .'\]\s.*$/ contains=VimwikiNoExistsLink,VimwikiLink,@Spell' elseif vimwiki#vars#get_global('hl_cb_checked') == 2 execute 'syntax match VimwikiCheckBoxDone /'.vimwiki#vars#get_syntaxlocal('rxListItemAndChildren').'/ contains=VimwikiNoExistsLink,VimwikiLink,@Spell' endif