vimwiki

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

commit 6257c8fa54e634b5dda12a09ae6b43524166e8e8
parent 35d1f23b921d0657c1792fbed3c8a2ca2dac3e9a
Author: EinfachToll <istjanichtzufassen@googlemail.com>
Date:   Thu, 17 Jan 2019 21:57:42 +0100

Revert "Allow to specify additional chars for lists"

This reverts commit 75819ca23a1244416aba3db2843f77cc55c06e16.

Diffstat:
Mautoload/vimwiki/html.vim | 6+++---
Mautoload/vimwiki/lst.vim | 31+++++++++++++++----------------
Mautoload/vimwiki/vars.vim | 111+++++++++++++++++++++++++++++++------------------------------------------------
Mftplugin/vimwiki.vim | 2+-
Msyntax/vimwiki.vim | 10+++++-----
5 files changed, 68 insertions(+), 92 deletions(-)

diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim @@ -886,8 +886,8 @@ function! s:process_tag_list(line, lists) let st_tag = '<li>' let chk = matchlist(a:line, a:rx_list) if !empty(chk) && len(chk[1]) > 0 - let completion = index(vimwiki#vars#get_wikilocal('listsyms_list'), chk[1]) - let n = len(vimwiki#vars#get_wikilocal('listsyms_list')) + let completion = index(vimwiki#vars#get_syntaxlocal('listsyms_list'), chk[1]) + let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list')) if completion == 0 let st_tag = '<li class="done0">' elseif completion == -1 && chk[1] == vimwiki#vars#get_global('listsym_rejected') @@ -1476,7 +1476,7 @@ function! s:convert_file(path_html, wikifile) endif " prepare regexps for lists - let s:bullets = vimwiki#vars#get_wikilocal('rx_bullet_char') + let s:bullets = '[*-]' let s:numbers = '\C\%(#\|\d\+)\|\d\+\.\|[ivxlcdm]\+)\|[IVXLCDM]\+)\|\l\{1,2})\|\u\{1,2})\)' for line in lsource diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim @@ -137,7 +137,7 @@ endfunction "Returns: the column where the text of a line starts (possible list item "markers and checkboxes are skipped) function! s:text_begin(lnum) - return s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_wikilocal('rxListItem'))) + return s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_syntaxlocal('rxListItem'))) endfunction @@ -145,9 +145,9 @@ endfunction " 1 for a marker and no text " 0 for no marker at all (empty line or only text) function! s:line_has_marker(lnum) - if getline(a:lnum) =~# vimwiki#vars#get_wikilocal('rxListItem').'\s*$' + if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*$' return 1 - elseif getline(a:lnum) =~# vimwiki#vars#get_wikilocal('rxListItem').'\s*\S' + elseif getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*\S' return 2 else return 0 @@ -172,7 +172,7 @@ function! s:get_item(lnum) return item endif - let matches = matchlist(getline(a:lnum), vimwiki#vars#get_wikilocal('rxListItem')) + let matches = matchlist(getline(a:lnum), vimwiki#vars#get_syntaxlocal('rxListItem')) if matches == [] || \ (matches[1] == '' && matches[2] == '') || \ (matches[1] != '' && matches[2] != '') @@ -209,7 +209,7 @@ function! s:get_level(lnum) let level = indent(a:lnum) else let level = s:string_length(matchstr(getline(a:lnum), - \ vimwiki#vars#get_wikilocal(rx_bullet_chars)))-1 + \ vimwiki#vars#get_syntaxlocal(rx_bullet_chars)))-1 if level < 0 let level = (indent(a:lnum) == 0) ? 0 : 9999 endif @@ -744,8 +744,8 @@ function! s:get_rate(item) if state == vimwiki#vars#get_global('listsym_rejected') return -1 endif - let n = len(vimwiki#vars#get_wikilocal('listsyms_list')) - return index(vimwiki#vars#get_wikilocal('listsyms_list'), state) * 100/(n-1) + let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list')) + return index(vimwiki#vars#get_syntaxlocal('listsyms_list'), state) * 100/(n-1) endfunction @@ -820,7 +820,7 @@ endfunction "Returns: the appropriate symbol for a given percent rate function! s:rate_to_state(rate) - let listsyms_list = vimwiki#vars#get_wikilocal('listsyms_list') + let listsyms_list = vimwiki#vars#get_syntaxlocal('listsyms_list') let state = '' let n = len(listsyms_list) if a:rate == 100 @@ -997,7 +997,7 @@ function! vimwiki#lst#decrement_cb(from_line, to_line) "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(vimwiki#vars#get_wikilocal('listsyms_list')) + let n = len(vimwiki#vars#get_syntaxlocal('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) @@ -1015,7 +1015,7 @@ function! vimwiki#lst#increment_cb(from_line, to_line) "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(vimwiki#vars#get_wikilocal('listsyms_list')) + let n = len(vimwiki#vars#get_syntaxlocal('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) @@ -1034,7 +1034,6 @@ endfunction "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, -1) - endfunction @@ -1102,7 +1101,7 @@ endfunction function! s:decrease_level(item) let removed_indent = 0 if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 && - \ index(vimwiki#vars#get_wikilocal('multiple_bullet_chars'), + \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), \ s:first_char(a:item.mrkr)) > -1 if s:string_length(a:item.mrkr) >= 2 call s:substitute_string_in_line(a:item.lnum, s:first_char(a:item.mrkr), '') @@ -1125,7 +1124,7 @@ endfunction function! s:increase_level(item) let additional_indent = 0 if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 && - \ index(vimwiki#vars#get_wikilocal('multiple_bullet_chars'), + \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), \ s:first_char(a:item.mrkr)) > -1 call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, a:item.mrkr . \ s:first_char(a:item.mrkr)) @@ -1149,7 +1148,7 @@ endfunction function! s:indent_line_by(lnum, indent_by) let item = s:get_item(a:lnum) if vimwiki#vars#get_syntaxlocal('recurring_bullets') && item.type == 1 && - \ index(vimwiki#vars#get_wikilocal('multiple_bullet_chars'), + \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), \ s:first_char(item.mrkr)) > -1 if a:indent_by > 0 call s:substitute_string_in_line(a:lnum, item.mrkr, item.mrkr . s:first_char(item.mrkr)) @@ -1324,7 +1323,7 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) endif "handle markers like *** - if index(vimwiki#vars#get_wikilocal('multiple_bullet_chars'), s:first_char(new_mrkr)) > -1 + if index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(new_mrkr)) > -1 "use *** if the item above has *** too let item_above = s:get_prev_list_item(cur_item, 1) if item_above.type == 1 && s:first_char(item_above.mrkr) ==# s:first_char(new_mrkr) @@ -1395,7 +1394,7 @@ function! s:adjust_mrkr(item) "if possible, set e.g. *** if parent has ** as marker if neighbor_item.type == 0 && a:item.type == 1 && - \ index(vimwiki#vars#get_wikilocal('multiple_bullet_chars'), + \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), \ s:first_char(a:item.mrkr)) > -1 let parent_item = s:get_parent(a:item) if parent_item.type == 1 && s:first_char(parent_item.mrkr) ==# s:first_char(a:item.mrkr) diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim @@ -204,7 +204,6 @@ function! s:populate_wikilocal_options() \ 'template_default': 'default', \ 'template_ext': '.tpl', \ 'template_path': $HOME . '/vimwiki/templates/', - \ 'bullet_types': [], \ } let g:vimwiki_wikilocal_vars = [] @@ -247,13 +246,6 @@ function! s:populate_wikilocal_options() let temporary_wiki_settings = deepcopy(default_wiki_settings) let temporary_wiki_settings.is_temporary_wiki = 1 call add(g:vimwiki_wikilocal_vars, temporary_wiki_settings) - " Set up variables for the lists, depending on config and syntax - for wiki in g:vimwiki_wikilocal_vars - if len(wiki.bullet_types) == 0 - let wiki.bullet_types = vimwiki#vars#get_syntaxlocal('bullet_types', wiki.syntax) - endif - call vimwiki#vars#populate_list_vars(wiki) - endfor call s:validate_settings() endfunction @@ -351,6 +343,20 @@ function! vimwiki#vars#populate_syntax_vars(syntax) let g:vimwiki_syntax_variables[a:syntax].rxMathEnd = \ '^\s*'.g:vimwiki_syntax_variables[a:syntax].rxMathEnd.'\s*$' + " list stuff + let g:vimwiki_syntax_variables[a:syntax].rx_bullet_chars = + \ '['.join(g:vimwiki_syntax_variables[a:syntax].bullet_types, '').']\+' + + let g:vimwiki_syntax_variables[a:syntax].multiple_bullet_chars = + \ g:vimwiki_syntax_variables[a:syntax].recurring_bullets + \ ? g:vimwiki_syntax_variables[a:syntax].bullet_types : [] + + let g:vimwiki_syntax_variables[a:syntax].number_kinds = [] + let g:vimwiki_syntax_variables[a:syntax].number_divisors = '' + for i in g:vimwiki_syntax_variables[a:syntax].number_types + call add(g:vimwiki_syntax_variables[a:syntax].number_kinds, i[0]) + let g:vimwiki_syntax_variables[a:syntax].number_divisors .= vimwiki#u#escape(i[1]) + endfor let char_to_rx = {'1': '\d\+', 'i': '[ivxlcdm]\+', 'I': '[IVXLCDM]\+', \ 'a': '\l\{1,2}', 'A': '\u\{1,2}'} @@ -382,6 +388,36 @@ function! vimwiki#vars#populate_syntax_vars(syntax) let g:vimwiki_syntax_variables[a:syntax].rxListNumber = '$^' endif + "the user can set the listsyms as string, but vimwiki needs a list + let g:vimwiki_syntax_variables[a:syntax].listsyms_list = + \ split(vimwiki#vars#get_global('listsyms'), '\zs') + if match(vimwiki#vars#get_global('listsyms'), vimwiki#vars#get_global('listsym_rejected')) != -1 + echomsg 'Vimwiki Warning: the value of g:vimwiki_listsym_rejected (''' + \ . vimwiki#vars#get_global('listsym_rejected') + \ . ''') must not be a part of g:vimwiki_listsyms (''' . + \ . vimwiki#vars#get_global('listsyms') . ''')' + endif + let g:vimwiki_syntax_variables[a:syntax].rxListItemWithoutCB = + \ '^\s*\%(\('.g:vimwiki_syntax_variables[a:syntax].rxListBullet.'\)\|\(' + \ .g:vimwiki_syntax_variables[a:syntax].rxListNumber.'\)\)\s' + let g:vimwiki_syntax_variables[a:syntax].rxListItem = + \ g:vimwiki_syntax_variables[a:syntax].rxListItemWithoutCB + \ . '\+\%(\[\(['.vimwiki#vars#get_global('listsyms') + \ . vimwiki#vars#get_global('listsym_rejected').']\)\]\s\)\?' + 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[-1] + \ . vimwiki#vars#get_global('listsym_rejected') . ']\]\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[-1] + \ . vimwiki#vars#get_global('listsym_rejected') . ']\]\s.*\%(\n\%(\1\s.*\|^$\)\)*' + endif + " 0. URL : free-standing links: keep URL UR(L) strip trailing punct: URL; URL) UR(L)) " let g:vimwiki_rxWeblink = '[\["(|]\@<!'. g:vimwiki_rxWeblinkUrl . " \ '\%([),:;.!?]\=\%([ \t]\|$\)\)\@=' @@ -430,65 +466,6 @@ function! vimwiki#vars#populate_syntax_vars(syntax) endfunction -function! vimwiki#vars#populate_list_vars(wiki) - let syntax = a:wiki.syntax - - let a:wiki.rx_bullet_char = '['.escape(join(a:wiki.bullet_types, ''), ']^-\').']' - let a:wiki.rx_bullet_chars = a:wiki.rx_bullet_char.'\+' - - let recurring_bullets = vimwiki#vars#get_syntaxlocal('recurring_bullets') - let rxListNumber = vimwiki#vars#get_syntaxlocal('rxListNumber') - - let a:wiki.multiple_bullet_chars = - \ recurring_bullets - \ ? a:wiki.bullet_types : [] - - "create regexp for bulleted list items - if !empty(a:wiki.bullet_types) - let rxListBullet = - \ join( map(a:wiki.bullet_types, - \'vimwiki#u#escape(v:val).' - \ .'repeat("\\+", recurring_bullets)' - \ ) , '\|') - else - "regex that matches nothing - let rxListBullet = '$^' - endif - - "the user can set the listsyms as string, but vimwiki needs a list - " TODO make a true wikilocal and use global only as fallback for compatibility - let a:wiki.listsyms_list = - \ split(vimwiki#vars#get_global('listsyms'), '\zs') - if match(vimwiki#vars#get_global('listsyms'), vimwiki#vars#get_global('listsym_rejected')) != -1 - echomsg 'Vimwiki Warning: the value of g:vimwiki_listsym_rejected (''' - \ . vimwiki#vars#get_global('listsym_rejected') - \ . ''') must not be a part of g:vimwiki_listsyms (''' . - \ . vimwiki#vars#get_global('listsyms') . ''')' - endif - - let a:wiki.rxListItemWithoutCB = - \ '^\s*\%(\('.rxListBullet.'\)\|\(' - \ .rxListNumber.'\)\)\s' - let a:wiki.rxListItem = - \ a:wiki.rxListItemWithoutCB - \ . '\+\%(\[\(['.vimwiki#vars#get_global('listsyms') - \ . vimwiki#vars#get_global('listsym_rejected').']\)\]\s\)\?' - if recurring_bullets - let a:wiki.rxListItemAndChildren = - \ '^\('.rxListBullet.'\)\s\+\[[' - \ . a:wiki.listsyms_list[-1] - \ . vimwiki#vars#get_global('listsym_rejected') . ']\]\s.*\%(\n\%(\1\%(' - \ .rxListBullet.'\).*\|^$\|\s.*\)\)*' - else - let a:wiki.rxListItemAndChildren = - \ '^\(\s*\)\%('.rxListBullet.'\|' - \ . rxListNumber.'\)\s\+\[[' - \ . a:wiki.listsyms_list[-1] - \ . vimwiki#vars#get_global('listsym_rejected') . ']\]\s.*\%(\n\%(\1\s.*\|^$\)\)*' - endif -endfunction - - function! s:populate_extra_markdown_vars() let mkd_syntax = g:vimwiki_syntax_variables['markdown'] diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim @@ -127,7 +127,7 @@ setlocal formatoptions-=o setlocal formatoptions-=2 setlocal formatoptions+=n -let &formatlistpat = vimwiki#vars#get_wikilocal('rxListItem') +let &formatlistpat = vimwiki#vars#get_syntaxlocal('rxListItem') if !empty(&langmap) " Valid only if langmap is a comma separated pairs of chars diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim @@ -253,18 +253,18 @@ syntax match VimwikiCellSeparator " Lists -execute 'syntax match VimwikiList /'.vimwiki#vars#get_wikilocal('rxListItemWithoutCB').'/' +execute 'syntax match VimwikiList /'.vimwiki#vars#get_syntaxlocal('rxListItemWithoutCB').'/' execute 'syntax match VimwikiList /'.vimwiki#vars#get_syntaxlocal('rxListDefine').'/' -execute 'syntax match VimwikiListTodo /'.vimwiki#vars#get_wikilocal('rxListItem').'/' +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_wikilocal('rxListItemWithoutCB') - \ . '\s*\[['.vimwiki#vars#get_wikilocal('listsyms_list')[-1] + execute 'syntax match VimwikiCheckBoxDone /'.vimwiki#vars#get_syntaxlocal('rxListItemWithoutCB') + \ . '\s*\[['.vimwiki#vars#get_syntaxlocal('listsyms_list')[-1] \ . vimwiki#vars#get_global('listsym_rejected') \ . ']\]\s.*$/ contains=VimwikiNoExistsLink,VimwikiLink,@Spell' elseif vimwiki#vars#get_global('hl_cb_checked') == 2 execute 'syntax match VimwikiCheckBoxDone /' - \ . vimwiki#vars#get_wikilocal('rxListItemAndChildren') + \ . vimwiki#vars#get_syntaxlocal('rxListItemAndChildren') \ .'/ contains=VimwikiNoExistsLink,VimwikiLink,@Spell' endif