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