Clean & Fix: cycle_bullets bug not defined key in dic: #911
This commit is contained in:
parent
a9f21c6d4a
commit
43951e5851
@ -180,26 +180,32 @@ endfunction
|
|||||||
"Returns: the mainly used data structure in this file
|
"Returns: the mainly used data structure in this file
|
||||||
"An item represents a single list item and is a dictionary with the keys
|
"An item represents a single list item and is a dictionary with the keys
|
||||||
"lnum - the line number of the list item
|
"lnum - the line number of the list item
|
||||||
"type - 1 for bulleted item, 2 for numbered item, 0 for a regular line
|
"type - 1 for bulleted item, 2 for numbered item, 0 for a regular line (default)
|
||||||
"mrkr - the concrete marker, e.g. '**' or 'b)'
|
"mrkr - the concrete marker, e.g. '**' or 'b)' (default '')
|
||||||
"cb - the char in the checkbox or '' if there is no checkbox
|
"cb - the char in the checkbox or '' if there is no checkbox
|
||||||
function! s:get_item(lnum) abort
|
function! s:get_item(lnum) abort
|
||||||
|
" Init default
|
||||||
let item = {'lnum': a:lnum}
|
let item = {'lnum': a:lnum}
|
||||||
if a:lnum == 0 || a:lnum > line('$')
|
|
||||||
let item.type = 0
|
let item.type = 0
|
||||||
|
let item.mrkr = ''
|
||||||
|
let item.cb = ''
|
||||||
|
|
||||||
|
" Clause: Check lnum argument is in buffer line range
|
||||||
|
if a:lnum == 0 || a:lnum > line('$')
|
||||||
return item
|
return item
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Search for list on current line
|
||||||
let matches = matchlist(getline(a:lnum), vimwiki#vars#get_wikilocal('rxListItem'))
|
let matches = matchlist(getline(a:lnum), vimwiki#vars#get_wikilocal('rxListItem'))
|
||||||
|
" Clause: If not on a list line => do not work
|
||||||
if matches == [] ||
|
if matches == [] ||
|
||||||
\ (matches[1] ==? '' && matches[2] ==? '') ||
|
\ (matches[1] ==? '' && matches[2] ==? '') ||
|
||||||
\ (matches[1] !=? '' && matches[2] !=? '')
|
\ (matches[1] !=? '' && matches[2] !=? '')
|
||||||
let item.type = 0
|
|
||||||
return item
|
return item
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Fill item
|
||||||
let item.cb = matches[3]
|
let item.cb = matches[3]
|
||||||
|
|
||||||
if matches[1] !=? ''
|
if matches[1] !=? ''
|
||||||
let item.type = 1
|
let item.type = 1
|
||||||
let item.mrkr = matches[1]
|
let item.mrkr = matches[1]
|
||||||
@ -208,6 +214,7 @@ function! s:get_item(lnum) abort
|
|||||||
let item.mrkr = matches[2]
|
let item.mrkr = matches[2]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" See you on an other stack
|
||||||
return item
|
return item
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -1257,22 +1264,26 @@ function! s:increase_level(item, by) abort
|
|||||||
call s:indent_cycle_bullets(a:item, a:by)
|
call s:indent_cycle_bullets(a:item, a:by)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" s:indent_cycle_bullets cycles through the bullet list markers set in
|
|
||||||
|
" Cycle through the bullet list markers set in
|
||||||
" `bullet_types` based on the indentation level
|
" `bullet_types` based on the indentation level
|
||||||
" TODO there is potential to merge this with the change_marker* funcs further
|
" TODO there is potential to merge this with the change_marker* funcs further
|
||||||
" up if we can make them operate on arbitrary lists of characters
|
" up if we can make them operate on arbitrary lists of characters
|
||||||
function! s:indent_cycle_bullets(item, indent_by) abort
|
function! s:indent_cycle_bullets(item, indent_by) abort
|
||||||
if vimwiki#vars#get_syntaxlocal('cycle_bullets') && a:item.type == 1
|
" Clause: Check if should work
|
||||||
|
if !vimwiki#vars#get_syntaxlocal('cycle_bullets') || a:item.type != 1
|
||||||
|
return
|
||||||
|
endif
|
||||||
let bullets = vimwiki#vars#get_syntaxlocal('bullet_types')
|
let bullets = vimwiki#vars#get_syntaxlocal('bullet_types')
|
||||||
let i = index(bullets, s:first_char(a:item.mrkr)) + a:indent_by
|
let i = index(bullets, s:first_char(a:item.mrkr)) + a:indent_by
|
||||||
" calculate the index in a way that wraps around the end of the list
|
" Calculate the index in a way that wraps around the end of the list
|
||||||
" making it behave like a ring buffer
|
" ... making it behave like a ring buffer
|
||||||
let new_mrkr = bullets[((i % len(bullets) + len(bullets)) % len(bullets))]
|
let new_mrkr = bullets[((i % len(bullets) + len(bullets)) % len(bullets))]
|
||||||
call vimwiki#lst#change_marker(a:item.lnum, a:item.lnum, new_mrkr, 'n')
|
call vimwiki#lst#change_marker(a:item.lnum, a:item.lnum, new_mrkr, 'n')
|
||||||
endif
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"adds a:indent_by to the current indent
|
|
||||||
|
" Add a:indent_by to the current indent
|
||||||
"a:indent_by can be negative
|
"a:indent_by can be negative
|
||||||
function! s:indent_line_by(lnum, indent_by) abort
|
function! s:indent_line_by(lnum, indent_by) abort
|
||||||
let item = s:get_item(a:lnum)
|
let item = s:get_item(a:lnum)
|
||||||
@ -1285,7 +1296,7 @@ function! s:indent_line_by(lnum, indent_by) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
"changes lvl of lines in selection
|
" Change lvl of lines in selection
|
||||||
function! s:change_level(from_line, to_line, direction, plus_children) abort
|
function! s:change_level(from_line, to_line, direction, plus_children) abort
|
||||||
let from_item = s:get_corresponding_item(a:from_line)
|
let from_item = s:get_corresponding_item(a:from_line)
|
||||||
if from_item.type == 0
|
if from_item.type == 0
|
||||||
|
@ -26,7 +26,23 @@
|
|||||||
" variables, not the underlying dicts!
|
" variables, not the underlying dicts!
|
||||||
" ------------------------------------------------------------------------------------------------
|
" ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Script variable
|
||||||
|
let s:margin_set_by_user = 0
|
||||||
|
|
||||||
|
|
||||||
|
" Helper, Init global and local variables
|
||||||
|
function! vimwiki#vars#init() abort
|
||||||
|
call s:populate_global_variables()
|
||||||
|
call s:populate_wikilocal_options()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" ----------------------------------------------------------
|
||||||
|
" 1. Global
|
||||||
|
" ----------------------------------------------------------
|
||||||
|
|
||||||
|
" Populate global variable <- user & default
|
||||||
|
" Called: s:vimwiki#vars#init
|
||||||
function! s:populate_global_variables() abort
|
function! s:populate_global_variables() abort
|
||||||
let g:vimwiki_global_vars = {}
|
let g:vimwiki_global_vars = {}
|
||||||
|
|
||||||
@ -140,6 +156,8 @@ function! s:populate_global_variables() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Read user global settings
|
||||||
|
" Called: s:populate_global_variables
|
||||||
function! s:read_global_settings_from_user() abort
|
function! s:read_global_settings_from_user() abort
|
||||||
let global_settings = {
|
let global_settings = {
|
||||||
\ 'CJK_length': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
\ 'CJK_length': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
@ -244,6 +262,8 @@ function! s:read_global_settings_from_user() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Normalize user global settings
|
||||||
|
" Called: s:populate_global_variables
|
||||||
function! s:normalize_global_settings() abort
|
function! s:normalize_global_settings() abort
|
||||||
let keys = keys(g:vimwiki_global_vars.ext2syntax)
|
let keys = keys(g:vimwiki_global_vars.ext2syntax)
|
||||||
for ext in keys
|
for ext in keys
|
||||||
@ -321,8 +341,17 @@ function! s:normalize_global_settings() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
let s:margin_set_by_user = 0
|
" ----------------------------------------------------------
|
||||||
|
" 2. Buffer local
|
||||||
|
" ----------------------------------------------------------
|
||||||
|
|
||||||
|
" Populate local variable <- user & default
|
||||||
|
" Called: s:vimwiki#vars#init
|
||||||
function! s:populate_wikilocal_options() abort
|
function! s:populate_wikilocal_options() abort
|
||||||
|
" Init local variable container
|
||||||
|
let g:vimwiki_wikilocal_vars = []
|
||||||
|
|
||||||
|
" Declare default values
|
||||||
let default_values = {
|
let default_values = {
|
||||||
\ 'auto_diary_index': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
\ 'auto_diary_index': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
\ 'auto_export': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
\ 'auto_export': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
@ -356,12 +385,12 @@ function! s:populate_wikilocal_options() abort
|
|||||||
\ 'template_path': {'type': type(''), 'default': $HOME . '/vimwiki/templates/'},
|
\ 'template_path': {'type': type(''), 'default': $HOME . '/vimwiki/templates/'},
|
||||||
\ 'html_filename_parameterization': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
\ 'html_filename_parameterization': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
|
||||||
\ 'bullet_types': {'type': type([]), 'default': []},
|
\ 'bullet_types': {'type': type([]), 'default': []},
|
||||||
|
\ 'cycle_bullets': {'type': type(0), 'default': 0},
|
||||||
\ 'listsyms': {'type': type(''), 'default': vimwiki#vars#get_global('listsyms')},
|
\ 'listsyms': {'type': type(''), 'default': vimwiki#vars#get_global('listsyms')},
|
||||||
\ 'listsym_rejected': {'type': type(''), 'default': vimwiki#vars#get_global('listsym_rejected')},
|
\ 'listsym_rejected': {'type': type(''), 'default': vimwiki#vars#get_global('listsym_rejected')},
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
let g:vimwiki_wikilocal_vars = []
|
" Fill default setting <- user or plugin values
|
||||||
|
|
||||||
let default_wiki_settings = {}
|
let default_wiki_settings = {}
|
||||||
for key in keys(default_values)
|
for key in keys(default_values)
|
||||||
if exists('g:vimwiki_'.key)
|
if exists('g:vimwiki_'.key)
|
||||||
@ -372,7 +401,7 @@ function! s:populate_wikilocal_options() abort
|
|||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
" set the wiki-local variables according to g:vimwiki_list (or the default settings)
|
" Set the wiki-local variables according to g:vimwiki_list (or the default settings)
|
||||||
if exists('g:vimwiki_list')
|
if exists('g:vimwiki_list')
|
||||||
for users_wiki_settings in g:vimwiki_list
|
for users_wiki_settings in g:vimwiki_list
|
||||||
let new_wiki_settings = {}
|
let new_wiki_settings = {}
|
||||||
@ -408,10 +437,10 @@ function! s:populate_wikilocal_options() abort
|
|||||||
if len(wiki.bullet_types) == 0
|
if len(wiki.bullet_types) == 0
|
||||||
let wiki.bullet_types = vimwiki#vars#get_syntaxlocal('bullet_types', wiki.syntax)
|
let wiki.bullet_types = vimwiki#vars#get_syntaxlocal('bullet_types', wiki.syntax)
|
||||||
endif
|
endif
|
||||||
call vimwiki#vars#populate_list_vars(wiki)
|
call s:populate_list_vars(wiki)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
" check some values individually
|
" Check some values individually
|
||||||
let key = 'nested_syntaxes'
|
let key = 'nested_syntaxes'
|
||||||
for wiki_settings in g:vimwiki_wikilocal_vars
|
for wiki_settings in g:vimwiki_wikilocal_vars
|
||||||
let users_value = wiki_settings[key]
|
let users_value = wiki_settings[key]
|
||||||
@ -429,6 +458,12 @@ function! s:populate_wikilocal_options() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Helper, Check user setting
|
||||||
|
" warn user with echo message if not good type
|
||||||
|
" Param: 1: key <string>: varaible name
|
||||||
|
" Param: 2: vimwiki_key <obj>: user value
|
||||||
|
" Param: 3: value_infod <dict>: type and default value
|
||||||
|
" Param: 4: coming from a global variable <bool>
|
||||||
function! s:check_users_value(key, users_value, value_infos, comes_from_global_variable) abort
|
function! s:check_users_value(key, users_value, value_infos, comes_from_global_variable) abort
|
||||||
let type_code_to_name = {
|
let type_code_to_name = {
|
||||||
\ type(0): 'number',
|
\ type(0): 'number',
|
||||||
@ -487,6 +522,7 @@ function! s:check_users_value(key, users_value, value_infos, comes_from_global_v
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Normalize local settings
|
||||||
function! s:normalize_wikilocal_settings() abort
|
function! s:normalize_wikilocal_settings() abort
|
||||||
for wiki_settings in g:vimwiki_wikilocal_vars
|
for wiki_settings in g:vimwiki_wikilocal_vars
|
||||||
let wiki_settings['path'] = s:normalize_path(wiki_settings['path'])
|
let wiki_settings['path'] = s:normalize_path(wiki_settings['path'])
|
||||||
@ -520,6 +556,7 @@ function! s:normalize_wikilocal_settings() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Helper path
|
||||||
" TODO move to path
|
" TODO move to path
|
||||||
function! s:normalize_path(path) abort
|
function! s:normalize_path(path) abort
|
||||||
" trim trailing / and \ because otherwise resolve() doesn't work quite right
|
" trim trailing / and \ because otherwise resolve() doesn't work quite right
|
||||||
@ -532,20 +569,39 @@ function! s:normalize_path(path) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" ----------------------------------------------------------
|
||||||
|
" 3. Syntax specific
|
||||||
|
" ----------------------------------------------------------
|
||||||
|
|
||||||
|
" Populate syntax variable
|
||||||
|
" Exported: syntax/vimwiki.vim
|
||||||
function! vimwiki#vars#populate_syntax_vars(syntax) abort
|
function! vimwiki#vars#populate_syntax_vars(syntax) abort
|
||||||
|
" Create is not exists
|
||||||
if !exists('g:vimwiki_syntax_variables')
|
if !exists('g:vimwiki_syntax_variables')
|
||||||
let g:vimwiki_syntax_variables = {}
|
let g:vimwiki_syntax_variables = {}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Clause: leave if already filled
|
||||||
if has_key(g:vimwiki_syntax_variables, a:syntax)
|
if has_key(g:vimwiki_syntax_variables, a:syntax)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Init syntax variable dictionary
|
||||||
let g:vimwiki_syntax_variables[a:syntax] = {}
|
let g:vimwiki_syntax_variables[a:syntax] = {}
|
||||||
|
|
||||||
|
" Autoload default syntax file
|
||||||
execute 'runtime! syntax/vimwiki_'.a:syntax.'.vim'
|
execute 'runtime! syntax/vimwiki_'.a:syntax.'.vim'
|
||||||
|
|
||||||
" generic stuff
|
" TODO make that clean (i.e clearify what is local to syntax ot to buffer)
|
||||||
|
" Get from local vars
|
||||||
|
let bullet_types = vimwiki#vars#get_wikilocal('bullet_types')
|
||||||
|
if !empty(bullet_types)
|
||||||
|
let g:vimwiki_syntax_variables[a:syntax]['bullet_types'] = bullet_types
|
||||||
|
endif
|
||||||
|
let g:vimwiki_syntax_variables[a:syntax]['cycle_bullets'] =
|
||||||
|
\ vimwiki#vars#get_wikilocal('cycle_bullets')
|
||||||
|
|
||||||
|
" Populate generic stuff
|
||||||
let header_symbol = g:vimwiki_syntax_variables[a:syntax].rxH
|
let header_symbol = g:vimwiki_syntax_variables[a:syntax].rxH
|
||||||
if g:vimwiki_syntax_variables[a:syntax].symH
|
if g:vimwiki_syntax_variables[a:syntax].symH
|
||||||
" symmetric headers
|
" symmetric headers
|
||||||
@ -605,7 +661,7 @@ function! vimwiki#vars#populate_syntax_vars(syntax) abort
|
|||||||
let char_to_rx = {'1': '\d\+', 'i': '[ivxlcdm]\+', 'I': '[IVXLCDM]\+',
|
let char_to_rx = {'1': '\d\+', 'i': '[ivxlcdm]\+', 'I': '[IVXLCDM]\+',
|
||||||
\ 'a': '\l\{1,2}', 'A': '\u\{1,2}'}
|
\ 'a': '\l\{1,2}', 'A': '\u\{1,2}'}
|
||||||
|
|
||||||
"create regexp for bulleted list items
|
" Create regexp for bulleted list items
|
||||||
if !empty(g:vimwiki_syntax_variables[a:syntax].bullet_types)
|
if !empty(g:vimwiki_syntax_variables[a:syntax].bullet_types)
|
||||||
let g:vimwiki_syntax_variables[a:syntax].rxListBullet =
|
let g:vimwiki_syntax_variables[a:syntax].rxListBullet =
|
||||||
\ join( map(copy(g:vimwiki_syntax_variables[a:syntax].bullet_types),
|
\ join( map(copy(g:vimwiki_syntax_variables[a:syntax].bullet_types),
|
||||||
@ -617,7 +673,7 @@ function! vimwiki#vars#populate_syntax_vars(syntax) abort
|
|||||||
let g:vimwiki_syntax_variables[a:syntax].rxListBullet = '$^'
|
let g:vimwiki_syntax_variables[a:syntax].rxListBullet = '$^'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"create regex for numbered list items
|
" Create regex for numbered list items
|
||||||
if !empty(g:vimwiki_syntax_variables[a:syntax].number_types)
|
if !empty(g:vimwiki_syntax_variables[a:syntax].number_types)
|
||||||
let g:vimwiki_syntax_variables[a:syntax].rxListNumber = '\C\%('
|
let g:vimwiki_syntax_variables[a:syntax].rxListNumber = '\C\%('
|
||||||
for type in g:vimwiki_syntax_variables[a:syntax].number_types[:-2]
|
for type in g:vimwiki_syntax_variables[a:syntax].number_types[:-2]
|
||||||
@ -674,13 +730,16 @@ function! vimwiki#vars#populate_syntax_vars(syntax) abort
|
|||||||
\ . g:vimwiki_global_vars.rxWikiLinkDescr. '\ze\)\?'
|
\ . g:vimwiki_global_vars.rxWikiLinkDescr. '\ze\)\?'
|
||||||
\ . g:vimwiki_global_vars.rx_wikilink_suffix
|
\ . g:vimwiki_global_vars.rx_wikilink_suffix
|
||||||
|
|
||||||
|
" Work more if markdown
|
||||||
if a:syntax ==# 'markdown'
|
if a:syntax ==# 'markdown'
|
||||||
call s:populate_extra_markdown_vars()
|
call s:populate_extra_markdown_vars()
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! vimwiki#vars#populate_list_vars(wiki) abort
|
" Populate list variable
|
||||||
|
" or how to search and treat list (ex: *,-, 1.)
|
||||||
|
function! s:populate_list_vars(wiki) abort
|
||||||
let syntax = a:wiki.syntax
|
let syntax = a:wiki.syntax
|
||||||
|
|
||||||
let a:wiki.rx_bullet_char = '['.escape(join(a:wiki.bullet_types, ''), ']^-\').']'
|
let a:wiki.rx_bullet_char = '['.escape(join(a:wiki.bullet_types, ''), ']^-\').']'
|
||||||
@ -693,7 +752,7 @@ function! vimwiki#vars#populate_list_vars(wiki) abort
|
|||||||
\ recurring_bullets
|
\ recurring_bullets
|
||||||
\ ? a:wiki.bullet_types : []
|
\ ? a:wiki.bullet_types : []
|
||||||
|
|
||||||
"create regexp for bulleted list items
|
" Create regexp for bulleted list items
|
||||||
if !empty(a:wiki.bullet_types)
|
if !empty(a:wiki.bullet_types)
|
||||||
let rxListBullet =
|
let rxListBullet =
|
||||||
\ join( map(copy(a:wiki.bullet_types),
|
\ join( map(copy(a:wiki.bullet_types),
|
||||||
@ -737,8 +796,7 @@ function! vimwiki#vars#populate_list_vars(wiki) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Populate markdown specific syntax variables
|
||||||
|
|
||||||
function! s:populate_extra_markdown_vars() abort
|
function! s:populate_extra_markdown_vars() abort
|
||||||
let mkd_syntax = g:vimwiki_syntax_variables['markdown']
|
let mkd_syntax = g:vimwiki_syntax_variables['markdown']
|
||||||
|
|
||||||
@ -908,27 +966,33 @@ function! s:populate_extra_markdown_vars() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! vimwiki#vars#init() abort
|
" ----------------------------------------------------------
|
||||||
call s:populate_global_variables()
|
" 4. Getter, Setter (exported)
|
||||||
call s:populate_wikilocal_options()
|
" ----------------------------------------------------------
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
|
" Get syntax variable
|
||||||
|
" Param: 1: key (<string>)
|
||||||
|
" Param: (2): syntax name (<string> ex:'markdown')
|
||||||
function! vimwiki#vars#get_syntaxlocal(key, ...) abort
|
function! vimwiki#vars#get_syntaxlocal(key, ...) abort
|
||||||
|
" Retrieve desired syntax name
|
||||||
if a:0
|
if a:0
|
||||||
let syntax = a:1
|
let syntax = a:1
|
||||||
else
|
else
|
||||||
let syntax = vimwiki#vars#get_wikilocal('syntax')
|
let syntax = vimwiki#vars#get_wikilocal('syntax')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Create syntax varaible dict if not exists (lazy)
|
||||||
if !exists('g:vimwiki_syntax_variables') || !has_key(g:vimwiki_syntax_variables, syntax)
|
if !exists('g:vimwiki_syntax_variables') || !has_key(g:vimwiki_syntax_variables, syntax)
|
||||||
call vimwiki#vars#populate_syntax_vars(syntax)
|
call vimwiki#vars#populate_syntax_vars(syntax)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Return d_syntax[a:key]
|
||||||
return g:vimwiki_syntax_variables[syntax][a:key]
|
return g:vimwiki_syntax_variables[syntax][a:key]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
" Get a variable for the buffer we are currently in or for the given buffer (number or name).
|
" Return: buffer local variable
|
||||||
|
" for the buffer we are currently in or for the given buffer (number or name).
|
||||||
" Populate the variable, if it doesn't exist.
|
" Populate the variable, if it doesn't exist.
|
||||||
function! vimwiki#vars#get_bufferlocal(key, ...) abort
|
function! vimwiki#vars#get_bufferlocal(key, ...) abort
|
||||||
let buffer = a:0 ? a:1 : '%'
|
let buffer = a:0 ? a:1 : '%'
|
||||||
@ -962,24 +1026,29 @@ function! vimwiki#vars#get_bufferlocal(key, ...) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Set buffer local variable
|
||||||
function! vimwiki#vars#set_bufferlocal(key, value, ...) abort
|
function! vimwiki#vars#set_bufferlocal(key, value, ...) abort
|
||||||
let buffer = a:0 ? a:1 : '%'
|
let buffer = a:0 ? a:1 : '%'
|
||||||
call setbufvar(buffer, 'vimwiki_' . a:key, a:value)
|
call setbufvar(buffer, 'vimwiki_' . a:key, a:value)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Return: wiki global variable
|
||||||
function! vimwiki#vars#get_global(key) abort
|
function! vimwiki#vars#get_global(key) abort
|
||||||
return g:vimwiki_global_vars[a:key]
|
return g:vimwiki_global_vars[a:key]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Set global variable
|
||||||
function! vimwiki#vars#set_global(key, value) abort
|
function! vimwiki#vars#set_global(key, value) abort
|
||||||
let g:vimwiki_global_vars[a:key] = a:value
|
let g:vimwiki_global_vars[a:key] = a:value
|
||||||
return g:vimwiki_global_vars[a:key]
|
return g:vimwiki_global_vars[a:key]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
" the second argument can be a wiki number. When absent, the wiki of the currently active buffer is
|
" Return: wiki local named varaible
|
||||||
|
" Param: 1: variable name (alias key, <string>)
|
||||||
|
" Param: (2): wiki number (<int>). When absent, the wiki of the currently active buffer is
|
||||||
" used
|
" used
|
||||||
function! vimwiki#vars#get_wikilocal(key, ...) abort
|
function! vimwiki#vars#get_wikilocal(key, ...) abort
|
||||||
if a:0
|
if a:0
|
||||||
@ -990,11 +1059,13 @@ function! vimwiki#vars#get_wikilocal(key, ...) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Return: wiki local variable (of default wiki [index -1])
|
||||||
function! vimwiki#vars#get_wikilocal_default(key) abort
|
function! vimwiki#vars#get_wikilocal_default(key) abort
|
||||||
return g:vimwiki_wikilocal_vars[-1][a:key]
|
return g:vimwiki_wikilocal_vars[-1][a:key]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Set local variable
|
||||||
function! vimwiki#vars#set_wikilocal(key, value, wiki_nr) abort
|
function! vimwiki#vars#set_wikilocal(key, value, wiki_nr) abort
|
||||||
if a:wiki_nr == len(g:vimwiki_wikilocal_vars) - 1
|
if a:wiki_nr == len(g:vimwiki_wikilocal_vars) - 1
|
||||||
call insert(g:vimwiki_wikilocal_vars, {}, -1)
|
call insert(g:vimwiki_wikilocal_vars, {}, -1)
|
||||||
@ -1003,6 +1074,7 @@ function! vimwiki#vars#set_wikilocal(key, value, wiki_nr) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Append new wiki to wiki list
|
||||||
function! vimwiki#vars#add_temporary_wiki(settings) abort
|
function! vimwiki#vars#add_temporary_wiki(settings) abort
|
||||||
let new_temp_wiki_settings = copy(g:vimwiki_wikilocal_vars[-1])
|
let new_temp_wiki_settings = copy(g:vimwiki_wikilocal_vars[-1])
|
||||||
for [key, value] in items(a:settings)
|
for [key, value] in items(a:settings)
|
||||||
@ -1013,7 +1085,7 @@ function! vimwiki#vars#add_temporary_wiki(settings) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
" number of registered wikis + temporary
|
" Return: number of registered wikis + temporary
|
||||||
function! vimwiki#vars#number_of_wikis() abort
|
function! vimwiki#vars#number_of_wikis() abort
|
||||||
return len(g:vimwiki_wikilocal_vars) - 1
|
return len(g:vimwiki_wikilocal_vars) - 1
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -2522,7 +2522,7 @@ Note: if you use Markdown or MediaWiki syntax, you probably would like to set
|
|||||||
this option to 0, because every indented line is considered verbatim text.
|
this option to 0, because every indented line is considered verbatim text.
|
||||||
|
|
||||||
|
|
||||||
*vimwiki-bullet_types*
|
*vimwiki-option-bullet_types*
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Key Default value~
|
Key Default value~
|
||||||
bullet_types ['-', '*', '#'] (default-syntax)
|
bullet_types ['-', '*', '#'] (default-syntax)
|
||||||
@ -2537,6 +2537,15 @@ You can set it to include more fancy symbols like this:
|
|||||||
let g:vimwiki_list = [{'path': '~/path/', 'bullet_types' = ['-', '•', '→']}]
|
let g:vimwiki_list = [{'path': '~/path/', 'bullet_types' = ['-', '•', '→']}]
|
||||||
|
|
||||||
|
|
||||||
|
*vimwiki-option-bullet_types*
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Key Default value~
|
||||||
|
cycle_bullets 0
|
||||||
|
|
||||||
|
If set to 1 (true), cycle through |bullet_types| when changing list element
|
||||||
|
identation
|
||||||
|
|
||||||
|
|
||||||
*vimwiki-listsyms*
|
*vimwiki-listsyms*
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Key Default value~
|
Key Default value~
|
||||||
@ -3596,6 +3605,7 @@ http://code.google.com/p/vimwiki/issues/list. They may be accessible from
|
|||||||
https://github.com/vimwiki-backup/vimwiki/issues.
|
https://github.com/vimwiki-backup/vimwiki/issues.
|
||||||
|
|
||||||
New:~
|
New:~
|
||||||
|
* PR #907: Cycle bullets
|
||||||
* PR #900: conceallevel is now setted locally for vimwiki buffers
|
* PR #900: conceallevel is now setted locally for vimwiki buffers
|
||||||
|
|
||||||
2.5 (2020-05-26)~
|
2.5 (2020-05-26)~
|
||||||
|
@ -73,12 +73,11 @@ let s:markdown_syntax.rxHR = '\(^---*$\|^___*$\|^\*\*\**$\)'
|
|||||||
let s:markdown_syntax.rxTableSep = '|'
|
let s:markdown_syntax.rxTableSep = '|'
|
||||||
|
|
||||||
" Lists
|
" Lists
|
||||||
let s:markdown_syntax.bullet_types = ['*', '-', '+']
|
|
||||||
let s:markdown_syntax.recurring_bullets = 0
|
let s:markdown_syntax.recurring_bullets = 0
|
||||||
let s:markdown_syntax.cycle_bullets = 1
|
|
||||||
let s:markdown_syntax.number_types = ['1.']
|
let s:markdown_syntax.number_types = ['1.']
|
||||||
let s:markdown_syntax.list_markers = ['-', '*', '+', '1.']
|
let s:markdown_syntax.list_markers = ['-', '*', '+', '1.']
|
||||||
let s:markdown_syntax.rxListDefine = '::\%(\s\|$\)'
|
let s:markdown_syntax.rxListDefine = '::\%(\s\|$\)'
|
||||||
|
let s:markdown_syntax.bullet_types = ['*', '-', '+']
|
||||||
|
|
||||||
" Preformatted text (code blocks)
|
" Preformatted text (code blocks)
|
||||||
let s:markdown_syntax.rxPreStart = '\%(`\{3,}\|\~\{3,}\)'
|
let s:markdown_syntax.rxPreStart = '\%(`\{3,}\|\~\{3,}\)'
|
||||||
|
@ -8,18 +8,6 @@ Execute (Configure: Set vimwiki list to markdown resource):
|
|||||||
Log "Let mapleader = ,"
|
Log "Let mapleader = ,"
|
||||||
let mapleader = ','
|
let mapleader = ','
|
||||||
|
|
||||||
Log "Declare function DestroyVar"
|
|
||||||
function! DestroyVar(var)
|
|
||||||
if ! exists(a:var) | return | endif
|
|
||||||
execute "unlet " . a:var
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
Log "Declare function AssertTab"
|
|
||||||
function! AssertTab(nr)
|
|
||||||
" Vader is creating 2 tabs
|
|
||||||
AssertEqual a:nr + 2, tabpagenr()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
Log "Destroy vimrc or previous run heritage"
|
Log "Destroy vimrc or previous run heritage"
|
||||||
call DestroyVar('g:vimwiki_list')
|
call DestroyVar('g:vimwiki_list')
|
||||||
call DestroyVar('g:vimwiki_global_vars')
|
call DestroyVar('g:vimwiki_global_vars')
|
||||||
@ -380,6 +368,23 @@ Expect (Renumber):
|
|||||||
1. Much
|
1. Much
|
||||||
3. You
|
3. You
|
||||||
|
|
||||||
|
|
||||||
|
# New launch
|
||||||
|
#
|
||||||
|
Given (Number list):
|
||||||
|
1. I
|
||||||
|
1. Relly
|
||||||
|
2. Love
|
||||||
|
1. Very
|
||||||
|
1. Much
|
||||||
|
3. You
|
||||||
|
|
||||||
|
Execute (file .md):
|
||||||
|
file toto.md
|
||||||
|
edit!
|
||||||
|
AssertEqual 'vimwiki', &ft
|
||||||
|
set sw=2
|
||||||
|
|
||||||
Do (gl*):
|
Do (gl*):
|
||||||
gl*
|
gl*
|
||||||
|
|
||||||
@ -402,6 +407,8 @@ Expect (list -> *):
|
|||||||
1. Much
|
1. Much
|
||||||
* You
|
* You
|
||||||
|
|
||||||
|
# New launch
|
||||||
|
#
|
||||||
Given (Bulleted list):
|
Given (Bulleted list):
|
||||||
* I
|
* I
|
||||||
- Relly
|
- Relly
|
||||||
@ -411,12 +418,14 @@ Given (Bulleted list):
|
|||||||
* You
|
* You
|
||||||
|
|
||||||
Execute (file .md):
|
Execute (file .md):
|
||||||
|
set sw=2
|
||||||
file toto.md
|
file toto.md
|
||||||
edit!
|
edit!
|
||||||
|
let g:vimwiki_syntax_variables['markdown']['cycle_bullets'] = 1
|
||||||
|
let g:vimwiki_syntax_variables['markdown']['bullet_types'] = ['*', '-', '+']
|
||||||
AssertEqual 'vimwiki', &ft
|
AssertEqual 'vimwiki', &ft
|
||||||
set sw=2
|
|
||||||
|
|
||||||
Do (2gll):
|
Do (gLl):
|
||||||
gLl
|
gLl
|
||||||
|
|
||||||
Expect (Increase):
|
Expect (Increase):
|
||||||
@ -452,6 +461,57 @@ Expect (New item):
|
|||||||
- Much
|
- Much
|
||||||
-
|
-
|
||||||
|
|
||||||
|
|
||||||
|
# New launch
|
||||||
|
#
|
||||||
|
Given (List ->):
|
||||||
|
* Item1
|
||||||
|
|
||||||
|
Execute (file toto.md):
|
||||||
|
" Note: let s:markdown_syntax.bullet_types = ['*', '-', '+']
|
||||||
|
file toto.md
|
||||||
|
edit!
|
||||||
|
Log "Cycle bullets"
|
||||||
|
let g:vimwiki_syntax_variables['bullet_types'] = ['*', '-']
|
||||||
|
let g:vimwiki_syntax_variables['markdown']['cycle_bullets'] = 1
|
||||||
|
AssertEqual g:vimwiki_syntax_variables['markdown']['cycle_bullets'], 1
|
||||||
|
AssertEqual 'vimwiki', &ft
|
||||||
|
set sw=2
|
||||||
|
set expandtab " Otherwise, getting some tab before some items, when enought space
|
||||||
|
|
||||||
|
Do (o):
|
||||||
|
oItem2
|
||||||
|
|
||||||
|
Expect (Good bullet type):
|
||||||
|
* Item1
|
||||||
|
* Item2
|
||||||
|
|
||||||
|
# TODO test more, (see real cycle, but do not work with low vim)
|
||||||
|
Do (o + <C-t>):
|
||||||
|
o2
|
||||||
|
\<C-t>\<Esc>
|
||||||
|
o3
|
||||||
|
\<C-t>\<Esc>
|
||||||
|
|
||||||
|
Expect (Good bullet type):
|
||||||
|
* Item1
|
||||||
|
- 2
|
||||||
|
+ 3
|
||||||
|
|
||||||
|
Do (o + <Cr>):
|
||||||
|
A1\<Cr>
|
||||||
|
2\<C-t>\<Cr>
|
||||||
|
3\<C-t>
|
||||||
|
|
||||||
|
Expect (Good nested bullet type):
|
||||||
|
* Item11
|
||||||
|
- 2
|
||||||
|
+ 3
|
||||||
|
|
||||||
|
|
||||||
|
# TODO test: let g:vimwiki_bullet_types = ['-', '•', '→', '*']
|
||||||
|
|
||||||
|
|
||||||
# 3 Text Object {{{1
|
# 3 Text Object {{{1
|
||||||
####################
|
####################
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ Before (Define functions):
|
|||||||
write %
|
write %
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" print a command output to the buffer
|
" Print a command output to the buffer
|
||||||
function! PrintCommand(cmd)
|
function! PrintCommand(cmd)
|
||||||
redir => message
|
redir => message
|
||||||
silent execute a:cmd
|
silent execute a:cmd
|
||||||
@ -86,4 +86,16 @@ Before (Define functions):
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Destroy a variable is exists (unlet)
|
||||||
|
function! DestroyVar(var)
|
||||||
|
if ! exists(a:var) | return | endif
|
||||||
|
execute "unlet " . a:var
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Assert current tab is desired tab
|
||||||
|
function! AssertTab(nr)
|
||||||
|
" Vader is creating 2 tabs
|
||||||
|
AssertEqual a:nr + 2, tabpagenr()
|
||||||
|
endfunction
|
||||||
|
|
||||||
# vim: ft=vim
|
# vim: ft=vim
|
||||||
|
Loading…
Reference in New Issue
Block a user