Remove foldmarkers; general reformatting
This commit is contained in:
parent
90dc1e5871
commit
c1dbf90c29
@ -1,4 +1,4 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki autoload plugin file
|
||||
" Desc: Basic functionality
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
@ -8,15 +8,15 @@ if exists("g:loaded_vimwiki_auto") || &cp
|
||||
endif
|
||||
let g:loaded_vimwiki_auto = 1
|
||||
|
||||
" s:safesubstitute
|
||||
function! s:safesubstitute(text, search, replace, mode) "{{{
|
||||
|
||||
function! s:safesubstitute(text, search, replace, mode)
|
||||
" Substitute regexp but do not interpret replace
|
||||
let escaped = escape(a:replace, '\&')
|
||||
return substitute(a:text, a:search, escaped, a:mode)
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:vimwiki_get_known_syntaxes
|
||||
function! s:vimwiki_get_known_syntaxes() " {{{
|
||||
|
||||
function! s:vimwiki_get_known_syntaxes()
|
||||
" Getting all syntaxes that different wikis could have
|
||||
let syntaxes = {}
|
||||
let syntaxes['default'] = 1
|
||||
@ -29,21 +29,22 @@ function! s:vimwiki_get_known_syntaxes() " {{{
|
||||
let syntaxes[syn] = 1
|
||||
endfor
|
||||
return keys(syntaxes)
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#file_pattern
|
||||
function! vimwiki#base#file_pattern(files) "{{{ Get search regex from glob()
|
||||
|
||||
function! vimwiki#base#file_pattern(files)
|
||||
" 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, ...).
|
||||
" See: https://github.com/vimwiki-backup/vimwiki/issues/316
|
||||
" Change / to [/\\] to allow "Windows paths"
|
||||
" Change / to [/\\] to allow "Windows paths"
|
||||
return '\V\%('.join(a:files, '\|').'\)\m'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#base#subdir
|
||||
"FIXME TODO slow and faulty
|
||||
function! vimwiki#base#subdir(path, filename) "{{{
|
||||
function! vimwiki#base#subdir(path, filename)
|
||||
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?
|
||||
@ -64,29 +65,28 @@ function! vimwiki#base#subdir(path, filename) "{{{
|
||||
let res = res.'/'
|
||||
endif
|
||||
return res
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#current_subdir
|
||||
function! vimwiki#base#current_subdir()"{{{
|
||||
|
||||
function! vimwiki#base#current_subdir()
|
||||
return vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), expand('%:p'))
|
||||
endfunction"}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#invsubdir
|
||||
function! vimwiki#base#invsubdir(subdir) " {{{
|
||||
|
||||
function! vimwiki#base#invsubdir(subdir)
|
||||
return substitute(a:subdir, '[^/\.]\+/', '../', 'g')
|
||||
endfunction " }}}
|
||||
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) "{{{
|
||||
function! vimwiki#base#find_wiki(path)
|
||||
let path = vimwiki#path#path_norm(vimwiki#path#chomp_slash(a:path))
|
||||
for idx in range(vimwiki#vars#number_of_wikis())
|
||||
let idx_path = expand(vimwiki#vars#get_wikilocal('path', idx))
|
||||
let idx_path = vimwiki#path#path_norm(vimwiki#path#chomp_slash(idx_path))
|
||||
if vimwiki#path#is_equal(
|
||||
\ vimwiki#path#path_common_pfx(idx_path, path), idx_path)
|
||||
if vimwiki#path#is_equal(vimwiki#path#path_common_pfx(idx_path, path), idx_path)
|
||||
return idx
|
||||
endif
|
||||
let idx += 1
|
||||
@ -94,14 +94,14 @@ function! vimwiki#base#find_wiki(path) "{{{
|
||||
|
||||
" an orphan page has been detected
|
||||
return -1
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" THE central function of Vimwiki. Extract infos about the target from a link.
|
||||
" 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, ...) "{{{
|
||||
function! vimwiki#base#resolve_link(link_text, ...)
|
||||
if a:0
|
||||
let source_wiki = vimwiki#base#find_wiki(a:1)
|
||||
let source_file = a:1
|
||||
@ -138,8 +138,7 @@ function! vimwiki#base#resolve_link(link_text, ...) "{{{
|
||||
endif
|
||||
let link_text = matchstr(link_text, vimwiki#vars#get_global('rxSchemeUrlMatchUrl'))
|
||||
|
||||
let is_wiki_link = link_infos.scheme =~# '\mwiki\d\+' ||
|
||||
\ link_infos.scheme ==# 'diary'
|
||||
let is_wiki_link = link_infos.scheme =~# '\mwiki\d\+' || link_infos.scheme ==# 'diary'
|
||||
|
||||
" extract anchor
|
||||
if is_wiki_link
|
||||
@ -198,8 +197,7 @@ function! vimwiki#base#resolve_link(link_text, ...) "{{{
|
||||
\ vimwiki#vars#get_wikilocal('diary_rel_path', link_infos.index) .
|
||||
\ link_text .
|
||||
\ vimwiki#vars#get_wikilocal('ext', link_infos.index)
|
||||
elseif (link_infos.scheme ==# 'file' || link_infos.scheme ==# 'local')
|
||||
\ && is_relative
|
||||
elseif (link_infos.scheme ==# 'file' || link_infos.scheme ==# 'local') && is_relative
|
||||
let link_infos.filename = simplify(root_dir . link_text)
|
||||
else " absolute file link
|
||||
" collapse repeated leading "/"'s within a link
|
||||
@ -211,11 +209,10 @@ function! vimwiki#base#resolve_link(link_text, ...) "{{{
|
||||
|
||||
let link_infos.filename = vimwiki#path#normalize(link_infos.filename)
|
||||
return link_infos
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#base#system_open_link
|
||||
function! vimwiki#base#system_open_link(url) "{{{
|
||||
function! vimwiki#base#system_open_link(url)
|
||||
" handlers
|
||||
function! s:win32_handler(url)
|
||||
"http://vim.wikia.com/wiki/Opening_current_Vim_file_in_your_Windows_browser
|
||||
@ -255,10 +252,10 @@ function! vimwiki#base#system_open_link(url) "{{{
|
||||
endif
|
||||
endtry
|
||||
echomsg 'Vimwiki Error: Default Vimwiki link handler was unable to open the HTML file!'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#open_link
|
||||
function! vimwiki#base#open_link(cmd, link, ...) "{{{
|
||||
|
||||
function! vimwiki#base#open_link(cmd, link, ...)
|
||||
let link_infos = {}
|
||||
if a:0
|
||||
let link_infos = vimwiki#base#resolve_link(a:link, a:1)
|
||||
@ -271,8 +268,7 @@ function! vimwiki#base#open_link(cmd, link, ...) "{{{
|
||||
return
|
||||
endif
|
||||
|
||||
let is_wiki_link = link_infos.scheme =~# '\mwiki\d\+'
|
||||
\ || link_infos.scheme =~# 'diary'
|
||||
let is_wiki_link = link_infos.scheme =~# '\mwiki\d\+' || link_infos.scheme =~# 'diary'
|
||||
|
||||
let update_prev_link = is_wiki_link &&
|
||||
\ !vimwiki#path#is_equal(link_infos.filename, vimwiki#path#current_wiki_file())
|
||||
@ -294,14 +290,15 @@ function! vimwiki#base#open_link(cmd, link, ...) "{{{
|
||||
else
|
||||
call vimwiki#base#system_open_link(link_infos.filename)
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#get_globlinks_escaped
|
||||
function! vimwiki#base#get_globlinks_escaped() abort "{{{only get links from the current dir
|
||||
|
||||
function! vimwiki#base#get_globlinks_escaped() abort
|
||||
" only get links from the current dir
|
||||
" change to the directory of the current file
|
||||
let orig_pwd = getcwd()
|
||||
lcd! %:h
|
||||
" all path are relative to the current file's location
|
||||
" all path are relative to the current file's location
|
||||
let globlinks = glob('*'.vimwiki#vars#get_wikilocal('ext'), 1)."\n"
|
||||
" remove extensions
|
||||
let globlinks = substitute(globlinks, '\'.vimwiki#vars#get_wikilocal('ext').'\ze\n', '', 'g')
|
||||
@ -315,17 +312,16 @@ function! vimwiki#base#get_globlinks_escaped() abort "{{{only get links from the
|
||||
let globlinks = join(lst, "\n")
|
||||
" return all escaped links as a single newline-separated string
|
||||
return globlinks
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#generate_links
|
||||
function! vimwiki#base#generate_links() "{{{
|
||||
|
||||
function! vimwiki#base#generate_links()
|
||||
let lines = []
|
||||
|
||||
let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0)
|
||||
call sort(links)
|
||||
|
||||
let bullet = repeat(' ', vimwiki#lst#get_list_margin()).
|
||||
\ vimwiki#lst#default_symbol().' '
|
||||
let bullet = repeat(' ', vimwiki#lst#get_list_margin()) . vimwiki#lst#default_symbol().' '
|
||||
for link in links
|
||||
let abs_filepath = vimwiki#path#abs_path_of_link(link)
|
||||
if !s:is_diary_file(abs_filepath)
|
||||
@ -337,22 +333,21 @@ function! vimwiki#base#generate_links() "{{{
|
||||
|
||||
let links_rx = '\m^\s*'.vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
|
||||
|
||||
call vimwiki#base#update_listing_in_buffer(lines, 'Generated Links', links_rx,
|
||||
\ line('$')+1, 1)
|
||||
endfunction " }}}
|
||||
call vimwiki#base#update_listing_in_buffer(lines, 'Generated Links', links_rx, line('$')+1, 1)
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#goto
|
||||
function! vimwiki#base#goto(...) "{{{
|
||||
|
||||
function! vimwiki#base#goto(...)
|
||||
let key = a:1
|
||||
let anchor = a:0 > 1 ? a:2 : ''
|
||||
|
||||
call vimwiki#base#edit_file(':e',
|
||||
\ vimwiki#vars#get_wikilocal('path') . key . vimwiki#vars#get_wikilocal('ext'),
|
||||
\ anchor)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#backlinks
|
||||
function! vimwiki#base#backlinks() "{{{
|
||||
|
||||
function! vimwiki#base#backlinks()
|
||||
let current_filename = expand("%:p")
|
||||
let locations = []
|
||||
for idx in range(vimwiki#vars#number_of_wikis())
|
||||
@ -376,7 +371,8 @@ function! vimwiki#base#backlinks() "{{{
|
||||
call setloclist(0, locations, 'r')
|
||||
lopen
|
||||
endif
|
||||
endfunction "}}}
|
||||
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
|
||||
@ -386,7 +382,8 @@ function! vimwiki#base#find_files(wiki_nr, directories_only)
|
||||
if wiki_nr >= 0
|
||||
let root_directory = vimwiki#vars#get_wikilocal('path', wiki_nr)
|
||||
else
|
||||
let root_directory = vimwiki#vars#get_wikilocal('path') . vimwiki#vars#get_wikilocal('diary_rel_path')
|
||||
let root_directory = vimwiki#vars#get_wikilocal('path') .
|
||||
\ vimwiki#vars#get_wikilocal('diary_rel_path')
|
||||
let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr')
|
||||
endif
|
||||
if a:directories_only
|
||||
@ -405,6 +402,7 @@ function! vimwiki#base#find_files(wiki_nr, directories_only)
|
||||
return split(globpath(root_directory, pattern), '\n')
|
||||
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.
|
||||
@ -439,6 +437,7 @@ function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links)
|
||||
return result
|
||||
endfunction
|
||||
|
||||
|
||||
" Returns: a list containing the links to all directories from the current file
|
||||
function! vimwiki#base#get_wiki_directories(wiki_nr)
|
||||
let dirs = vimwiki#base#find_files(a:wiki_nr, 1)
|
||||
@ -460,7 +459,8 @@ function! vimwiki#base#get_wiki_directories(wiki_nr)
|
||||
return result
|
||||
endfunction
|
||||
|
||||
function! vimwiki#base#get_anchors(filename, syntax) "{{{
|
||||
|
||||
function! vimwiki#base#get_anchors(filename, syntax)
|
||||
if !filereadable(a:filename)
|
||||
return []
|
||||
endif
|
||||
@ -531,10 +531,10 @@ function! vimwiki#base#get_anchors(filename, syntax) "{{{
|
||||
endfor
|
||||
|
||||
return anchors
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" s:jump_to_anchor
|
||||
function! s:jump_to_anchor(anchor) "{{{
|
||||
|
||||
function! s:jump_to_anchor(anchor)
|
||||
let oldpos = getpos('.')
|
||||
call cursor(1, 1)
|
||||
|
||||
@ -554,21 +554,20 @@ function! s:jump_to_anchor(anchor) "{{{
|
||||
\ vimwiki#vars#get_syntaxlocal('tag_match'),
|
||||
\ '__Tag__', segment, '')
|
||||
|
||||
if !search(anchor_tag, 'Wc')
|
||||
\ && !search(anchor_header, 'Wc')
|
||||
\ && !search(anchor_bold, 'Wc')
|
||||
if !search(anchor_tag, 'Wc') && !search(anchor_header, 'Wc') && !search(anchor_bold, 'Wc')
|
||||
call setpos('.', oldpos)
|
||||
break
|
||||
endif
|
||||
let oldpos = getpos('.')
|
||||
endfor
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Params: full path to a wiki file and its wiki number
|
||||
" Returns: a list of all links inside the wiki file
|
||||
" 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) "{{{
|
||||
function! s:get_links(wikifile, idx)
|
||||
if !filereadable(a:wikifile)
|
||||
return []
|
||||
endif
|
||||
@ -590,17 +589,17 @@ function! s:get_links(wikifile, idx) "{{{
|
||||
endif
|
||||
let link_count += 1
|
||||
let target = vimwiki#base#resolve_link(link_text, a:wikifile)
|
||||
if target.filename != '' &&
|
||||
\ target.scheme =~# '\mwiki\d\+\|diary\|file\|local'
|
||||
if target.filename != '' && target.scheme =~# '\mwiki\d\+\|diary\|file\|local'
|
||||
call add(links, [target.filename, target.anchor, lnum, col])
|
||||
endif
|
||||
endwhile
|
||||
endfor
|
||||
|
||||
return links
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#base#check_links() "{{{
|
||||
|
||||
function! vimwiki#base#check_links()
|
||||
let anchors_of_files = {}
|
||||
let links_of_files = {}
|
||||
let errors = []
|
||||
@ -659,8 +658,8 @@ function! vimwiki#base#check_links() "{{{
|
||||
|
||||
" mark every index file as reachable
|
||||
for idx in range(vimwiki#vars#number_of_wikis())
|
||||
let index_file = vimwiki#vars#get_wikilocal('path', idx) . vimwiki#vars#get_wikilocal('index', idx) .
|
||||
\ vimwiki#vars#get_wikilocal('ext', idx)
|
||||
let index_file = vimwiki#vars#get_wikilocal('path', idx) .
|
||||
\ vimwiki#vars#get_wikilocal('index', idx) . vimwiki#vars#get_wikilocal('ext', idx)
|
||||
if filereadable(index_file)
|
||||
let reachable_wikifiles[index_file] = 1
|
||||
endif
|
||||
@ -697,10 +696,10 @@ function! vimwiki#base#check_links() "{{{
|
||||
call setqflist(errors, 'r')
|
||||
copen
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#edit_file
|
||||
function! vimwiki#base#edit_file(command, filename, anchor, ...) "{{{
|
||||
|
||||
function! vimwiki#base#edit_file(command, filename, anchor, ...)
|
||||
let fname = escape(a:filename, '% *|#`')
|
||||
let dir = fnamemodify(a:filename, ":p:h")
|
||||
|
||||
@ -751,19 +750,19 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) "{{{
|
||||
if a:0 && a:2 && len(a:1) > 0
|
||||
call vimwiki#vars#set_bufferlocal('prev_link', a:1)
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#search_word
|
||||
function! vimwiki#base#search_word(wikiRx, cmd) "{{{
|
||||
|
||||
function! vimwiki#base#search_word(wikiRx, cmd)
|
||||
let match_line = search(a:wikiRx, 's'.a:cmd)
|
||||
if match_line == 0
|
||||
echomsg 'Vimwiki: Wiki link not found'
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#base#matchstr_at_cursor
|
||||
" Returns part of the line that matches wikiRX at cursor
|
||||
function! vimwiki#base#matchstr_at_cursor(wikiRX) "{{{
|
||||
function! vimwiki#base#matchstr_at_cursor(wikiRX)
|
||||
let col = col('.') - 1
|
||||
let line = getline('.')
|
||||
let ebeg = -1
|
||||
@ -783,10 +782,10 @@ function! vimwiki#base#matchstr_at_cursor(wikiRX) "{{{
|
||||
else
|
||||
return ""
|
||||
endif
|
||||
endf "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#replacestr_at_cursor
|
||||
function! vimwiki#base#replacestr_at_cursor(wikiRX, sub) "{{{
|
||||
|
||||
function! vimwiki#base#replacestr_at_cursor(wikiRX, sub)
|
||||
let col = col('.') - 1
|
||||
let line = getline('.')
|
||||
let ebeg = -1
|
||||
@ -806,10 +805,10 @@ function! vimwiki#base#replacestr_at_cursor(wikiRX, sub) "{{{
|
||||
let newline = strpart(line, 0, ebeg).a:sub.strpart(line, ebeg+elen)
|
||||
call setline(line('.'), newline)
|
||||
endif
|
||||
endf "}}}
|
||||
endfunction
|
||||
|
||||
" s:print_wiki_list
|
||||
function! s:print_wiki_list() "{{{
|
||||
|
||||
function! s:print_wiki_list()
|
||||
let idx = 0
|
||||
while idx < vimwiki#vars#number_of_wikis()
|
||||
if idx == vimwiki#vars#get_bufferlocal('wiki_nr')
|
||||
@ -823,10 +822,10 @@ function! s:print_wiki_list() "{{{
|
||||
let idx += 1
|
||||
endwhile
|
||||
echohl None
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:update_wiki_link
|
||||
function! s:update_wiki_link(fname, old, new) " {{{
|
||||
|
||||
function! s:update_wiki_link(fname, old, new)
|
||||
echo "Updating links in ".a:fname
|
||||
let has_updates = 0
|
||||
let dest = []
|
||||
@ -843,32 +842,33 @@ function! s:update_wiki_link(fname, old, new) " {{{
|
||||
call writefile(dest, a:fname)
|
||||
call delete(a:fname.'#vimwiki_upd#')
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:update_wiki_links_dir
|
||||
function! s:update_wiki_links_dir(dir, old_fname, new_fname) " {{{
|
||||
|
||||
function! s:update_wiki_links_dir(dir, old_fname, new_fname)
|
||||
let old_fname = substitute(a:old_fname, '[/\\]', '[/\\\\]', 'g')
|
||||
let new_fname = a:new_fname
|
||||
|
||||
let old_fname_r = vimwiki#base#apply_template(
|
||||
\ vimwiki#vars#get_syntaxlocal('WikiLinkMatchUrlTemplate'), old_fname, '', '')
|
||||
|
||||
let files = split(glob(vimwiki#vars#get_wikilocal('path').a:dir.'*'.vimwiki#vars#get_wikilocal('ext')), '\n')
|
||||
let files = split(glob(vimwiki#vars#get_wikilocal('path').a:dir.'*'.
|
||||
\ vimwiki#vars#get_wikilocal('ext')), '\n')
|
||||
for fname in files
|
||||
call s:update_wiki_link(fname, old_fname_r, new_fname)
|
||||
endfor
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:tail_name
|
||||
function! s:tail_name(fname) "{{{
|
||||
|
||||
function! s:tail_name(fname)
|
||||
let result = substitute(a:fname, ":", "__colon__", "g")
|
||||
let result = fnamemodify(result, ":t:r")
|
||||
let result = substitute(result, "__colon__", ":", "g")
|
||||
return result
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" s:update_wiki_links
|
||||
function! s:update_wiki_links(old_fname, new_fname) " {{{
|
||||
|
||||
function! s:update_wiki_links(old_fname, new_fname)
|
||||
let old_fname = a:old_fname
|
||||
let new_fname = a:new_fname
|
||||
|
||||
@ -894,14 +894,13 @@ function! s:update_wiki_links(old_fname, new_fname) " {{{
|
||||
while idx < len(dirs_keys)
|
||||
let dir = dirs_keys[idx]
|
||||
let new_dir = dirs_vals[idx]
|
||||
call s:update_wiki_links_dir(dir,
|
||||
\ new_dir.old_fname, new_dir.new_fname)
|
||||
call s:update_wiki_links_dir(dir, new_dir.old_fname, new_dir.new_fname)
|
||||
let idx = idx + 1
|
||||
endwhile
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:get_wiki_buffers
|
||||
function! s:get_wiki_buffers() "{{{
|
||||
|
||||
function! s:get_wiki_buffers()
|
||||
let blist = []
|
||||
let bcount = 1
|
||||
while bcount<=bufnr("$")
|
||||
@ -917,18 +916,18 @@ function! s:get_wiki_buffers() "{{{
|
||||
let bcount = bcount + 1
|
||||
endwhile
|
||||
return blist
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:open_wiki_buffer
|
||||
function! s:open_wiki_buffer(item) "{{{
|
||||
|
||||
function! s:open_wiki_buffer(item)
|
||||
call vimwiki#base#edit_file(':e', a:item[0], '')
|
||||
if !empty(a:item[1])
|
||||
call vimwiki#vars#set_bufferlocal('prev_link', a:item[1], a:item[0])
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#nested_syntax
|
||||
function! vimwiki#base#nested_syntax(filetype, start, end, textSnipHl) abort "{{{
|
||||
|
||||
function! vimwiki#base#nested_syntax(filetype, start, end, textSnipHl) abort
|
||||
" From http://vim.wikia.com/wiki/VimTip857
|
||||
let ft=toupper(a:filetype)
|
||||
let group='textGroup'.ft
|
||||
@ -975,14 +974,15 @@ function! vimwiki#base#nested_syntax(filetype, start, end, textSnipHl) abort "{{
|
||||
" regular one.
|
||||
" Perl syntax file has perlFunctionName which is usually has no effect due to
|
||||
" 'contained' flag. Now we have 'syntax include' that makes all the groups
|
||||
" included as 'contained' into specific group.
|
||||
" included as 'contained' into specific group.
|
||||
" Here perlFunctionName (with quite an angry regexp "\h\w*[^:]") clashes with
|
||||
" the rest syntax rules as now it has effect being really 'contained'.
|
||||
" Clear it!
|
||||
if ft =~? 'perl'
|
||||
syntax clear perlFunctionName
|
||||
syntax clear perlFunctionName
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" creates or updates auto-generated listings in a wiki file, like TOC, diary
|
||||
" links, tags list etc.
|
||||
@ -993,7 +993,7 @@ endfunction "}}}
|
||||
" - if a:create is true, it will be created if it doesn't exist, otherwise it
|
||||
" will only be updated if it already exists
|
||||
function! vimwiki#base#update_listing_in_buffer(strings, start_header,
|
||||
\ content_regex, default_lnum, create) "{{{
|
||||
\ content_regex, default_lnum, create)
|
||||
" apparently, Vim behaves strange when files change while in diff mode
|
||||
if &diff || &readonly
|
||||
return
|
||||
@ -1002,9 +1002,8 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header,
|
||||
" check if the listing is already there
|
||||
let already_there = 0
|
||||
|
||||
let header_rx = '\m^\s*'.
|
||||
\ substitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'), '__Header__', a:start_header, '')
|
||||
\ .'\s*$'
|
||||
let header_rx = '\m^\s*'.substitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'),
|
||||
\ '__Header__', a:start_header, '') .'\s*$'
|
||||
|
||||
let start_lnum = 1
|
||||
while start_lnum <= line('$')
|
||||
@ -1080,27 +1079,26 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header,
|
||||
let winview_save.lnum += lines_diff
|
||||
endif
|
||||
call winrestview(winview_save)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" WIKI link following functions {{{
|
||||
" vimwiki#base#find_next_link
|
||||
function! vimwiki#base#find_next_link() "{{{
|
||||
|
||||
function! vimwiki#base#find_next_link()
|
||||
call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), '')
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#find_prev_link
|
||||
function! vimwiki#base#find_prev_link() "{{{
|
||||
|
||||
function! vimwiki#base#find_prev_link()
|
||||
"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.*"
|
||||
call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b')
|
||||
endif
|
||||
call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b')
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#base#follow_link
|
||||
" This is an API function, that is, remappable by the user. Don't change the signature.
|
||||
function! vimwiki#base#follow_link(split, reuse, move_cursor, ...) "{{{
|
||||
function! vimwiki#base#follow_link(split, reuse, move_cursor, ...)
|
||||
" Parse link at cursor and pass to VimwikiLinkHandler, or failing that, the
|
||||
" default open_link handler
|
||||
|
||||
@ -1171,14 +1169,14 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...) "{{{
|
||||
else
|
||||
if a:0 > 0
|
||||
execute "normal! ".a:1
|
||||
else
|
||||
else
|
||||
call vimwiki#base#normalize_link(0)
|
||||
endif
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#go_back_link
|
||||
function! vimwiki#base#go_back_link() "{{{
|
||||
|
||||
function! vimwiki#base#go_back_link()
|
||||
let prev_link = vimwiki#vars#get_bufferlocal('prev_link')
|
||||
if !empty(prev_link)
|
||||
" go back to saved wiki link
|
||||
@ -1188,10 +1186,10 @@ function! vimwiki#base#go_back_link() "{{{
|
||||
" maybe we came here by jumping to a tag -> pop from the tag stack
|
||||
silent! pop!
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#goto_index
|
||||
function! vimwiki#base#goto_index(wnum, ...) "{{{
|
||||
|
||||
function! vimwiki#base#goto_index(wnum, ...)
|
||||
if a:wnum > vimwiki#vars#number_of_wikis()
|
||||
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in your Vimwiki settings!'
|
||||
return
|
||||
@ -1222,12 +1220,11 @@ function! vimwiki#base#goto_index(wnum, ...) "{{{
|
||||
\ vimwiki#vars#get_wikilocal('ext', idx)
|
||||
|
||||
call vimwiki#base#edit_file(cmd, index_file, '')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#delete_link
|
||||
function! vimwiki#base#delete_link() "{{{
|
||||
"" file system funcs
|
||||
"" Delete wiki link you are in from filesystem
|
||||
|
||||
function! vimwiki#base#delete_link()
|
||||
" Delete wiki file you are in from filesystem
|
||||
let val = input('Delete "'.expand('%').'" [y]es/[N]o? ')
|
||||
if val !~? '^y'
|
||||
return
|
||||
@ -1247,11 +1244,11 @@ function! vimwiki#base#delete_link() "{{{
|
||||
if expand('%:p') != ""
|
||||
execute "e"
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#base#rename_link
|
||||
" Rename current file, update all links to it
|
||||
function! vimwiki#base#rename_link() "{{{
|
||||
function! vimwiki#base#rename_link()
|
||||
let subdir = vimwiki#vars#get_bufferlocal('subdir')
|
||||
let old_fname = subdir.expand('%:t')
|
||||
|
||||
@ -1285,15 +1282,14 @@ function! vimwiki#base#rename_link() "{{{
|
||||
if url != ''
|
||||
let new_link = url
|
||||
endif
|
||||
|
||||
|
||||
let new_link = subdir.new_link
|
||||
let new_fname = vimwiki#vars#get_wikilocal('path') . new_link . vimwiki#vars#get_wikilocal('ext')
|
||||
|
||||
" do not rename if file with such name exists
|
||||
let fname = glob(new_fname)
|
||||
if fname != ''
|
||||
echomsg 'Vimwiki Error: Cannot rename to "'.new_fname.
|
||||
\ '". File with that name exist!'
|
||||
echomsg 'Vimwiki Error: Cannot rename to "'.new_fname.'". File with that name exist!'
|
||||
return
|
||||
endif
|
||||
" rename wiki link file
|
||||
@ -1310,8 +1306,7 @@ function! vimwiki#base#rename_link() "{{{
|
||||
|
||||
let &buftype="nofile"
|
||||
|
||||
let cur_buffer = [expand('%:p'),
|
||||
\ vimwiki#vars#get_bufferlocal('prev_link')]
|
||||
let cur_buffer = [expand('%:p'), vimwiki#vars#get_bufferlocal('prev_link')]
|
||||
|
||||
let blist = s:get_wiki_buffers()
|
||||
|
||||
@ -1341,27 +1336,24 @@ function! vimwiki#base#rename_link() "{{{
|
||||
endif
|
||||
endfor
|
||||
|
||||
call s:open_wiki_buffer([new_fname,
|
||||
\ cur_buffer[1]])
|
||||
call s:open_wiki_buffer([new_fname, cur_buffer[1]])
|
||||
" execute 'bwipeout '.escape(cur_buffer[0], ' ')
|
||||
|
||||
echomsg 'Vimwiki: '.old_fname.' is renamed to '.new_fname
|
||||
|
||||
let &more = setting_more
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#ui_select
|
||||
function! vimwiki#base#ui_select() "{{{
|
||||
|
||||
function! vimwiki#base#ui_select()
|
||||
call s:print_wiki_list()
|
||||
let idx = input("Select Wiki (specify number): ")
|
||||
if idx == ""
|
||||
return
|
||||
endif
|
||||
call vimwiki#base#goto_index(idx)
|
||||
endfunction "}}}
|
||||
" }}}
|
||||
endfunction
|
||||
|
||||
" TEXT OBJECTS functions {{{
|
||||
|
||||
function! vimwiki#base#TO_header(inner, including_subheaders, count)
|
||||
let headers = s:collect_headers()
|
||||
@ -1416,8 +1408,7 @@ function! vimwiki#base#TO_header(inner, including_subheaders, count)
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#base#TO_table_cell
|
||||
function! vimwiki#base#TO_table_cell(inner, visual) "{{{
|
||||
function! vimwiki#base#TO_table_cell(inner, visual)
|
||||
if col('.') == col('$')-1
|
||||
return
|
||||
endif
|
||||
@ -1461,7 +1452,7 @@ function! vimwiki#base#TO_table_cell(inner, visual) "{{{
|
||||
|
||||
" XXX: WORKAROUND.
|
||||
" if blockwise selection is ended at | character then pressing j to extend
|
||||
" selection furhter fails. But if we shake the cursor left and right then
|
||||
" selection further fails. But if we shake the cursor left and right then
|
||||
" it works.
|
||||
normal! hl
|
||||
else
|
||||
@ -1479,10 +1470,10 @@ function! vimwiki#base#TO_table_cell(inner, visual) "{{{
|
||||
normal! 2h
|
||||
endif
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#TO_table_col
|
||||
function! vimwiki#base#TO_table_col(inner, visual) "{{{
|
||||
|
||||
function! vimwiki#base#TO_table_col(inner, visual)
|
||||
let t_rows = vimwiki#tbl#get_rows(line('.'))
|
||||
if empty(t_rows)
|
||||
return
|
||||
@ -1594,12 +1585,10 @@ function! vimwiki#base#TO_table_col(inner, visual) "{{{
|
||||
" expand selection to the bottom line of the table
|
||||
call vimwiki#u#cursor(t_rows[-1][0], virtcol('.'))
|
||||
endif
|
||||
endfunction "}}}
|
||||
" }}}
|
||||
endfunction
|
||||
|
||||
" HEADER functions {{{
|
||||
" vimwiki#base#AddHeaderLevel
|
||||
function! vimwiki#base#AddHeaderLevel() "{{{
|
||||
|
||||
function! vimwiki#base#AddHeaderLevel()
|
||||
let lnum = line('.')
|
||||
let line = getline(lnum)
|
||||
let rxHdr = vimwiki#vars#get_syntaxlocal('rxH')
|
||||
@ -1618,16 +1607,16 @@ function! vimwiki#base#AddHeaderLevel() "{{{
|
||||
call setline(lnum, line)
|
||||
endif
|
||||
else
|
||||
let line = substitute(line, '^\s*', '&'.rxHdr.' ', '')
|
||||
let line = substitute(line, '^\s*', '&'.rxHdr.' ', '')
|
||||
if vimwiki#vars#get_syntaxlocal('symH')
|
||||
let line = substitute(line, '\s*$', ' '.rxHdr.'&', '')
|
||||
endif
|
||||
call setline(lnum, line)
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#RemoveHeaderLevel
|
||||
function! vimwiki#base#RemoveHeaderLevel() "{{{
|
||||
|
||||
function! vimwiki#base#RemoveHeaderLevel()
|
||||
let lnum = line('.')
|
||||
let line = getline(lnum)
|
||||
let rxHdr = vimwiki#vars#get_syntaxlocal('rxH')
|
||||
@ -1657,7 +1646,8 @@ function! vimwiki#base#RemoveHeaderLevel() "{{{
|
||||
|
||||
call setline(lnum, line)
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
|
||||
" Returns all the headers in the current buffer as a list of the form
|
||||
@ -1687,7 +1677,8 @@ function! s:collect_headers()
|
||||
continue
|
||||
endif
|
||||
let header_level = vimwiki#u#count_first_sym(line_content)
|
||||
let header_text = vimwiki#u#trim(matchstr(line_content, vimwiki#vars#get_syntaxlocal('rxHeader')))
|
||||
let header_text =
|
||||
\ vimwiki#u#trim(matchstr(line_content, vimwiki#vars#get_syntaxlocal('rxHeader')))
|
||||
call add(headers, [lnum, header_level, header_text])
|
||||
endfor
|
||||
|
||||
@ -1774,7 +1765,8 @@ endfunction
|
||||
function! vimwiki#base#goto_sibling(direction)
|
||||
let headers = s:collect_headers()
|
||||
let current_header_index = s:current_header(headers, line('.'))
|
||||
let next_potential_sibling = s:get_another_header(headers, current_header_index, a:direction, '<=')
|
||||
let next_potential_sibling =
|
||||
\ s:get_another_header(headers, current_header_index, a:direction, '<=')
|
||||
if next_potential_sibling >= 0 && headers[next_potential_sibling][1] ==
|
||||
\ headers[current_header_index][1]
|
||||
call cursor(headers[next_potential_sibling][0], 1)
|
||||
@ -1832,19 +1824,17 @@ function! vimwiki#base#table_of_contents(create)
|
||||
|
||||
let links_rx = '\m^\s*'.vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
|
||||
|
||||
call vimwiki#base#update_listing_in_buffer(lines, vimwiki#vars#get_global('toc_header'), links_rx,
|
||||
\ 1, a:create)
|
||||
call vimwiki#base#update_listing_in_buffer(lines,
|
||||
\ vimwiki#vars#get_global('toc_header'), links_rx, 1, a:create)
|
||||
endfunction
|
||||
"}}}
|
||||
|
||||
" LINK functions {{{
|
||||
" vimwiki#base#apply_template
|
||||
|
||||
" Construct a regular expression matching from template (with special
|
||||
" characters properly escaped), by substituting rxUrl for __LinkUrl__, rxDesc
|
||||
" for __LinkDescription__, and rxStyle for __LinkStyle__. The three
|
||||
" arguments rxUrl, rxDesc, and rxStyle are copied verbatim, without any
|
||||
" special character escapes or substitutions.
|
||||
function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle) "{{{
|
||||
function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle)
|
||||
let lnk = a:template
|
||||
if a:rxUrl != ""
|
||||
let lnk = s:safesubstitute(lnk, '__LinkUrl__', a:rxUrl, 'g')
|
||||
@ -1856,10 +1846,10 @@ function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle) "{{{
|
||||
let lnk = s:safesubstitute(lnk, '__LinkStyle__', a:rxStyle, 'g')
|
||||
endif
|
||||
return lnk
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:clean_url
|
||||
function! s:clean_url(url) " {{{
|
||||
|
||||
function! s:clean_url(url)
|
||||
let url = split(a:url, '/\|=\|-\|&\|?\|\.')
|
||||
let url = filter(url, 'v:val !=# ""')
|
||||
let url = filter(url, 'v:val !=# "www"')
|
||||
@ -1872,19 +1862,18 @@ function! s:clean_url(url) " {{{
|
||||
let url = filter(url, 'v:val !=# "file\:"')
|
||||
let url = filter(url, 'v:val !=# "xml\:"')
|
||||
return join(url, " ")
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:is_diary_file
|
||||
function! s:is_diary_file(filename) " {{{
|
||||
|
||||
function! s:is_diary_file(filename)
|
||||
let file_path = vimwiki#path#path_norm(a:filename)
|
||||
let rel_path = vimwiki#vars#get_wikilocal('diary_rel_path')
|
||||
let diary_path = vimwiki#path#path_norm(vimwiki#vars#get_wikilocal('path') . rel_path)
|
||||
return rel_path != ''
|
||||
\ && file_path =~# '^'.vimwiki#u#escape(diary_path)
|
||||
endfunction " }}}
|
||||
return rel_path != '' && file_path =~# '^'.vimwiki#u#escape(diary_path)
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#normalize_link_helper
|
||||
function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) " {{{
|
||||
|
||||
function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template)
|
||||
let url = matchstr(a:str, a:rxUrl)
|
||||
let descr = matchstr(a:str, a:rxDesc)
|
||||
if descr == ""
|
||||
@ -1893,18 +1882,18 @@ function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) " {{{
|
||||
let lnk = s:safesubstitute(a:template, '__LinkDescription__', descr, '')
|
||||
let lnk = s:safesubstitute(lnk, '__LinkUrl__', url, '')
|
||||
return lnk
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#normalize_imagelink_helper
|
||||
function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, template) "{{{
|
||||
|
||||
function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, template)
|
||||
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, '')
|
||||
return lnk
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:normalize_link_in_diary
|
||||
function! s:normalize_link_in_diary(lnk) " {{{
|
||||
|
||||
function! s:normalize_link_in_diary(lnk)
|
||||
let link = a:lnk . vimwiki#vars#get_wikilocal('ext')
|
||||
let link_wiki = vimwiki#vars#get_wikilocal('path') . '/' . link
|
||||
let link_diary = vimwiki#vars#get_wikilocal('path') . '/'
|
||||
@ -1927,21 +1916,22 @@ function! s:normalize_link_in_diary(lnk) " {{{
|
||||
endif
|
||||
|
||||
return vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template)
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:normalize_link_syntax_n
|
||||
function! s:normalize_link_syntax_n() " {{{
|
||||
|
||||
function! s:normalize_link_syntax_n()
|
||||
|
||||
" try WikiLink
|
||||
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink'))
|
||||
if !empty(lnk)
|
||||
let sub = vimwiki#base#normalize_link_helper(lnk,
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
|
||||
\ vimwiki#vars#get_global('WikiLinkTemplate2'))
|
||||
call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink'), sub)
|
||||
return
|
||||
endif
|
||||
|
||||
|
||||
" try WikiIncl
|
||||
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiIncl'))
|
||||
if !empty(lnk)
|
||||
@ -1974,10 +1964,10 @@ function! s:normalize_link_syntax_n() " {{{
|
||||
return
|
||||
endif
|
||||
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:normalize_link_syntax_v
|
||||
function! s:normalize_link_syntax_v() " {{{
|
||||
|
||||
function! s:normalize_link_syntax_v()
|
||||
let sel_save = &selection
|
||||
let &selection = "old"
|
||||
let default_register_save = @"
|
||||
@ -2002,10 +1992,10 @@ function! s:normalize_link_syntax_v() " {{{
|
||||
call setreg('"', default_register_save, registertype_save)
|
||||
let &selection = sel_save
|
||||
endtry
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#normalize_link
|
||||
function! vimwiki#base#normalize_link(is_visual_mode) "{{{
|
||||
|
||||
function! vimwiki#base#normalize_link(is_visual_mode)
|
||||
if exists('*vimwiki#'.vimwiki#vars#get_wikilocal('syntax').'_base#normalize_link')
|
||||
" Syntax-specific links
|
||||
call vimwiki#{vimwiki#vars#get_wikilocal('syntax')}_base#normalize_link(a:is_visual_mode)
|
||||
@ -2017,10 +2007,10 @@ function! vimwiki#base#normalize_link(is_visual_mode) "{{{
|
||||
call s:normalize_link_syntax_v()
|
||||
endif
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#detect_nested_syntax
|
||||
function! vimwiki#base#detect_nested_syntax() "{{{
|
||||
|
||||
function! vimwiki#base#detect_nested_syntax()
|
||||
let last_word = '\v.*<(\w+)\s*$'
|
||||
let lines = map(filter(getline(1, "$"), 'v:val =~ "\\%({{{\\|```\\)" && v:val =~ last_word'),
|
||||
\ 'substitute(v:val, last_word, "\\=submatch(1)", "")')
|
||||
@ -2029,26 +2019,20 @@ function! vimwiki#base#detect_nested_syntax() "{{{
|
||||
let dict[elem] = elem
|
||||
endfor
|
||||
return dict
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" Command completion functions {{{
|
||||
|
||||
" vimwiki#base#complete_links_escaped
|
||||
function! vimwiki#base#complete_links_escaped(ArgLead, CmdLine, CursorPos) abort " {{{
|
||||
function! vimwiki#base#complete_links_escaped(ArgLead, CmdLine, CursorPos) abort
|
||||
" We can safely ignore args if we use -custom=complete option, Vim engine
|
||||
" will do the job of filtering.
|
||||
return vimwiki#base#get_globlinks_escaped()
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
"}}}
|
||||
|
||||
" -------------------------------------------------------------------------
|
||||
" Load syntax-specific Wiki functionality
|
||||
for s:syn in s:vimwiki_get_known_syntaxes()
|
||||
execute 'runtime! autoload/vimwiki/'.s:syn.'_base.vim'
|
||||
endfor
|
||||
endfor
|
||||
" -------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@ -1,44 +1,49 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki autoload plugin file
|
||||
" Desc: Handle diary notes
|
||||
" Description: Handle diary notes
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
" Load only once {{{
|
||||
|
||||
if exists("g:loaded_vimwiki_diary_auto") || &cp
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimwiki_diary_auto = 1
|
||||
"}}}
|
||||
|
||||
|
||||
let s:vimwiki_max_scan_for_caption = 5
|
||||
|
||||
" Helpers {{{
|
||||
function! s:prefix_zero(num) "{{{
|
||||
|
||||
function! s:prefix_zero(num)
|
||||
if a:num < 10
|
||||
return '0'.a:num
|
||||
endif
|
||||
return a:num
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:diary_path(...) "{{{
|
||||
|
||||
function! s:diary_path(...)
|
||||
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 "}}}
|
||||
endfunction
|
||||
|
||||
function! s:diary_index(...) "{{{
|
||||
|
||||
function! s:diary_index(...)
|
||||
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 s:diary_path(idx).vimwiki#vars#get_wikilocal('diary_index', idx).
|
||||
\ vimwiki#vars#get_wikilocal('ext', idx)
|
||||
endfunction
|
||||
|
||||
function! vimwiki#diary#diary_date_link(...) "{{{
|
||||
|
||||
function! vimwiki#diary#diary_date_link(...)
|
||||
if a:0
|
||||
return strftime('%Y-%m-%d', a:1)
|
||||
else
|
||||
return strftime('%Y-%m-%d')
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:get_position_links(link) "{{{
|
||||
|
||||
function! s:get_position_links(link)
|
||||
let idx = -1
|
||||
let links = []
|
||||
if a:link =~# '^\d\{4}-\d\d-\d\d'
|
||||
@ -51,16 +56,15 @@ function! s:get_position_links(link) "{{{
|
||||
let idx = index(links, a:link)
|
||||
endif
|
||||
return [idx, links]
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
fun! s:get_month_name(month) "{{{
|
||||
|
||||
function! s:get_month_name(month)
|
||||
return vimwiki#vars#get_global('diary_months')[str2nr(a:month)]
|
||||
endfun "}}}
|
||||
endfunction
|
||||
|
||||
" Helpers }}}
|
||||
|
||||
" Diary index stuff {{{
|
||||
fun! s:read_captions(files) "{{{
|
||||
function! s:read_captions(files)
|
||||
let result = {}
|
||||
let rx_header = vimwiki#vars#get_syntaxlocal('rxHeader')
|
||||
for fl in a:files
|
||||
@ -81,11 +85,13 @@ fun! s:read_captions(files) "{{{
|
||||
|
||||
endfor
|
||||
return result
|
||||
endfun "}}}
|
||||
endfunction
|
||||
|
||||
fun! s:get_diary_files() "{{{
|
||||
|
||||
function! s:get_diary_files()
|
||||
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'))
|
||||
let s_files = glob(vimwiki#vars#get_wikilocal('path').
|
||||
\ vimwiki#vars#get_wikilocal('diary_rel_path').'*'.vimwiki#vars#get_wikilocal('ext'))
|
||||
let files = split(s_files, '\n')
|
||||
call filter(files, 'fnamemodify(v:val, ":t") =~# "'.escape(rx, '\').'"')
|
||||
|
||||
@ -93,9 +99,10 @@ fun! s:get_diary_files() "{{{
|
||||
call filter(files, 'v:val !~# ''.*\~$''')
|
||||
|
||||
return files
|
||||
endfun "}}}
|
||||
endfunction
|
||||
|
||||
fun! s:group_links(links) "{{{
|
||||
|
||||
function! s:group_links(links)
|
||||
let result = {}
|
||||
let p_year = 0
|
||||
let p_month = 0
|
||||
@ -114,38 +121,43 @@ fun! s:group_links(links) "{{{
|
||||
let p_month = month
|
||||
endfor
|
||||
return result
|
||||
endfun "}}}
|
||||
endfunction
|
||||
|
||||
function! s:sort(lst) "{{{
|
||||
|
||||
function! s:sort(lst)
|
||||
if vimwiki#vars#get_wikilocal('diary_sort') ==? 'desc'
|
||||
return reverse(sort(a:lst))
|
||||
else
|
||||
return sort(a:lst)
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:format_diary() "{{{
|
||||
|
||||
function! s:format_diary()
|
||||
let result = []
|
||||
|
||||
|
||||
let links_with_captions = s:read_captions(s:get_diary_files())
|
||||
let g_files = s:group_links(links_with_captions)
|
||||
|
||||
for year in s:sort(keys(g_files))
|
||||
call add(result, '')
|
||||
call add(result, substitute(vimwiki#vars#get_syntaxlocal('rxH2_Template'), '__Header__', year , ''))
|
||||
call add(result,
|
||||
\ substitute(vimwiki#vars#get_syntaxlocal('rxH2_Template'), '__Header__', year , ''))
|
||||
|
||||
for month in s:sort(keys(g_files[year]))
|
||||
call add(result, '')
|
||||
call add(result, substitute(vimwiki#vars#get_syntaxlocal('rxH3_Template'), '__Header__', s:get_month_name(month), ''))
|
||||
call add(result, substitute(vimwiki#vars#get_syntaxlocal('rxH3_Template'),
|
||||
\ '__Header__', s:get_month_name(month), ''))
|
||||
|
||||
for [fl, cap] in s:sort(items(g_files[year][month]))
|
||||
if empty(cap)
|
||||
let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', fl, '')
|
||||
let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
|
||||
\ '__LinkUrl__', fl, '')
|
||||
let entry = substitute(entry, '__LinkDescription__', cap, '')
|
||||
call add(result, repeat(' ', vimwiki#lst#get_list_margin()).'* '.entry)
|
||||
else
|
||||
let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate2'), '__LinkUrl__', fl, '')
|
||||
let entry = substitute(vimwiki#vars#get_global('WikiLinkTemplate2'),
|
||||
\ '__LinkUrl__', fl, '')
|
||||
let entry = substitute(entry, '__LinkDescription__', cap, '')
|
||||
call add(result, repeat(' ', vimwiki#lst#get_list_margin()).'* '.entry)
|
||||
endif
|
||||
@ -155,11 +167,10 @@ function! s:format_diary() "{{{
|
||||
endfor
|
||||
|
||||
return result
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" Diary index stuff }}}
|
||||
|
||||
function! vimwiki#diary#make_note(wnum, ...) "{{{
|
||||
function! vimwiki#diary#make_note(wnum, ...)
|
||||
if a:wnum > vimwiki#vars#number_of_wikis()
|
||||
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in g:vimwiki_list!'
|
||||
return
|
||||
@ -172,7 +183,8 @@ function! vimwiki#diary#make_note(wnum, ...) "{{{
|
||||
let idx = 0
|
||||
endif
|
||||
|
||||
call vimwiki#path#mkdir(vimwiki#vars#get_wikilocal('path', idx).vimwiki#vars#get_wikilocal('diary_rel_path', idx))
|
||||
call vimwiki#path#mkdir(vimwiki#vars#get_wikilocal('path', idx).
|
||||
\ vimwiki#vars#get_wikilocal('diary_rel_path', idx))
|
||||
|
||||
let cmd = 'edit'
|
||||
if a:0
|
||||
@ -191,9 +203,10 @@ function! vimwiki#diary#make_note(wnum, ...) "{{{
|
||||
endif
|
||||
|
||||
call vimwiki#base#open_link(cmd, link, s:diary_index(idx))
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#diary#goto_diary_index(wnum) "{{{
|
||||
|
||||
function! vimwiki#diary#goto_diary_index(wnum)
|
||||
if a:wnum > vimwiki#vars#number_of_wikis()
|
||||
echomsg 'Vimwiki Error: Wiki '.a:wnum.' is not registered in g:vimwiki_list!'
|
||||
return
|
||||
@ -207,9 +220,10 @@ function! vimwiki#diary#goto_diary_index(wnum) "{{{
|
||||
endif
|
||||
|
||||
call vimwiki#base#edit_file('e', s:diary_index(idx), '')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#diary#goto_next_day() "{{{
|
||||
|
||||
function! vimwiki#diary#goto_next_day()
|
||||
let link = ''
|
||||
let [idx, links] = s:get_position_links(expand('%:t:r'))
|
||||
|
||||
@ -227,9 +241,10 @@ function! vimwiki#diary#goto_next_day() "{{{
|
||||
if len(link)
|
||||
call vimwiki#base#open_link(':e ', link)
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#diary#goto_prev_day() "{{{
|
||||
|
||||
function! vimwiki#diary#goto_prev_day()
|
||||
let link = ''
|
||||
let [idx, links] = s:get_position_links(expand('%:t:r'))
|
||||
|
||||
@ -247,9 +262,10 @@ function! vimwiki#diary#goto_prev_day() "{{{
|
||||
if len(link)
|
||||
call vimwiki#base#open_link(':e ', link)
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#diary#generate_diary_section() "{{{
|
||||
|
||||
function! vimwiki#diary#generate_diary_section()
|
||||
let current_file = vimwiki#path#path_norm(expand("%:p"))
|
||||
let diary_file = vimwiki#path#path_norm(s:diary_index())
|
||||
if vimwiki#path#is_equal(current_file, diary_file)
|
||||
@ -259,11 +275,11 @@ function! vimwiki#diary#generate_diary_section() "{{{
|
||||
else
|
||||
echomsg 'Vimwiki Error: You can generate diary links only in a diary index page!'
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" Calendar.vim {{{
|
||||
" Callback function.
|
||||
function! vimwiki#diary#calendar_action(day, month, year, week, dir) "{{{
|
||||
|
||||
" Callback function for Calendar.vim
|
||||
function! vimwiki#diary#calendar_action(day, month, year, week, dir)
|
||||
let day = s:prefix_zero(a:day)
|
||||
let month = s:prefix_zero(a:month)
|
||||
|
||||
@ -283,16 +299,14 @@ function! vimwiki#diary#calendar_action(day, month, year, week, dir) "{{{
|
||||
|
||||
" XXX: Well, +1 is for inconsistent index basing...
|
||||
call vimwiki#diary#make_note(vimwiki#vars#get_bufferlocal('wiki_nr')+1, 0, link)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" Sign function.
|
||||
function vimwiki#diary#calendar_sign(day, month, year) "{{{
|
||||
|
||||
function vimwiki#diary#calendar_sign(day, month, year)
|
||||
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').
|
||||
\ a:year.'-'.month.'-'.day.vimwiki#vars#get_wikilocal('ext')
|
||||
return filereadable(expand(sfile))
|
||||
endfunction "}}}
|
||||
|
||||
" Calendar.vim }}}
|
||||
endfunction
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,20 +1,17 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki autoload plugin file
|
||||
" Desc: Link functions for markdown syntax
|
||||
" Description: Link functions for markdown syntax
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
" MISC helper functions {{{
|
||||
|
||||
" s:safesubstitute
|
||||
function! s:safesubstitute(text, search, replace, mode) "{{{
|
||||
function! s:safesubstitute(text, search, replace, mode)
|
||||
" Substitute regexp but do not interpret replace
|
||||
let escaped = escape(a:replace, '\&')
|
||||
return substitute(a:text, a:search, escaped, a:mode)
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#markdown_base#scan_reflinks
|
||||
function! vimwiki#markdown_base#scan_reflinks() " {{{
|
||||
|
||||
function! vimwiki#markdown_base#scan_reflinks()
|
||||
let mkd_refs = {}
|
||||
" construct list of references using vimgrep
|
||||
try
|
||||
@ -23,7 +20,7 @@ function! vimwiki#markdown_base#scan_reflinks() " {{{
|
||||
catch /^Vim\%((\a\+)\)\=:E480/ " No Match
|
||||
"Ignore it, and move on to the next file
|
||||
endtry
|
||||
"
|
||||
|
||||
for d in getqflist()
|
||||
let matchline = join(getline(d.lnum, min([d.lnum+1, line('$')])), ' ')
|
||||
let descr = matchstr(matchline, vimwiki#vars#get_syntaxlocal('rxMkdRefMatchDescr'))
|
||||
@ -34,12 +31,11 @@ function! vimwiki#markdown_base#scan_reflinks() " {{{
|
||||
endfor
|
||||
call vimwiki#vars#set_bufferlocal('markdown_refs', mkd_refs)
|
||||
return mkd_refs
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#markdown_base#open_reflink
|
||||
" try markdown reference links
|
||||
function! vimwiki#markdown_base#open_reflink(link) " {{{
|
||||
function! vimwiki#markdown_base#open_reflink(link)
|
||||
" echom "vimwiki#markdown_base#open_reflink"
|
||||
let link = a:link
|
||||
let mkd_refs = vimwiki#vars#get_bufferlocal('markdown_refs')
|
||||
@ -50,15 +46,10 @@ function! vimwiki#markdown_base#open_reflink(link) " {{{
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
endfunction " }}}
|
||||
" }}}
|
||||
endfunction
|
||||
|
||||
" WIKI link following functions {{{
|
||||
|
||||
" LINK functions {{{
|
||||
|
||||
" s:normalize_link_syntax_n
|
||||
function! s:normalize_link_syntax_n() " {{{
|
||||
function! s:normalize_link_syntax_n()
|
||||
let lnum = line('.')
|
||||
|
||||
" try WikiIncl
|
||||
@ -72,27 +63,30 @@ function! s:normalize_link_syntax_n() " {{{
|
||||
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink0'))
|
||||
if !empty(lnk)
|
||||
let sub = vimwiki#base#normalize_link_helper(lnk,
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
|
||||
\ vimwiki#vars#get_syntaxlocal('WikiLink1Template2'))
|
||||
call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink0'), sub)
|
||||
return
|
||||
endif
|
||||
|
||||
|
||||
" try WikiLink1: replace with WikiLink0
|
||||
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink1'))
|
||||
if !empty(lnk)
|
||||
let sub = vimwiki#base#normalize_link_helper(lnk,
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'),
|
||||
\ vimwiki#vars#get_global('WikiLinkTemplate2'))
|
||||
call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink1'), sub)
|
||||
return
|
||||
endif
|
||||
|
||||
|
||||
" try Weblink
|
||||
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink'))
|
||||
if !empty(lnk)
|
||||
let sub = vimwiki#base#normalize_link_helper(lnk,
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl'), vimwiki#vars#get_syntaxlocal('rxWeblinkMatchDescr'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchDescr'),
|
||||
\ vimwiki#vars#get_syntaxlocal('Weblink1Template'))
|
||||
call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink'), sub)
|
||||
return
|
||||
@ -110,10 +104,10 @@ function! s:normalize_link_syntax_n() " {{{
|
||||
return
|
||||
endif
|
||||
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:normalize_link_syntax_v
|
||||
function! s:normalize_link_syntax_v() " {{{
|
||||
|
||||
function! s:normalize_link_syntax_v()
|
||||
let lnum = line('.')
|
||||
let sel_save = &selection
|
||||
let &selection = "old"
|
||||
@ -138,10 +132,10 @@ function! s:normalize_link_syntax_v() " {{{
|
||||
let &selection = sel_save
|
||||
endtry
|
||||
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" vimwiki#base#normalize_link
|
||||
function! vimwiki#markdown_base#normalize_link(is_visual_mode) "{{{
|
||||
|
||||
function! vimwiki#markdown_base#normalize_link(is_visual_mode)
|
||||
if 0
|
||||
" Syntax-specific links
|
||||
else
|
||||
@ -152,11 +146,5 @@ function! vimwiki#markdown_base#normalize_link(is_visual_mode) "{{{
|
||||
call s:normalize_link_syntax_v()
|
||||
endif
|
||||
endif
|
||||
endfunction "}}}
|
||||
|
||||
" }}}
|
||||
|
||||
" -------------------------------------------------------------------------
|
||||
" Load syntax-specific Wiki functionality
|
||||
" -------------------------------------------------------------------------
|
||||
endfunction
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki autoload plugin file
|
||||
" Desc: Path manipulation functions
|
||||
" Description: Path manipulation functions
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
function! vimwiki#path#chomp_slash(str) "{{{
|
||||
function! vimwiki#path#chomp_slash(str)
|
||||
return substitute(a:str, '[/\\]\+$', '', '')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Define path-compare function, either case-sensitive or not, depending on OS.
|
||||
"{{{ " function! vimwiki#path#is_equal(p1, p2)
|
||||
if vimwiki#u#is_windows()
|
||||
function! vimwiki#path#is_equal(p1, p2)
|
||||
return a:p1 ==? a:p2
|
||||
@ -18,10 +18,11 @@ else
|
||||
function! vimwiki#path#is_equal(p1, p2)
|
||||
return a:p1 ==# a:p2
|
||||
endfunction
|
||||
endif "}}}
|
||||
endif
|
||||
|
||||
|
||||
" collapse sections like /a/b/../c to /a/c
|
||||
function! vimwiki#path#normalize(path) "{{{
|
||||
function! vimwiki#path#normalize(path)
|
||||
let path = a:path
|
||||
while 1
|
||||
let result = substitute(path, '/[^/]\+/\.\.', '', '')
|
||||
@ -31,9 +32,10 @@ function! vimwiki#path#normalize(path) "{{{
|
||||
let path = result
|
||||
endwhile
|
||||
return result
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#path#path_norm(path) "{{{
|
||||
|
||||
function! vimwiki#path#path_norm(path)
|
||||
" /-slashes
|
||||
if a:path !~# '^scp:'
|
||||
let path = substitute(a:path, '\', '/', 'g')
|
||||
@ -44,21 +46,24 @@ function! vimwiki#path#path_norm(path) "{{{
|
||||
else
|
||||
return a:path
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#path#is_link_to_dir(link) "{{{
|
||||
|
||||
function! vimwiki#path#is_link_to_dir(link)
|
||||
" Check if link is to a directory.
|
||||
" It should be ended with \ or /.
|
||||
return a:link =~# '\m[/\\]$'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#path#abs_path_of_link(link) "{{{
|
||||
|
||||
function! vimwiki#path#abs_path_of_link(link)
|
||||
return vimwiki#path#normalize(expand("%:p:h").'/'.a:link)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" return longest common path prefix of 2 given paths.
|
||||
" '~/home/usrname/wiki', '~/home/usrname/wiki/shmiki' => '~/home/usrname/wiki'
|
||||
function! vimwiki#path#path_common_pfx(path1, path2) "{{{
|
||||
function! vimwiki#path#path_common_pfx(path1, path2)
|
||||
let p1 = split(a:path1, '[/\\]', 1)
|
||||
let p2 = split(a:path2, '[/\\]', 1)
|
||||
|
||||
@ -72,16 +77,17 @@ function! vimwiki#path#path_common_pfx(path1, path2) "{{{
|
||||
else
|
||||
return join(p1[: idx-1], '/')
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#path#wikify_path(path) "{{{
|
||||
|
||||
function! vimwiki#path#wikify_path(path)
|
||||
let result = resolve(fnamemodify(a:path, ':p'))
|
||||
if vimwiki#u#is_windows()
|
||||
let result = substitute(result, '\\', '/', 'g')
|
||||
endif
|
||||
let result = vimwiki#path#chomp_slash(result)
|
||||
return result
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
function! vimwiki#path#current_wiki_file()
|
||||
@ -90,7 +96,7 @@ endfunction
|
||||
|
||||
|
||||
" Returns: the relative path from a:dir to a:file
|
||||
function! vimwiki#path#relpath(dir, file) "{{{
|
||||
function! vimwiki#path#relpath(dir, file)
|
||||
let result = []
|
||||
let dir = split(a:dir, '/')
|
||||
let file = split(a:file, '/')
|
||||
@ -112,12 +118,13 @@ function! vimwiki#path#relpath(dir, file) "{{{
|
||||
let result_path .= '/'
|
||||
endif
|
||||
return result_path
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" If the optional argument provided and nonzero,
|
||||
" it will ask before creating a directory
|
||||
" it will ask before creating a directory
|
||||
" Returns: 1 iff directory exists or successfully created
|
||||
function! vimwiki#path#mkdir(path, ...) "{{{
|
||||
function! vimwiki#path#mkdir(path, ...)
|
||||
let path = expand(a:path)
|
||||
|
||||
if path =~# '^scp:'
|
||||
@ -137,23 +144,23 @@ function! vimwiki#path#mkdir(path, ...) "{{{
|
||||
let path = iconv(path, &enc, vimwiki#vars#get_global('w32_dir_enc'))
|
||||
endif
|
||||
|
||||
if a:0 && a:1 && input("Vimwiki: Make new directory: "
|
||||
\ .path."\n [y]es/[N]o? ") !~? '^y'
|
||||
if a:0 && a:1 && input("Vimwiki: Make new directory: ".path."\n [y]es/[N]o? ") !~? '^y'
|
||||
return 0
|
||||
endif
|
||||
|
||||
call mkdir(path, "p")
|
||||
return 1
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#path#is_absolute(path) "{{{
|
||||
|
||||
function! vimwiki#path#is_absolute(path)
|
||||
if vimwiki#u#is_windows()
|
||||
return a:path =~? '\m^\a:'
|
||||
else
|
||||
return a:path =~# '\m^/\|\~/'
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Combine a directory and a file into one path, doesn't generate duplicate
|
||||
@ -173,3 +180,4 @@ else
|
||||
return directory . '/' . file
|
||||
endfunction
|
||||
endif
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki autoload plugin file
|
||||
|
||||
|
||||
let s:TAGS_METADATA_FILE_NAME = '.tags'
|
||||
|
||||
|
||||
|
||||
" Tags metadata in-memory format:
|
||||
" metadata := { 'pagename': [entries, ...] }
|
||||
" entry := { 'tagname':..., 'lineno':..., 'link':... }
|
||||
@ -19,12 +21,13 @@ let s:TAGS_METADATA_FILE_NAME = '.tags'
|
||||
" an optional field, "vimwiki:". In this field, we encode tab-separated values
|
||||
" of missing parameters -- "pagename" and "link".
|
||||
|
||||
" vimwiki#tags#update_tags
|
||||
|
||||
|
||||
" Update tags metadata.
|
||||
" a:full_rebuild == 1: re-scan entire wiki
|
||||
" 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) "{{{
|
||||
function! vimwiki#tags#update_tags(full_rebuild, all_files)
|
||||
let all_files = a:all_files != ''
|
||||
if !a:full_rebuild
|
||||
" Updating for one page (current)
|
||||
@ -42,8 +45,7 @@ function! vimwiki#tags#update_tags(full_rebuild, all_files) "{{{
|
||||
else " full rebuild
|
||||
let files = vimwiki#base#find_files(vimwiki#vars#get_bufferlocal('wiki_nr'), 0)
|
||||
let wiki_base_dir = vimwiki#vars#get_wikilocal('path')
|
||||
let tags_file_last_modification =
|
||||
\ getftime(vimwiki#tags#metadata_file_path())
|
||||
let tags_file_last_modification = getftime(vimwiki#tags#metadata_file_path())
|
||||
let metadata = s:load_tags_metadata()
|
||||
for file in files
|
||||
if all_files || getftime(file) >= tags_file_last_modification
|
||||
@ -56,12 +58,11 @@ function! vimwiki#tags#update_tags(full_rebuild, all_files) "{{{
|
||||
endfor
|
||||
call s:write_tags_metadata(metadata)
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
" s:scan_tags
|
||||
" Scans the list of text lines (argument) and produces tags metadata as a
|
||||
" list of tag entries.
|
||||
function! s:scan_tags(lines, page_name) "{{{
|
||||
|
||||
" Scans the list of text lines (argument) and produces tags metadata as a list of tag entries.
|
||||
function! s:scan_tags(lines, page_name)
|
||||
|
||||
let entries = []
|
||||
|
||||
@ -136,17 +137,18 @@ function! s:scan_tags(lines, page_name) "{{{
|
||||
|
||||
endfor " loop over lines
|
||||
return entries
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#tags#metadata_file_path
|
||||
" Returns tags metadata file path
|
||||
function! vimwiki#tags#metadata_file_path() abort "{{{
|
||||
return fnamemodify(vimwiki#path#join_path(vimwiki#vars#get_wikilocal('path'), s:TAGS_METADATA_FILE_NAME), ':p')
|
||||
endfunction " }}}
|
||||
function! vimwiki#tags#metadata_file_path() abort
|
||||
return fnamemodify(vimwiki#path#join_path(vimwiki#vars#get_wikilocal('path'),
|
||||
\ s:TAGS_METADATA_FILE_NAME), ':p')
|
||||
endfunction
|
||||
|
||||
|
||||
" s:load_tags_metadata
|
||||
" Loads tags metadata from file, returns a dictionary
|
||||
function! s:load_tags_metadata() abort "{{{
|
||||
function! s:load_tags_metadata() abort
|
||||
let metadata_path = vimwiki#tags#metadata_file_path()
|
||||
if !filereadable(metadata_path)
|
||||
return {}
|
||||
@ -193,29 +195,29 @@ function! s:load_tags_metadata() abort "{{{
|
||||
endif
|
||||
endfor
|
||||
return metadata
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" s:remove_page_from_tags
|
||||
" Removes all entries for given page from metadata in-place. Returns updated
|
||||
" metadata (just in case).
|
||||
function! s:remove_page_from_tags(metadata, page_name) "{{{
|
||||
function! s:remove_page_from_tags(metadata, page_name)
|
||||
if has_key(a:metadata, a:page_name)
|
||||
call remove(a:metadata, a:page_name)
|
||||
return a:metadata
|
||||
else
|
||||
return a:metadata
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" s:merge_tags
|
||||
" Merges metadata of one file into a:metadata
|
||||
function! s:merge_tags(metadata, pagename, file_metadata) "{{{
|
||||
function! s:merge_tags(metadata, pagename, file_metadata)
|
||||
let metadata = a:metadata
|
||||
let metadata[a:pagename] = a:file_metadata
|
||||
return metadata
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" s:tags_entry_cmp
|
||||
" Compares 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
|
||||
@ -225,7 +227,7 @@ endfunction " }}}
|
||||
" 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) "{{{
|
||||
function! s:tags_entry_cmp(i1, i2)
|
||||
let items = []
|
||||
for orig_item in [a:i1, a:i2]
|
||||
let fields = split(orig_item, "\t")
|
||||
@ -245,11 +247,11 @@ function! s:tags_entry_cmp(i1, i2) "{{{
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" s:write_tags_metadata
|
||||
" Saves metadata object into a file. Throws exceptions in case of problems.
|
||||
function! s:write_tags_metadata(metadata) "{{{
|
||||
function! s:write_tags_metadata(metadata)
|
||||
let metadata_path = vimwiki#tags#metadata_file_path()
|
||||
let tags = []
|
||||
for pagename in keys(a:metadata)
|
||||
@ -271,11 +273,11 @@ function! s:write_tags_metadata(metadata) "{{{
|
||||
call sort(tags, "s:tags_entry_cmp")
|
||||
call insert(tags, "!_TAG_FILE_SORTED\t1\t")
|
||||
call writefile(tags, metadata_path)
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#tags#get_tags
|
||||
" Returns list of unique tags found in the .tags file
|
||||
function! vimwiki#tags#get_tags() "{{{
|
||||
function! vimwiki#tags#get_tags()
|
||||
let metadata = s:load_tags_metadata()
|
||||
let tags = {}
|
||||
for entries in values(metadata)
|
||||
@ -284,13 +286,13 @@ function! vimwiki#tags#get_tags() "{{{
|
||||
endfor
|
||||
endfor
|
||||
return keys(tags)
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" vimwiki#tags#generate_tags
|
||||
" 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(...) abort "{{{
|
||||
function! vimwiki#tags#generate_tags(...) abort
|
||||
let need_all_tags = (a:0 == 0)
|
||||
let specific_tags = a:000
|
||||
|
||||
@ -309,8 +311,7 @@ function! vimwiki#tags#generate_tags(...) abort "{{{
|
||||
endfor
|
||||
|
||||
let lines = []
|
||||
let bullet = repeat(' ', vimwiki#lst#get_list_margin()).
|
||||
\ vimwiki#lst#default_symbol().' '
|
||||
let bullet = repeat(' ', vimwiki#lst#get_list_margin()).vimwiki#lst#default_symbol().' '
|
||||
for tagname in sort(keys(tags_entries))
|
||||
if need_all_tags || index(specific_tags, tagname) != -1
|
||||
call extend(lines, [
|
||||
@ -318,8 +319,8 @@ function! vimwiki#tags#generate_tags(...) abort "{{{
|
||||
\ substitute(vimwiki#vars#get_syntaxlocal('rxH2_Template'), '__Header__', tagname, ''),
|
||||
\ '' ])
|
||||
for taglink in sort(tags_entries[tagname])
|
||||
call add(lines, bullet .
|
||||
\ substitute(vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', taglink, ''))
|
||||
call add(lines, bullet . substitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
|
||||
\ '__LinkUrl__', taglink, ''))
|
||||
endfor
|
||||
endif
|
||||
endfor
|
||||
@ -328,15 +329,14 @@ function! vimwiki#tags#generate_tags(...) abort "{{{
|
||||
\ .vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
|
||||
\ .vimwiki#vars#get_syntaxlocal('rxWikiLink').'$\)'
|
||||
|
||||
call vimwiki#base#update_listing_in_buffer(lines, 'Generated Tags', links_rx,
|
||||
\ line('$')+1, 1)
|
||||
endfunction " }}}
|
||||
call vimwiki#base#update_listing_in_buffer(lines, 'Generated Tags', links_rx, line('$')+1, 1)
|
||||
endfunction
|
||||
|
||||
" vimwiki#tags#complete_tags
|
||||
function! vimwiki#tags#complete_tags(ArgLead, CmdLine, CursorPos) abort " {{{
|
||||
|
||||
function! vimwiki#tags#complete_tags(ArgLead, CmdLine, CursorPos) abort
|
||||
" 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()
|
||||
return join(taglist, "\n")
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
@ -1,28 +1,29 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki autoload plugin file
|
||||
" Desc: Tables
|
||||
" Description: Tables
|
||||
" | Easily | manageable | text | tables | ! |
|
||||
" |--------|------------|-------|--------|---------|
|
||||
" | Have | fun! | Drink | tea | Period. |
|
||||
"
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
" Load only once {{{
|
||||
|
||||
|
||||
if exists("g:loaded_vimwiki_tbl_auto") || &cp
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimwiki_tbl_auto = 1
|
||||
"}}}
|
||||
|
||||
|
||||
let s:textwidth = &tw
|
||||
|
||||
|
||||
" Misc functions {{{
|
||||
function! s:rxSep() "{{{
|
||||
function! s:rxSep()
|
||||
return vimwiki#vars#get_syntaxlocal('rxTableSep')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:wide_len(str) "{{{
|
||||
|
||||
function! s:wide_len(str)
|
||||
" vim73 has new function that gives correct string width.
|
||||
if exists("*strdisplaywidth")
|
||||
return strdisplaywidth(a:str)
|
||||
@ -42,42 +43,49 @@ function! s:wide_len(str) "{{{
|
||||
let &modified = savemodified
|
||||
endif
|
||||
return ret
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:cell_splitter() "{{{
|
||||
|
||||
function! s:cell_splitter()
|
||||
return '\s*'.s:rxSep().'\s*'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:sep_splitter() "{{{
|
||||
|
||||
function! s:sep_splitter()
|
||||
return '-'.s:rxSep().'-'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:is_table(line) "{{{
|
||||
return s:is_separator(a:line) || (a:line !~# s:rxSep().s:rxSep() && a:line =~# '^\s*'.s:rxSep().'.\+'.s:rxSep().'\s*$')
|
||||
endfunction "}}}
|
||||
|
||||
function! s:is_separator(line) "{{{
|
||||
function! s:is_table(line)
|
||||
return s:is_separator(a:line) ||
|
||||
\ (a:line !~# s:rxSep().s:rxSep() && a:line =~# '^\s*'.s:rxSep().'.\+'.s:rxSep().'\s*$')
|
||||
endfunction
|
||||
|
||||
|
||||
function! s:is_separator(line)
|
||||
return a:line =~# '^\s*'.s:rxSep().'\(--\+'.s:rxSep().'\)\+\s*$'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:is_separator_tail(line) "{{{
|
||||
|
||||
function! s:is_separator_tail(line)
|
||||
return a:line =~# '^\{-1}\%(\s*\|-*\)\%('.s:rxSep().'-\+\)\+'.s:rxSep().'\s*$'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:is_last_column(lnum, cnum) "{{{
|
||||
|
||||
function! s:is_last_column(lnum, cnum)
|
||||
let line = strpart(getline(a:lnum), a:cnum - 1)
|
||||
"echomsg "DEBUG is_last_column> ".(line =~# s:rxSep().'\s*$' && line !~# s:rxSep().'.*'.s:rxSep().'\s*$')
|
||||
return line =~# s:rxSep().'\s*$' && line !~# s:rxSep().'.*'.s:rxSep().'\s*$'
|
||||
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:is_first_column(lnum, cnum) "{{{
|
||||
|
||||
function! s:is_first_column(lnum, cnum)
|
||||
let line = strpart(getline(a:lnum), 0, a:cnum - 1)
|
||||
"echomsg "DEBUG is_first_column> ".(line =~# '^\s*'.s:rxSep() && line !~# '^\s*'.s:rxSep().'.*'.s:rxSep())
|
||||
return line =~# '^\s*$' || (line =~# '^\s*'.s:rxSep() && line !~# '^\s*'.s:rxSep().'.*'.s:rxSep())
|
||||
endfunction "}}}
|
||||
return line =~# '^\s*$' ||
|
||||
\ (line =~# '^\s*'.s:rxSep() && line !~# '^\s*'.s:rxSep().'.*'.s:rxSep())
|
||||
endfunction
|
||||
|
||||
function! s:count_separators_up(lnum) "{{{
|
||||
|
||||
function! s:count_separators_up(lnum)
|
||||
let lnum = a:lnum - 1
|
||||
while lnum > 1
|
||||
if !s:is_separator(getline(lnum))
|
||||
@ -87,9 +95,10 @@ function! s:count_separators_up(lnum) "{{{
|
||||
endwhile
|
||||
|
||||
return (a:lnum-lnum)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:count_separators_down(lnum) "{{{
|
||||
|
||||
function! s:count_separators_down(lnum)
|
||||
let lnum = a:lnum + 1
|
||||
while lnum < line('$')
|
||||
if !s:is_separator(getline(lnum))
|
||||
@ -99,9 +108,10 @@ function! s:count_separators_down(lnum) "{{{
|
||||
endwhile
|
||||
|
||||
return (lnum-a:lnum)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:create_empty_row(cols) "{{{
|
||||
|
||||
function! s:create_empty_row(cols)
|
||||
let row = s:rxSep()
|
||||
let cell = " ".s:rxSep()
|
||||
|
||||
@ -110,9 +120,10 @@ function! s:create_empty_row(cols) "{{{
|
||||
endfor
|
||||
|
||||
return row
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:create_row_sep(cols) "{{{
|
||||
|
||||
function! s:create_row_sep(cols)
|
||||
let row = s:rxSep()
|
||||
let cell = "---".s:rxSep()
|
||||
|
||||
@ -121,9 +132,10 @@ function! s:create_row_sep(cols) "{{{
|
||||
endfor
|
||||
|
||||
return row
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#get_cells(line) "{{{
|
||||
|
||||
function! vimwiki#tbl#get_cells(line)
|
||||
let result = []
|
||||
let cell = ''
|
||||
let quote = ''
|
||||
@ -174,13 +186,15 @@ function! vimwiki#tbl#get_cells(line) "{{{
|
||||
call add(result, vimwiki#u#trim(cell.quote, '|'))
|
||||
endif
|
||||
return result
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:col_count(lnum) "{{{
|
||||
|
||||
function! s:col_count(lnum)
|
||||
return len(vimwiki#tbl#get_cells(getline(a:lnum)))
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:get_indent(lnum) "{{{
|
||||
|
||||
function! s:get_indent(lnum)
|
||||
if !s:is_table(getline(a:lnum))
|
||||
return
|
||||
endif
|
||||
@ -198,9 +212,10 @@ function! s:get_indent(lnum) "{{{
|
||||
endwhile
|
||||
|
||||
return indent
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
function! s:get_rows(lnum) "{{{
|
||||
|
||||
function! s:get_rows(lnum)
|
||||
if !s:is_table(getline(a:lnum))
|
||||
return
|
||||
endif
|
||||
@ -232,9 +247,10 @@ function! s:get_rows(lnum) "{{{
|
||||
endwhile
|
||||
|
||||
return upper_rows + lower_rows
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:get_cell_max_lens(lnum, ...) "{{{
|
||||
|
||||
function! s:get_cell_max_lens(lnum, ...)
|
||||
let max_lens = {}
|
||||
for [lnum, row] in s:get_rows(a:lnum)
|
||||
if s:is_separator(row)
|
||||
@ -251,9 +267,10 @@ function! s:get_cell_max_lens(lnum, ...) "{{{
|
||||
endfor
|
||||
endfor
|
||||
return max_lens
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:get_aligned_rows(lnum, col1, col2) "{{{
|
||||
|
||||
function! s:get_aligned_rows(lnum, col1, col2)
|
||||
let rows = s:get_rows(a:lnum)
|
||||
let startlnum = rows[0][0]
|
||||
let cells = []
|
||||
@ -271,10 +288,11 @@ function! s:get_aligned_rows(lnum, col1, col2) "{{{
|
||||
call add(result, [lnum, new_row])
|
||||
endfor
|
||||
return result
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Number of the current column. Starts from 0.
|
||||
function! s:cur_column() "{{{
|
||||
function! s:cur_column()
|
||||
let line = getline('.')
|
||||
if !s:is_table(line)
|
||||
return -1
|
||||
@ -291,12 +309,10 @@ function! s:cur_column() "{{{
|
||||
endif
|
||||
endwhile
|
||||
return col
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" Format functions {{{
|
||||
function! s:fmt_cell(cell, max_len) "{{{
|
||||
function! s:fmt_cell(cell, max_len)
|
||||
let cell = ' '.a:cell.' '
|
||||
|
||||
let diff = a:max_len - s:wide_len(a:cell)
|
||||
@ -306,9 +322,10 @@ function! s:fmt_cell(cell, max_len) "{{{
|
||||
|
||||
let cell .= repeat(' ', diff)
|
||||
return cell
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:fmt_row(cells, max_lens, col1, col2) "{{{
|
||||
|
||||
function! s:fmt_row(cells, max_lens, col1, col2)
|
||||
let new_line = s:rxSep()
|
||||
for idx in range(len(a:cells))
|
||||
if idx == a:col1
|
||||
@ -326,17 +343,19 @@ function! s:fmt_row(cells, max_lens, col1, col2) "{{{
|
||||
let idx += 1
|
||||
endwhile
|
||||
return new_line
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:fmt_cell_sep(max_len) "{{{
|
||||
|
||||
function! s:fmt_cell_sep(max_len)
|
||||
if a:max_len == 0
|
||||
return repeat('-', 3)
|
||||
else
|
||||
return repeat('-', a:max_len+2)
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:fmt_sep(max_lens, col1, col2) "{{{
|
||||
|
||||
function! s:fmt_sep(max_lens, col1, col2)
|
||||
let new_line = s:rxSep()
|
||||
for idx in range(len(a:max_lens))
|
||||
if idx == a:col1
|
||||
@ -347,11 +366,10 @@ function! s:fmt_sep(max_lens, col1, col2) "{{{
|
||||
let new_line .= s:fmt_cell_sep(a:max_lens[idx]).s:rxSep()
|
||||
endfor
|
||||
return new_line
|
||||
endfunction "}}}
|
||||
"}}}
|
||||
endfunction
|
||||
|
||||
" Keyboard functions "{{{
|
||||
function! s:kbd_create_new_row(cols, goto_first) "{{{
|
||||
|
||||
function! s:kbd_create_new_row(cols, goto_first)
|
||||
let cmd = "\<ESC>o".s:create_empty_row(a:cols)
|
||||
let cmd .= "\<ESC>:call vimwiki#tbl#format(line('.'))\<CR>"
|
||||
let cmd .= "\<ESC>0"
|
||||
@ -364,26 +382,29 @@ function! s:kbd_create_new_row(cols, goto_first) "{{{
|
||||
let cmd .= "a"
|
||||
|
||||
return cmd
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:kbd_goto_next_row() "{{{
|
||||
|
||||
function! s:kbd_goto_next_row()
|
||||
let cmd = "\<ESC>j"
|
||||
let cmd .= ":call search('.\\(".s:rxSep()."\\)', 'c', line('.'))\<CR>"
|
||||
let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\<CR>"
|
||||
let cmd .= "a"
|
||||
return cmd
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:kbd_goto_prev_row() "{{{
|
||||
|
||||
function! s:kbd_goto_prev_row()
|
||||
let cmd = "\<ESC>k"
|
||||
let cmd .= ":call search('.\\(".s:rxSep()."\\)', 'c', line('.'))\<CR>"
|
||||
let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\<CR>"
|
||||
let cmd .= "a"
|
||||
return cmd
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Used in s:kbd_goto_next_col
|
||||
function! vimwiki#tbl#goto_next_col() "{{{
|
||||
function! vimwiki#tbl#goto_next_col()
|
||||
let curcol = virtcol('.')
|
||||
let lnum = line('.')
|
||||
let newcol = s:get_indent(lnum)
|
||||
@ -396,9 +417,10 @@ function! vimwiki#tbl#goto_next_col() "{{{
|
||||
endfor
|
||||
let newcol += 2 " +2 == 1 separator + 1 space |<space
|
||||
call vimwiki#u#cursor(lnum, newcol)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:kbd_goto_next_col(jumpdown) "{{{
|
||||
|
||||
function! s:kbd_goto_next_col(jumpdown)
|
||||
let cmd = "\<ESC>"
|
||||
if a:jumpdown
|
||||
let seps = s:count_separators_down(line('.'))
|
||||
@ -406,10 +428,11 @@ function! s:kbd_goto_next_col(jumpdown) "{{{
|
||||
endif
|
||||
let cmd .= ":call vimwiki#tbl#goto_next_col()\<CR>a"
|
||||
return cmd
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Used in s:kbd_goto_prev_col
|
||||
function! vimwiki#tbl#goto_prev_col() "{{{
|
||||
function! vimwiki#tbl#goto_prev_col()
|
||||
let curcol = virtcol('.')
|
||||
let lnum = line('.')
|
||||
let newcol = s:get_indent(lnum)
|
||||
@ -428,9 +451,10 @@ function! vimwiki#tbl#goto_prev_col() "{{{
|
||||
endfor
|
||||
let newcol += 2 " +2 == 1 separator + 1 space |<space
|
||||
call vimwiki#u#cursor(lnum, newcol)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:kbd_goto_prev_col(jumpup) "{{{
|
||||
|
||||
function! s:kbd_goto_prev_col(jumpup)
|
||||
let cmd = "\<ESC>"
|
||||
if a:jumpup
|
||||
let seps = s:count_separators_up(line('.'))
|
||||
@ -442,12 +466,10 @@ function! s:kbd_goto_prev_col(jumpup) "{{{
|
||||
" let cmd .= "a"
|
||||
"echomsg "DEBUG kbd_goto_prev_col> ".cmd
|
||||
return cmd
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
"}}}
|
||||
|
||||
" Global functions {{{
|
||||
function! vimwiki#tbl#kbd_cr() "{{{
|
||||
function! vimwiki#tbl#kbd_cr()
|
||||
let lnum = line('.')
|
||||
if !s:is_table(getline(lnum))
|
||||
return ""
|
||||
@ -459,9 +481,10 @@ function! vimwiki#tbl#kbd_cr() "{{{
|
||||
else
|
||||
return s:kbd_goto_next_row()
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#kbd_tab() "{{{
|
||||
|
||||
function! vimwiki#tbl#kbd_tab()
|
||||
let lnum = line('.')
|
||||
if !s:is_table(getline(lnum))
|
||||
return "\<Tab>"
|
||||
@ -475,9 +498,10 @@ function! vimwiki#tbl#kbd_tab() "{{{
|
||||
return s:kbd_create_new_row(cols, 1)
|
||||
endif
|
||||
return s:kbd_goto_next_col(is_sep || last)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#kbd_shift_tab() "{{{
|
||||
|
||||
function! vimwiki#tbl#kbd_shift_tab()
|
||||
let lnum = line('.')
|
||||
if !s:is_table(getline(lnum))
|
||||
return "\<S-Tab>"
|
||||
@ -490,9 +514,10 @@ function! vimwiki#tbl#kbd_shift_tab() "{{{
|
||||
return ""
|
||||
endif
|
||||
return s:kbd_goto_prev_col(is_sep || first)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#format(lnum, ...) "{{{
|
||||
|
||||
function! vimwiki#tbl#format(lnum, ...)
|
||||
if !(&filetype ==? 'vimwiki')
|
||||
return
|
||||
endif
|
||||
@ -520,11 +545,12 @@ function! vimwiki#tbl#format(lnum, ...) "{{{
|
||||
let row = indentstring.row
|
||||
call setline(lnum, row)
|
||||
endfor
|
||||
|
||||
let &tw = s:textwidth
|
||||
endfunction "}}}
|
||||
|
||||
function! vimwiki#tbl#create(...) "{{{
|
||||
let &tw = s:textwidth
|
||||
endfunction
|
||||
|
||||
|
||||
function! vimwiki#tbl#create(...)
|
||||
if a:0 > 1
|
||||
let cols = a:1
|
||||
let rows = a:2
|
||||
@ -555,19 +581,21 @@ function! vimwiki#tbl#create(...) "{{{
|
||||
for r in range(rows - 1)
|
||||
call add(lines, row)
|
||||
endfor
|
||||
|
||||
call append(line('.'), lines)
|
||||
endfunction "}}}
|
||||
|
||||
function! vimwiki#tbl#align_or_cmd(cmd) "{{{
|
||||
call append(line('.'), lines)
|
||||
endfunction
|
||||
|
||||
|
||||
function! vimwiki#tbl#align_or_cmd(cmd)
|
||||
if s:is_table(getline('.'))
|
||||
call vimwiki#tbl#format(line('.'))
|
||||
else
|
||||
exe 'normal! '.a:cmd
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#reset_tw(lnum) "{{{
|
||||
|
||||
function! vimwiki#tbl#reset_tw(lnum)
|
||||
if !(&filetype ==? 'vimwiki')
|
||||
return
|
||||
endif
|
||||
@ -575,14 +603,14 @@ function! vimwiki#tbl#reset_tw(lnum) "{{{
|
||||
if !s:is_table(line)
|
||||
return
|
||||
endif
|
||||
|
||||
|
||||
let s:textwidth = &tw
|
||||
let &tw = 0
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" TODO: move_column_left and move_column_right are good candidates to be
|
||||
" refactored.
|
||||
function! vimwiki#tbl#move_column_left() "{{{
|
||||
|
||||
" TODO: move_column_left and move_column_right are good candidates to be refactored.
|
||||
function! vimwiki#tbl#move_column_left()
|
||||
|
||||
"echomsg "DEBUG move_column_left: "
|
||||
|
||||
@ -598,7 +626,7 @@ function! vimwiki#tbl#move_column_left() "{{{
|
||||
endif
|
||||
|
||||
if cur_col > 0
|
||||
call vimwiki#tbl#format(line('.'), cur_col-1, cur_col)
|
||||
call vimwiki#tbl#format(line('.'), cur_col-1, cur_col)
|
||||
call cursor(line('.'), 1)
|
||||
|
||||
let sep = '\('.s:rxSep().'\).\zs'
|
||||
@ -608,16 +636,16 @@ function! vimwiki#tbl#move_column_left() "{{{
|
||||
let mpos = match(line, sep, mpos+1)
|
||||
if mpos != -1
|
||||
let col += 1
|
||||
else
|
||||
else
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
|
||||
endif
|
||||
endfunction
|
||||
|
||||
endfunction "}}}
|
||||
|
||||
function! vimwiki#tbl#move_column_right() "{{{
|
||||
function! vimwiki#tbl#move_column_right()
|
||||
|
||||
let line = getline('.')
|
||||
|
||||
@ -631,7 +659,7 @@ function! vimwiki#tbl#move_column_right() "{{{
|
||||
endif
|
||||
|
||||
if cur_col < s:col_count(line('.'))-1
|
||||
call vimwiki#tbl#format(line('.'), cur_col, cur_col+1)
|
||||
call vimwiki#tbl#format(line('.'), cur_col, cur_col+1)
|
||||
call cursor(line('.'), 1)
|
||||
|
||||
let sep = '\('.s:rxSep().'\).\zs'
|
||||
@ -641,33 +669,35 @@ function! vimwiki#tbl#move_column_right() "{{{
|
||||
let mpos = match(line, sep, mpos+1)
|
||||
if mpos != -1
|
||||
let col += 1
|
||||
else
|
||||
else
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
|
||||
endif
|
||||
endfunction
|
||||
|
||||
endfunction "}}}
|
||||
|
||||
function! vimwiki#tbl#get_rows(lnum) "{{{
|
||||
function! vimwiki#tbl#get_rows(lnum)
|
||||
return s:get_rows(a:lnum)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#is_table(line) "{{{
|
||||
|
||||
function! vimwiki#tbl#is_table(line)
|
||||
return s:is_table(a:line)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#is_separator(line) "{{{
|
||||
|
||||
function! vimwiki#tbl#is_separator(line)
|
||||
return s:is_separator(a:line)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#cell_splitter() "{{{
|
||||
|
||||
function! vimwiki#tbl#cell_splitter()
|
||||
return s:cell_splitter()
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#tbl#sep_splitter() "{{{
|
||||
|
||||
function! vimwiki#tbl#sep_splitter()
|
||||
return s:sep_splitter()
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
"}}}
|
||||
|
@ -1,9 +1,9 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki autoload plugin file
|
||||
" Desc: Utility functions
|
||||
" Description: Utility functions
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
function! vimwiki#u#trim(string, ...) "{{{
|
||||
function! vimwiki#u#trim(string, ...)
|
||||
let chars = ''
|
||||
if a:0 > 0
|
||||
let chars = a:1
|
||||
@ -11,17 +11,20 @@ function! vimwiki#u#trim(string, ...) "{{{
|
||||
let res = substitute(a:string, '^[[:space:]'.chars.']\+', '', '')
|
||||
let res = substitute(res, '[[:space:]'.chars.']\+$', '', '')
|
||||
return res
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Builtin cursor doesn't work right with unicode characters.
|
||||
function! vimwiki#u#cursor(lnum, cnum) "{{{
|
||||
function! vimwiki#u#cursor(lnum, cnum)
|
||||
exe a:lnum
|
||||
exe 'normal! 0'.a:cnum.'|'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#u#is_windows() "{{{
|
||||
|
||||
function! vimwiki#u#is_windows()
|
||||
return has("win32") || has("win64") || has("win95") || has("win16")
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
function! vimwiki#u#is_macos()
|
||||
if has("mac") || has("macunix") || has("gui_mac")
|
||||
@ -32,27 +35,32 @@ function! vimwiki#u#is_macos()
|
||||
return os == 'Darwin' || os == 'Mac'
|
||||
endfunction
|
||||
|
||||
function! vimwiki#u#count_first_sym(line) "{{{
|
||||
|
||||
function! vimwiki#u#count_first_sym(line)
|
||||
let first_sym = matchstr(a:line, '\S')
|
||||
return len(matchstr(a:line, first_sym.'\+'))
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! vimwiki#u#escape(string) "{{{
|
||||
|
||||
function! vimwiki#u#escape(string)
|
||||
return escape(a:string, '~.*[]\^$')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Load concrete Wiki syntax: sets regexes and templates for headers and links
|
||||
function vimwiki#u#reload_regexes() "{{{
|
||||
function vimwiki#u#reload_regexes()
|
||||
execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'.vim'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Load syntax-specific functionality
|
||||
function vimwiki#u#reload_regexes_custom() "{{{
|
||||
function vimwiki#u#reload_regexes_custom()
|
||||
execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'_custom.vim'
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Backward compatible version of the built-in function shiftwidth()
|
||||
if exists('*shiftwidth') "{{{
|
||||
if exists('*shiftwidth')
|
||||
func vimwiki#u#sw()
|
||||
return shiftwidth()
|
||||
endfunc
|
||||
@ -60,4 +68,5 @@ else
|
||||
func vimwiki#u#sw()
|
||||
return &sw
|
||||
endfunc
|
||||
endif "}}}
|
||||
endif
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
" Vimwiki autoload plugin file
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
|
||||
" ------------------------------------------------------------------------------------------------
|
||||
" This file provides functions to manage the various state variables which are needed during a
|
||||
" Vimwiki session.
|
||||
@ -268,7 +270,7 @@ function! s:validate_settings()
|
||||
endfunction
|
||||
|
||||
|
||||
function! s:normalize_path(path) "{{{
|
||||
function! s:normalize_path(path)
|
||||
" trim trailing / and \ because otherwise resolve() doesn't work quite right
|
||||
let path = substitute(a:path, '[/\\]\+$', '', '')
|
||||
if path !~# '^scp:'
|
||||
@ -276,7 +278,7 @@ function! s:normalize_path(path) "{{{
|
||||
else
|
||||
return path.'/'
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
function! vimwiki#vars#populate_syntax_vars(syntax)
|
||||
@ -703,7 +705,9 @@ function! vimwiki#vars#add_temporary_wiki(settings)
|
||||
call s:validate_settings()
|
||||
endfunction
|
||||
|
||||
|
||||
" number of registered wikis + temporary
|
||||
function! vimwiki#vars#number_of_wikis()
|
||||
return len(g:vimwiki_wikilocal_vars) - 1
|
||||
endfunction
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki filetype plugin file
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
@ -8,7 +8,6 @@ endif
|
||||
let b:did_ftplugin = 1 " Don't load another plugin for this buffer
|
||||
|
||||
|
||||
" MISC STUFF {{{
|
||||
|
||||
setlocal commentstring=%%%s
|
||||
|
||||
@ -16,16 +15,14 @@ if vimwiki#vars#get_global('conceallevel') && exists("+conceallevel")
|
||||
let &l:conceallevel = vimwiki#vars#get_global('conceallevel')
|
||||
endif
|
||||
|
||||
" GOTO FILE: gf {{{
|
||||
" This is for GOTO FILE: gf
|
||||
execute 'setlocal suffixesadd='.vimwiki#vars#get_wikilocal('ext')
|
||||
setlocal isfname-=[,]
|
||||
" gf}}}
|
||||
|
||||
exe "setlocal tags+=" . escape(vimwiki#tags#metadata_file_path(), ' \|"')
|
||||
|
||||
" MISC }}}
|
||||
|
||||
" COMPLETION {{{
|
||||
|
||||
function! Complete_wikifiles(findstart, base)
|
||||
if a:findstart == 1
|
||||
let column = col('.')-2
|
||||
@ -116,9 +113,9 @@ function! Complete_wikifiles(findstart, base)
|
||||
endfunction
|
||||
|
||||
setlocal omnifunc=Complete_wikifiles
|
||||
" COMPLETION }}}
|
||||
|
||||
" LIST STUFF {{{
|
||||
|
||||
|
||||
" settings necessary for the automatic formatting of lists
|
||||
setlocal autoindent
|
||||
setlocal nosmartindent
|
||||
@ -130,7 +127,6 @@ setlocal formatoptions-=o
|
||||
setlocal formatoptions-=2
|
||||
setlocal formatoptions+=n
|
||||
|
||||
"Create 'formatlistpat'
|
||||
let &formatlistpat = vimwiki#vars#get_syntaxlocal('rxListItem')
|
||||
|
||||
if !empty(&langmap)
|
||||
@ -146,17 +142,18 @@ if !empty(&langmap)
|
||||
endif
|
||||
endif
|
||||
|
||||
" LIST STUFF }}}
|
||||
|
||||
" FOLDING {{{
|
||||
" Folding list items {{{
|
||||
function! VimwikiFoldListLevel(lnum) "{{{
|
||||
|
||||
" ------------------------------------------------
|
||||
" Folding stuff
|
||||
" ------------------------------------------------
|
||||
|
||||
function! VimwikiFoldListLevel(lnum)
|
||||
return vimwiki#lst#fold_level(a:lnum)
|
||||
endfunction "}}}
|
||||
" Folding list items }}}
|
||||
endfunction
|
||||
|
||||
" Folding sections and code blocks {{{
|
||||
function! VimwikiFoldLevel(lnum) "{{{
|
||||
|
||||
function! VimwikiFoldLevel(lnum)
|
||||
let line = getline(a:lnum)
|
||||
|
||||
" Header/section folding...
|
||||
@ -170,26 +167,29 @@ function! VimwikiFoldLevel(lnum) "{{{
|
||||
else
|
||||
return "="
|
||||
endif
|
||||
endfunction
|
||||
|
||||
endfunction "}}}
|
||||
|
||||
" Constants used by VimwikiFoldText {{{
|
||||
" Constants used by VimwikiFoldText
|
||||
" use \u2026 and \u21b2 (or \u2424) if enc=utf-8 to save screen space
|
||||
let s:ellipsis = (&enc ==? 'utf-8') ? "\u2026" : "..."
|
||||
let s:ell_len = strlen(s:ellipsis)
|
||||
let s:newline = (&enc ==? 'utf-8') ? "\u21b2 " : " "
|
||||
let s:tolerance = 5
|
||||
" }}}
|
||||
|
||||
function! s:shorten_text_simple(text, len) "{{{ unused
|
||||
|
||||
" unused
|
||||
function! s:shorten_text_simple(text, len)
|
||||
let spare_len = a:len - len(a:text)
|
||||
return (spare_len>=0) ? [a:text,spare_len] : [a:text[0:a:len].s:ellipsis, -1]
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" s:shorten_text(text, len) = [string, spare] with "spare" = len-strlen(string)
|
||||
" for long enough "text", the string's length is within s:tolerance of "len"
|
||||
" (so that -s:tolerance <= spare <= s:tolerance, "string" ends with s:ellipsis)
|
||||
function! s:shorten_text(text, len) "{{{ returns [string, spare]
|
||||
function! s:shorten_text(text, len)
|
||||
" returns [string, spare]
|
||||
" strlen() returns lenght in bytes, not in characters, so we'll have to do a
|
||||
" trick here -- replace all non-spaces with dot, calculate lengths and
|
||||
" indexes on it, then use original string to break at selected index.
|
||||
@ -202,11 +202,11 @@ function! s:shorten_text(text, len) "{{{ returns [string, spare]
|
||||
let newlen = a:len - s:ell_len
|
||||
let idx = strridx(text_pattern, ' ', newlen + s:tolerance)
|
||||
let break_idx = (idx + s:tolerance >= newlen) ? idx : newlen
|
||||
return [matchstr(a:text, '\m^.\{'.break_idx.'\}').s:ellipsis,
|
||||
\ newlen - break_idx]
|
||||
endfunction "}}}
|
||||
return [matchstr(a:text, '\m^.\{'.break_idx.'\}').s:ellipsis, newlen - break_idx]
|
||||
endfunction
|
||||
|
||||
function! VimwikiFoldText() "{{{
|
||||
|
||||
function! VimwikiFoldText()
|
||||
let line = getline(v:foldstart)
|
||||
let main_text = substitute(line, '^\s*', repeat(' ',indent(v:foldstart)), '')
|
||||
let fold_len = v:foldend - v:foldstart + 1
|
||||
@ -226,12 +226,14 @@ function! VimwikiFoldText() "{{{
|
||||
endif
|
||||
return main_text.len_text.content_text
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
" Folding sections and code blocks }}}
|
||||
" FOLDING }}}
|
||||
|
||||
" COMMANDS {{{
|
||||
|
||||
" ------------------------------------------------
|
||||
" Commands
|
||||
" ------------------------------------------------
|
||||
|
||||
command! -buffer Vimwiki2HTML
|
||||
\ if filewritable(expand('%')) | silent noautocmd w | endif
|
||||
\ <bar>
|
||||
@ -289,7 +291,8 @@ command! -buffer -range -nargs=1 VimwikiListChangeSymbolI
|
||||
command! -buffer -nargs=1 VimwikiChangeSymbolInListTo
|
||||
\ call vimwiki#lst#change_marker_in_list(<f-args>)
|
||||
command! -buffer -range VimwikiToggleListItem call vimwiki#lst#toggle_cb(<line1>, <line2>)
|
||||
command! -buffer -range VimwikiToggleRejectedListItem call vimwiki#lst#toggle_rejected_cb(<line1>, <line2>)
|
||||
command! -buffer -range VimwikiToggleRejectedListItem
|
||||
\ call vimwiki#lst#toggle_rejected_cb(<line1>, <line2>)
|
||||
command! -buffer -range VimwikiIncrementListItem call vimwiki#lst#increment_cb(<line1>, <line2>)
|
||||
command! -buffer -range VimwikiDecrementListItem call vimwiki#lst#decrement_cb(<line1>, <line2>)
|
||||
command! -buffer -range -nargs=+ VimwikiListChangeLvl
|
||||
@ -312,20 +315,25 @@ command! -buffer VimwikiDiaryNextDay call vimwiki#diary#goto_next_day()
|
||||
command! -buffer VimwikiDiaryPrevDay call vimwiki#diary#goto_prev_day()
|
||||
|
||||
" tags commands
|
||||
command! -buffer -bang
|
||||
\ VimwikiRebuildTags call vimwiki#tags#update_tags(1, '<bang>')
|
||||
command! -buffer -bang VimwikiRebuildTags call vimwiki#tags#update_tags(1, '<bang>')
|
||||
command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags
|
||||
\ VimwikiSearchTags VimwikiSearch /:<args>:/
|
||||
command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags
|
||||
\ VimwikiGenerateTags call vimwiki#tags#generate_tags(<f-args>)
|
||||
|
||||
" COMMANDS }}}
|
||||
command! -buffer VimwikiPasteUrl call vimwiki#html#PasteUrl(expand('%:p'))
|
||||
command! -buffer VimwikiCatUrl call vimwiki#html#CatUrl(expand('%:p'))
|
||||
|
||||
|
||||
" ------------------------------------------------
|
||||
" Keybindings
|
||||
" ------------------------------------------------
|
||||
|
||||
" KEYBINDINGS {{{
|
||||
if vimwiki#vars#get_global('use_mouse')
|
||||
nmap <buffer> <S-LeftMouse> <NOP>
|
||||
nmap <buffer> <C-LeftMouse> <NOP>
|
||||
nnoremap <silent><buffer> <2-LeftMouse> :call vimwiki#base#follow_link('nosplit', 0, 1, "\<lt>2-LeftMouse>")<CR>
|
||||
nnoremap <silent><buffer> <2-LeftMouse>
|
||||
\ :call vimwiki#base#follow_link('nosplit', 0, 1, "\<lt>2-LeftMouse>")<CR>
|
||||
nnoremap <silent><buffer> <S-2-LeftMouse> <LeftMouse>:VimwikiSplitLink<CR>
|
||||
nnoremap <silent><buffer> <C-2-LeftMouse> <LeftMouse>:VimwikiVSplitLink<CR>
|
||||
nnoremap <silent><buffer> <RightMouse><LeftMouse> :VimwikiGoBackLink<CR>
|
||||
@ -335,44 +343,37 @@ endif
|
||||
if !hasmapto('<Plug>Vimwiki2HTML')
|
||||
exe 'nmap <buffer> '.vimwiki#vars#get_global('map_prefix').'h <Plug>Vimwiki2HTML'
|
||||
endif
|
||||
nnoremap <script><buffer>
|
||||
\ <Plug>Vimwiki2HTML :Vimwiki2HTML<CR>
|
||||
nnoremap <script><buffer> <Plug>Vimwiki2HTML :Vimwiki2HTML<CR>
|
||||
|
||||
if !hasmapto('<Plug>Vimwiki2HTMLBrowse')
|
||||
exe 'nmap <buffer> '.vimwiki#vars#get_global('map_prefix').'hh <Plug>Vimwiki2HTMLBrowse'
|
||||
endif
|
||||
nnoremap <script><buffer>
|
||||
\ <Plug>Vimwiki2HTMLBrowse :Vimwiki2HTMLBrowse<CR>
|
||||
nnoremap <script><buffer> <Plug>Vimwiki2HTMLBrowse :Vimwiki2HTMLBrowse<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiFollowLink')
|
||||
nmap <silent><buffer> <CR> <Plug>VimwikiFollowLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiFollowLink :VimwikiFollowLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiFollowLink :VimwikiFollowLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiSplitLink')
|
||||
nmap <silent><buffer> <S-CR> <Plug>VimwikiSplitLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiSplitLink :VimwikiSplitLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiSplitLink :VimwikiSplitLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiVSplitLink')
|
||||
nmap <silent><buffer> <C-CR> <Plug>VimwikiVSplitLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiVSplitLink :VimwikiVSplitLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiVSplitLink :VimwikiVSplitLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiNormalizeLink')
|
||||
nmap <silent><buffer> + <Plug>VimwikiNormalizeLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiNormalizeLink :VimwikiNormalizeLink 0<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiNormalizeLink :VimwikiNormalizeLink 0<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiNormalizeLinkVisual')
|
||||
vmap <silent><buffer> + <Plug>VimwikiNormalizeLinkVisual
|
||||
endif
|
||||
vnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiNormalizeLinkVisual :<C-U>VimwikiNormalizeLink 1<CR>
|
||||
vnoremap <silent><script><buffer> <Plug>VimwikiNormalizeLinkVisual :<C-U>VimwikiNormalizeLink 1<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiNormalizeLinkVisualCR')
|
||||
vmap <silent><buffer> <CR> <Plug>VimwikiNormalizeLinkVisualCR
|
||||
@ -384,50 +385,42 @@ if !hasmapto('<Plug>VimwikiTabnewLink')
|
||||
nmap <silent><buffer> <D-CR> <Plug>VimwikiTabnewLink
|
||||
nmap <silent><buffer> <C-S-CR> <Plug>VimwikiTabnewLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiTabnewLink :VimwikiTabnewLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiTabnewLink :VimwikiTabnewLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiGoBackLink')
|
||||
nmap <silent><buffer> <BS> <Plug>VimwikiGoBackLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiGoBackLink :VimwikiGoBackLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiGoBackLink :VimwikiGoBackLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiNextLink')
|
||||
nmap <silent><buffer> <TAB> <Plug>VimwikiNextLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiNextLink :VimwikiNextLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiNextLink :VimwikiNextLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiPrevLink')
|
||||
nmap <silent><buffer> <S-TAB> <Plug>VimwikiPrevLink
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiPrevLink :VimwikiPrevLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiPrevLink :VimwikiPrevLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiDeleteLink')
|
||||
exe 'nmap <silent><buffer> '.vimwiki#vars#get_global('map_prefix').'d <Plug>VimwikiDeleteLink'
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiDeleteLink :VimwikiDeleteLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiDeleteLink :VimwikiDeleteLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiRenameLink')
|
||||
exe 'nmap <silent><buffer> '.vimwiki#vars#get_global('map_prefix').'r <Plug>VimwikiRenameLink'
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiRenameLink :VimwikiRenameLink<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiRenameLink :VimwikiRenameLink<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiDiaryNextDay')
|
||||
nmap <silent><buffer> <C-Down> <Plug>VimwikiDiaryNextDay
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiDiaryNextDay :VimwikiDiaryNextDay<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiDiaryNextDay :VimwikiDiaryNextDay<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiDiaryPrevDay')
|
||||
nmap <silent><buffer> <C-Up> <Plug>VimwikiDiaryPrevDay
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiDiaryPrevDay :VimwikiDiaryPrevDay<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiDiaryPrevDay :VimwikiDiaryPrevDay<CR>
|
||||
|
||||
" List mappings
|
||||
if !hasmapto('<Plug>VimwikiToggleListItem')
|
||||
@ -442,10 +435,8 @@ if !hasmapto('<Plug>VimwikiToggleRejectedListItem')
|
||||
nmap <silent><buffer> glx <Plug>VimwikiToggleRejectedListItem
|
||||
vmap <silent><buffer> glx <Plug>VimwikiToggleRejectedListItem
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR>
|
||||
vnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR>
|
||||
vnoremap <silent><script><buffer> <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR>
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiToggleRejectedListItem :VimwikiToggleRejectedListItem<CR>
|
||||
vnoremap <silent><script><buffer>
|
||||
@ -459,39 +450,31 @@ if !hasmapto('<Plug>VimwikiDecrementListItem')
|
||||
nmap <silent><buffer> glp <Plug>VimwikiDecrementListItem
|
||||
vmap <silent><buffer> glp <Plug>VimwikiDecrementListItem
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiIncrementListItem :VimwikiIncrementListItem<CR>
|
||||
vnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiIncrementListItem :VimwikiIncrementListItem<CR>
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiDecrementListItem :VimwikiDecrementListItem<CR>
|
||||
vnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiDecrementListItem :VimwikiDecrementListItem<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiIncrementListItem :VimwikiIncrementListItem<CR>
|
||||
vnoremap <silent><script><buffer> <Plug>VimwikiIncrementListItem :VimwikiIncrementListItem<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiDecrementListItem :VimwikiDecrementListItem<CR>
|
||||
vnoremap <silent><script><buffer> <Plug>VimwikiDecrementListItem :VimwikiDecrementListItem<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiDecreaseLvlSingleItem', 'i')
|
||||
imap <silent><buffer> <C-D>
|
||||
\ <Plug>VimwikiDecreaseLvlSingleItem
|
||||
imap <silent><buffer> <C-D> <Plug>VimwikiDecreaseLvlSingleItem
|
||||
endif
|
||||
inoremap <silent><script><buffer> <Plug>VimwikiDecreaseLvlSingleItem
|
||||
\ <C-O>:VimwikiListChangeLvl decrease 0<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiIncreaseLvlSingleItem', 'i')
|
||||
imap <silent><buffer> <C-T>
|
||||
\ <Plug>VimwikiIncreaseLvlSingleItem
|
||||
imap <silent><buffer> <C-T> <Plug>VimwikiIncreaseLvlSingleItem
|
||||
endif
|
||||
inoremap <silent><script><buffer> <Plug>VimwikiIncreaseLvlSingleItem
|
||||
\ <C-O>:VimwikiListChangeLvl increase 0<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiListNextSymbol', 'i')
|
||||
imap <silent><buffer> <C-L><C-J>
|
||||
\ <Plug>VimwikiListNextSymbol
|
||||
imap <silent><buffer> <C-L><C-J> <Plug>VimwikiListNextSymbol
|
||||
endif
|
||||
inoremap <silent><script><buffer> <Plug>VimwikiListNextSymbol
|
||||
\ <C-O>:VimwikiListChangeSymbolI next<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiListPrevSymbol', 'i')
|
||||
imap <silent><buffer> <C-L><C-K>
|
||||
\ <Plug>VimwikiListPrevSymbol
|
||||
imap <silent><buffer> <C-L><C-K> <Plug>VimwikiListPrevSymbol
|
||||
endif
|
||||
inoremap <silent><script><buffer> <Plug>VimwikiListPrevSymbol
|
||||
\ <C-O>:VimwikiListChangeSymbolI prev<CR>
|
||||
@ -507,15 +490,13 @@ nnoremap <silent> <buffer> O :<C-U>call vimwiki#lst#kbd_O()<CR>
|
||||
if !hasmapto('<Plug>VimwikiRenumberList')
|
||||
nmap <silent><buffer> glr <Plug>VimwikiRenumberList
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiRenumberList :VimwikiRenumberList<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiRenumberList :VimwikiRenumberList<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiRenumberAllLists')
|
||||
nmap <silent><buffer> gLr <Plug>VimwikiRenumberAllLists
|
||||
nmap <silent><buffer> gLR <Plug>VimwikiRenumberAllLists
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiRenumberAllLists :VimwikiRenumberAllLists<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiRenumberAllLists :VimwikiRenumberAllLists<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiDecreaseLvlSingleItem')
|
||||
map <silent><buffer> glh <Plug>VimwikiDecreaseLvlSingleItem
|
||||
@ -546,14 +527,12 @@ noremap <silent><script><buffer>
|
||||
if !hasmapto('<Plug>VimwikiRemoveSingleCB')
|
||||
map <silent><buffer> gl<Space> <Plug>VimwikiRemoveSingleCB
|
||||
endif
|
||||
noremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiRemoveSingleCB :VimwikiRemoveSingleCB<CR>
|
||||
noremap <silent><script><buffer> <Plug>VimwikiRemoveSingleCB :VimwikiRemoveSingleCB<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiRemoveCBInList')
|
||||
map <silent><buffer> gL<Space> <Plug>VimwikiRemoveCBInList
|
||||
endif
|
||||
noremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiRemoveCBInList :VimwikiRemoveCBInList<CR>
|
||||
noremap <silent><script><buffer> <Plug>VimwikiRemoveCBInList :VimwikiRemoveCBInList<CR>
|
||||
|
||||
for s:char in vimwiki#vars#get_syntaxlocal('bullet_types')
|
||||
if !hasmapto(':VimwikiChangeSymbolTo '.s:char.'<CR>')
|
||||
@ -574,8 +553,7 @@ for s:typ in vimwiki#vars#get_syntaxlocal('number_types')
|
||||
endfor
|
||||
|
||||
|
||||
|
||||
function! s:CR(normal, just_mrkr) "{{{
|
||||
function! s:CR(normal, just_mrkr)
|
||||
if vimwiki#vars#get_global('table_mappings')
|
||||
let res = vimwiki#tbl#kbd_cr()
|
||||
if res != ""
|
||||
@ -585,7 +563,7 @@ function! s:CR(normal, just_mrkr) "{{{
|
||||
endif
|
||||
endif
|
||||
call vimwiki#lst#kbd_cr(a:normal, a:just_mrkr)
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
if !hasmapto('VimwikiReturn', 'i')
|
||||
if maparg('<CR>', 'i') !~? '<Esc>:VimwikiReturn'
|
||||
@ -609,8 +587,7 @@ nnoremap <buffer> gww :VimwikiTableAlignW<CR>
|
||||
if !hasmapto('<Plug>VimwikiTableMoveColumnLeft')
|
||||
nmap <silent><buffer> <A-Left> <Plug>VimwikiTableMoveColumnLeft
|
||||
endif
|
||||
nnoremap <silent><script><buffer>
|
||||
\ <Plug>VimwikiTableMoveColumnLeft :VimwikiTableMoveColumnLeft<CR>
|
||||
nnoremap <silent><script><buffer> <Plug>VimwikiTableMoveColumnLeft :VimwikiTableMoveColumnLeft<CR>
|
||||
if !hasmapto('<Plug>VimwikiTableMoveColumnRight')
|
||||
nmap <silent><buffer> <A-Right> <Plug>VimwikiTableMoveColumnRight
|
||||
endif
|
||||
@ -619,7 +596,10 @@ nnoremap <silent><script><buffer>
|
||||
|
||||
|
||||
|
||||
" Text objects {{{
|
||||
" ------------------------------------------------
|
||||
" Text objects
|
||||
" ------------------------------------------------
|
||||
|
||||
onoremap <silent><buffer> ah :<C-U>call vimwiki#base#TO_header(0, 0, v:count1)<CR>
|
||||
vnoremap <silent><buffer> ah :<C-U>call vimwiki#base#TO_header(0, 0, v:count1)<CR>
|
||||
|
||||
@ -653,8 +633,7 @@ vnoremap <silent><buffer> il :<C-U>call vimwiki#lst#TO_list_item(1, 1)<CR>
|
||||
if !hasmapto('<Plug>VimwikiAddHeaderLevel')
|
||||
nmap <silent><buffer> = <Plug>VimwikiAddHeaderLevel
|
||||
endif
|
||||
nnoremap <silent><buffer> <Plug>VimwikiAddHeaderLevel :
|
||||
\<C-U>call vimwiki#base#AddHeaderLevel()<CR>
|
||||
nnoremap <silent><buffer> <Plug>VimwikiAddHeaderLevel :<C-U>call vimwiki#base#AddHeaderLevel()<CR>
|
||||
|
||||
if !hasmapto('<Plug>VimwikiRemoveHeaderLevel')
|
||||
nmap <silent><buffer> - <Plug>VimwikiRemoveHeaderLevel
|
||||
@ -693,11 +672,8 @@ endif
|
||||
nnoremap <silent><buffer> <Plug>VimwikiGoToPrevSiblingHeader :
|
||||
\<C-u>call vimwiki#base#goto_sibling(-1)<CR>
|
||||
|
||||
" }}}
|
||||
|
||||
" KEYBINDINGS }}}
|
||||
|
||||
" AUTOCOMMANDS {{{
|
||||
if vimwiki#vars#get_wikilocal('auto_export')
|
||||
" Automatically generate HTML on page write.
|
||||
augroup vimwiki
|
||||
@ -720,10 +696,4 @@ if vimwiki#vars#get_wikilocal('auto_tags')
|
||||
au BufWritePost <buffer> call vimwiki#tags#update_tags(0, '')
|
||||
augroup END
|
||||
endif
|
||||
" AUTOCOMMANDS }}}
|
||||
|
||||
" PASTE, CAT URL {{{
|
||||
" html commands
|
||||
command! -buffer VimwikiPasteUrl call vimwiki#html#PasteUrl(expand('%:p'))
|
||||
command! -buffer VimwikiCatUrl call vimwiki#html#CatUrl(expand('%:p'))
|
||||
" }}}
|
||||
|
@ -1,19 +1,21 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki plugin file
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
" GetLatestVimScripts: 2226 1 :AutoInstall: vimwiki
|
||||
|
||||
|
||||
if exists("g:loaded_vimwiki") || &cp
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimwiki = 1
|
||||
|
||||
|
||||
let s:old_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
|
||||
" this is called when the cursor leaves the buffer
|
||||
function! s:setup_buffer_leave() "{{{
|
||||
function! s:setup_buffer_leave()
|
||||
" don't do anything if it's not managed by Vimwiki (that is, when it's not in
|
||||
" a registered wiki and not a temporary wiki)
|
||||
if vimwiki#vars#get_bufferlocal('wiki_nr') == -1
|
||||
@ -25,7 +27,7 @@ function! s:setup_buffer_leave() "{{{
|
||||
if vimwiki#vars#get_global('menu') != ""
|
||||
exe 'nmenu disable '.vimwiki#vars#get_global('menu').'.Table'
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" create a new temporary wiki for the current buffer
|
||||
@ -52,7 +54,7 @@ endfunction
|
||||
" This function is called when Vim opens a new buffer with a known wiki
|
||||
" extension. Both when the buffer has never been opened in this session and
|
||||
" when it has.
|
||||
function! s:setup_new_wiki_buffer() "{{{
|
||||
function! s:setup_new_wiki_buffer()
|
||||
let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr')
|
||||
if wiki_nr == -1 " it's not in a known wiki directory
|
||||
if vimwiki#vars#get_global('global_ext')
|
||||
@ -73,11 +75,11 @@ function! s:setup_new_wiki_buffer() "{{{
|
||||
" sourced
|
||||
setfiletype vimwiki
|
||||
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" this is called when the cursor enters the buffer
|
||||
function! s:setup_buffer_enter() "{{{
|
||||
function! s:setup_buffer_enter()
|
||||
" don't do anything if it's not managed by Vimwiki (that is, when it's not in
|
||||
" a registered wiki and not a temporary wiki)
|
||||
if vimwiki#vars#get_bufferlocal('wiki_nr') == -1
|
||||
@ -91,10 +93,11 @@ function! s:setup_buffer_enter() "{{{
|
||||
call s:set_global_options()
|
||||
|
||||
call s:set_windowlocal_options()
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
function! s:setup_cleared_syntax() "{{{ highlight groups that get cleared
|
||||
function! s:setup_cleared_syntax()
|
||||
" highlight groups that get cleared
|
||||
" on colorscheme change because they are not linked to Vim-predefined groups
|
||||
hi def VimwikiBold term=bold cterm=bold gui=bold
|
||||
hi def VimwikiItalic term=italic cterm=italic gui=italic
|
||||
@ -108,10 +111,10 @@ function! s:setup_cleared_syntax() "{{{ highlight groups that get cleared
|
||||
\ .' term=bold cterm=bold'
|
||||
endfor
|
||||
endif
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
function! s:vimwiki_get_known_extensions() " {{{
|
||||
function! s:vimwiki_get_known_extensions()
|
||||
" Getting all extensions that different wikis could have
|
||||
let extensions = {}
|
||||
for idx in range(vimwiki#vars#number_of_wikis())
|
||||
@ -123,7 +126,7 @@ function! s:vimwiki_get_known_extensions() " {{{
|
||||
let extensions[ext] = 1
|
||||
endfor
|
||||
return keys(extensions)
|
||||
endfunction " }}}
|
||||
endfunction
|
||||
|
||||
|
||||
" Set settings which are global for Vim, but should only be executed for
|
||||
@ -171,7 +174,7 @@ function! s:set_windowlocal_options()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
|
||||
|
||||
" Initialization of Vimwiki starts here. Make sure everything below does not
|
||||
@ -179,30 +182,30 @@ endfunction
|
||||
|
||||
call vimwiki#vars#init()
|
||||
|
||||
" CALLBACK functions "{{{
|
||||
" User can redefine it.
|
||||
if !exists("*VimwikiLinkHandler") "{{{
|
||||
|
||||
" Define callback functions which the user can redefine
|
||||
if !exists("*VimwikiLinkHandler")
|
||||
function VimwikiLinkHandler(url)
|
||||
return 0
|
||||
endfunction
|
||||
endif "}}}
|
||||
endif
|
||||
|
||||
if !exists("*VimwikiLinkConverter") "{{{
|
||||
if !exists("*VimwikiLinkConverter")
|
||||
function VimwikiLinkConverter(url, source, target)
|
||||
" Return the empty string when unable to process link
|
||||
return ''
|
||||
endfunction
|
||||
endif "}}}
|
||||
endif
|
||||
|
||||
if !exists("*VimwikiWikiIncludeHandler") "{{{
|
||||
function! VimwikiWikiIncludeHandler(value) "{{{
|
||||
if !exists("*VimwikiWikiIncludeHandler")
|
||||
function! VimwikiWikiIncludeHandler(value)
|
||||
return ''
|
||||
endfunction "}}}
|
||||
endif "}}}
|
||||
" CALLBACK }}}
|
||||
endfunction
|
||||
endif
|
||||
|
||||
|
||||
" AUTOCOMMANDS for all known wiki extensions {{{
|
||||
|
||||
" Define autocommands for all known wiki extensions
|
||||
|
||||
let s:known_extensions = s:vimwiki_get_known_extensions()
|
||||
|
||||
@ -228,9 +231,9 @@ augroup vimwiki
|
||||
endif
|
||||
endfor
|
||||
augroup END
|
||||
"}}}
|
||||
|
||||
" COMMANDS {{{
|
||||
|
||||
|
||||
command! VimwikiUISelect call vimwiki#base#ui_select()
|
||||
" why not using <count> instead of v:count1?
|
||||
" See https://github.com/vimwiki-backup/vimwiki/issues/324
|
||||
@ -246,15 +249,17 @@ command! -count=1 VimwikiMakeDiaryNote
|
||||
command! -count=1 VimwikiTabMakeDiaryNote
|
||||
\ call vimwiki#diary#make_note(v:count1, 1)
|
||||
command! -count=1 VimwikiMakeYesterdayDiaryNote
|
||||
\ call vimwiki#diary#make_note(v:count1, 0, vimwiki#diary#diary_date_link(localtime() - 60*60*24))
|
||||
\ call vimwiki#diary#make_note(v:count1, 0,
|
||||
\ vimwiki#diary#diary_date_link(localtime() - 60*60*24))
|
||||
command! -count=1 VimwikiMakeTomorrowDiaryNote
|
||||
\ call vimwiki#diary#make_note(v:count1, 0, vimwiki#diary#diary_date_link(localtime() + 60*60*24))
|
||||
\ call vimwiki#diary#make_note(v:count1, 0,
|
||||
\ vimwiki#diary#diary_date_link(localtime() + 60*60*24))
|
||||
|
||||
command! VimwikiDiaryGenerateLinks
|
||||
\ call vimwiki#diary#generate_diary_section()
|
||||
"}}}
|
||||
|
||||
" MAPPINGS {{{
|
||||
|
||||
|
||||
let s:map_prefix = vimwiki#vars#get_global('map_prefix')
|
||||
|
||||
if !hasmapto('<Plug>VimwikiIndex')
|
||||
@ -305,9 +310,9 @@ endif
|
||||
nnoremap <unique><script> <Plug>VimwikiMakeTomorrowDiaryNote
|
||||
\ :VimwikiMakeTomorrowDiaryNote<CR>
|
||||
|
||||
"}}}
|
||||
|
||||
" MENU {{{
|
||||
|
||||
|
||||
function! s:build_menu(topmenu)
|
||||
for idx in range(vimwiki#vars#number_of_wikis())
|
||||
let norm_path = fnamemodify(vimwiki#vars#get_wikilocal('path', idx), ':h:t')
|
||||
@ -324,7 +329,8 @@ function! s:build_table_menu(topmenu)
|
||||
exe 'menu '.a:topmenu.'.Table.Create\ (enter\ cols\ rows) :VimwikiTable '
|
||||
exe 'nmenu '.a:topmenu.'.Table.Format<tab>gqq gqq'
|
||||
exe 'nmenu '.a:topmenu.'.Table.Move\ column\ left<tab><A-Left> :VimwikiTableMoveColumnLeft<CR>'
|
||||
exe 'nmenu '.a:topmenu.'.Table.Move\ column\ right<tab><A-Right> :VimwikiTableMoveColumnRight<CR>'
|
||||
exe 'nmenu '.a:topmenu.
|
||||
\ '.Table.Move\ column\ right<tab><A-Right> :VimwikiTableMoveColumnRight<CR>'
|
||||
exe 'nmenu disable '.a:topmenu.'.Table'
|
||||
endfunction
|
||||
|
||||
@ -333,14 +339,13 @@ if !empty(vimwiki#vars#get_global('menu'))
|
||||
call s:build_menu(vimwiki#vars#get_global('menu'))
|
||||
call s:build_table_menu(vimwiki#vars#get_global('menu'))
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" CALENDAR Hook "{{{
|
||||
|
||||
" Hook for calendar.vim
|
||||
if vimwiki#vars#get_global('use_calendar')
|
||||
let g:calendar_action = 'vimwiki#diary#calendar_action'
|
||||
let g:calendar_sign = 'vimwiki#diary#calendar_sign'
|
||||
endif
|
||||
"}}}
|
||||
|
||||
|
||||
let &cpo = s:old_cpo
|
||||
|
@ -1,7 +1,8 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
" Quit if syntax file is already loaded
|
||||
if v:version < 600
|
||||
syntax clear
|
||||
@ -12,35 +13,38 @@ endif
|
||||
|
||||
let s:current_syntax = vimwiki#vars#get_wikilocal('syntax')
|
||||
|
||||
|
||||
call vimwiki#vars#populate_syntax_vars(s:current_syntax)
|
||||
|
||||
|
||||
" LINKS: highlighting is complicated due to "nonexistent" links feature {{{
|
||||
function! s:add_target_syntax_ON(target, type) " {{{
|
||||
" LINKS: highlighting is complicated due to "nonexistent" links feature
|
||||
function! s:add_target_syntax_ON(target, type)
|
||||
let prefix0 = 'syntax match '.a:type.' `'
|
||||
let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char'
|
||||
let prefix1 = 'syntax match '.a:type.'T `'
|
||||
let suffix1 = '` display contained'
|
||||
execute prefix0. a:target. suffix0
|
||||
execute prefix1. a:target. suffix1
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:add_target_syntax_OFF(target) " {{{
|
||||
|
||||
function! s:add_target_syntax_OFF(target)
|
||||
let prefix0 = 'syntax match VimwikiNoExistsLink `'
|
||||
let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,VimwikiLinkChar'
|
||||
let prefix1 = 'syntax match VimwikiNoExistsLinkT `'
|
||||
let suffix1 = '` display contained'
|
||||
execute prefix0. a:target. suffix0
|
||||
execute prefix1. a:target. suffix1
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:highlight_existing_links() "{{{
|
||||
|
||||
function! s:highlight_existing_links()
|
||||
" Wikilink
|
||||
" Conditional highlighting that depends on the existence of a wiki file or
|
||||
" directory is only available for *schemeless* wiki links
|
||||
" Links are set up upon BufEnter (see plugin/...)
|
||||
let safe_links = '\%('.vimwiki#base#file_pattern(vimwiki#vars#get_bufferlocal('existing_wikifiles')) .
|
||||
\ '\%(#[^|]*\)\?\|#[^|]*\)'
|
||||
let safe_links = '\%('.vimwiki#base#file_pattern(
|
||||
\ vimwiki#vars#get_bufferlocal('existing_wikifiles')) . '\%(#[^|]*\)\?\|#[^|]*\)'
|
||||
" Wikilink Dirs set up upon BufEnter (see plugin/...)
|
||||
let safe_dirs = vimwiki#base#file_pattern(vimwiki#vars#get_bufferlocal('existing_wikidirs'))
|
||||
|
||||
@ -75,7 +79,7 @@ function! s:highlight_existing_links() "{{{
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_global('WikiLinkTemplate2')),
|
||||
\ safe_dirs, vimwiki#vars#get_global('rxWikiLinkDescr'), '')
|
||||
call s:add_target_syntax_ON(target, 'VimwikiLink')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" use max highlighting - could be quite slow if there are too many wikifiles
|
||||
@ -94,9 +98,11 @@ else
|
||||
call s:add_target_syntax_ON(vimwiki#vars#get_global('rxWikiIncl'), 'VimwikiLink')
|
||||
endif
|
||||
|
||||
|
||||
" Weblink
|
||||
call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWeblink'), 'VimwikiLink')
|
||||
|
||||
|
||||
" WikiLink
|
||||
" All remaining schemes are highlighted automatically
|
||||
let s:rxSchemes = '\%('.
|
||||
@ -107,64 +113,73 @@ let s:rxSchemes = '\%('.
|
||||
" a) match [[nonwiki-scheme-URL]]
|
||||
let s:target = vimwiki#base#apply_template(
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_global('WikiLinkTemplate1')),
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiLinkUrl'), vimwiki#vars#get_global('rxWikiLinkDescr'), '')
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiLinkUrl'),
|
||||
\ vimwiki#vars#get_global('rxWikiLinkDescr'), '')
|
||||
call s:add_target_syntax_ON(s:target, 'VimwikiLink')
|
||||
" b) match [[nonwiki-scheme-URL|DESCRIPTION]]
|
||||
let s:target = vimwiki#base#apply_template(
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_global('WikiLinkTemplate2')),
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiLinkUrl'), vimwiki#vars#get_global('rxWikiLinkDescr'), '')
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiLinkUrl'),
|
||||
\ vimwiki#vars#get_global('rxWikiLinkDescr'), '')
|
||||
call s:add_target_syntax_ON(s:target, 'VimwikiLink')
|
||||
|
||||
" a) match {{nonwiki-scheme-URL}}
|
||||
let s:target = vimwiki#base#apply_template(
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_global('WikiInclTemplate1')),
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiInclUrl'), vimwiki#vars#get_global('rxWikiInclArgs'), '')
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiInclUrl'),
|
||||
\ vimwiki#vars#get_global('rxWikiInclArgs'), '')
|
||||
call s:add_target_syntax_ON(s:target, 'VimwikiLink')
|
||||
" b) match {{nonwiki-scheme-URL}[{...}]}
|
||||
let s:target = vimwiki#base#apply_template(
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_global('WikiInclTemplate2')),
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiInclUrl'), vimwiki#vars#get_global('rxWikiInclArgs'), '')
|
||||
\ s:rxSchemes.vimwiki#vars#get_global('rxWikiInclUrl'),
|
||||
\ vimwiki#vars#get_global('rxWikiInclArgs'), '')
|
||||
call s:add_target_syntax_ON(s:target, 'VimwikiLink')
|
||||
|
||||
" }}}
|
||||
|
||||
" generic headers "{{{
|
||||
|
||||
" Header levels, 1-6
|
||||
for s:i in range(1,6)
|
||||
execute 'syntax match VimwikiHeader'.s:i
|
||||
\ . ' /'.vimwiki#vars#get_syntaxlocal('rxH'.s:i, s:current_syntax).'/'
|
||||
\ . ' contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,VimwikiLink,@Spell'
|
||||
execute 'syntax region VimwikiH'.s:i.'Folding'
|
||||
\ . ' start=/'.vimwiki#vars#get_syntaxlocal('rxH'.s:i.'_Start', s:current_syntax).'/'
|
||||
\ . ' end=/'.vimwiki#vars#get_syntaxlocal('rxH'.s:i.'_End', s:current_syntax).'/me=s-1 transparent fold'
|
||||
\ . ' /'.vimwiki#vars#get_syntaxlocal('rxH'.s:i, s:current_syntax).
|
||||
\ '/ contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,'.
|
||||
\ 'VimwikiLink,@Spell'
|
||||
execute 'syntax region VimwikiH'.s:i.'Folding start=/'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxH'.s:i.'_Start', s:current_syntax).'/ end=/'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxH'.s:i.'_End', s:current_syntax).
|
||||
\ '/me=s-1 transparent fold'
|
||||
endfor
|
||||
|
||||
|
||||
" }}}
|
||||
|
||||
|
||||
" possibly concealed chars " {{{
|
||||
" possibly concealed chars
|
||||
let s:conceal = exists("+conceallevel") ? ' conceal' : ''
|
||||
|
||||
execute 'syn match VimwikiEqInChar contained /'.vimwiki#vars#get_syntaxlocal('char_eqin').'/'.s:conceal
|
||||
execute 'syn match VimwikiBoldChar contained /'.vimwiki#vars#get_syntaxlocal('char_bold').'/'.s:conceal
|
||||
execute 'syn match VimwikiItalicChar contained /'.vimwiki#vars#get_syntaxlocal('char_italic').'/'.s:conceal
|
||||
execute 'syn match VimwikiBoldItalicChar contained /'.vimwiki#vars#get_syntaxlocal('char_bolditalic').'/'.s:conceal
|
||||
execute 'syn match VimwikiItalicBoldChar contained /'.vimwiki#vars#get_syntaxlocal('char_italicbold').'/'.s:conceal
|
||||
execute 'syn match VimwikiCodeChar contained /'.vimwiki#vars#get_syntaxlocal('char_code').'/'.s:conceal
|
||||
execute 'syn match VimwikiDelTextChar contained /'.vimwiki#vars#get_syntaxlocal('char_deltext').'/'.s:conceal
|
||||
execute 'syn match VimwikiSuperScript contained /'.vimwiki#vars#get_syntaxlocal('char_superscript').'/'.s:conceal
|
||||
execute 'syn match VimwikiSubScript contained /'.vimwiki#vars#get_syntaxlocal('char_subscript').'/'.s:conceal
|
||||
" }}}
|
||||
execute 'syn match VimwikiEqInChar contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_eqin').'/'.s:conceal
|
||||
execute 'syn match VimwikiBoldChar contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_bold').'/'.s:conceal
|
||||
execute 'syn match VimwikiItalicChar contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_italic').'/'.s:conceal
|
||||
execute 'syn match VimwikiBoldItalicChar contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_bolditalic').'/'.s:conceal
|
||||
execute 'syn match VimwikiItalicBoldChar contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_italicbold').'/'.s:conceal
|
||||
execute 'syn match VimwikiCodeChar contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_code').'/'.s:conceal
|
||||
execute 'syn match VimwikiDelTextChar contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_deltext').'/'.s:conceal
|
||||
execute 'syn match VimwikiSuperScript contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_superscript').'/'.s:conceal
|
||||
execute 'syn match VimwikiSubScript contained /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('char_subscript').'/'.s:conceal
|
||||
|
||||
|
||||
|
||||
" concealed link parts " {{{
|
||||
|
||||
" define the conceal attribute for links only if Vim is new enough to handle it
|
||||
" and the user has g:vimwiki_url_maxsave > 0
|
||||
|
||||
let s:options = ' contained transparent contains=NONE'
|
||||
"
|
||||
|
||||
" A shortener for long URLs: LinkRest (a middle part of the URL) is concealed
|
||||
" VimwikiLinkRest group is left undefined if link shortening is not desired
|
||||
if exists("+conceallevel") && vimwiki#vars#get_global('url_maxsave') > 0
|
||||
@ -187,27 +202,37 @@ execute 'syn match VimwikiLinkChar /'.vimwiki#vars#get_global('rxWikiInclPrefix'
|
||||
execute 'syn match VimwikiLinkChar /'.vimwiki#vars#get_global('rxWikiInclSuffix').'/'.s:options
|
||||
execute 'syn match VimwikiLinkChar /'.vimwiki#vars#get_global('rxWikiInclPrefix1').'/'.s:options
|
||||
execute 'syn match VimwikiLinkChar /'.vimwiki#vars#get_global('rxWikiInclSuffix1').'/'.s:options
|
||||
" }}}
|
||||
|
||||
" non concealed chars " {{{
|
||||
execute 'syn match VimwikiHeaderChar contained /\%(^\s*'.vimwiki#vars#get_syntaxlocal('rxH').'\+\)\|\%('.vimwiki#vars#get_syntaxlocal('rxH').'\+\s*$\)/'
|
||||
execute 'syn match VimwikiEqInCharT contained /'.vimwiki#vars#get_syntaxlocal('char_eqin').'/'
|
||||
execute 'syn match VimwikiBoldCharT contained /'.vimwiki#vars#get_syntaxlocal('char_bold').'/'
|
||||
execute 'syn match VimwikiItalicCharT contained /'.vimwiki#vars#get_syntaxlocal('char_italic').'/'
|
||||
execute 'syn match VimwikiBoldItalicCharT contained /'.vimwiki#vars#get_syntaxlocal('char_bolditalic').'/'
|
||||
execute 'syn match VimwikiItalicBoldCharT contained /'.vimwiki#vars#get_syntaxlocal('char_italicbold').'/'
|
||||
execute 'syn match VimwikiCodeCharT contained /'.vimwiki#vars#get_syntaxlocal('char_code').'/'
|
||||
execute 'syn match VimwikiDelTextCharT contained /'.vimwiki#vars#get_syntaxlocal('char_deltext').'/'
|
||||
execute 'syn match VimwikiSuperScriptT contained /'.vimwiki#vars#get_syntaxlocal('char_superscript').'/'
|
||||
execute 'syn match VimwikiSubScriptT contained /'.vimwiki#vars#get_syntaxlocal('char_subscript').'/'
|
||||
|
||||
" non concealed chars
|
||||
execute 'syn match VimwikiHeaderChar contained /\%(^\s*'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxH').'\+\)\|\%('.vimwiki#vars#get_syntaxlocal('rxH').
|
||||
\ '\+\s*$\)/'
|
||||
execute 'syn match VimwikiEqInCharT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_eqin').'/'
|
||||
execute 'syn match VimwikiBoldCharT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_bold').'/'
|
||||
execute 'syn match VimwikiItalicCharT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_italic').'/'
|
||||
execute 'syn match VimwikiBoldItalicCharT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_bolditalic').'/'
|
||||
execute 'syn match VimwikiItalicBoldCharT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_italicbold').'/'
|
||||
execute 'syn match VimwikiCodeCharT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_code').'/'
|
||||
execute 'syn match VimwikiDelTextCharT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_deltext').'/'
|
||||
execute 'syn match VimwikiSuperScriptT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_superscript').'/'
|
||||
execute 'syn match VimwikiSubScriptT contained /'
|
||||
\ .vimwiki#vars#get_syntaxlocal('char_subscript').'/'
|
||||
|
||||
" Emoticons
|
||||
"syntax match VimwikiEmoticons /\%((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/
|
||||
|
||||
execute 'syntax match VimwikiTodo /'. vimwiki#vars#get_global('rxTodo') .'/'
|
||||
" }}}
|
||||
|
||||
" main syntax groups {{{
|
||||
|
||||
|
||||
" Tables
|
||||
syntax match VimwikiTableRow /^\s*|.\+|\s*$/
|
||||
@ -229,6 +254,7 @@ syntax match VimwikiTableRow /^\s*|.\+|\s*$/
|
||||
syntax match VimwikiCellSeparator
|
||||
\ /\%(|\)\|\%(-\@<=+\-\@=\)\|\%([|+]\@<=-\+\)/ contained
|
||||
|
||||
|
||||
" Lists
|
||||
execute 'syntax match VimwikiList /'.vimwiki#vars#get_syntaxlocal('rxListItemWithoutCB').'/'
|
||||
execute 'syntax match VimwikiList /'.vimwiki#vars#get_syntaxlocal('rxListDefine').'/'
|
||||
@ -246,32 +272,51 @@ elseif vimwiki#vars#get_global('hl_cb_checked') == 2
|
||||
endif
|
||||
|
||||
|
||||
execute 'syntax match VimwikiEqIn /'.vimwiki#vars#get_syntaxlocal('rxEqIn').'/ contains=VimwikiEqInChar'
|
||||
execute 'syntax match VimwikiEqInT /'.vimwiki#vars#get_syntaxlocal('rxEqIn').'/ contained contains=VimwikiEqInCharT'
|
||||
execute 'syntax match VimwikiEqIn /'.vimwiki#vars#get_syntaxlocal('rxEqIn').
|
||||
\ '/ contains=VimwikiEqInChar'
|
||||
execute 'syntax match VimwikiEqInT /'.vimwiki#vars#get_syntaxlocal('rxEqIn').
|
||||
\ '/ contained contains=VimwikiEqInCharT'
|
||||
|
||||
execute 'syntax match VimwikiBold /'.vimwiki#vars#get_syntaxlocal('rxBold').'/ contains=VimwikiBoldChar,@Spell'
|
||||
execute 'syntax match VimwikiBoldT /'.vimwiki#vars#get_syntaxlocal('rxBold').'/ contained contains=VimwikiBoldCharT,@Spell'
|
||||
execute 'syntax match VimwikiBold /'.vimwiki#vars#get_syntaxlocal('rxBold').
|
||||
\ '/ contains=VimwikiBoldChar,@Spell'
|
||||
execute 'syntax match VimwikiBoldT /'.vimwiki#vars#get_syntaxlocal('rxBold').
|
||||
\ '/ contained contains=VimwikiBoldCharT,@Spell'
|
||||
|
||||
execute 'syntax match VimwikiItalic /'.vimwiki#vars#get_syntaxlocal('rxItalic').'/ contains=VimwikiItalicChar,@Spell'
|
||||
execute 'syntax match VimwikiItalicT /'.vimwiki#vars#get_syntaxlocal('rxItalic').'/ contained contains=VimwikiItalicCharT,@Spell'
|
||||
execute 'syntax match VimwikiItalic /'.vimwiki#vars#get_syntaxlocal('rxItalic').
|
||||
\ '/ contains=VimwikiItalicChar,@Spell'
|
||||
execute 'syntax match VimwikiItalicT /'.vimwiki#vars#get_syntaxlocal('rxItalic').
|
||||
\ '/ contained contains=VimwikiItalicCharT,@Spell'
|
||||
|
||||
execute 'syntax match VimwikiBoldItalic /'.vimwiki#vars#get_syntaxlocal('rxBoldItalic').'/ contains=VimwikiBoldItalicChar,VimwikiItalicBoldChar,@Spell'
|
||||
execute 'syntax match VimwikiBoldItalicT /'.vimwiki#vars#get_syntaxlocal('rxBoldItalic').'/ contained contains=VimwikiBoldItalicChatT,VimwikiItalicBoldCharT,@Spell'
|
||||
execute 'syntax match VimwikiBoldItalic /'.vimwiki#vars#get_syntaxlocal('rxBoldItalic').
|
||||
\ '/ contains=VimwikiBoldItalicChar,VimwikiItalicBoldChar,@Spell'
|
||||
execute 'syntax match VimwikiBoldItalicT /'.vimwiki#vars#get_syntaxlocal('rxBoldItalic').
|
||||
\ '/ contained contains=VimwikiBoldItalicChatT,VimwikiItalicBoldCharT,@Spell'
|
||||
|
||||
execute 'syntax match VimwikiItalicBold /'.vimwiki#vars#get_syntaxlocal('rxItalicBold').'/ contains=VimwikiBoldItalicChar,VimwikiItalicBoldChar,@Spell'
|
||||
execute 'syntax match VimwikiItalicBoldT /'.vimwiki#vars#get_syntaxlocal('rxItalicBold').'/ contained contains=VimwikiBoldItalicCharT,VimsikiItalicBoldCharT,@Spell'
|
||||
execute 'syntax match VimwikiItalicBold /'.vimwiki#vars#get_syntaxlocal('rxItalicBold').
|
||||
\ '/ contains=VimwikiBoldItalicChar,VimwikiItalicBoldChar,@Spell'
|
||||
execute 'syntax match VimwikiItalicBoldT /'.vimwiki#vars#get_syntaxlocal('rxItalicBold').
|
||||
\ '/ contained contains=VimwikiBoldItalicCharT,VimsikiItalicBoldCharT,@Spell'
|
||||
|
||||
execute 'syntax match VimwikiDelText /'.vimwiki#vars#get_syntaxlocal('rxDelText').'/ contains=VimwikiDelTextChar,@Spell'
|
||||
execute 'syntax match VimwikiDelTextT /'.vimwiki#vars#get_syntaxlocal('rxDelText').'/ contained contains=VimwikiDelTextChar,@Spell'
|
||||
execute 'syntax match VimwikiDelText /'.vimwiki#vars#get_syntaxlocal('rxDelText').
|
||||
\ '/ contains=VimwikiDelTextChar,@Spell'
|
||||
execute 'syntax match VimwikiDelTextT /'.vimwiki#vars#get_syntaxlocal('rxDelText').
|
||||
\ '/ contained contains=VimwikiDelTextChar,@Spell'
|
||||
|
||||
execute 'syntax match VimwikiSuperScript /'.vimwiki#vars#get_syntaxlocal('rxSuperScript').'/ contains=VimwikiSuperScriptChar,@Spell'
|
||||
execute 'syntax match VimwikiSuperScriptT /'.vimwiki#vars#get_syntaxlocal('rxSuperScript').'/ contained contains=VimwikiSuperScriptCharT,@Spell'
|
||||
execute 'syntax match VimwikiSuperScript /'.vimwiki#vars#get_syntaxlocal('rxSuperScript').
|
||||
\ '/ contains=VimwikiSuperScriptChar,@Spell'
|
||||
execute 'syntax match VimwikiSuperScriptT /'.vimwiki#vars#get_syntaxlocal('rxSuperScript').
|
||||
\ '/ contained contains=VimwikiSuperScriptCharT,@Spell'
|
||||
|
||||
execute 'syntax match VimwikiSubScript /'.vimwiki#vars#get_syntaxlocal('rxSubScript').'/ contains=VimwikiSubScriptChar,@Spell'
|
||||
execute 'syntax match VimwikiSubScriptT /'.vimwiki#vars#get_syntaxlocal('rxSubScript').'/ contained contains=VimwikiSubScriptCharT,@Spell'
|
||||
execute 'syntax match VimwikiSubScript /'.vimwiki#vars#get_syntaxlocal('rxSubScript').
|
||||
\ '/ contains=VimwikiSubScriptChar,@Spell'
|
||||
execute 'syntax match VimwikiSubScriptT /'.vimwiki#vars#get_syntaxlocal('rxSubScript').
|
||||
\ '/ contained contains=VimwikiSubScriptCharT,@Spell'
|
||||
|
||||
execute 'syntax match VimwikiCode /'.vimwiki#vars#get_syntaxlocal('rxCode').
|
||||
\ '/ contains=VimwikiCodeChar'
|
||||
execute 'syntax match VimwikiCodeT /'.vimwiki#vars#get_syntaxlocal('rxCode').
|
||||
\ '/ contained contains=VimwikiCodeCharT'
|
||||
|
||||
execute 'syntax match VimwikiCode /'.vimwiki#vars#get_syntaxlocal('rxCode').'/ contains=VimwikiCodeChar'
|
||||
execute 'syntax match VimwikiCodeT /'.vimwiki#vars#get_syntaxlocal('rxCode').'/ contained contains=VimwikiCodeCharT'
|
||||
|
||||
" <hr> horizontal rule
|
||||
execute 'syntax match VimwikiHR /'.vimwiki#vars#get_syntaxlocal('rxHR').'/'
|
||||
@ -285,11 +330,15 @@ execute 'syntax region VimwikiMath start=/'.vimwiki#vars#get_syntaxlocal('rxMath
|
||||
|
||||
" placeholders
|
||||
syntax match VimwikiPlaceholder /^\s*%nohtml\s*$/
|
||||
syntax match VimwikiPlaceholder /^\s*%title\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
syntax match VimwikiPlaceholder /^\s*%date\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
syntax match VimwikiPlaceholder /^\s*%template\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
syntax match VimwikiPlaceholder
|
||||
\ /^\s*%title\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
syntax match VimwikiPlaceholder
|
||||
\ /^\s*%date\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
syntax match VimwikiPlaceholder
|
||||
\ /^\s*%template\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
syntax match VimwikiPlaceholderParam /.*/ contained
|
||||
|
||||
|
||||
" html tags
|
||||
if vimwiki#vars#get_global('valid_html_tags') != ''
|
||||
let s:html_tags = join(split(vimwiki#vars#get_global('valid_html_tags'), '\s*,\s*'), '\|')
|
||||
@ -298,16 +347,16 @@ if vimwiki#vars#get_global('valid_html_tags') != ''
|
||||
execute 'syntax match VimwikiItalic #\c<i>.\{-}</i># contains=VimwikiHTMLTag'
|
||||
execute 'syntax match VimwikiUnderline #\c<u>.\{-}</u># contains=VimwikiHTMLTag'
|
||||
|
||||
execute 'syntax match VimwikiComment /'.vimwiki#vars#get_syntaxlocal('rxComment').'/ contains=@Spell,VimwikiTodo'
|
||||
execute 'syntax match VimwikiComment /'.vimwiki#vars#get_syntaxlocal('rxComment').
|
||||
\ '/ contains=@Spell,VimwikiTodo'
|
||||
endif
|
||||
|
||||
" tags
|
||||
execute 'syntax match VimwikiTag /'.vimwiki#vars#get_syntaxlocal('rxTags').'/'
|
||||
|
||||
" }}}
|
||||
|
||||
" header groups highlighting "{{{
|
||||
|
||||
" header groups highlighting
|
||||
if vimwiki#vars#get_global('hl_headers') == 0
|
||||
" Strangely in default colorscheme Title group is not set to bold for cterm...
|
||||
if !exists("g:colors_name")
|
||||
@ -323,9 +372,8 @@ else
|
||||
\ .vimwiki#vars#get_global('hcolor_ctermfg_'.&bg)[s:i-1].' term=bold cterm=bold'
|
||||
endfor
|
||||
endif
|
||||
"}}}
|
||||
|
||||
" syntax group highlighting "{{{
|
||||
|
||||
|
||||
hi def link VimwikiMarkers Normal
|
||||
|
||||
@ -407,15 +455,17 @@ hi def link VimwikiCodeCharT VimwikiMarkers
|
||||
hi def link VimwikiHeaderCharT VimwikiMarkers
|
||||
hi def link VimwikiLinkCharT VimwikiLinkT
|
||||
hi def link VimwikiNoExistsLinkCharT VimwikiNoExistsLinkT
|
||||
"}}}
|
||||
|
||||
|
||||
" Load syntax-specific functionality
|
||||
call vimwiki#u#reload_regexes_custom()
|
||||
|
||||
|
||||
" FIXME it now does not make sense to pretend there is a single syntax "vimwiki"
|
||||
let b:current_syntax="vimwiki"
|
||||
|
||||
" EMBEDDED syntax setup "{{{
|
||||
|
||||
" EMBEDDED syntax setup
|
||||
let s:nested = vimwiki#vars#get_wikilocal('nested_syntaxes')
|
||||
if vimwiki#vars#get_wikilocal('automatic_nested_syntaxes')
|
||||
let s:nested = extend(s:nested, vimwiki#base#detect_nested_syntax(), "keep")
|
||||
@ -428,12 +478,14 @@ if !empty(s:nested)
|
||||
\ vimwiki#vars#get_syntaxlocal('rxPreEnd'), 'VimwikiPre')
|
||||
endfor
|
||||
endif
|
||||
|
||||
|
||||
" LaTeX
|
||||
call vimwiki#base#nested_syntax('tex',
|
||||
\ vimwiki#vars#get_syntaxlocal('rxMathStart').'\%(.*[[:blank:][:punct:]]\)\?'.
|
||||
\ '\%([[:blank:][:punct:]].*\)\?',
|
||||
\ vimwiki#vars#get_syntaxlocal('rxMathEnd'), 'VimwikiMath')
|
||||
"}}}
|
||||
|
||||
|
||||
syntax spell toplevel
|
||||
|
||||
|
@ -1,13 +1,16 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Desc: Defines default syntax
|
||||
" Description: Defines default syntax
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
" s:default_syntax is kind of a reference to the dict in
|
||||
" g:vimwiki_syntax_variables['default']. It is used here simply as an
|
||||
" abbreviation for the latter.
|
||||
let s:default_syntax = g:vimwiki_syntax_variables['default']
|
||||
|
||||
|
||||
|
||||
" text: $ equation_inline $
|
||||
let s:default_syntax.rxEqIn = '\$[^$`]\+\$'
|
||||
let s:default_syntax.char_eqin = '\$'
|
||||
@ -97,8 +100,11 @@ let s:default_syntax.rxTags = '\%(^\|\s\)\@<=:\%([^:''[:space:]]\+:\)\+\%(\s\|$\
|
||||
|
||||
let s:default_syntax.header_search = '^\s*\(=\{1,6}\)\([^=].*[^=]\)\1\s*$'
|
||||
let s:default_syntax.header_match = '^\s*\(=\{1,6}\)=\@!\s*__Header__\s*\1=\@!\s*$'
|
||||
let s:default_syntax.bold_search = '\%(^\|\s\|[[:punct:]]\)\@<=\*\zs\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)\ze\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:default_syntax.bold_match = '\%(^\|\s\|[[:punct:]]\)\@<=\*__Text__\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:default_syntax.bold_search = '\%(^\|\s\|[[:punct:]]\)\@<=\*\zs\%([^*`[:space:]][^*`]*'.
|
||||
\ '[^*`[:space:]]\|[^*`[:space:]]\)\ze\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:default_syntax.bold_match = '\%(^\|\s\|[[:punct:]]\)\@<=\*__Text__\*'.
|
||||
\ '\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:default_syntax.wikilink = '\[\[\zs[^\\\]|]\+\ze\%(|[^\\\]]\+\)\?\]\]'
|
||||
let s:default_syntax.tag_search = '\(^\|\s\)\zs:\([^:''[:space:]]\+:\)\+\ze\(\s\|$\)'
|
||||
let s:default_syntax.tag_match = '\(^\|\s\):\([^:''[:space:]]\+:\)*__Tag__:\([^:[:space:]]\+:\)*\(\s\|$\)'
|
||||
let s:default_syntax.tag_match = '\(^\|\s\):\([^:''[:space:]]\+:\)*__Tag__:'.
|
||||
\ '\([^:[:space:]]\+:\)*\(\s\|$\)'
|
||||
|
@ -1,10 +1,12 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Desc: Defines markdown syntax
|
||||
" Description: Defines markdown syntax
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
" see the comments in vimwiki_default.vim for some info about this file
|
||||
|
||||
|
||||
let s:markdown_syntax = g:vimwiki_syntax_variables['markdown']
|
||||
|
||||
" text: $ equation_inline $
|
||||
@ -92,8 +94,11 @@ let s:markdown_syntax.rxTags = '\%(^\|\s\)\@<=:\%([^:[:space:]]\+:\)\+\%(\s\|$\)
|
||||
|
||||
let s:markdown_syntax.header_search = '^\s*\(#\{1,6}\)\([^#].*\)$'
|
||||
let s:markdown_syntax.header_match = '^\s*\(#\{1,6}\)#\@!\s*__Header__\s*$'
|
||||
let s:markdown_syntax.bold_search = '\%(^\|\s\|[[:punct:]]\)\@<=\*\zs\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)\ze\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:markdown_syntax.bold_match = '\%(^\|\s\|[[:punct:]]\)\@<=\*__Text__\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:markdown_syntax.wikilink = '\[\[\zs[^\\\]|]\+\ze\%(|[^\\\]]\+\)\?\]\]' "XXX plus markdown-style links
|
||||
let s:markdown_syntax.bold_search = '\%(^\|\s\|[[:punct:]]\)\@<=\*\zs'.
|
||||
\ '\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)\ze\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:markdown_syntax.bold_match = '\%(^\|\s\|[[:punct:]]\)\@<=\*__Text__\*'.
|
||||
\ '\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:markdown_syntax.wikilink = '\[\[\zs[^\\\]|]\+\ze\%(|[^\\\]]\+\)\?\]\]'
|
||||
let s:markdown_syntax.tag_search = '\(^\|\s\)\zs:\([^:''[:space:]]\+:\)\+\ze\(\s\|$\)'
|
||||
let s:markdown_syntax.tag_match = '\(^\|\s\):\([^:''[:space:]]\+:\)*__Tag__:\([^:[:space:]]\+:\)*\(\s\|$\)'
|
||||
let s:markdown_syntax.tag_match = '\(^\|\s\):\([^:''[:space:]]\+:\)*__Tag__:'.
|
||||
\ '\([^:[:space:]]\+:\)*\(\s\|$\)'
|
||||
|
@ -4,41 +4,44 @@
|
||||
|
||||
|
||||
|
||||
|
||||
" LINKS: highlighting is complicated due to "nonexistent" links feature {{{
|
||||
function! s:add_target_syntax_ON(target, type) " {{{
|
||||
function! s:add_target_syntax_ON(target, type)
|
||||
let prefix0 = 'syntax match '.a:type.' `'
|
||||
let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char'
|
||||
let prefix1 = 'syntax match '.a:type.'T `'
|
||||
let suffix1 = '` display contained'
|
||||
execute prefix0. a:target. suffix0
|
||||
execute prefix1. a:target. suffix1
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:add_target_syntax_OFF(target, type) " {{{
|
||||
|
||||
function! s:add_target_syntax_OFF(target, type)
|
||||
let prefix0 = 'syntax match VimwikiNoExistsLink `'
|
||||
let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char'
|
||||
let prefix1 = 'syntax match VimwikiNoExistsLinkT `'
|
||||
let suffix1 = '` display contained'
|
||||
execute prefix0. a:target. suffix0
|
||||
execute prefix1. a:target. suffix1
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:wrap_wikilink1_rx(target) "{{{
|
||||
|
||||
function! s:wrap_wikilink1_rx(target)
|
||||
return vimwiki#vars#get_syntaxlocal('rxWikiLink1InvalidPrefix') . a:target.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLink1InvalidSuffix')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:existing_mkd_refs() "{{{
|
||||
|
||||
function! s:existing_mkd_refs()
|
||||
return keys(vimwiki#markdown_base#scan_reflinks())
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
function! s:highlight_existing_links() "{{{
|
||||
|
||||
function! s:highlight_existing_links()
|
||||
" Wikilink1
|
||||
" Conditional highlighting that depends on the existence of a wiki file or
|
||||
" directory is only available for *schemeless* wiki links
|
||||
" Links are set up upon BufEnter (see plugin/...)
|
||||
let safe_links = '\%('.vimwiki#base#file_pattern(vimwiki#vars#get_bufferlocal('existing_wikifiles')) .
|
||||
let safe_links = '\%('.
|
||||
\ vimwiki#base#file_pattern(vimwiki#vars#get_bufferlocal('existing_wikifiles')) .
|
||||
\ '\%(#[^|]*\)\?\|#[^|]*\)'
|
||||
" Wikilink1 Dirs set up upon BufEnter (see plugin/...)
|
||||
let safe_dirs = vimwiki#base#file_pattern(vimwiki#vars#get_bufferlocal('existing_wikidirs'))
|
||||
@ -78,7 +81,7 @@ function! s:highlight_existing_links() "{{{
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template2')),
|
||||
\ safe_reflinks, vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '')
|
||||
call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1')
|
||||
endfunction "}}}
|
||||
endfunction
|
||||
|
||||
|
||||
" use max highlighting - could be quite slow if there are too many wikifiles
|
||||
@ -93,9 +96,11 @@ else
|
||||
call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWikiLink1'), 'VimwikiWikiLink1')
|
||||
endif
|
||||
|
||||
|
||||
" Weblink
|
||||
call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWeblink1'), 'VimwikiWeblink1')
|
||||
|
||||
|
||||
" WikiLink
|
||||
" All remaining schemes are highlighted automatically
|
||||
let s:rxSchemes = '\%('.
|
||||
@ -106,26 +111,28 @@ let s:rxSchemes = '\%('.
|
||||
" a) match [nonwiki-scheme-URL]
|
||||
let s:target = vimwiki#base#apply_template(
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template1')),
|
||||
\ s:rxSchemes . vimwiki#vars#get_syntaxlocal('rxWikiLink1Url'), vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '')
|
||||
\ s:rxSchemes . vimwiki#vars#get_syntaxlocal('rxWikiLink1Url'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '')
|
||||
call s:add_target_syntax_ON(s:wrap_wikilink1_rx(s:target), 'VimwikiWikiLink1')
|
||||
" b) match [DESCRIPTION][nonwiki-scheme-URL]
|
||||
let s:target = vimwiki#base#apply_template(
|
||||
\ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template2')),
|
||||
\ s:rxSchemes . vimwiki#vars#get_syntaxlocal('rxWikiLink1Url'), vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '')
|
||||
\ s:rxSchemes . vimwiki#vars#get_syntaxlocal('rxWikiLink1Url'),
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '')
|
||||
call s:add_target_syntax_ON(s:wrap_wikilink1_rx(s:target), 'VimwikiWikiLink1')
|
||||
" }}}
|
||||
|
||||
|
||||
" generic headers "{{{
|
||||
|
||||
" Header levels, 1-6
|
||||
for s:i in range(1,6)
|
||||
execute 'syntax match VimwikiHeader'.s:i.' /'.vimwiki#vars#get_syntaxlocal('rxH'.s:i).'/ contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,VimwikiLink,VimwikiWeblink1,VimwikiWikiLink1,@Spell'
|
||||
execute 'syntax match VimwikiHeader'.s:i.' /'.vimwiki#vars#get_syntaxlocal('rxH'.s:i).
|
||||
\ '/ contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,'.
|
||||
\ 'VimwikiLink,VimwikiWeblink1,VimwikiWikiLink1,@Spell'
|
||||
endfor
|
||||
|
||||
" }}}
|
||||
|
||||
" concealed chars " {{{
|
||||
|
||||
" concealed chars
|
||||
if exists("+conceallevel")
|
||||
syntax conceal on
|
||||
endif
|
||||
@ -136,24 +143,26 @@ syntax spell toplevel
|
||||
" is present) and may be concealed
|
||||
let s:options = ' contained transparent contains=NONE'
|
||||
" conceal wikilink1
|
||||
execute 'syn match VimwikiWikiLink1Char /'.vimwiki#vars#get_syntaxlocal('rx_wikilink_md_prefix').'/'.s:options
|
||||
execute 'syn match VimwikiWikiLink1Char /'.vimwiki#vars#get_syntaxlocal('rx_wikilink_md_suffix').'/'.s:options
|
||||
execute 'syn match VimwikiWikiLink1Char /'.vimwiki#vars#get_syntaxlocal('rxWikiLink1Prefix1').'/'.s:options
|
||||
execute 'syn match VimwikiWikiLink1Char /'.vimwiki#vars#get_syntaxlocal('rxWikiLink1Suffix1').'/'.s:options
|
||||
execute 'syn match VimwikiWikiLink1Char /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rx_wikilink_md_prefix').'/'.s:options
|
||||
execute 'syn match VimwikiWikiLink1Char /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rx_wikilink_md_suffix').'/'.s:options
|
||||
execute 'syn match VimwikiWikiLink1Char /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLink1Prefix1').'/'.s:options
|
||||
execute 'syn match VimwikiWikiLink1Char /'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWikiLink1Suffix1').'/'.s:options
|
||||
|
||||
" conceal weblink1
|
||||
execute 'syn match VimwikiWeblink1Char "'.vimwiki#vars#get_syntaxlocal('rxWeblink1Prefix1').'"'.s:options
|
||||
execute 'syn match VimwikiWeblink1Char "'.vimwiki#vars#get_syntaxlocal('rxWeblink1Suffix1').'"'.s:options
|
||||
execute 'syn match VimwikiWeblink1Char "'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWeblink1Prefix1').'"'.s:options
|
||||
execute 'syn match VimwikiWeblink1Char "'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxWeblink1Suffix1').'"'.s:options
|
||||
|
||||
if exists("+conceallevel")
|
||||
syntax conceal off
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" non concealed chars " {{{
|
||||
" }}}
|
||||
|
||||
" main syntax groups {{{
|
||||
|
||||
" Tables
|
||||
syntax match VimwikiTableRow /^\s*|.\+|\s*$/
|
||||
@ -175,22 +184,12 @@ syntax match VimwikiTableRow /^\s*|.\+|\s*$/
|
||||
\ VimwikiEqInT,
|
||||
\ @Spell
|
||||
|
||||
" }}}
|
||||
|
||||
" header groups highlighting "{{{
|
||||
"}}}
|
||||
|
||||
|
||||
" syntax group highlighting "{{{
|
||||
" syntax group highlighting
|
||||
hi def link VimwikiWeblink1 VimwikiLink
|
||||
hi def link VimwikiWeblink1T VimwikiLink
|
||||
|
||||
hi def link VimwikiWikiLink1 VimwikiLink
|
||||
hi def link VimwikiWikiLink1T VimwikiLink
|
||||
"}}}
|
||||
|
||||
|
||||
|
||||
" EMBEDDED syntax setup "{{{
|
||||
"}}}
|
||||
"
|
||||
|
@ -1,10 +1,12 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Desc: Defines mediaWiki syntax
|
||||
" Description: Defines mediaWiki syntax
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
" see the comments in vimwiki_default.vim for some info about this file
|
||||
|
||||
|
||||
let s:media_syntax = g:vimwiki_syntax_variables['media']
|
||||
|
||||
" text: $ equation_inline $
|
||||
@ -78,5 +80,6 @@ let s:media_syntax.bold_match = '''''''__Text__'''''''
|
||||
" ^- this strange looking thing is equivalent to "'''__Text__'''" but since we later
|
||||
" want to call escape() on this string, we must keep it in single quotes
|
||||
let s:media_syntax.wikilink = '\[\[\zs[^\\\]|]\+\ze\%(|[^\\\]]\+\)\?\]\]'
|
||||
let s:media_syntax.tag_search = '\(^\|\s\)\zs:\([^:''[:space:]]\+:\)\+\ze\(\s\|$\)' " XXX rework to mediawiki categories format?
|
||||
let s:media_syntax.tag_match = '\(^\|\s\):\([^:''[:space:]]\+:\)*__Tag__:\([^:[:space:]]\+:\)*\(\s\|$\)' " XXX rework to mediawiki categories format?
|
||||
let s:media_syntax.tag_search = '\(^\|\s\)\zs:\([^:''[:space:]]\+:\)\+\ze\(\s\|$\)'
|
||||
let s:media_syntax.tag_match = '\(^\|\s\):\([^:''[:space:]]\+:\)*__Tag__:'.
|
||||
\ '\([^:[:space:]]\+:\)*\(\s\|$\)'
|
||||
|
Loading…
Reference in New Issue
Block a user