Doc: Indent Docstring inside function

This commit is contained in:
Tinmarino
2021-01-03 20:07:18 -03:00
parent ffc4e41208
commit 29fa4b028b
15 changed files with 518 additions and 508 deletions
+162 -161
View File
@@ -15,15 +15,15 @@ let g:loaded_vimwiki_auto = 1
let g:vimwiki_max_scan_for_caption = 5
" Substitute regexp but do not interpret replace
function! s:safesubstitute(text, search, replace, mode) abort
" Substitute regexp but do not interpret replace
let escaped = escape(a:replace, '\&')
return substitute(a:text, a:search, escaped, a:mode)
endfunction
" Get all vimwiki known syntaxes
function! s:vimwiki_get_known_syntaxes() abort
" Get all vimwiki known syntaxes
" Getting all syntaxes that different wikis could have
let syntaxes = {}
let syntaxes['default'] = 1
@@ -39,8 +39,8 @@ function! s:vimwiki_get_known_syntaxes() abort
endfunction
" Get search regex from glob()
function! vimwiki#base#file_pattern(files) abort
" Get search regex from glob()
" string. Aim to support *all* special characters, forcing the user to choose
" names that are compatible with any external restrictions that they
" encounter (e.g. filesystem, wiki conventions, other syntaxes, ...).
@@ -50,9 +50,9 @@ function! vimwiki#base#file_pattern(files) abort
endfunction
" TODO move in path
" FIXME TODO slow and faulty
function! vimwiki#base#subdir(path, filename) abort
" TODO move in path
" FIXME TODO slow and faulty
let path = a:path
" ensure that we are not fooled by a symbolic link
"FIXME if we are not "fooled", we end up in a completely different wiki?
@@ -76,22 +76,22 @@ function! vimwiki#base#subdir(path, filename) abort
endfunction
" TODO move in path
function! vimwiki#base#current_subdir() abort
" TODO move in path
return vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), expand('%:p'))
endfunction
" TODO move in path
function! vimwiki#base#invsubdir(subdir) abort
" TODO move in path
return substitute(a:subdir, '[^/\.]\+/', '../', 'g')
endfunction
" Returns: the number of the wiki a file belongs to or -1 if it doesn't belong
" to any registered wiki.
" The path can be the full path or just the directory of the file
function! vimwiki#base#find_wiki(path) abort
" Returns: the number of the wiki a file belongs to or -1 if it doesn't belong
" to any registered wiki.
" The path can be the full path or just the directory of the file
let bestmatch = -1
let bestlen = 0
let path = vimwiki#path#path_norm(vimwiki#path#chomp_slash(a:path))
@@ -111,18 +111,18 @@ function! vimwiki#base#find_wiki(path) abort
endfunction
" Check if a link is a well formed wiki link (Helper)
function! s:is_wiki_link(link_infos) abort
" Check if a link is a well formed wiki link (Helper)
return a:link_infos.scheme =~# '\mwiki\d\+' || a:link_infos.scheme ==# 'diary'
endfunction
" Extract infos about the target from a link.
" THE central function of Vimwiki.
" If the second parameter is present, which should be an absolute file path, it
" is assumed that the link appears in that file. Without it, the current file
" is used.
function! vimwiki#base#resolve_link(link_text, ...) abort
" Extract infos about the target from a link.
" THE central function of Vimwiki.
" If the second parameter is present, which should be an absolute file path, it
" is assumed that the link appears in that file. Without it, the current file
" is used.
if a:0
let source_wiki = vimwiki#base#find_wiki(a:1)
let source_file = a:1
@@ -278,8 +278,8 @@ function! vimwiki#base#resolve_link(link_text, ...) abort
endfunction
" Open Link with OS handler (like gx)
function! vimwiki#base#system_open_link(url) abort
" Open Link with OS handler (like gx)
" handlers
function! s:win32_handler(url) abort
"Disable shellslash for cmd and command.com, but enable for all other shells
@@ -332,8 +332,8 @@ function! vimwiki#base#system_open_link(url) abort
endfunction
" Open link with Vim (like :e)
function! vimwiki#base#open_link(cmd, link, ...) abort
" Open link with Vim (like :e)
let link_infos = {}
if a:0
let link_infos = vimwiki#base#resolve_link(a:link, a:1)
@@ -375,9 +375,9 @@ function! vimwiki#base#open_link(cmd, link, ...) abort
endfunction
" Escape global link
" Called by command completion
function! vimwiki#base#get_globlinks_escaped(...) abort
" Escape global link
" Called by command completion
let s_arg_lead = a:0 > 0 ? a:1 : ''
" only get links from the current dir
" change to the directory of the current file
@@ -402,11 +402,11 @@ function! vimwiki#base#get_globlinks_escaped(...) abort
endfunction
" Generate wikilinks in current file
" Called: by command VimwikiGenerateLinks (Exported)
" Param: create: <Bool> Create links or not
" Param: Optional pattern <String>
function! vimwiki#base#generate_links(create, ...) abort
" Generate: wikilinks in current file
" Called: by command VimwikiGenerateLinks (Exported)
" Param: create: <Bool> Create links or not
" Param: Optional pattern <String>
" Get pattern if present
" Globlal to script to be passed to closure
if a:0
@@ -464,9 +464,9 @@ function! vimwiki#base#generate_links(create, ...) abort
endfunction
" Jump to other wikifile, specified on command mode
" Called: by command VimwikiGoto (Exported)
function! vimwiki#base#goto(...) abort
" Jump: to other wikifile, specified on command mode
" Called: by command VimwikiGoto (Exported)
let key = a:0 > 0 ? a:1 : input('Enter name: ', '',
\ 'customlist,vimwiki#base#complete_links_escaped')
@@ -483,9 +483,9 @@ function! vimwiki#base#goto(...) abort
endfunction
" Jump to previous file (backspace key)
" Called: by VimwikiBacklinks (Exported)
function! vimwiki#base#backlinks() abort
" Jump: to previous file (backspace key)
" Called: by VimwikiBacklinks (Exported)
let current_filename = expand('%:p')
let locations = []
for idx in range(vimwiki#vars#number_of_wikis())
@@ -517,11 +517,11 @@ function! vimwiki#base#backlinks() abort
endfunction
" Returns: a list containing all files of the given wiki as absolute file path.
" If the given wiki number is negative, the diary of the current wiki is used
" If the second argument is not zero, only directories are found
" If third argument: pattern to search for
function! vimwiki#base#find_files(wiki_nr, directories_only, ...) abort
" Returns: a list containing all files of the given wiki as absolute file path.
" If the given wiki number is negative, the diary of the current wiki is used
" If the second argument is not zero, only directories are found
" If third argument: pattern to search for
let wiki_nr = a:wiki_nr
if wiki_nr >= 0
let root_directory = vimwiki#vars#get_wikilocal('path', wiki_nr)
@@ -558,12 +558,12 @@ function! vimwiki#base#find_files(wiki_nr, directories_only, ...) abort
endfunction
" Returns: a list containing the links to get from the current file to all wiki
" files in the given wiki.
" If the given wiki number is negative, the diary of the current wiki is used.
" If also_absolute_links is nonzero, also return links of the form /file
" If pattern is not '', only filepaths matching pattern will be considered
function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links, pattern) abort
" Returns: a list containing the links to get from the current file to all wiki
" files in the given wiki.
" If the given wiki number is negative, the diary of the current wiki is used.
" If also_absolute_links is nonzero, also return links of the form /file
" If pattern is not '', only filepaths matching pattern will be considered
let files = vimwiki#base#find_files(a:wiki_nr, 0, a:pattern)
if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr')
let cwd = vimwiki#path#wikify_path(expand('%:p:h'))
@@ -594,8 +594,8 @@ function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links, pattern) abor
endfunction
" Returns: a list containing the links to all directories from the current file
function! vimwiki#base#get_wiki_directories(wiki_nr) abort
" Returns: a list containing the links to all directories from the current file
let dirs = vimwiki#base#find_files(a:wiki_nr, 1)
if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr')
let cwd = vimwiki#path#wikify_path(expand('%:p:h'))
@@ -616,9 +616,9 @@ function! vimwiki#base#get_wiki_directories(wiki_nr) abort
endfunction
" Parse file. Returns list of all anchors
" Called: vimwiki#base#check_links() for all wiki files
function! vimwiki#base#get_anchors(filename, syntax) abort
" Parse file. Returns list of all anchors
" Called: vimwiki#base#check_links() for all wiki files
" Clause: if not readable
if !filereadable(a:filename)
return []
@@ -697,12 +697,12 @@ function! vimwiki#base#get_anchors(filename, syntax) abort
endfunction
" :param: anchor <string> <= Heading line
" :param: (1) previous_anchors <dic[IN/OUT]> of previous normalized anchor
" -- to know if must append -2, updated on the fly
" Return: anchor <string> => link in TOC
" Called: vimwiki#base#table_of_contents
function! vimwiki#base#normalize_anchor(anchor, ...) abort
" Convert: anchor <string> => link in TOC
" Called: vimwiki#base#table_of_contents
" :param: anchor <string> <= Heading line
" :param: (1) previous_anchors <dic[IN/OUT]> of previous normalized anchor
" -- to know if must append -2, updated on the fly
" A Trim space
let anchor = vimwiki#u#trim(a:anchor)
@@ -744,12 +744,12 @@ function! vimwiki#base#normalize_anchor(anchor, ...) abort
endfunction
" :param: anchor <string> <= link
" Return: [anchor_re <regex>, anchor_nb <number>, suffix_re <regex>] to look for
" -- with or without suffix
" -- Ex: ['toto", 2] => search for the second occurrence of toto
" Called: jump_to_anchor
function! vimwiki#base#unnormalize_anchor(anchor) abort
" Convert: s_anchor_toc [anchor_re <regex>, anchor_nb <number>, suffix_re <regex>] to look for
" Called: jump_to_anchor
" :param: anchor <string> <= link
" -- with or without suffix
" -- Ex: ['toto", 2] => search for the second occurrence of toto
" Note:
" -- Pandoc keep the '_' in anchor
" -- Done after: Add spaces leading and trailing => Later with the template
@@ -821,9 +821,9 @@ function! vimwiki#base#unnormalize_anchor(anchor) abort
endfunction
" Jump to anchor, doing the oposite of normalize_anchor
" Called: edit_file
function! s:jump_to_anchor(anchor) abort
" Jump: to anchor, doing the oposite of normalize_anchor
" Called: edit_file
" Get segments <= anchor
let anchor = vimwiki#u#escape(a:anchor)
let segments = split(anchor, '#', 0)
@@ -844,8 +844,8 @@ function! s:jump_to_anchor(anchor) abort
endfunction
" Called: jump_to_anchor with suffix and withtou suffix
function! s:jump_to_segment(segment, segment_norm_re, segment_nb) abort
" Called: jump_to_anchor with suffix and withtou suffix
" Save cursor %% Initialize at top of line
let oldpos = getpos('.')
call cursor(1, 1)
@@ -914,11 +914,11 @@ function! s:jump_to_segment(segment, segment_norm_re, segment_nb) abort
endfunction
" Returns: a list of all links inside the wiki file
" Params: full path to a wiki file and its wiki number
" Every list item has the form
" [target file, anchor, line number of the link in source file, column number]
function! s:get_links(wikifile, idx) abort
" Get: a list of all links inside the wiki file
" Params: full path to a wiki file and its wiki number
" Every list item has the form
" [target file, anchor, line number of the link in source file, column number]
if !filereadable(a:wikifile)
return []
endif
@@ -955,8 +955,8 @@ function! s:get_links(wikifile, idx) abort
endfunction
" Check if all wikilinks are reachable. Answer in quickfix
function! vimwiki#base#check_links(range, line1, line2) abort
" Check: if all wikilinks are reachable. Answer in quickfix
if a:range == 0
let wiki_list = [vimwiki#vars#get_bufferlocal('wiki_nr')]
elseif a:range == 1
@@ -1068,13 +1068,13 @@ function! vimwiki#base#check_links(range, line1, line2) abort
endfunction
" Open file (like :e)
" :param: command <string>: ':e'
" :param: filename <strign> vimwiki#vars#get_wikilocal('path') . key . vimwiki#vars#get_wikilocal('ext')
" :param: anchor
" :param: (1) vimwiki_prev_link
" :param: (2) vimwiki#u#ft_is_vw()
function! vimwiki#base#edit_file(command, filename, anchor, ...) abort
" Edit File: (like :e)
" :param: command <string>: ':e'
" :param: filename <strign> vimwiki#vars#get_wikilocal('path') . key . vimwiki#vars#get_wikilocal('ext')
" :param: anchor
" :param: (1) vimwiki_prev_link
" :param: (2) vimwiki#u#ft_is_vw()
let fname = escape(a:filename, '% *|#`')
let dir = fnamemodify(a:filename, ':p:h')
@@ -1120,9 +1120,9 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) abort
endfunction
" Search for a 1. Pattern (usually a link) with 2. flags
" Called by find_prev_link
function! vimwiki#base#search_word(wikiRX, flags) abort
" Search for a 1. Pattern (usually a link) with 2. flags
" Called by find_prev_link
let match_line = search(a:wikiRX, 's'.a:flags)
if match_line == 0
call vimwiki#u#echo('Wiki link not found')
@@ -1130,8 +1130,8 @@ function! vimwiki#base#search_word(wikiRX, flags) abort
endfunction
" Return: part of the line that matches wikiRX at cursor
function! vimwiki#base#matchstr_at_cursor(wikiRX) abort
" Return: part of the line that matches wikiRX at cursor
let col = col('.') - 1
let line = getline('.')
let ebeg = -1
@@ -1154,8 +1154,8 @@ function! vimwiki#base#matchstr_at_cursor(wikiRX) abort
endfunction
" Replace next 1. wikiRX by 2. sub
function! vimwiki#base#replacestr_at_cursor(wikiRX, sub) abort
" Replace next 1. wikiRX by 2. sub
" Gather: cursor info
let col = col('.') - 1
let line = getline('.')
@@ -1183,9 +1183,9 @@ function! vimwiki#base#replacestr_at_cursor(wikiRX, sub) abort
endfunction
" Print list of global wiki to user
" Called: by ui_select
function! s:print_wiki_list() abort
" Print list of global wiki to user
" Called: by ui_select
" Find the max name length for prettier formatting
let max_len = 0
for idx in range(vimwiki#vars#number_of_wikis())
@@ -1219,11 +1219,11 @@ function! s:print_wiki_list() abort
endfunction
" Update link in fname.ext
" Param: fname: the source file where to change links
" Param: old: url regex of old path relative to wiki root
" Param: new: url string of new path
function! s:update_wiki_link(fname, old, new) abort
" Update link in fname.ext
" Param: fname: the source file where to change links
" Param: old: url regex of old path relative to wiki root
" Param: new: url string of new path
call vimwiki#u#echo('Updating links in '.a:fname)
let has_updates = 0
let dest = []
@@ -1243,11 +1243,11 @@ function! s:update_wiki_link(fname, old, new) abort
endfunction
" Update link for all files in dir
" Param: old_url, new_url: path of the old, new url relative to ...
" Param: dir: directory of the files, relative to wiki_root
" Called: rename_link
function! s:update_wiki_links(wiki_nr, dir, old_url, new_url) abort
" Update link for all files in dir
" Param: old_url, new_url: path of the old, new url relative to ...
" Param: dir: directory of the files, relative to wiki_root
" Called: rename_link
" Get list of wiki files
let wiki_root = vimwiki#vars#get_wikilocal('path', a:wiki_nr)
let fsources = vimwiki#base#find_files(a:wiki_nr, 0)
@@ -1312,9 +1312,9 @@ function! s:update_wiki_links(wiki_nr, dir, old_url, new_url) abort
endfunction
" Get tail of filename
" TODO move me in path.vim
function! s:tail_name(fname) abort
" Get tail of filename
" TODO move me in path.vim
let result = substitute(a:fname, ':', '__colon__', 'g')
let result = fnamemodify(result, ':t:r')
let result = substitute(result, '__colon__', ':', 'g')
@@ -1322,9 +1322,9 @@ function! s:tail_name(fname) abort
endfunction
" Get list of currently open buffer that are wiki files
" Called: by rename_link
function! s:get_wiki_buffers() abort
" Get list of currently open buffer that are wiki files
" Called: by rename_link
let blist = []
let bcount = 1
while bcount<=bufnr('$')
@@ -1343,9 +1343,9 @@ function! s:get_wiki_buffers() abort
endfunction
" Edit wiki file.
" Called: by rename_link: Usefull for buffer commands
function! s:open_wiki_buffer(item) abort
" Edit wiki file.
" Called: by rename_link: Usefull for buffer commands
call vimwiki#base#edit_file(':e', a:item[0], '')
if !empty(a:item[1])
call vimwiki#vars#set_bufferlocal('prev_links', a:item[1], a:item[0])
@@ -1353,10 +1353,10 @@ function! s:open_wiki_buffer(item) abort
endfunction
" Helper nested syntax
" Called: by syntax/vimwiki (exported)
" TODO move me out of base
function! vimwiki#base#nested_syntax(filetype, start, end, textSnipHl) abort
" Helper nested syntax
" Called: by syntax/vimwiki (exported)
" TODO move me out of base
" From http://vim.wikia.com/wiki/VimTip857
let ft=toupper(a:filetype)
let group='textGroup'.ft
@@ -1420,17 +1420,18 @@ function! vimwiki#base#nested_syntax(filetype, start, end, textSnipHl) abort
endfunction
" Create or update auto-generated listings in a wiki file, like TOC, diary
" links, tags list etc.
" - the listing consists of a header and a list of strings provided by a funcref
" - a:content_regex is used to determine how long a potentially existing list is
" - a:default_lnum is the line number where the new listing should be placed if
" it's not already present
" - if a:create is true, it will be created if it doesn't exist, otherwise it
" will only be updated if it already exists
" Called: by functions adding listing to buffer (this is an util function)
function! vimwiki#base#update_listing_in_buffer(Generator, start_header,
\ content_regex, default_lnum, header_level, create) abort
" Create: or update auto-generated listings in a wiki file, like TOC, diary
" links, tags list etc.
" - the listing consists of a header and a list of strings provided by a funcref
" - a:content_regex is used to determine how long a potentially existing list is
" - a:default_lnum is the line number where the new listing should be placed if
" it's not already present
" - if a:create is true, it will be created if it doesn't exist, otherwise it
" will only be updated if it already exists
" Called: by functions adding listing to buffer (this is an util function)
" Clause: Vim behaves strangely when files change while in diff mode
if &diff || &readonly
return
@@ -1545,22 +1546,22 @@ function! vimwiki#base#update_listing_in_buffer(Generator, start_header,
endfunction
" Find next task (Exported)
function! vimwiki#base#find_next_task() abort
" Find next task (Exported)
let taskRegex = vimwiki#vars#get_wikilocal('rxListItemWithoutCB')
\ . '\+\(\[ \]\s\+\)\zs'
call vimwiki#base#search_word(taskRegex, '')
endfunction
" Find next link (Exported)
function! vimwiki#base#find_next_link() abort
" Find next link (Exported)
call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), '')
endfunction
" Find previous link (Exported)
function! vimwiki#base#find_prev_link() abort
" Find previous link (Exported)
"Jump 2 times if the cursor is in the middle of a link
if synIDattr(synID(line('.'), col('.'), 0), 'name') =~# 'VimwikiLink.*' &&
\ synIDattr(synID(line('.'), col('.')-1, 0), 'name') =~# 'VimwikiLink.*'
@@ -1570,8 +1571,8 @@ function! vimwiki#base#find_prev_link() abort
endfunction
" Jump to link target (Enter press, Exported)
function! vimwiki#base#follow_link(split, ...) abort
" Jump to link target (Enter press, Exported)
let reuse_other_split_window = a:0 >= 1 ? a:1 : 0
let move_cursor_to_new_window = a:0 >= 2 ? a:2 : 1
@@ -1661,8 +1662,8 @@ function! vimwiki#base#follow_link(split, ...) abort
endfunction
" Jump to previous link (Backspace press, Exported)
function! vimwiki#base#go_back_link() abort
" Jump to previous link (Backspace press, Exported)
" Try pop previous link from buffer list
let prev_links = vimwiki#vars#get_bufferlocal('prev_links')
if !empty(prev_links)
@@ -1684,8 +1685,8 @@ function! vimwiki#base#go_back_link() abort
endfunction
" Goto index file of wiki specified by index
function! vimwiki#base#goto_index(wnum, ...) abort
" Goto index file of wiki specified by index
" if wnum = 0 the current wiki is used
if a:wnum == 0
let idx = vimwiki#vars#get_bufferlocal('wiki_nr')
@@ -1721,8 +1722,8 @@ function! vimwiki#base#goto_index(wnum, ...) abort
endfunction
" Delete current wiki file
function! vimwiki#base#delete_link() abort
" Delete current wiki file
" Delete wiki file you are in from filesystem
let val = input('Delete "'.expand('%').'" [y]es/[N]o? ')
if val !~? '^y'
@@ -1746,10 +1747,10 @@ function! vimwiki#base#delete_link() abort
endfunction
" Ask user for a new filepath
" Returns: '' if fails
" Called: rename_link
function! s:input_rename_link() abort
" Ask user for a new filepath
" Returns: '' if fails
" Called: rename_link
" Ask confirmation
let val = input('Rename "'.expand('%:t:r').'" [y]es/[N]o? ')
if val !~? '^y'
@@ -1779,10 +1780,10 @@ function! s:input_rename_link() abort
endfunction
" Rename current file, update all links to it
" Param: [new_filepath <string>]
" Exported: VimwikiRenameFile
function! vimwiki#base#rename_link(...) abort
" Rename current file, update all links to it
" Param: [new_filepath <string>]
" Exported: VimwikiRenameFile
" Get filename and dir relative to wiki root
let subdir = vimwiki#vars#get_bufferlocal('subdir')
" Get old file directory relative to current path
@@ -1902,9 +1903,9 @@ function! vimwiki#base#rename_link(...) abort
endfunction
" Spawn User Interface to select wiki project
" Called by VimwikiUISelect (Globally Exported)
function! vimwiki#base#ui_select() abort
" Spawn User Interface to select wiki project
" Called by VimwikiUISelect (Globally Exported)
call s:print_wiki_list()
let idx = input('Select Wiki by number and press <Enter> (empty cancels): ')
if idx ==# ''
@@ -1918,8 +1919,8 @@ function! vimwiki#base#ui_select() abort
endfunction
" Jump to next header (Exported for text object)
function! vimwiki#base#TO_header(inner, including_subheaders, count) abort
" Jump to next header (Exported for text object)
let headers = s:collect_headers()
if empty(headers)
return
@@ -1972,8 +1973,8 @@ function! vimwiki#base#TO_header(inner, including_subheaders, count) abort
endfunction
" Jump to next table cell (Exported for text object)
function! vimwiki#base#TO_table_cell(inner, visual) abort
" Jump to next table cell (Exported for text object)
if col('.') == col('$')-1
return
endif
@@ -2038,8 +2039,8 @@ function! vimwiki#base#TO_table_cell(inner, visual) abort
endfunction
" Jump to next table col (Exported for text object)
function! vimwiki#base#TO_table_col(inner, visual) abort
" Jump to next table col (Exported for text object)
let t_rows = vimwiki#tbl#get_rows(line('.'))
if empty(t_rows)
return
@@ -2154,8 +2155,8 @@ function! vimwiki#base#TO_table_col(inner, visual) abort
endfunction
" Increase header level (Exported)
function! vimwiki#base#AddHeaderLevel(...) abort
" Increase header level (Exported)
" Clause, argument must be <= 1
" Actually argument is not used :-)
if a:1 > 1
@@ -2188,8 +2189,8 @@ function! vimwiki#base#AddHeaderLevel(...) abort
endfunction
" Decrease header level (Exported)
function! vimwiki#base#RemoveHeaderLevel(...) abort
" Decrease header level (Exported)
" Clause, argument must be <= 1
" Actually argument is not used :-)
if a:1 > 1
@@ -2227,9 +2228,9 @@ function! vimwiki#base#RemoveHeaderLevel(...) abort
endfunction
" Returns: all the headers in the current buffer as a list of the form
" [[line_number, header_level, header_text], [...], [...], ...]
function! s:collect_headers() abort
" Returns: all the headers in the current buffer as a list of the form
" [[line_number, header_level, header_text], [...], [...], ...]
" Init loop variables
let is_inside_pre_or_math = 0 " 1: inside pre, 2: inside math, 0: outside
let headers = []
@@ -2286,9 +2287,9 @@ function! s:collect_headers() abort
endfunction
" Returns: header index at cursor position
" Called: by header cursor movements
function! s:current_header(headers, line_number) abort
" Returns: header index at cursor position
" Called: by header cursor movements
if empty(a:headers)
return -1
endif
@@ -2305,9 +2306,9 @@ function! s:current_header(headers, line_number) abort
endfunction
" Returns: heading with link urls
" Called: table_of_content
function! s:clean_header_text(h_text) abort
" Returns: heading with link urls
" Called: table_of_content
" Note: I hardcode, who cares ?
let h_text = a:h_text
@@ -2321,9 +2322,9 @@ function! s:clean_header_text(h_text) abort
endfunction
" Returns: index of neighbor header
" Called: by header cursor movements
function! s:get_another_header(headers, current_index, direction, operation) abort
" Returns: index of neighbor header
" Called: by header cursor movements
if empty(a:headers) || a:current_index < 0
return -1
endif
@@ -2342,8 +2343,8 @@ function! s:get_another_header(headers, current_index, direction, operation) abo
endfunction
" Jump to parent header
function! vimwiki#base#goto_parent_header() abort
" Jump to parent header
let headers = s:collect_headers()
let current_header_index = s:current_header(headers, line('.'))
let parent_header = s:get_another_header(headers, current_header_index, -1, '<')
@@ -2355,8 +2356,8 @@ function! vimwiki#base#goto_parent_header() abort
endfunction
" Jump to next header
function! vimwiki#base#goto_next_header() abort
" Jump to next header
let headers = s:collect_headers()
let current_header_index = s:current_header(headers, line('.'))
if current_header_index >= 0 && current_header_index < len(headers) - 1
@@ -2369,8 +2370,8 @@ function! vimwiki#base#goto_next_header() abort
endfunction
" Jump to previous header
function! vimwiki#base#goto_prev_header() abort
" Jump to previous header
let headers = s:collect_headers()
let current_header_index = s:current_header(headers, line('.'))
" if the cursor already was on a header, jump to the previous one
@@ -2385,8 +2386,8 @@ function! vimwiki#base#goto_prev_header() abort
endfunction
" Jump to sibling header, next or previous (with same level)
function! vimwiki#base#goto_sibling(direction) abort
" Jump to sibling header, next or previous (with same level)
let headers = s:collect_headers()
let current_header_index = s:current_header(headers, line('.'))
let next_potential_sibling =
@@ -2400,10 +2401,10 @@ function! vimwiki#base#goto_sibling(direction) abort
endfunction
" Create buffer TOC (Exported)
" a:create == 1: creates or updates TOC in current file
" a:create == 0: update if TOC exists
function! vimwiki#base#table_of_contents(create) abort
" Create buffer TOC (Exported)
" a:create == 1: creates or updates TOC in current file
" a:create == 0: update if TOC exists
" Gather heading
let headers = s:collect_headers()
let toc_header_text = vimwiki#vars#get_wikilocal('toc_header')
@@ -2508,13 +2509,13 @@ function! vimwiki#base#table_of_contents(create) abort
endfunction
" Construct a regular expression matching from template (with special
" characters properly escaped), by substituting rxUrl for __LinkUrl__, rxDesc
" for __LinkDescription__, rxStyle for __LinkStyle__ and rxExtension for
" __FileExtension__. The four arguments rxUrl, rxDesc, rxStyle and
" rxExtension are copied verbatim, without any special character escapes or
" substitutions.
function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle, rxExtension) abort
" Construct a regular expression matching from template (with special
" characters properly escaped), by substituting rxUrl for __LinkUrl__, rxDesc
" for __LinkDescription__, rxStyle for __LinkStyle__ and rxExtension for
" __FileExtension__. The four arguments rxUrl, rxDesc, rxStyle and
" rxExtension are copied verbatim, without any special character escapes or
" substitutions.
let lnk = a:template
if a:rxUrl !=? ''
let lnk = s:safesubstitute(lnk, '__LinkUrl__', a:rxUrl, 'g')
@@ -2532,8 +2533,8 @@ function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle, rxExtens
endfunction
" Helper: Clean url string
function! s:clean_url(url) abort
" Helper: Clean url string
" don't use an extension as part of the description
let url = substitute(a:url, '\'.vimwiki#vars#get_wikilocal('ext').'$', '', '')
" remove protocol and tld
@@ -2562,10 +2563,10 @@ function! s:clean_url(url) abort
endfunction
" Check if 1.filename is a diary file
" An optional second argument allows you to pass in a list of diary files rather
" than generating a list on each call to the function.
function! vimwiki#base#is_diary_file(filename, ...) abort
" Check if 1.filename is a diary file
" An optional second argument allows you to pass in a list of diary files rather
" than generating a list on each call to the function.
let l:diary_file_paths = a:0 > 0 ? a:1 : vimwiki#diary#get_diary_files()
let l:normalised_file_paths =
\ map(l:diary_file_paths, 'vimwiki#path#normalize(v:val)')
@@ -2577,9 +2578,9 @@ function! vimwiki#base#is_diary_file(filename, ...) abort
endfunction
" Treat link string towards normalization
" [__LinkDescription__](__LinkUrl__.__FileExtension__)
function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) abort
" Treat link string towards normalization
" [__LinkDescription__](__LinkUrl__.__FileExtension__)
let url = matchstr(a:str, a:rxUrl)
if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' && vimwiki#vars#get_wikilocal('markdown_link_ext')
" Strip the extension if it exists so it doesn't get added multiple times
@@ -2600,8 +2601,8 @@ function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) abort
endfunction
" Treat imagelink string towards normalization
function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, template) abort
" Treat imagelink string towards normalization
let lnk = vimwiki#base#normalize_link_helper(a:str, a:rxUrl, a:rxDesc, a:template)
let style = matchstr(a:str, a:rxStyle)
let lnk = s:safesubstitute(lnk, '__LinkStyle__', style, '')
@@ -2609,9 +2610,9 @@ function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, t
endfunction
" Normalize link in a diary file
" Refactor: in diary
function! vimwiki#base#normalize_link_in_diary(lnk) abort
" Normalize link in a diary file
" Refactor: in diary
let sc = vimwiki#vars#get_wikilocal('links_space_char')
let link = a:lnk . vimwiki#vars#get_wikilocal('ext')
let link_wiki = substitute(vimwiki#vars#get_wikilocal('path') . '/' . link, '\s', sc, 'g')
@@ -2647,8 +2648,8 @@ function! vimwiki#base#normalize_link_in_diary(lnk) abort
endfunction
" Normalize link in normal mode Enter keypress
function! s:normalize_link_syntax_n() abort
" Normalize link in normal mode Enter keypress
" try WikiLink
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink'))
if !empty(lnk)
@@ -2696,9 +2697,9 @@ function! s:normalize_link_syntax_n() abort
endfunction
" TODO mutualize most code with syntax_n
" Normalize link in visual mode Enter keypress
function! s:normalize_link_syntax_v() abort
" TODO mutualize most code with syntax_n
" Normalize link in visual mode Enter keypress
" Get selection content
let visual_selection = vimwiki#u#get_selection()
@@ -2728,8 +2729,8 @@ function! s:normalize_link_syntax_v() abort
endfunction
" Normalize link (Implemented as a switch function)
function! vimwiki#base#normalize_link(is_visual_mode) abort
" Normalize link (Implemented as a switch function)
" If visual mode
if a:is_visual_mode
return s:normalize_link_syntax_v()
@@ -2745,9 +2746,9 @@ function! vimwiki#base#normalize_link(is_visual_mode) abort
endfunction
" Get nested syntax are present
" Return: dictionary of syntaxes
function! vimwiki#base#detect_nested_syntax() abort
" Get nested syntax are present
" Return: dictionary of syntaxes
let last_word = '\v.*<(\w+)\s*$'
let lines = map(filter(getline(1, '$'), 'v:val =~# "\\%({{{\\|`\\{3,\}\\|\\~\\{3,\}\\)" && v:val =~# last_word'),
\ 'substitute(v:val, last_word, "\\=submatch(1)", "")')
@@ -2759,15 +2760,15 @@ function! vimwiki#base#detect_nested_syntax() abort
endfunction
" Complete escaping globlinks
function! vimwiki#base#complete_links_escaped(ArgLead, CmdLine, CursorPos) abort
" Complete escaping globlinks
return vimwiki#base#get_globlinks_escaped(a:ArgLead)
endfunction
" Complete filename relatie to current file
" Called: rename_link
function! vimwiki#base#complete_file(ArgLead, CmdLine, CursorPos) abort
" Complete filename relatie to current file
" Called: rename_link
" Start from current file
let base_path = expand('%:h')
@@ -2782,9 +2783,9 @@ function! vimwiki#base#complete_file(ArgLead, CmdLine, CursorPos) abort
endfunction
" Read caption
" Called: by generate_links
function! vimwiki#base#read_caption(file) abort
" Read caption
" Called: by generate_links
let rx_header = vimwiki#vars#get_syntaxlocal('rxHeader')
if filereadable(a:file)
@@ -2799,9 +2800,9 @@ function! vimwiki#base#read_caption(file) abort
endfunction
" Search for 1.pattern
" Called by commands VimwikiSearch and VWS
function! vimwiki#base#search(search_pattern) abort
" Search for 1.pattern
" Called by commands VimwikiSearch and VWS
if empty(a:search_pattern)
call vimwiki#u#error('No search pattern given.')
return
@@ -2828,8 +2829,8 @@ function! vimwiki#base#search(search_pattern) abort
endtry
endfunction
" used by function linkify to extract web page <title>
function! s:get_title(match) abort
" used by function linkify to extract web page <title>
" Do not overwrite if g:page_title is already set
" when there are multiple <title> tags, only use the first one
" this is a side effect of the substitute's 'n' flag (count number of
@@ -2853,8 +2854,8 @@ function! s:get_title(match) abort
let g:page_title = l:title
endfunction
" transform the url under the cursor to a wiki link
function! vimwiki#base#linkify() abort
" Transform: the url under the cursor to a wiki link
let g:page_title = ''
" save existing value of @u and delete url under the cursor into @u
+8 -9
View File
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# This script converts markdown into html, to be used with vimwiki's
@@ -26,10 +26,10 @@
# internal wiki2html converter.
#
MARKDOWN=markdown
MKD2HTML=mkd2html
# shellcheck disable=SC2034 # FORCE appears unused
FORCE="$1"
SYNTAX="$2"
EXTENSION="$3"
@@ -37,14 +37,16 @@ OUTPUTDIR="$4"
INPUT="$5"
CSSFILE="$6"
FORCEFLAG=
[ $FORCE -eq 0 ] || { FORCEFLAG="-f"; };
[ $SYNTAX = "markdown" ] || { echo "Error: Unsupported syntax"; exit -2; };
[[ "$SYNTAX" == "markdown" ]] || { echo "Error: Unsupported syntax"; exit 2; };
OUTPUT="$OUTPUTDIR"/$(basename "$INPUT" .$EXTENSION).html
OUTPUT="$OUTPUTDIR/$(basename "$INPUT" . "$EXTENSION").html"
# # Method 1:
# FORCEFLAG=
# (( "$FORCE" == 0 )) || { FORCEFLAG="-f"; };
# MARKDOWN=markdown
#
# # markdown [-d] [-T] [-V] [-b url-base] [-C prefix] [-F bitmap] [-f flags] [-o file] [-s text] [-t text] [textfile]
#
# URLBASE=http://example.com
@@ -57,6 +59,3 @@ OUTPUT="$OUTPUTDIR"/$(basename "$INPUT" .$EXTENSION).html
$MKD2HTML -css "$CSSFILE" "$INPUT"
OUTPUTTMP=$(dirname "$INPUT")/$(basename "$INPUT" ."$EXTENSION").html
mv -f "$OUTPUTTMP" "$OUTPUT"
+26 -26
View File
@@ -11,8 +11,8 @@ endif
let g:loaded_vimwiki_diary_auto = 1
" Add zero prefix to a number
function! s:prefix_zero(num) abort
" Add zero prefix to a number
if a:num < 10
return '0'.a:num
endif
@@ -20,23 +20,23 @@ function! s:prefix_zero(num) abort
endfunction
" Return: diary directory path <String>
function! s:diary_path(...) abort
" Return: diary directory path <String>
let idx = a:0 == 0 ? vimwiki#vars#get_bufferlocal('wiki_nr') : a:1
return vimwiki#vars#get_wikilocal('path', idx).vimwiki#vars#get_wikilocal('diary_rel_path', idx)
endfunction
" Return: diary index file path <String>
function! s:diary_index(...) abort
" Return: diary index file path <String>
let idx = a:0 == 0 ? vimwiki#vars#get_bufferlocal('wiki_nr') : a:1
return s:diary_path(idx).vimwiki#vars#get_wikilocal('diary_index', idx).
\ vimwiki#vars#get_wikilocal('ext', idx)
endfunction
" Return: <String> date
function! vimwiki#diary#diary_date_link(...) abort
" Return: <String> date
if a:0
let l:timestamp = a:1
else
@@ -91,8 +91,8 @@ function! vimwiki#diary#diary_date_link(...) abort
endfunction
" Return: <int:index, list:links>
function! s:get_position_links(link) abort
" Return: <int:index, list:links>
let idx = -1
let links = []
if a:link =~# '^\d\{4}-\d\d-\d\d'
@@ -108,14 +108,14 @@ function! s:get_position_links(link) abort
endfunction
" Convert month: number -> name
function! s:get_month_name(month) abort
" Convert month: number -> name
return vimwiki#vars#get_global('diary_months')[str2nr(a:month)]
endfunction
" Get the first header in the file within the first s:vimwiki_max_scan_for_caption lines.
function! s:get_first_header(fl) abort
" Get the first header in the file within the first s:vimwiki_max_scan_for_caption lines.
let header_rx = vimwiki#vars#get_syntaxlocal('rxHeader')
for line in readfile(a:fl, '', g:vimwiki_max_scan_for_caption)
@@ -127,9 +127,9 @@ function! s:get_first_header(fl) abort
endfunction
" Get a list of all headers in a file up to a given level.
" Return: list whose elements are pairs [level, title]
function! s:get_all_headers(fl, maxlevel) abort
" Get a list of all headers in a file up to a given level.
" Return: list whose elements are pairs [level, title]
let headers_rx = {}
for i in range(1, a:maxlevel)
let headers_rx[i] = vimwiki#vars#get_syntaxlocal('rxH'.i.'_Text')
@@ -147,8 +147,8 @@ function! s:get_all_headers(fl, maxlevel) abort
return headers
endfunction
" Count headers with level <= maxlevel in a list of [level, title] pairs.
function! s:count_headers_level_less_equal(headers, maxlevel) abort
" Count headers with level <= maxlevel in a list of [level, title] pairs.
let l:count = 0
for [header_level, _] in a:headers
if header_level <= a:maxlevel
@@ -159,8 +159,8 @@ function! s:count_headers_level_less_equal(headers, maxlevel) abort
endfunction
" Get the minimum level of any header in a list of [level, title] pairs.
function! s:get_min_header_level(headers) abort
" Get the minimum level of any header in a list of [level, title] pairs.
if len(a:headers) == 0
return 0
endif
@@ -172,9 +172,9 @@ function! s:get_min_header_level(headers) abort
endfunction
" Read all cpation in 1. <List>files
" Return: <Dic>: key -> caption
function! s:read_captions(files) abort
" Read all cpation in 1. <List>files
" Return: <Dic>: key -> caption
let result = {}
let caption_level = vimwiki#vars#get_wikilocal('diary_caption_level')
@@ -215,8 +215,8 @@ function! s:read_captions(files) abort
endfunction
" Return: <list> diary file names
function! vimwiki#diary#get_diary_files() abort
" Return: <list> diary file names
let rx = '^\d\{4}-\d\d-\d\d'
let s_files = glob(vimwiki#vars#get_wikilocal('path').
\ vimwiki#vars#get_wikilocal('diary_rel_path').'*'.vimwiki#vars#get_wikilocal('ext'))
@@ -230,8 +230,8 @@ function! vimwiki#diary#get_diary_files() abort
endfunction
" Return: <dic> nested -> links
function! s:group_links(links) abort
" Return: <dic> nested -> links
let result = {}
let p_year = 0
let p_month = 0
@@ -253,8 +253,8 @@ function! s:group_links(links) abort
endfunction
" Sort list
function! s:sort(lst) abort
" Sort list
if vimwiki#vars#get_wikilocal('diary_sort') ==? 'desc'
return reverse(sort(a:lst))
else
@@ -266,11 +266,11 @@ function! vimwiki#diary#diary_sort(lst) abort
return s:sort(a:lst)
endfunction
" Create note
" The given wiki number a:wnum is 1 for the first wiki, 2 for the second and so on. This is in
" contrast to most other places, where counting starts with 0. When a:wnum is 0, the current wiki
" is used.
function! vimwiki#diary#make_note(wnum, ...) abort
" Create note
" The given wiki number a:wnum is 1 for the first wiki, 2 for the second and so on. This is in
" contrast to most other places, where counting starts with 0. When a:wnum is 0, the current wiki
" is used.
if a:wnum == 0
let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr')
if wiki_nr < 0 " this happens when e.g. VimwikiMakeDiaryNote was called outside a wiki buffer
@@ -308,8 +308,8 @@ function! vimwiki#diary#make_note(wnum, ...) abort
endfunction
" Jump to diary index of 1. <Int> wikinumber
function! vimwiki#diary#goto_diary_index(wnum) abort
" Jump to diary index of 1. <Int> wikinumber
" if wnum = 0 the current wiki is used
if a:wnum == 0
let idx = vimwiki#vars#get_bufferlocal('wiki_nr')
@@ -334,8 +334,8 @@ function! vimwiki#diary#goto_diary_index(wnum) abort
endfunction
" Jump to next day
function! vimwiki#diary#goto_next_day() abort
" Jump to next day
let link = ''
let [idx, links] = s:get_position_links(expand('%:t:r'))
@@ -356,8 +356,8 @@ function! vimwiki#diary#goto_next_day() abort
endfunction
" Jump to previous day
function! vimwiki#diary#goto_prev_day() abort
" Jump to previous day
let link = ''
let [idx, links] = s:get_position_links(expand('%:t:r'))
@@ -378,8 +378,8 @@ function! vimwiki#diary#goto_prev_day() abort
endfunction
" Create diary index content
function! vimwiki#diary#generate_diary_section() abort
" Create diary index content
let GeneratorDiary = copy(l:)
function! GeneratorDiary.f() abort
let lines = []
@@ -476,8 +476,8 @@ function! vimwiki#diary#generate_diary_section() abort
endfunction
" Callback function for Calendar.vim
function! vimwiki#diary#calendar_action(day, month, year, week, dir) abort
" Callback function for Calendar.vim
let day = s:prefix_zero(a:day)
let month = s:prefix_zero(a:month)
@@ -499,8 +499,8 @@ function! vimwiki#diary#calendar_action(day, month, year, week, dir) abort
endfunction
" Callback function for Calendar.vim
function! vimwiki#diary#calendar_sign(day, month, year) abort
" Callback function for Calendar.vim
let day = s:prefix_zero(a:day)
let month = s:prefix_zero(a:month)
let sfile = vimwiki#vars#get_wikilocal('path').vimwiki#vars#get_wikilocal('diary_rel_path').
+4 -3
View File
@@ -1759,6 +1759,7 @@ let s:emoji_dic = {}
function! vimwiki#emoji#get_dic() abort
" Get Dic:
if s:emoji_dic == {}
call extend(s:emoji_dic, s:emoji_multiple)
call extend(s:emoji_dic, s:emoji_single)
@@ -1766,17 +1767,17 @@ function! vimwiki#emoji#get_dic() abort
return s:emoji_dic
endfunction
" Conceal
function! vimwiki#emoji#apply_conceal() abort
" Apply Conceal:
for [name, emoji] in items(s:emoji_single)
exe 'syn keyword VimwikiEmoji :' . name . ': conceal cchar=' . emoji
endfor
endfunction
" Junegunn fuzzy hack
let s:max_score = 1000
function! s:score(haystack, needle) abort
" Get Score: Junegunn fuzzy hack
let idx = stridx(a:haystack, a:needle)
if idx < 0 | return idx | endif
if idx == 0 | return s:max_score * 2 | endif
@@ -1785,8 +1786,8 @@ function! s:score(haystack, needle) abort
endfunction
" Complete
function! vimwiki#emoji#complete(findstart, base) abort
" Complete:
" Init full list if must
if s:emojis == []
let s:emojis = map(sort(keys(vimwiki#emoji#get_dic())),
+2 -2
View File
@@ -417,9 +417,9 @@ function! s:tag_code(value) abort
endfunction
" match n-th ARG within {{URL[|ARG1|ARG2|...]}}
" *c,d,e),...
function! s:incl_match_arg(nn_index) abort
" match n-th ARG within {{URL[|ARG1|ARG2|...]}}
" *c,d,e),...
let rx = vimwiki#vars#get_global('rxWikiInclPrefix'). vimwiki#vars#get_global('rxWikiInclUrl')
let rx = rx . repeat(vimwiki#vars#get_global('rxWikiInclSeparator') .
\ vimwiki#vars#get_global('rxWikiInclArg'), a:nn_index-1)
+93 -98
View File
@@ -134,17 +134,17 @@ function! vimwiki#lst#get_list_margin() abort
endfunction
"Returns: the column where the text of a line starts (possible list item
"markers and checkboxes are skipped)
function! s:text_begin(lnum) abort
" Returns: the column where the text of a line starts (possible list item
" markers and checkboxes are skipped)
return s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_wikilocal('rxListItem')))
endfunction
"Returns: 2 if there is a marker and text
" 1 for a marker and no text
" 0 for no marker at all (empty line or only text)
function! s:line_has_marker(lnum) abort
" Returns: 2 if there is a marker and text
" 1 for a marker and no text
" 0 for no marker at all (empty line or only text)
if getline(a:lnum) =~# vimwiki#vars#get_wikilocal('rxListItem').'\s*$'
return 1
elseif getline(a:lnum) =~# vimwiki#vars#get_wikilocal('rxListItem').'\s*\S'
@@ -155,8 +155,8 @@ function! s:line_has_marker(lnum) abort
endfunction
" Remove a list item and it's children (recursive)
function! s:remove_including_children(item) abort
" Remove a list item and it's children (recursive)
let num_removed_lines = 1
let child = s:get_first_child(a:item)
while child.type != 0
@@ -177,13 +177,13 @@ endfunction
" get properties of a list item
" ---------------------------------------------------------
"Returns: the mainly used data structure in this file
"An item represents a single list item and is a dictionary with the keys
"lnum - the line number of the list item
"type - 1 for bulleted item, 2 for numbered item, 0 for a regular line (default)
"mrkr - the concrete marker, e.g. '**' or 'b)' (default '')
"cb - the char in the checkbox or '' if there is no checkbox
function! s:get_item(lnum) abort
" Returns: the mainly used data structure in this file
" An item represents a single list item and is a dictionary with the keys
" lnum - the line number of the list item
" type - 1 for bulleted item, 2 for numbered item, 0 for a regular line (default)
" mrkr - the concrete marker, e.g. '**' or 'b)' (default '')
" cb - the char in the checkbox or '' if there is no checkbox
" Init default
let item = {'lnum': a:lnum}
let item.type = 0
@@ -220,13 +220,14 @@ endfunction
function! s:empty_item() abort
" Craft: empty item
return {'type': 0}
endfunction
"Returns: level of the line
"0 is the 'highest' level
function! s:get_level(lnum) abort
" Returns: level of the line
" 0 is the 'highest' level
if getline(a:lnum) =~# '^\s*$'
return 0
endif
@@ -243,10 +244,10 @@ function! s:get_level(lnum) abort
endfunction
"Returns: 1, a, i, A, I or ''
"If in doubt if alphanumeric character or romanian
"numeral, peek in the previous line
function! s:guess_kind_of_numbered_item(item) abort
" Returns: 1, a, i, A, I or ''
" If in doubt if alphanumeric character or romanian
" numeral, peek in the previous line
if a:item.type != 2 | return '' | endif
let number_chars = a:item.mrkr[:-2]
let divisor = a:item.mrkr[-1:]
@@ -324,8 +325,8 @@ function! s:regexp_of_marker(item) abort
endfunction
" Returns: Whether or not the checkbox of a list item is [X] or [-]
function! s:is_closed(item) abort
" Returns: Whether or not the checkbox of a list item is [X] or [-]
let state = a:item.cb
return state ==# vimwiki#vars#get_wikilocal('listsyms_list')[-1]
\ || state ==# vimwiki#vars#get_global('listsym_rejected')
@@ -335,9 +336,9 @@ endfunction
" functions for navigating between items
" ---------------------------------------------------------
"Returns: the list item after a:item or an empty item
"If a:ignore_kind is 1, the markers can differ
function! s:get_next_list_item(item, ignore_kind) abort
" Returns: the list item after a:item or an empty item
" If a:ignore_kind is 1, the markers can differ
let org_lvl = s:get_level(a:item.lnum)
if !a:ignore_kind
let org_regex = s:regexp_of_marker(a:item)
@@ -359,9 +360,9 @@ function! s:get_next_list_item(item, ignore_kind) abort
endfunction
"Returns: the list item before a:item or an empty item
"If a:ignore_kind is 1, the markers can differ
function! s:get_prev_list_item(item, ignore_kind) abort
" Returns: the list item before a:item or an empty item
" If a:ignore_kind is 1, the markers can differ
let org_lvl = s:get_level(a:item.lnum)
if !a:ignore_kind
let org_regex = s:regexp_of_marker(a:item)
@@ -434,11 +435,11 @@ function! s:get_last_item_in_list(item, ignore_kind) abort
endfunction
"Returns: lnum+1 in most cases, but skips blank lines and preformatted text,
"0 in case of nonvalid line.
"If there is no second argument, 0 is returned at a header, otherwise the
"header is skipped
function! s:get_next_line(lnum, ...) abort
" Returns: lnum+1 in most cases, but skips blank lines and preformatted text,
" 0 in case of nonvalid line.
" If there is no second argument, 0 is returned at a header, otherwise the
" header is skipped
if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxPreStart')
let cur_ln = a:lnum + 1
while cur_ln <= line('$') && getline(cur_ln) !~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
@@ -464,9 +465,9 @@ function! s:get_next_line(lnum, ...) abort
endfunction
"Returns: lnum-1 in most cases, but skips blank lines and preformatted text
"0 in case of nonvalid line and a header, because a header ends every list
function! s:get_prev_line(lnum) abort
" Returns: lnum-1 in most cases, but skips blank lines and preformatted text
" 0 in case of nonvalid line and a header, because a header ends every list
let cur_ln = a:lnum - 1
if getline(cur_ln) =~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
@@ -507,10 +508,10 @@ function! s:get_first_child(item) abort
endfunction
"Returns: the next sibling of a:child, given the parent item
"Used for iterating over children
"Note: child items do not necessarily have the same indent, i.e. level
function! s:get_next_child_item(parent, child) abort
" Returns: the next sibling of a:child, given the parent item
" Used for iterating over children
" Note: child items do not necessarily have the same indent, i.e. level
if a:parent.type == 0 | return s:empty_item() | endif
let parent_lvl = s:get_level(a:parent.lnum)
let cur_ln = s:get_last_line_of_item_incl_children(a:child)
@@ -556,8 +557,8 @@ function! s:get_parent(item) abort
endfunction
"Returns: the item above or the item below or an empty item
function! s:get_a_neighbor_item(item) abort
" Returns: the item above or the item below or an empty item
let prev_item = s:get_prev_list_item(a:item, 1)
if prev_item.type != 0
return prev_item
@@ -583,9 +584,9 @@ function! s:get_a_neighbor_item_in_column(lnum, column) abort
endfunction
"Returns: the item if there is one in a:lnum
"else the multiline item a:lnum belongs to
function! s:get_corresponding_item(lnum) abort
" Returns: the item if there is one in a:lnum
" else the multiline item a:lnum belongs to
let item = s:get_item(a:lnum)
if item.type != 0
return item
@@ -607,8 +608,8 @@ function! s:get_corresponding_item(lnum) abort
endfunction
"Returns: the last line of a (possibly multiline) item, including all children
function! s:get_last_line_of_item_incl_children(item) abort
" Returns: the last line of a (possibly multiline) item, including all children
let cur_ln = a:item.lnum
let org_lvl = s:get_level(a:item.lnum)
while 1
@@ -621,9 +622,9 @@ function! s:get_last_line_of_item_incl_children(item) abort
endfunction
"Returns: the last line of a (possibly multiline) item
"Note: there can be other list items between the first and last line
function! s:get_last_line_of_item(item) abort
" Returns: the last line of a (possibly multiline) item
" Note: there can be other list items between the first and last line
if a:item.type == 0 | return 0 | endif
let org_lvl = s:get_level(a:item.lnum)
let last_corresponding_line = a:item.lnum
@@ -650,9 +651,9 @@ endfunction
" renumber list items
" ---------------------------------------------------------
"Renumbers the current list from a:item on downwards
"Returns: the last item that was adjusted
function! s:adjust_numbered_list_below(item, recursive) abort
" Renumbers the current list from a:item on downwards
" Returns: the last item that was adjusted
if !(a:item.type == 2 || (a:item.type == 1 && a:recursive))
return a:item
endif
@@ -702,11 +703,11 @@ function! s:adjust_items_recursively(parent) abort
endfunction
"Renumbers the list a:item is in.
"If a:ignore_kind == 0, only the items which have the same kind of marker as
"a:item are considered, otherwise all items.
"Returns: the last item that was adjusted
function! s:adjust_numbered_list(item, ignore_kind, recursive) abort
" Renumbers the list a:item is in.
" If a:ignore_kind == 0, only the items which have the same kind of marker as
" a:item are considered, otherwise all items.
" Returns: the last item that was adjusted
if !(a:item.type == 2 || (a:item.type == 1 && (a:ignore_kind || a:recursive)))
return s:empty_item()
end
@@ -731,9 +732,9 @@ function! s:adjust_numbered_list(item, ignore_kind, recursive) abort
endfunction
"Renumbers the list the cursor is in
"also update its parents checkbox state
function! vimwiki#lst#adjust_numbered_list() abort
" Renumbers the list the cursor is in
" also update its parents checkbox state
let cur_item = s:get_corresponding_item(line('.'))
if cur_item.type == 0 | return | endif
call s:adjust_numbered_list(cur_item, 1, 0)
@@ -741,9 +742,9 @@ function! vimwiki#lst#adjust_numbered_list() abort
endfunction
"Renumbers all lists of the buffer
"of course, this might take some seconds
function! vimwiki#lst#adjust_whole_buffer() abort
" Renumbers all lists of the buffer
" of course, this might take some seconds
let cur_ln = 1
while 1
let cur_item = s:get_item(cur_ln)
@@ -762,8 +763,8 @@ endfunction
" checkbox stuff
" ---------------------------------------------------------
"Returns: the rate of checkboxed list item in percent
function! s:get_rate(item) abort
" Returns: the rate of checkboxed list item in percent
if a:item.type == 0 || a:item.cb ==? ''
return -1
endif
@@ -776,9 +777,9 @@ function! s:get_rate(item) abort
endfunction
"Set state of the list item to [ ] or [o] or whatever
"Returns: 1 if the state changed, 0 otherwise
function! s:set_state(item, new_rate) abort
" Set state of the list item to [ ] or [o] or whatever
" Returns: 1 if the state changed, 0 otherwise
let new_state = s:rate_to_state(a:new_rate)
let old_state = s:rate_to_state(s:get_rate(a:item))
if new_state !=# old_state
@@ -790,10 +791,10 @@ function! s:set_state(item, new_rate) abort
endfunction
" Sets the state of the list item to [ ] or [o] or whatever. Updates the states of its child items.
" If the new state should be [X] or [-], the state of the current list item is changed to this
" state, but if a child item already has [X] or [-] it is left alone.
function! s:set_state_plus_children(item, new_rate, ...) abort
" Sets the state of the list item to [ ] or [o] or whatever. Updates the states of its child items.
" If the new state should be [X] or [-], the state of the current list item is changed to this
" state, but if a child item already has [X] or [-] it is left alone.
let retain_state_if_closed = a:0 > 0 && a:1 > 0
if !(retain_state_if_closed && (a:new_rate == 100 || a:new_rate == -1) && s:is_closed(a:item))
@@ -849,8 +850,8 @@ function! s:set_state_plus_children(item, new_rate, ...) abort
endfunction
"Returns: the appropriate symbol for a given percent rate
function! s:rate_to_state(rate) abort
" Returns: the appropriate symbol for a given percent rate
let listsyms_list = vimwiki#vars#get_wikilocal('listsyms_list')
let state = ''
let n = len(listsyms_list)
@@ -868,9 +869,8 @@ function! s:rate_to_state(rate) abort
endfunction
"updates the symbol of a checkboxed item according to the symbols of its
"children
function! s:update_state(item) abort
" Updates the symbol of a checkboxed item according to the symbols of its children
if a:item.type == 0 || a:item.cb ==? '' || vimwiki#vars#get_wikilocal('listsyms_propagate') == 0
return
endif
@@ -923,9 +923,9 @@ function! s:set_state_recursively(item, new_rate) abort
endfunction
"Creates checkbox in a list item.
"Returns: 1 if successful
function! s:create_cb(item, start_rate) abort
" Creates checkbox in a list item.
" Returns: 1 if successful
if a:item.type == 0 || a:item.cb !=? ''
return 0
endif
@@ -950,8 +950,8 @@ function! s:remove_cb(item) abort
endfunction
" Change state of the checkboxes in the lines of the given range
function! s:change_cb(from_line, to_line, new_rate) abort
" Change state of the checkboxes in the lines of the given range
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -973,13 +973,12 @@ function! s:change_cb(from_line, to_line, new_rate) abort
for parent_item in parent_items_of_lines
call s:update_state(parent_item)
endfor
endfunction
" Toggles checkbox between two states in the lines of the given range, creates checkboxes (with
" a:start_rate as state) if there aren't any.
function! s:toggle_create_cb(from_line, to_line, state1, state2, start_rate) abort
" Toggles checkbox between two states in the lines of the given range, creates checkboxes (with
" a:start_rate as state) if there aren't any.
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -1014,13 +1013,12 @@ function! s:toggle_create_cb(from_line, to_line, state1, state2, start_rate) abo
call s:change_cb(a:from_line, a:to_line, new_rate)
endif
endfunction
"Decrement checkbox between [ ] and [X]
"in the lines of the given range
function! vimwiki#lst#decrement_cb(from_line, to_line) abort
" Decrement checkbox between [ ] and [X]
" in the lines of the given range
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -1032,13 +1030,12 @@ function! vimwiki#lst#decrement_cb(from_line, to_line) abort
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) abort
" Increment checkbox between [ ] and [X]
" in the lines of the given range
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -1050,20 +1047,19 @@ function! vimwiki#lst#increment_cb(from_line, to_line) abort
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) abort
" Toggles checkbox between [ ] and [X] or creates one
" in the lines of the given range
return s:toggle_create_cb(a:from_line, a:to_line, 100, 0, 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) abort
" Toggles checkbox between [ ] and [-] or creates one
" in the lines of the given range
return s:toggle_create_cb(a:from_line, a:to_line, -1, 0, -1)
endfunction
@@ -1114,9 +1110,9 @@ function! vimwiki#lst#remove_cb_in_list() abort
endfunction
" Iterate over given todo list and remove all task that are done
" If recursive is true, child items will be checked too
function! s:remove_done_in_list(item, recursive) abort
" Iterate over given todo list and remove all task that are done
" If recursive is true, child items will be checked too
" Clause non-null item type
if a:item.type == 0
return
@@ -1151,17 +1147,17 @@ function! s:remove_done_in_list(item, recursive) abort
endfunction
" Iterate over the list that the cursor is positioned in
" and remove all lines of task that are done.
" If recursive is true, child items will be checked too
function! vimwiki#lst#remove_done_in_current_list(recursive) abort
" Iterate over the list that the cursor is positioned in
" and remove all lines of task that are done.
" If recursive is true, child items will be checked too
let item = s:get_corresponding_item(line('.'))
call s:remove_done_in_list(item, a:recursive)
endfunction
" Remove selected lines if they contain a task that is done
function! vimwiki#lst#remove_done_in_range(first_line, last_line) abort
" Remove selected lines if they contain a task that is done
let first_item = s:get_corresponding_item(a:first_line)
let last_item = s:get_corresponding_item(a:last_line)
@@ -1195,12 +1191,12 @@ function! vimwiki#lst#remove_done_in_range(first_line, last_line) abort
endfunction
" wrapper function to distinguish between function used with a range or not
" vim 8.0.1089 and newer and corresponding neovim versions allow to use <range> to distinguish if
" the function has been called with a range. For older versions we use remove_done_in_range if
" first and last line are identical, which means there was either no range or the range was within
" one line.
function! vimwiki#lst#remove_done(recursive, range, first_line, last_line) abort
" wrapper function to distinguish between function used with a range or not
" vim 8.0.1089 and newer and corresponding neovim versions allow to use <range> to distinguish if
" the function has been called with a range. For older versions we use remove_done_in_range if
" first and last line are identical, which means there was either no range or the range was within
" one line.
if a:range ==# '<range>'
let range = a:first_line != a:last_line
else
@@ -1269,11 +1265,11 @@ function! s:increase_level(item, by) abort
endfunction
" Cycle through the bullet list markers set in
" `bullet_types` based on the indentation level
" 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
function! s:indent_cycle_bullets(item, indent_by) abort
" Cycle through the bullet list markers set in
" `bullet_types` based on the indentation level
" 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
" Clause: Check if should work
if !vimwiki#vars#get_syntaxlocal('cycle_bullets') || a:item.type != 1
return
@@ -1287,9 +1283,9 @@ function! s:indent_cycle_bullets(item, indent_by) abort
endfunction
" Add a:indent_by to the current indent
"a:indent_by can be negative
function! s:indent_line_by(lnum, indent_by) abort
" Add a:indent_by to the current indent
"a:indent_by can be negative
let item = s:get_item(a:lnum)
if a:indent_by > 0
call s:increase_level(item, a:indent_by)
@@ -1300,8 +1296,8 @@ function! s:indent_line_by(lnum, indent_by) abort
endfunction
" Change lvl of lines in selection
function! s:change_level(from_line, to_line, direction, plus_children) abort
" Change lvl of lines in selection
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
if a:direction ==# 'increase' && a:from_line == a:to_line && empty(getline(a:from_line))
@@ -1385,8 +1381,8 @@ function! vimwiki#lst#change_level(from_line, to_line, direction, plus_children)
endfunction
"indent line a:lnum to be the continuation of a:prev_item
function! s:indent_multiline(prev_item, lnum) abort
" Indent line a:lnum to be the continuation of a:prev_item
if a:prev_item.type != 0
call s:set_indent(a:lnum, s:text_begin(a:prev_item.lnum))
endif
@@ -1397,8 +1393,8 @@ endfunction
" change markers of list items
" ---------------------------------------------------------
"Returns: the position of a marker in g:vimwiki_list_markers
function! s:get_idx_list_markers(item) abort
" Returns: the position of a marker in g:vimwiki_list_markers
if a:item.type == 1
let m = s:first_char(a:item.mrkr)
else
@@ -1408,8 +1404,8 @@ function! s:get_idx_list_markers(item) abort
endfunction
"changes the marker of the given item to the next in g:vimwiki_list_markers
function! s:get_next_mrkr(item) abort
" Changes the marker of the given item to the next in g:vimwiki_list_markers
let markers = vimwiki#vars#get_syntaxlocal('list_markers')
if a:item.type == 0
let new_mrkr = markers[0]
@@ -1421,8 +1417,8 @@ function! s:get_next_mrkr(item) abort
endfunction
"changes the marker of the given item to the previous in g:vimwiki_list_markers
function! s:get_prev_mrkr(item) abort
" Changes the marker of the given item to the previous in g:vimwiki_list_markers
let markers = vimwiki#vars#get_syntaxlocal('list_markers')
if a:item.type == 0
return markers[-1]
@@ -1519,8 +1515,8 @@ function! vimwiki#lst#change_marker_in_list(new_mrkr) abort
endfunction
"sets kind of the item depending on neighbor items and the parent item
function! s:adjust_mrkr(item) abort
" Sets kind of the item depending on neighbor items and the parent item
if a:item.type == 0 || vimwiki#vars#get_syntaxlocal('recurring_bullets')
return
endif
@@ -1771,12 +1767,11 @@ function! vimwiki#lst#kbd_cr(normal, just_mrkr) abort
else
startinsert
endif
endfunction
"creates a list item in the current line or removes it
function! vimwiki#lst#toggle_list_item() abort
" Creates a list item in the current line or removes it
let cur_col_from_eol = col('$') - col("'^")
let cur_item = s:get_item(line('.'))
+1 -2
View File
@@ -34,8 +34,8 @@ function! vimwiki#markdown_base#scan_reflinks() abort
endfunction
" try markdown reference links
function! vimwiki#markdown_base#open_reflink(link) abort
" try markdown reference links
let link = a:link
let mkd_refs = vimwiki#vars#get_bufferlocal('markdown_refs')
if has_key(mkd_refs, link)
@@ -106,7 +106,6 @@ function! s:normalize_link_syntax_n() abort
call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub)
return
endif
endfunction
+24 -24
View File
@@ -5,19 +5,19 @@
" Unixify path
function! s:unixify(path) abort
return substitute(a:path, '\', '/', 'g')
" Unixify Path:
return substitute(a:path, '\', '/', 'g')
endfunction
" Windowsify path
function! s:windowsify(path) abort
return substitute(a:path, '/', '\', 'g')
" Windowsify Path:
return substitute(a:path, '/', '\', 'g')
endfunction
" Define os specific path convertion
" Define: os specific path convertion
if vimwiki#u#is_windows()
function! s:osxify(path) abort
return s:windowsify(a:path)
@@ -29,8 +29,8 @@ else
endif
" Remove last path delimitator (slash or backslash)
function! vimwiki#path#chomp_slash(str) abort
" Remove Delimiter: of last path (slash or backslash)
return substitute(a:str, '[/\\]\+$', '', '')
endfunction
@@ -47,8 +47,8 @@ else
endif
" Collapse sections like /a/b/../c to /a/c and /a/b/./c to /a/b/c
function! vimwiki#path#normalize(path) abort
" Collapse Sections: like /a/b/../c to /a/c and /a/b/./c to /a/b/c
let path = a:path
while 1
let intermediateResult = substitute(path, '/[^/]\+/\.\.', '', '')
@@ -62,8 +62,8 @@ function! vimwiki#path#normalize(path) abort
endfunction
" Normalize path: \ -> / && /// -> / && resolve(symlinks)
function! vimwiki#path#path_norm(path) abort
" Normalize Path: \ -> / && /// -> / && resolve(symlinks)
" return if scp
if a:path =~# '^scp:' | return a:path | endif
" convert backslash to slash
@@ -75,22 +75,22 @@ function! vimwiki#path#path_norm(path) abort
endfunction
" Check if link is to a directory
function! vimwiki#path#is_link_to_dir(link) abort
" Check: if link is to a directory
" It should be ended with \ or /.
return a:link =~# '\m[/\\]$'
endfunction
" Get absolute path <- path relative to current file
function! vimwiki#path#abs_path_of_link(link) abort
" Get: absolute path <- path relative to current file
return vimwiki#path#normalize(expand('%:p:h').'/'.a:link)
endfunction
" Returns: longest common path prefix of 2 given paths.
" Ex: '~/home/usrname/wiki', '~/home/usrname/wiki/shmiki' => '~/home/usrname/wiki'
function! vimwiki#path#path_common_pfx(path1, path2) abort
" Returns: longest common path prefix of 2 given paths.
" Ex: '~/home/usrname/wiki', '~/home/usrname/wiki/shmiki' => '~/home/usrname/wiki'
let p1 = split(a:path1, '[/\\]', 1)
let p2 = split(a:path2, '[/\\]', 1)
@@ -107,8 +107,8 @@ function! vimwiki#path#path_common_pfx(path1, path2) abort
endfunction
" Convert path -> full resolved slashed path
function! vimwiki#path#wikify_path(path) abort
" Convert: path -> full resolved slashed path
let result = resolve(fnamemodify(a:path, ':p'))
if vimwiki#u#is_windows()
let result = substitute(result, '\\', '/', 'g')
@@ -118,14 +118,14 @@ function! vimwiki#path#wikify_path(path) abort
endfunction
" Return: Current file path relative
function! vimwiki#path#current_wiki_file() abort
" Return: Current file path relative
return vimwiki#path#wikify_path(expand('%:p'))
endfunction
" Return: the relative path from a:dir to a:file
function! vimwiki#path#relpath(dir, file) abort
" Return: the relative path from a:dir to a:file
" Check if dir here ('.') -> return file
if empty(a:dir) || a:dir =~# '^\.[/\\]\?$'
return a:file
@@ -168,11 +168,11 @@ function! vimwiki#path#relpath(dir, file) abort
endfunction
" Mkdir:
" If the optional argument provided and nonzero,
" it will ask before creating a directory
" Returns: 1 iff directory exists or successfully created
function! vimwiki#path#mkdir(path, ...) abort
" Mkdir:
" if the optional argument provided and nonzero,
" it will ask before creating a directory
" returns: 1 iff directory exists or successfully created
let path = expand(a:path)
if path =~# '^scp:'
@@ -202,8 +202,8 @@ function! vimwiki#path#mkdir(path, ...) abort
endfunction
" Check: if path is absolute
function! vimwiki#path#is_absolute(path) abort
" Check: if path is absolute
if vimwiki#u#is_windows()
return a:path =~? '\m^\a:'
else
@@ -212,11 +212,11 @@ function! vimwiki#path#is_absolute(path) abort
endfunction
" Combine: a directory and a file into one path, doesn't generate duplicate
" path separator in case the directory is also having an ending / or \. This
" is because on windows ~\vimwiki//.tags is invalid but ~\vimwiki/.tags is a
" valid path.
if vimwiki#u#is_windows()
" Combine: a directory and a file into one path, doesn't generate duplicate
" path separator in case the directory is also having an ending / or \. This
" is because on windows ~\vimwiki//.tags is invalid but ~\vimwiki/.tags is a
" valid path.
function! vimwiki#path#join_path(directory, file) abort
let directory = vimwiki#path#chomp_slash(a:directory)
let file = substitute(a:file, '\m^[\\/]\+', '', '')
+28 -28
View File
@@ -22,11 +22,11 @@
let s:TAGS_METADATA_FILE_NAME = '.vimwiki_tags'
" Update tags metadata.
" Param: a:full_rebuild == 1: re-scan entire wiki
" Param: a:full_rebuild == 0: only re-scan current page
" a:all_files == '': only if the file is newer than .tags
function! vimwiki#tags#update_tags(full_rebuild, all_files) abort
" Update tags metadata.
" Param: a:full_rebuild == 1: re-scan entire wiki
" Param: a:full_rebuild == 0: only re-scan current page
" a:all_files == '': only if the file is newer than .tags
let all_files = a:all_files !=? ''
if !a:full_rebuild
" Updating for one page (current)
@@ -60,16 +60,16 @@ function! vimwiki#tags#update_tags(full_rebuild, all_files) abort
endfunction
" Substitute regexp but do not interpret replace
" TODO mutualize with same function in base
function! s:safesubstitute(text, search, replace, mode) abort
" Substitute regexp but do not interpret replace
" TODO mutualize with same function in base
let escaped = escape(a:replace, '\&')
return substitute(a:text, a:search, escaped, a:mode)
endfunction
" Scan the list of text lines (argument) and produces tags metadata as a list of tag entries.
function! s:scan_tags(lines, page_name) abort
" Scan the list of text lines (argument) and produces tags metadata as a list of tag entries.
" Code wireframe to scan for headers -- borrowed from
" vimwiki#base#get_anchors(), with minor modifications.
@@ -155,15 +155,15 @@ function! s:scan_tags(lines, page_name) abort
endfunction
" Return: tags metadata file path
function! vimwiki#tags#metadata_file_path() abort
" Return: tags metadata file path
return fnamemodify(vimwiki#path#join_path(vimwiki#vars#get_wikilocal('path'),
\ s:TAGS_METADATA_FILE_NAME), ':p')
endfunction
" Load tags metadata from file, returns a dictionary
function! s:load_tags_metadata() abort
" Load tags metadata from file, returns a dictionary
let metadata_path = vimwiki#tags#metadata_file_path()
if !filereadable(metadata_path)
return {}
@@ -213,9 +213,9 @@ function! s:load_tags_metadata() abort
endfunction
" Remove all entries for given page from metadata in-place. Returns updated
" metadata (just in case).
function! s:remove_page_from_tags(metadata, page_name) abort
" Remove all entries for given page from metadata in-place. Returns updated
" metadata (just in case).
if has_key(a:metadata, a:page_name)
call remove(a:metadata, a:page_name)
return a:metadata
@@ -225,24 +225,24 @@ function! s:remove_page_from_tags(metadata, page_name) abort
endfunction
" Merge metadata of one file into a:metadata
function! s:merge_tags(metadata, pagename, file_metadata) abort
" Merge metadata of one file into a:metadata
let metadata = a:metadata
let metadata[a:pagename] = a:file_metadata
return metadata
endfunction
" Compare two actual lines from tags file. Return value is in strcmp style.
" See help on sort() -- that's what this function is going to be used for.
" See also s:write_tags_metadata below -- that's where we compose these tags
" file lines.
"
" This function is needed for tags sorting, since plain sort() compares line
" numbers as strings, not integers, and so, for example, tag at line 14
" preceeds the same tag on the same page at line 9. (Because string "14" is
" alphabetically 'less than' string "9".)
function! s:tags_entry_cmp(i1, i2) abort
" Compare two actual lines from tags file. Return value is in strcmp style.
" See help on sort() -- that's what this function is going to be used for.
" See also s:write_tags_metadata below -- that's where we compose these tags
" file lines.
"
" This function is needed for tags sorting, since plain sort() compares line
" numbers as strings, not integers, and so, for example, tag at line 14
" preceeds the same tag on the same page at line 9. (Because string "14" is
" alphabetically 'less than' string "9".)
let items = []
for orig_item in [a:i1, a:i2]
let fields = split(orig_item, "\t")
@@ -265,8 +265,8 @@ function! s:tags_entry_cmp(i1, i2) abort
endfunction
" Save metadata object into a file. Throws exceptions in case of problems.
function! s:write_tags_metadata(metadata) abort
" Save metadata object into a file. Throws exceptions in case of problems.
let metadata_path = vimwiki#tags#metadata_file_path()
let tags = []
for pagename in keys(a:metadata)
@@ -302,8 +302,8 @@ function! s:write_tags_metadata(metadata) abort
endfunction
" Return: list of unique tags found in the .tags file
function! vimwiki#tags#get_tags() abort
" Return: list of unique tags found in the .tags file
let metadata = s:load_tags_metadata()
let tags = {}
for entries in values(metadata)
@@ -315,11 +315,11 @@ function! vimwiki#tags#get_tags() abort
endfunction
" Generate tags in current buffer
" Similar to vimwiki#base#generate_links. In the current buffer, appends
" tags and references to all their instances. If no arguments (tags) are
" specified, outputs all tags.
function! vimwiki#tags#generate_tags(create, ...) abort
" Generate tags in current buffer
" Similar to vimwiki#base#generate_links. In the current buffer, appends
" tags and references to all their instances. If no arguments (tags) are
" specified, outputs all tags.
let specific_tags = a:000
let header_level = vimwiki#vars#get_global('tags_header_level')
@@ -408,8 +408,8 @@ function! vimwiki#tags#generate_tags(create, ...) abort
endfunction
" Complete tags
function! vimwiki#tags#complete_tags(ArgLead, CmdLine, CursorPos) abort
" Complete tags
" We can safely ignore args if we use -custom=complete option, Vim engine
" will do the job of filtering.
let taglist = vimwiki#tags#get_tags()
+6 -7
View File
@@ -8,7 +8,6 @@
" Home: https://github.com/vimwiki/vimwiki/
" Clause: Load only once
if exists('g:loaded_vimwiki_tbl_auto') || &compatible
finish
@@ -54,15 +53,15 @@ function! s:sep_splitter() abort
endfunction
" Check if param:line is in a table
function! s:is_table(line) abort
" Check if param:line is in a table
return s:is_separator(a:line) ||
\ (a:line !~# s:rxSep().s:rxSep() && a:line =~# '^\s*'.s:rxSep().'.\+'.s:rxSep().'\s*$')
endfunction
" Check if param:line is a separator (ex: | --- | --- |)
function! s:is_separator(line) abort
" Check if param:line is a separator (ex: | --- | --- |)
return a:line =~# '^\s*'.s:rxSep().'\(:\=--\+:\='.s:rxSep().'\)\+\s*$'
endfunction
@@ -417,8 +416,8 @@ function! s:get_aligned_rows(lnum, col1, col2, depth) abort
endfunction
" Number of the current column. Starts from 0.
function! s:cur_column() abort
" Number of the current column. Starts from 0.
let line = getline('.')
if !s:is_table(line)
return -1
@@ -542,8 +541,8 @@ function! s:kbd_goto_prev_row() abort
endfunction
" Used in s:kbd_goto_next_col
function! vimwiki#tbl#goto_next_col() abort
" Used in s:kbd_goto_next_col
let curcol = virtcol('.')
let lnum = line('.')
let depth = 2
@@ -577,8 +576,8 @@ function! s:kbd_goto_next_col(jumpdown) abort
endfunction
" Used in s:kbd_goto_prev_col
function! vimwiki#tbl#goto_prev_col() abort
" Used in s:kbd_goto_prev_col
let curcol = virtcol('.')
let lnum = line('.')
let depth = 2
@@ -757,8 +756,8 @@ function! vimwiki#tbl#align_or_cmd(cmd, ...) abort
endfunction
" TODO: move_column_left and move_column_right are good candidates to be refactored.
function! vimwiki#tbl#move_column_left() abort
" TODO: move_column_left and move_column_right are good candidates to be refactored.
" Clause in
let line = getline('.')
if !s:is_table(line)
+65 -64
View File
@@ -3,11 +3,11 @@
" Description: Utility functions
" Home: https://github.com/vimwiki/vimwiki/
" Echo: msg
" :param: (1) <string> highlighting group
" :param: (2) <string> echo suffix (ex: 'n', 'm')
" :param: (3) <string> message prefix, default Vimwiki
function! vimwiki#u#echo(msg, ...) abort
" Echo: msg
" :param: (1) <string> highlighting group
" :param: (2) <string> echo suffix (ex: 'n', 'm')
" :param: (3) <string> message prefix, default Vimwiki
let hl_group = a:0 > 0 ? a:1 : ''
let echo_suffix = a:0 > 1 ? a:2 : ''
let msg_prefix = a:0 > 2 ? a:3 : 'Vimwiki: '
@@ -27,34 +27,34 @@ function! vimwiki#u#echo(msg, ...) abort
endif
endfunction
" Debug: msg
" let b:vimwiki_debug to trigger
function! vimwiki#u#debug(msg) abort
" Debug: msg
" let b:vimwiki_debug to trigger
if !exists('b:vimwiki_debug') || b:vimwiki_debug == 0
return
endif
echomsg 'DEBUG: ' . a:msg
endfunction
" Warn: msg
function! vimwiki#u#warn(msg) abort
" Warn: msg
call vimwiki#u#echo('Warning: ' . a:msg, 'WarningMsg', '')
endfunction
" Error: msg
function! vimwiki#u#error(msg) abort
" Error: msg
call vimwiki#u#echo('Error: ' . a:msg, 'Error', 'msg')
endfunction
" Warn: deprecated feature: old -> new
function! vimwiki#u#deprecate(old, new) abort
" Warn: deprecated feature: old -> new
call vimwiki#u#warn('Deprecated: ' . a:old . ' is deprecated and '
\ . 'will be removed in future versions. Use ' . a:new . ' instead.')
endfunction
" Get visual selection text content, optionaly replace its content
" :param: Text to replace selection
function! vimwiki#u#get_selection(...) abort
" Get visual selection text content, optionaly replace its content
" :param: Text to replace selection
" Copyed from DarkWiiPlayer at stackoverflow
" https://stackoverflow.com/a/47051271/2544873
" Get selection extremity position,
@@ -101,11 +101,12 @@ function! vimwiki#u#get_selection(...) abort
endfunction
" Execute: string v:count times
function! vimwiki#u#count_exe(cmd) abort
for i in range( max([1, v:count]) )
exe a:cmd
endfor
" Execute: string v:count times
" Called: prefixable mapping
for i in range( max([1, v:count]) )
exe a:cmd
endfor
endfunction
@@ -119,10 +120,10 @@ function! vimwiki#u#sort_len(list) abort
endfunction
" Trim spaces: leading and trailing
" :param: string in
" :param: (1) <string> optional list of character to trim
function! vimwiki#u#trim(string, ...) abort
" Trim spaces: leading and trailing
" :param: string in
" :param: (1) <string> optional list of character to trim
let chars = ''
if a:0 > 0
let chars = a:1
@@ -133,15 +134,15 @@ function! vimwiki#u#trim(string, ...) abort
endfunction
" Builtin cursor doesn't work right with unicode characters.
function! vimwiki#u#cursor(lnum, cnum) abort
" Builtin cursor doesn't work right with unicode characters.
exe a:lnum
exe 'normal! 0'.a:cnum.'|'
endfunction
" Returns: OS name, human readable
function! vimwiki#u#os_name() abort
" Returns: OS name, human readable
if vimwiki#u#is_windows()
return 'Windows'
elseif vimwiki#u#is_macos()
@@ -152,14 +153,14 @@ function! vimwiki#u#os_name() abort
endfunction
" Check if OS is windows
function! vimwiki#u#is_windows() abort
" Check if OS is windows
return has('win32') || has('win64') || has('win95') || has('win16')
endfunction
" Check if OS is mac
function! vimwiki#u#is_macos() abort
" Check if OS is mac
if has('mac') || has('macunix') || has('gui_mac')
return 1
endif
@@ -175,26 +176,26 @@ function! vimwiki#u#count_first_sym(line) abort
endfunction
" Escape string for literal magic regex match
function! vimwiki#u#escape(string) abort
" Escape string for literal magic regex match
return escape(a:string, '~.*[]\^$')
endfunction
" Load concrete Wiki syntax: sets regexes and templates for headers and links
function! vimwiki#u#reload_regexes() abort
" Load concrete Wiki syntax: sets regexes and templates for headers and links
execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'.vim'
endfunction
" Load syntax-specific functionality
function! vimwiki#u#reload_regexes_custom() abort
" Load syntax-specific functionality
execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'_custom.vim'
endfunction
" Backward compatible version of the built-in function shiftwidth()
function! vimwiki#u#sw() abort
" Backward compatible version of the built-in function shiftwidth()
if exists('*shiftwidth')
return shiftwidth()
else
@@ -202,14 +203,14 @@ function! vimwiki#u#sw() abort
endif
endfunc
" a:mode single character indicating the mode as defined by :h maparg
" a:key the key sequence to map
" a:plug the plug command the key sequence should be mapped to
" a:1 optional argument with the following functionality:
" if a:1==1 then the hasmapto(<Plug>) check is skipped.
" this can be used to map different keys to the same <Plug> definition
" if a:1==2 then the mapping is not <buffer> specific i.e. it is global
function! vimwiki#u#map_key(mode, key, plug, ...) abort
" a:mode single character indicating the mode as defined by :h maparg
" a:key the key sequence to map
" a:plug the plug command the key sequence should be mapped to
" a:1 optional argument with the following functionality:
" if a:1==1 then the hasmapto(<Plug>) check is skipped.
" this can be used to map different keys to the same <Plug> definition
" if a:1==2 then the mapping is not <buffer> specific i.e. it is global
if a:0 && a:1 == 2
" global mappings
if !hasmapto(a:plug, a:mode) && maparg(a:key, a:mode) ==# ''
@@ -227,11 +228,11 @@ function! vimwiki#u#map_key(mode, key, plug, ...) abort
endfunction
" Returns: 1 if line is a code block or math block
"
" The last two conditions are needed for this to correctly
" detect nested syntaxes within code blocks
function! vimwiki#u#is_codeblock(lnum) abort
" Returns: 1 if line is a code block or math block
"
" The last two conditions are needed for this to correctly
" detect nested syntaxes within code blocks
let syn_g = synIDattr(synID(a:lnum,1,1),'name')
if syn_g =~# 'Vimwiki\(Pre.*\|IndentedCodeBlock\|Math.*\)'
\ || (syn_g !~# 'Vimwiki.*' && syn_g !=? '')
@@ -241,10 +242,10 @@ function! vimwiki#u#is_codeblock(lnum) abort
endif
endfunction
" Sets the filetype to vimwiki
" If g:vimwiki_filetypes variable is set
" the filetype will be vimwiki.<ft1>.<ft2> etc.
function! vimwiki#u#ft_set() abort
" Sets the filetype to vimwiki
" If g:vimwiki_filetypes variable is set
" the filetype will be vimwiki.<ft1>.<ft2> etc.
let ftypelist = vimwiki#vars#get_global('filetypes')
let ftype = 'vimwiki'
for ftypeadd in ftypelist
@@ -253,11 +254,11 @@ function! vimwiki#u#ft_set() abort
let &filetype = ftype
endfunction
" Returns: 1 if filetype is vimwiki, 0 else
" If multiple fileytpes are in use 1 is returned only if the
" first ft is vimwiki which should always be the case unless
" the user manually changes it to something else
function! vimwiki#u#ft_is_vw() abort
" Returns: 1 if filetype is vimwiki, 0 else
" If multiple fileytpes are in use 1 is returned only if the
" first ft is vimwiki which should always be the case unless
" the user manually changes it to something else
" Clause: is filetype defined
if &filetype ==# '' | return 0 | endif
if split(&filetype, '\.')[0] ==? 'vimwiki'
@@ -268,17 +269,17 @@ function! vimwiki#u#ft_is_vw() abort
endfunction
" Helper: Getter
" :param: syntax <string> to retrive, default to current
function! vimwiki#u#get_syntax_dic(...) abort
" Helper: Getter
" :param: syntax <string> to retrive, default to current
let syntax = a:0 ? a:1 : vimwiki#vars#get_wikilocal('syntax')
return g:vimwiki_syntaxlocal_vars[syntax]
endfunction
" Helper to mutualize
" Called: normalize and unnormalize anchor
function! vimwiki#u#get_punctuation_regex() abort
" Helper: to mutualize
" Called: normalize and unnormalize anchor
" From: https://gist.github.com/asabaylus/3071099#gistcomment-2563127
" Faster
" Unused now
@@ -291,19 +292,19 @@ function! vimwiki#u#get_punctuation_regex() abort
endfunction
" Faster
function! vimwiki#u#get_punctuation_string() abort
" Faster
" See: https://github.github.com/gfm/#ascii-punctuation-character
return '!"#$%&''()*+,-./:;<=>?@\[\\\]^`{}|~'
endfunction
" Helper: Expand regex from reduced typeface delimiters
" :param: list<list,delimiters>> with reduced regex
" Return: list with extended regex delimiters (not inside a word)
" -- [['\*_', '_\*']] -> [['\*_\S\@=', '\S\@<=_\*\%(\s\|$\)\@=']]
" See: https://github.github.com/gfm/#left-flanking-delimiter-run
function! vimwiki#u#hi_expand_regex(lst) abort
" Helper: Expand regex from reduced typeface delimiters
" :param: list<list,delimiters>> with reduced regex
" Return: list with extended regex delimiters (not inside a word)
" -- [['\*_', '_\*']] -> [['\*_\S\@=', '\S\@<=_\*\%(\s\|$\)\@=']]
" See: https://github.github.com/gfm/#left-flanking-delimiter-run
let res = []
let p = vimwiki#u#get_punctuation_string()
for delimiters in a:lst
@@ -315,13 +316,13 @@ function! vimwiki#u#hi_expand_regex(lst) abort
endfunction
" Helper: Create highlight region between two tags
" :param: tag <string> example '<b>'
" :param: syntax_group <string> example: VimwikiBold
" :param: contains <string> coma separated and prefixed, default VimwikiHTMLTag
" :param: (1) <boolean> is contained
" :param: (2) <string> more param ex:oneline
function! vimwiki#u#hi_tag(tag_pre, tag_post, syntax_group, contains, ...) abort
" Helper: Create highlight region between two tags
" :param: tag <string> example '<b>'
" :param: syntax_group <string> example: VimwikiBold
" :param: contains <string> coma separated and prefixed, default VimwikiHTMLTag
" :param: (1) <boolean> is contained
" :param: (2) <string> more param ex:oneline
let opt_is_contained = a:0 > 0 && a:1 > 0 ? 'contained ' : ''
let opt_more = a:0 > 1 ? ' ' . a:2 : ''
let opt_contains = ''
@@ -340,11 +341,11 @@ function! vimwiki#u#hi_tag(tag_pre, tag_post, syntax_group, contains, ...) abort
endfunction
" Highight typeface: see $VIMRUNTIME/syntax/html.vim
" -- Basically allow nesting with multiple definition contained
" :param: dic <dic:list:list> must contain: bold, italic and underline, even if underline is often void,
" -- see here for underline not defined: https://stackoverflow.com/questions/3003476
function! vimwiki#u#hi_typeface(dic) abort
" Highight typeface: see $VIMRUNTIME/syntax/html.vim
" -- Basically allow nesting with multiple definition contained
" :param: dic <dic:list:list> must contain: bold, italic and underline, even if underline is often void,
" -- see here for underline not defined: https://stackoverflow.com/questions/3003476
" Italic must go before, otherwise single * takes precedence over ** and ** is considered as
" -- a void italic.
" Note:
+64 -68
View File
@@ -3,8 +3,6 @@
" Description: Vimwiki variable definition and manipulation
" Home: https://github.com/vimwiki/vimwiki/
" ------------------------------------------------------------------------------------------------
" This file provides functions to manage the various state variables which are needed during a
" Vimwiki session.
@@ -30,8 +28,8 @@
let s:margin_set_by_user = 0
" Init global and local variables
function! vimwiki#vars#init() abort
" Init global and local variables
" Init && Populate: global variable container
let g:vimwiki_global_vars = {}
call s:populate_global_variables()
@@ -42,13 +40,13 @@ function! vimwiki#vars#init() abort
endfunction
" Helper: Check user setting
" warn user with 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
" Helper: Check user setting
" warn user with 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>
let type_code_to_name = {
\ type(0): 'number',
\ type(''): 'string',
@@ -106,8 +104,8 @@ function! s:check_users_value(key, users_value, value_infos, comes_from_global_v
endfunction
" Helper: Treat special variables
function! s:update_key(output_dic, key, old, new) abort
" Helper: Treat special variables
" Set list margin
if a:key ==# 'list_margin'
let s:margin_set_by_user = 1
@@ -125,15 +123,13 @@ function! s:update_key(output_dic, key, old, new) abort
endif
endfunction
" ----------------------------------------------------------
" 1. Global {{{1
" ----------------------------------------------------------
" Get default wikilocal values
" Please: keep alphabetical sort
function! s:get_default_global() abort
" Get default wikilocal values
" Please: keep alphabetical sort
return {
\ 'CJK_length': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
\ 'auto_chdir': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
@@ -192,17 +188,17 @@ function! s:get_default_global() abort
endfunction
" Populate global variable <- user & default
" Called: s:vimwiki#vars#init
function! s:populate_global_variables() abort
" Populate global variable <- user & default
" Called: s:vimwiki#vars#init
call s:read_global_settings_from_user()
call s:normalize_global_settings()
call s:internal_global_settings()
endfunction
" Read nromalized settings and create some more usefull variables to use internally
function! s:internal_global_settings() abort
" Read nromalized settings and create some more usefull variables to use internally
" non-configurable global variables:
" Scheme regexes must be defined even if syntax file is not loaded yet cause users should be
@@ -308,8 +304,8 @@ function! s:internal_global_settings() abort
endfunction
" Extend global dictionary <- default <- user
function! s:extend_global(output_dic, default_dic) abort
" Extend global dictionary <- default <- user
" Note: user_dic is unused here because it comes from g:vimwiki_* vars
" Copy the user's settings from variables of the form g:vimwiki_<option> into the dict
" g:vimwiki_global_vars (or set a default value)
@@ -331,9 +327,9 @@ function! s:extend_global(output_dic, default_dic) abort
endfunction
" Read user global settings
" Called: s:populate_global_variables
function! s:read_global_settings_from_user() abort
" Read user global settings
" Called: s:populate_global_variables
let default_dic = s:get_default_global()
" Update batch
@@ -363,9 +359,9 @@ function! s:read_global_settings_from_user() abort
endfunction
" Normalize user global settings
" Called: s:populate_global_variables
function! s:normalize_global_settings() abort
" Normalize user global settings
" Called: s:populate_global_variables
let keys = keys(g:vimwiki_global_vars.ext2syntax)
for ext in keys
" for convenience, we also allow the term 'mediawiki'
@@ -450,9 +446,9 @@ endfunction
" 3. Wiki local {{{1
" ----------------------------------------------------------
" Get default wikilocal values
" Please: keep alphabetical sort
function! s:get_default_wikilocal() abort
" Get default wikilocal values
" Please: keep alphabetical sort
" Build color_tag_template regular expression
" Must be coherent with VimwikiColorize
let fg = 'color\s*:\s*__COLORFG__\s*;\s*'
@@ -539,8 +535,8 @@ function! s:get_default_wikilocal() abort
\ }
endfunction
" Extend syntaxlocal dictionary <- global <- user (default for type check)
function! s:extend_local(output_dic, default_dic, global_dic, user_dic) abort
" Extend syntaxlocal dictionary <- global <- user (default for type check)
" IDEA: can work lazily and not on all wikis at first call
" IDEA: have a special variable for wikitmp
for key in keys(a:default_dic)
@@ -556,9 +552,9 @@ function! s:extend_local(output_dic, default_dic, global_dic, user_dic) abort
endfunction
" Populate local variable <- user & default
" Called: s:vimwiki#vars#init
function! s:populate_wikilocal_options() abort
" Populate local variable <- user & default
" Called: s:vimwiki#vars#init
" Retrieve default
let default_dic = s:get_default_wikilocal()
@@ -589,8 +585,8 @@ function! s:populate_wikilocal_options() abort
endfunction
" Normalize local settings
function! s:normalize_wikilocal_settings() abort
" Normalize local settings
for wiki_settings in g:vimwiki_wikilocal_vars
" Check some values individually
""""""""""""""""""""""""""""""""
@@ -644,9 +640,9 @@ function! s:normalize_wikilocal_settings() abort
endfunction
" Helper path
" TODO move to path: Conflict with: vimwiki#path#path_norm && vimwiki#path#normalize
function! s:normalize_path(path) abort
" Helper path
" TODO move to path: Conflict with: vimwiki#path#path_norm && vimwiki#path#normalize
" trim trailing / and \ because otherwise resolve() doesn't work quite right
let path = substitute(a:path, '[/\\]\+$', '', '')
if path !~# '^scp:'
@@ -661,8 +657,8 @@ endfunction
" 2. Syntax specific {{{1
" ----------------------------------------------------------
" Get default syntaxlocal variable dictionary
function! s:get_default_syntaxlocal() abort
" Get default syntaxlocal variable dictionary
" type, default, min, max, possible_values, min_length
return extend(s:get_common_syntaxlocal(), {
\ 'bold_match': {'type': type(''), 'default': '\%(^\|\s\|[[:punct:]]\)\@<=\*__Text__\*\%([[:punct:]]\|\s\|$\)\@='},
@@ -814,9 +810,9 @@ function! s:get_common_syntaxlocal() abort
endfunction
" Populate syntax variable
" Exported: syntax/vimwiki.vim
function! vimwiki#vars#populate_syntax_vars(syntax) abort
" Populate syntax variable
" Exported: syntax/vimwiki.vim
" TODO refactor <= too big function
" TODO permit user conf in some var like g:vimwiki_syntaxlocal_vars
" TODO internalize match and search (header and bold)
@@ -1036,10 +1032,10 @@ function! vimwiki#vars#populate_syntax_vars(syntax) abort
endfunction
" Populate list variable
" or how to search and treat list (ex: *,-, 1.)
" TODO this should be syntax_local
function! s:populate_list_vars(wiki) abort
" Populate list variable
" or how to search and treat list (ex: *,-, 1.)
" TODO this should be syntax_local
let syntax = a:wiki.syntax
let a:wiki.rx_bullet_char = '['.escape(join(a:wiki.bullet_types, ''), ']^-\').']'
@@ -1097,8 +1093,8 @@ function! s:populate_list_vars(wiki) abort
endfunction
" Populate markdown specific syntax variables
function! s:populate_extra_markdown_vars() abort
" Populate markdown specific syntax variables
let mkd_syntax = g:vimwiki_syntaxlocal_vars['markdown']
" 0a) match [[URL|DESCRIPTION]]
@@ -1269,10 +1265,10 @@ function! s:populate_extra_markdown_vars() abort
endfunction
" Normalize syntax setting
" so that we dont have to branch for the syntax at each operation
" Called: populate_syntax_vars
function! s:normalize_syntax_settings(syntax) abort
" Normalize syntax setting
" so that we dont have to branch for the syntax at each operation
" Called: populate_syntax_vars
let syntax_dic = g:vimwiki_syntaxlocal_vars[a:syntax]
" Link1: used when:
@@ -1291,12 +1287,12 @@ endfunction
" ----------------------------------------------------------
" Get variable anywhere
" Returns: [value, location] where loc=global|wikilocal|syntaxlocal|bufferlocal|none
" Called: cmd <- VimwikiVar
" TODO get more performant approach when this file has been well refactored:
" -- calls only the necessary functions and not syntaxlocal anytime
function! s:get_anywhere(key, ...) abort
" Get variable anywhere
" Returns: [value, location] where loc=global|wikilocal|syntaxlocal|bufferlocal|none
" Called: cmd <- VimwikiVar
" TODO get more performant approach when this file has been well refactored:
" -- calls only the necessary functions and not syntaxlocal anytime
" Alias common info
let s:syntax = vimwiki#vars#get_wikilocal('syntax')
let s:wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr')
@@ -1392,11 +1388,11 @@ function! s:get_anywhere(key, ...) abort
endfunction
" Set or Get a vimwiki variable
" :param: (1) key <string> [space] value <string>
" -- name of the variable [space] value to evaluate and set the variable
" Called: VimwikiVar
function! vimwiki#vars#cmd(arg) abort
" Set or Get a vimwiki variable
" :param: (1) key <string> [space] value <string>
" -- name of the variable [space] value to evaluate and set the variable
" Called: VimwikiVar
" Get key and value
let sep1 = stridx(a:arg, ' ')
let sep2 = sep1
@@ -1528,10 +1524,10 @@ endfunction
" 4. Getter, Setter (exported) {{{1
" ----------------------------------------------------------
" Get syntax variable
" Param: 1: key (<string>)
" Param: (2): syntax name (<string> ex:'markdown')
function! vimwiki#vars#get_syntaxlocal(key, ...) abort
" Get syntax variable
" Param: 1: key (<string>)
" Param: (2): syntax name (<string> ex:'markdown')
" Retrieve desired syntax name
if a:0
let syntax = a:1
@@ -1549,10 +1545,10 @@ function! vimwiki#vars#get_syntaxlocal(key, ...) abort
endfunction
" 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.
function! vimwiki#vars#get_bufferlocal(key, ...) abort
" 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.
let buffer = a:0 ? a:1 : '%'
" 'get(getbufvar(...' handles vim < v7.3.831 that didn't allow a default value for getbufvar
@@ -1584,31 +1580,31 @@ function! vimwiki#vars#get_bufferlocal(key, ...) abort
endfunction
" Set buffer local variable
function! vimwiki#vars#set_bufferlocal(key, value, ...) abort
" Set buffer local variable
let buffer = a:0 ? a:1 : '%'
call setbufvar(buffer, 'vimwiki_' . a:key, a:value)
endfunction
" Return: wiki global variable
function! vimwiki#vars#get_global(key) abort
" Return: wiki global variable
return g:vimwiki_global_vars[a:key]
endfunction
" Set global variable
function! vimwiki#vars#set_global(key, value) abort
" Set global variable
let g:vimwiki_global_vars[a:key] = a:value
return g:vimwiki_global_vars[a:key]
endfunction
" Return: wiki local named variable
" Param: (1): variable name (alias key, <string>)
" Param: (2): wiki number (<int>). When absent, the wiki of the currently active buffer is
" used
function! vimwiki#vars#get_wikilocal(key, ...) abort
" Return: wiki local named variable
" Param: (1): variable name (alias key, <string>)
" Param: (2): wiki number (<int>). When absent, the wiki of the currently active buffer is
" used
if a:0
return g:vimwiki_wikilocal_vars[a:1][a:key]
else
@@ -1617,16 +1613,16 @@ function! vimwiki#vars#get_wikilocal(key, ...) abort
endfunction
" Return: wiki local variable (of default wiki [index -1])
function! vimwiki#vars#get_wikilocal_default(key) abort
" Return: wiki local variable (of default wiki [index -1])
return g:vimwiki_wikilocal_vars[-1][a:key]
endfunction
" Set local variable
" Param: (2): wiki number (<int>). When absent, the wiki of the currently active buffer is
" used
function! vimwiki#vars#set_wikilocal(key, value, ...) abort
" Set local variable
" Param: (2): wiki number (<int>). When absent, the wiki of the currently active buffer is
" used
if a:0
let wiki_nr = a:1
else
@@ -1639,8 +1635,8 @@ function! vimwiki#vars#set_wikilocal(key, value, ...) abort
endfunction
" Append new wiki to wiki list
function! vimwiki#vars#add_temporary_wiki(settings) abort
" Append new wiki to wiki list
let new_temp_wiki_settings = copy(g:vimwiki_wikilocal_vars[-1])
for [key, value] in items(a:settings)
let new_temp_wiki_settings[key] = value
@@ -1652,7 +1648,7 @@ function! vimwiki#vars#add_temporary_wiki(settings) abort
endfunction
" Return: number of registered wikis + temporary
function! vimwiki#vars#number_of_wikis() abort
" Return: number of registered wikis + temporary
return len(g:vimwiki_wikilocal_vars) - 1
endfunction