commit c1dbf90c2973b2a0f244005a4d17d4af6835b07d
parent 90dc1e58717bd25798bb16d3badab8908b619912
Author: EinfachToll <istjanichtzufassen@googlemail.com>
Date: Fri, 20 Apr 2018 07:03:53 +0200
Remove foldmarkers; general reformatting
Diffstat:
17 files changed, 1479 insertions(+), 1291 deletions(-)
diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
@@ -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
" -------------------------------------------------------------------------
-
diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim
@@ -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() "{{{
- let result = []
+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
diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim
@@ -1,62 +1,57 @@
-" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
+" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
" Vimwiki autoload plugin file
-" Desc: Export to HTML
+" Description: HTML export
" Home: https://github.com/vimwiki/vimwiki/
-" TODO: We need vimwiki abstract syntax tree. If properly designed it wourld
-" greatly symplify different syntax to HTML generation.
-"
-" vimwiki -- --> PDF
-" \ /
-" markdown -----> AST -----> HTML
-" / \
-" mediawiki -- --> Latex
-"
-
-" Load only once {{{
+
if exists("g:loaded_vimwiki_html_auto") || &cp
finish
endif
let g:loaded_vimwiki_html_auto = 1
-"}}}
-" UTILITY "{{{
-function! s:root_path(subdir) "{{{
+
+function! s:root_path(subdir)
return repeat('../', len(split(a:subdir, '[/\\]')))
-endfunction "}}}
+endfunction
-function! s:syntax_supported() " {{{
+
+function! s:syntax_supported()
return vimwiki#vars#get_wikilocal('syntax') ==? "default"
-endfunction " }}}
+endfunction
-function! s:remove_blank_lines(lines) " {{{
+
+function! s:remove_blank_lines(lines)
while !empty(a:lines) && a:lines[-1] =~# '^\s*$'
call remove(a:lines, -1)
endwhile
-endfunction "}}}
+endfunction
+
-function! s:is_web_link(lnk) "{{{
+function! s:is_web_link(lnk)
if a:lnk =~# '^\%(https://\|http://\|www.\|ftp://\|file://\|mailto:\)'
return 1
endif
return 0
-endfunction "}}}
+endfunction
+
-function! s:is_img_link(lnk) "{{{
+function! s:is_img_link(lnk)
if tolower(a:lnk) =~# '\.\%(png\|jpg\|gif\|jpeg\)$'
return 1
endif
return 0
-endfunction "}}}
+endfunction
+
-function! s:has_abs_path(fname) "{{{
+function! s:has_abs_path(fname)
if a:fname =~# '\(^.:\)\|\(^/\)'
return 1
endif
return 0
-endfunction "}}}
+endfunction
-function! s:find_autoload_file(name) " {{{
+
+function! s:find_autoload_file(name)
for path in split(&runtimepath, ',')
let fname = path.'/autoload/vimwiki/'.a:name
if glob(fname) != ''
@@ -64,15 +59,17 @@ function! s:find_autoload_file(name) " {{{
endif
endfor
return ''
-endfunction " }}}
+endfunction
-function! s:default_CSS_full_name(path) " {{{
+
+function! s:default_CSS_full_name(path)
let path = expand(a:path)
let css_full_name = path . vimwiki#vars#get_wikilocal('css_name')
return css_full_name
-endfunction "}}}
+endfunction
+
-function! s:create_default_CSS(path) " {{{
+function! s:create_default_CSS(path)
let css_full_name = s:default_CSS_full_name(a:path)
if glob(css_full_name) == ""
call vimwiki#path#mkdir(fnamemodify(css_full_name, ':p:h'))
@@ -84,9 +81,10 @@ function! s:create_default_CSS(path) " {{{
endif
endif
return 0
-endfunction "}}}
+endfunction
+
-function! s:template_full_name(name) "{{{
+function! s:template_full_name(name)
if a:name == ''
let name = vimwiki#vars#get_wikilocal('template_default')
else
@@ -101,9 +99,10 @@ function! s:template_full_name(name) "{{{
else
return ''
endif
-endfunction "}}}
+endfunction
+
-function! s:get_html_template(template) "{{{
+function! s:get_html_template(template)
" TODO: refactor it!!!
let lines=[]
@@ -113,8 +112,7 @@ function! s:get_html_template(template) "{{{
let lines = readfile(template_name)
return lines
catch /E484/
- echomsg 'Vimwiki: HTML template '.template_name.
- \ ' does not exist!'
+ echomsg 'Vimwiki: HTML template '.template_name. ' does not exist!'
endtry
endif
@@ -126,13 +124,14 @@ function! s:get_html_template(template) "{{{
let lines = readfile(default_tpl)
return lines
-endfunction "}}}
+endfunction
-function! s:safe_html_preformatted(line) "{{{
+
+function! s:safe_html_preformatted(line)
let line = substitute(a:line,'<','\<', 'g')
let line = substitute(line,'>','\>', 'g')
return line
-endfunction "}}}
+endfunction
function! s:escape_html_attribute(string)
@@ -140,7 +139,7 @@ function! s:escape_html_attribute(string)
endfunction
-function! s:safe_html_line(line) "{{{
+function! s:safe_html_line(line)
" escape & < > when producing HTML text
" s:lt_pattern, s:gt_pattern depend on g:vimwiki_valid_html_tags
" and are set in vimwiki#html#Wiki2HTML()
@@ -149,9 +148,10 @@ function! s:safe_html_line(line) "{{{
let line = substitute(line,s:gt_pattern,'\>', 'g')
return line
-endfunction "}}}
+endfunction
+
-function! s:delete_html_files(path) "{{{
+function! s:delete_html_files(path)
let htmlfiles = split(glob(a:path.'**/*.html'), '\n')
for fname in htmlfiles
" ignore user html files, e.g. search.html,404.html
@@ -173,13 +173,15 @@ function! s:delete_html_files(path) "{{{
echomsg 'Vimwiki Error: Cannot delete '.fname
endtry
endfor
-endfunction "}}}
+endfunction
-function! s:mid(value, cnt) "{{{
+
+function! s:mid(value, cnt)
return strpart(a:value, a:cnt, len(a:value) - 2 * a:cnt)
-endfunction "}}}
+endfunction
-function! s:subst_func(line, regexp, func, ...) " {{{
+
+function! s:subst_func(line, regexp, func, ...)
" Substitute text found by regexp with result of
" func(matched) function.
@@ -199,16 +201,17 @@ function! s:subst_func(line, regexp, func, ...) " {{{
let pos = matchend(a:line, a:regexp, pos)
endfor
return res_line
-endfunction " }}}
+endfunction
+
-function! s:save_vimwiki_buffer() "{{{
+function! s:save_vimwiki_buffer()
if &filetype ==? 'vimwiki' && filewritable(expand('%'))
silent update
endif
-endfunction "}}}
+endfunction
+
-" get date.
-function! s:process_date(placeholders, default_date) "{{{
+function! s:process_date(placeholders, default_date)
if !empty(a:placeholders)
for [placeholder, row, idx] in a:placeholders
let [type, param] = placeholder
@@ -218,10 +221,10 @@ function! s:process_date(placeholders, default_date) "{{{
endfor
endif
return a:default_date
-endfunction "}}}
+endfunction
+
-" get title.
-function! s:process_title(placeholders, default_title) "{{{
+function! s:process_title(placeholders, default_title)
if !empty(a:placeholders)
for [placeholder, row, idx] in a:placeholders
let [type, param] = placeholder
@@ -231,9 +234,10 @@ function! s:process_title(placeholders, default_title) "{{{
endfor
endif
return a:default_title
-endfunction "}}}
+endfunction
+
-function! s:is_html_uptodate(wikifile) "{{{
+function! s:is_html_uptodate(wikifile)
let tpl_time = -1
let tpl_file = s:template_full_name('')
@@ -242,16 +246,17 @@ function! s:is_html_uptodate(wikifile) "{{{
endif
let wikifile = fnamemodify(a:wikifile, ":p")
- let htmlfile = expand(vimwiki#vars#get_wikilocal('path_html') . vimwiki#vars#get_bufferlocal('subdir') .
- \fnamemodify(wikifile, ":t:r").".html")
+ let htmlfile = expand(vimwiki#vars#get_wikilocal('path_html') .
+ \ vimwiki#vars#get_bufferlocal('subdir') . fnamemodify(wikifile, ":t:r").".html")
if getftime(wikifile) <= getftime(htmlfile) && tpl_time <= getftime(htmlfile)
return 1
endif
return 0
-endfunction "}}}
+endfunction
+
-function! s:html_insert_contents(html_lines, content) "{{{
+function! s:html_insert_contents(html_lines, content)
let lines = []
for line in a:html_lines
if line =~# '%content%'
@@ -271,20 +276,21 @@ function! s:html_insert_contents(html_lines, content) "{{{
endif
endfor
return lines
-endfunction "}}}
-"}}}
+endfunction
-" INLINE TAGS "{{{
-function! s:tag_eqin(value) "{{{
+
+function! s:tag_eqin(value)
" mathJAX wants \( \) for inline maths
return '\('.s:mid(a:value, 1).'\)'
-endfunction "}}}
+endfunction
-function! s:tag_em(value) "{{{
+
+function! s:tag_em(value)
return '<em>'.s:mid(a:value, 1).'</em>'
-endfunction "}}}
+endfunction
+
-function! s:tag_strong(value, header_ids) "{{{
+function! s:tag_strong(value, header_ids)
let text = s:mid(a:value, 1)
let id = s:escape_html_attribute(text)
let complete_id = ''
@@ -299,9 +305,10 @@ function! s:tag_strong(value, header_ids) "{{{
let complete_id .= '-'.id
return '<span id="'.s:escape_html_attribute(complete_id).'"></span><strong id="'
\ .id.'">'.text.'</strong>'
-endfunction "}}}
+endfunction
+
-function! s:tag_tags(value, header_ids) "{{{
+function! s:tag_tags(value, header_ids)
let complete_id = ''
for level in range(6)
if a:header_ids[level][0] != ''
@@ -320,79 +327,80 @@ function! s:tag_tags(value, header_ids) "{{{
\ .id.'">'.tag.'</span>')
endfor
return join(result)
-endfunction "}}}
+endfunction
+
-function! s:tag_todo(value) "{{{
+function! s:tag_todo(value)
return '<span class="todo">'.a:value.'</span>'
-endfunction "}}}
+endfunction
-function! s:tag_strike(value) "{{{
+
+function! s:tag_strike(value)
return '<del>'.s:mid(a:value, 2).'</del>'
-endfunction "}}}
+endfunction
-function! s:tag_super(value) "{{{
+
+function! s:tag_super(value)
return '<sup><small>'.s:mid(a:value, 1).'</small></sup>'
-endfunction "}}}
+endfunction
-function! s:tag_sub(value) "{{{
- return '<sub><small>'.s:mid(a:value, 2).'</small></sub>'
-endfunction "}}}
-function! s:tag_code(value) "{{{
- return '<code>'.s:safe_html_preformatted(s:mid(a:value, 1)).'</code>'
-endfunction "}}}
+function! s:tag_sub(value)
+ return '<sub><small>'.s:mid(a:value, 2).'</small></sub>'
+endfunction
-"function! s:tag_pre(value) "{{{
-" return '<code>'.s:mid(a:value, 3).'</code>'
-"endfunction "}}}
-"FIXME dead code?
-"function! s:tag_math(value) "{{{
-" return '\['.s:mid(a:value, 3).'\]'
-"endfunction "}}}
+function! s:tag_code(value)
+ return '<code>'.s:safe_html_preformatted(s:mid(a:value, 1)).'</code>'
+endfunction
-"{{{ v2.0 links
-" match n-th ARG within {{URL[|ARG1|ARG2|...]}} " {{{
+" match n-th ARG within {{URL[|ARG1|ARG2|...]}}
" *c,d,e),...
function! vimwiki#html#incl_match_arg(nn_index)
let rx = vimwiki#vars#get_global('rxWikiInclPrefix'). vimwiki#vars#get_global('rxWikiInclUrl')
- let rx = rx. repeat(vimwiki#vars#get_global('rxWikiInclSeparator'). vimwiki#vars#get_global('rxWikiInclArg'), a:nn_index-1)
+ let rx = rx . repeat(vimwiki#vars#get_global('rxWikiInclSeparator') .
+ \ vimwiki#vars#get_global('rxWikiInclArg'), a:nn_index-1)
if a:nn_index > 0
- let rx = rx. vimwiki#vars#get_global('rxWikiInclSeparator'). '\zs'. vimwiki#vars#get_global('rxWikiInclArg'). '\ze'
+ let rx = rx. vimwiki#vars#get_global('rxWikiInclSeparator'). '\zs' .
+ \ vimwiki#vars#get_global('rxWikiInclArg') . '\ze'
endif
- let rx = rx. vimwiki#vars#get_global('rxWikiInclArgs'). vimwiki#vars#get_global('rxWikiInclSuffix')
+ let rx = rx . vimwiki#vars#get_global('rxWikiInclArgs') .
+ \ vimwiki#vars#get_global('rxWikiInclSuffix')
return rx
endfunction
-"}}}
-function! vimwiki#html#linkify_link(src, descr) "{{{
+
+function! vimwiki#html#linkify_link(src, descr)
let src_str = ' href="'.s:escape_html_attribute(a:src).'"'
let descr = substitute(a:descr,'^\s*\(.*\)\s*$','\1','')
let descr = (descr == "" ? a:src : descr)
let descr_str = (descr =~# vimwiki#vars#get_global('rxWikiIncl')
- \ ? s:tag_wikiincl(descr)
+ \ ? s:tag_wikiincl(descr)
\ : descr)
return '<a'.src_str.'>'.descr_str.'</a>'
-endfunction "}}}
+endfunction
+
-function! vimwiki#html#linkify_image(src, descr, verbatim_str) "{{{
+function! vimwiki#html#linkify_image(src, descr, verbatim_str)
let src_str = ' src="'.a:src.'"'
let descr_str = (a:descr != '' ? ' alt="'.a:descr.'"' : '')
let verbatim_str = (a:verbatim_str != '' ? ' '.a:verbatim_str : '')
return '<img'.src_str.descr_str.verbatim_str.' />'
-endfunction "}}}
+endfunction
-function! s:tag_weblink(value) "{{{
+
+function! s:tag_weblink(value)
" Weblink Template -> <a href="url">descr</a>
let str = a:value
let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl'))
let descr = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWeblinkMatchDescr'))
let line = vimwiki#html#linkify_link(url, descr)
return line
-endfunction "}}}
+endfunction
-function! s:tag_wikiincl(value) "{{{
+
+function! s:tag_wikiincl(value)
" {{imgurl|arg1|arg2}} -> ???
" {{imgurl}} -> <img src="imgurl"/>
" {{imgurl|descr|style="A"}} -> <img src="imgurl" alt="descr" style="A" />
@@ -409,8 +417,7 @@ function! s:tag_wikiincl(value) "{{{
let link_infos = vimwiki#base#resolve_link(url_0)
if link_infos.scheme =~# '\mlocal\|wiki\d\+\|diary'
- let url = vimwiki#path#relpath(fnamemodify(s:current_html_file, ':h'),
- \ link_infos.filename)
+ let url = vimwiki#path#relpath(fnamemodify(s:current_html_file, ':h'), link_infos.filename)
" strip the .html extension when we have wiki links, so that the user can
" simply write {{image.png}} to include an image from the wiki directory
if link_infos.scheme =~# '\mwiki\d\+\|diary'
@@ -424,9 +431,10 @@ function! s:tag_wikiincl(value) "{{{
let line = vimwiki#html#linkify_image(url, descr, verbatim_str)
endif
return line
-endfunction "}}}
+endfunction
-function! s:tag_wikilink(value) "{{{
+
+function! s:tag_wikilink(value)
" [[url]] -> <a href="url.html">url</a>
" [[url|descr]] -> <a href="url.html">descr</a>
" [[url|{{...}}]] -> <a href="url.html"> ... </a>
@@ -439,8 +447,7 @@ function! s:tag_wikilink(value) "{{{
let descr = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr'))
let descr = (substitute(descr,'^\s*\(.*\)\s*$','\1','') != '' ? descr : url)
- let line = VimwikiLinkConverter(url, s:current_wiki_file,
- \ s:current_html_file)
+ let line = VimwikiLinkConverter(url, s:current_wiki_file, s:current_html_file)
if line == ''
let link_infos = vimwiki#base#resolve_link(url, s:current_wiki_file)
@@ -471,11 +478,10 @@ function! s:tag_wikilink(value) "{{{
let line = vimwiki#html#linkify_link(line, descr)
return line
-endfunction "}}}
-"}}}
+endfunction
-function! s:tag_remove_internal_link(value) "{{{
+function! s:tag_remove_internal_link(value)
let value = s:mid(a:value, 2)
let line = ''
@@ -496,9 +502,10 @@ function! s:tag_remove_internal_link(value) "{{{
let line = value
endif
return line
-endfunction "}}}
+endfunction
+
-function! s:tag_remove_external_link(value) "{{{
+function! s:tag_remove_external_link(value)
let value = s:mid(a:value, 1)
let line = ''
@@ -518,14 +525,16 @@ function! s:tag_remove_external_link(value) "{{{
let line = '['.value.']'
endif
return line
-endfunction "}}}
+endfunction
+
-function! s:make_tag(line, regexp, func, ...) "{{{
+function! s:make_tag(line, regexp, func, ...)
" Make tags for a given matched regexp.
" Exclude preformatted text and href links.
- " FIXME
+ " FIXME
let patt_splitter = '\(`[^`]\+`\)\|'.
- \ '\('.vimwiki#vars#get_syntaxlocal('rxPreStart').'.\+'.vimwiki#vars#get_syntaxlocal('rxPreEnd').'\)\|'.
+ \ '\('.vimwiki#vars#get_syntaxlocal('rxPreStart').'.\+'.
+ \ vimwiki#vars#get_syntaxlocal('rxPreEnd').'\)\|'.
\ '\(<a href.\{-}</a>\)\|'.
\ '\(<img src.\{-}/>\)\|'.
\ '\(<pre.\{-}</pre>\)\|'.
@@ -557,16 +566,18 @@ function! s:make_tag(line, regexp, func, ...) "{{{
endfor
endif
return res_line
-endfunction "}}}
+endfunction
+
-function! s:process_tags_remove_links(line) " {{{
+function! s:process_tags_remove_links(line)
let line = a:line
let line = s:make_tag(line, '\[\[.\{-}\]\]', 's:tag_remove_internal_link')
let line = s:make_tag(line, '\[.\{-}\]', 's:tag_remove_external_link')
return line
-endfunction " }}}
+endfunction
-function! s:process_tags_typefaces(line, header_ids) "{{{
+
+function! s:process_tags_typefaces(line, header_ids)
let line = a:line
let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxItalic'), 's:tag_em')
let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxBold'), 's:tag_strong', a:header_ids)
@@ -578,71 +589,76 @@ function! s:process_tags_typefaces(line, header_ids) "{{{
let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxEqIn'), 's:tag_eqin')
let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxTags'), 's:tag_tags', a:header_ids)
return line
-endfunction " }}}
+endfunction
-function! s:process_tags_links(line) " {{{
+
+function! s:process_tags_links(line)
let line = a:line
let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxWikiLink'), 's:tag_wikilink')
let line = s:make_tag(line, vimwiki#vars#get_global('rxWikiIncl'), 's:tag_wikiincl')
let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxWeblink'), 's:tag_weblink')
return line
-endfunction " }}}
+endfunction
+
-function! s:process_inline_tags(line, header_ids) "{{{
+function! s:process_inline_tags(line, header_ids)
let line = s:process_tags_links(a:line)
let line = s:process_tags_typefaces(line, a:header_ids)
return line
-endfunction " }}}
-"}}}
+endfunction
+
-" BLOCK TAGS {{{
-function! s:close_tag_pre(pre, ldest) "{{{
+function! s:close_tag_pre(pre, ldest)
if a:pre[0]
call insert(a:ldest, "</pre>")
return 0
endif
return a:pre
-endfunction "}}}
+endfunction
+
-function! s:close_tag_math(math, ldest) "{{{
+function! s:close_tag_math(math, ldest)
if a:math[0]
call insert(a:ldest, "\\\]")
return 0
endif
return a:math
-endfunction "}}}
+endfunction
-function! s:close_tag_quote(quote, ldest) "{{{
+
+function! s:close_tag_quote(quote, ldest)
if a:quote
call insert(a:ldest, "</blockquote>")
return 0
endif
return a:quote
-endfunction "}}}
+endfunction
-function! s:close_tag_para(para, ldest) "{{{
+
+function! s:close_tag_para(para, ldest)
if a:para
call insert(a:ldest, "</p>")
return 0
endif
return a:para
-endfunction "}}}
+endfunction
-function! s:close_tag_table(table, ldest, header_ids) "{{{
+
+function! s:close_tag_table(table, ldest, header_ids)
" The first element of table list is a string which tells us if table should be centered.
" The rest elements are rows which are lists of columns:
- " ['center',
+ " ['center',
" [ CELL1, CELL2, CELL3 ],
" [ CELL1, CELL2, CELL3 ],
" [ CELL1, CELL2, CELL3 ],
" ]
" And CELLx is: { 'body': 'col_x', 'rowspan': r, 'colspan': c }
- function! s:sum_rowspan(table) "{{{
+ function! s:sum_rowspan(table)
let table = a:table
" Get max cells
- let max_cells = 0
+ let max_cells = 0
for row in table[1:]
let n_cells = len(row)
if n_cells > max_cells
@@ -668,9 +684,9 @@ function! s:close_tag_table(table, ldest, header_ids) "{{{
endif
endfor
endfor
- endfunction "}}}
+ endfunction
- function! s:sum_colspan(table) "{{{
+ function! s:sum_colspan(table)
for row in a:table[1:]
let cols = 1
@@ -683,19 +699,19 @@ function! s:close_tag_table(table, ldest, header_ids) "{{{
endif
endfor
endfor
- endfunction "}}}
+ endfunction
- function! s:close_tag_row(row, header, ldest, header_ids) "{{{
+ function! s:close_tag_row(row, header, ldest, header_ids)
call add(a:ldest, '<tr>')
- " Set tag element of columns
+ " Set tag element of columns
if a:header
let tag_name = 'th'
else
let tag_name = 'td'
end
- " Close tag of columns
+ " Close tag of columns
for cell in a:row
if cell.rowspan == 0 || cell.colspan == 0
continue
@@ -718,7 +734,7 @@ function! s:close_tag_table(table, ldest, header_ids) "{{{
endfor
call add(a:ldest, '</tr>')
- endfunction "}}}
+ endfunction
let table = a:table
let ldest = a:ldest
@@ -761,24 +777,27 @@ function! s:close_tag_table(table, ldest, header_ids) "{{{
let table = []
endif
return table
-endfunction "}}}
+endfunction
-function! s:close_tag_list(lists, ldest) "{{{
+
+function! s:close_tag_list(lists, ldest)
while len(a:lists)
let item = remove(a:lists, 0)
call insert(a:ldest, item[0])
endwhile
-endfunction "}}}
+endfunction
+
-function! s:close_tag_def_list(deflist, ldest) "{{{
+function! s:close_tag_def_list(deflist, ldest)
if a:deflist
call insert(a:ldest, "</dl>")
return 0
endif
return a:deflist
-endfunction "}}}
+endfunction
+
-function! s:process_tag_pre(line, pre) "{{{
+function! s:process_tag_pre(line, pre)
" pre is the list of [is_in_pre, indent_of_pre]
"XXX always outputs a single line or empty list!
let lines = []
@@ -808,9 +827,10 @@ function! s:process_tag_pre(line, pre) "{{{
call add(lines, s:safe_html_preformatted(a:line))
endif
return [processed, lines, pre]
-endfunction "}}}
+endfunction
+
-function! s:process_tag_math(line, math) "{{{
+function! s:process_tag_math(line, math)
" math is the list of [is_in_math, indent_of_math]
let lines = []
let math = a:math
@@ -844,9 +864,10 @@ function! s:process_tag_math(line, math) "{{{
call add(lines, substitute(a:line, '^\s\{'.math[1].'}', '', ''))
endif
return [processed, lines, math]
-endfunction "}}}
+endfunction
-function! s:process_tag_quote(line, quote) "{{{
+
+function! s:process_tag_quote(line, quote)
let lines = []
let quote = a:quote
let processed = 0
@@ -862,11 +883,12 @@ function! s:process_tag_quote(line, quote) "{{{
let quote = 0
endif
return [processed, lines, quote]
-endfunction "}}}
+endfunction
-function! s:process_tag_list(line, lists) "{{{
- function! s:add_checkbox(line, rx_list) "{{{
+function! s:process_tag_list(line, lists)
+
+ function! s:add_checkbox(line, rx_list)
let st_tag = '<li>'
let chk = matchlist(a:line, a:rx_list)
if !empty(chk) && len(chk[1]) > 0
@@ -882,7 +904,8 @@ function! s:process_tag_list(line, lists) "{{{
endif
endif
return [st_tag, '']
- endfunction "}}}
+ endfunction
+
let in_list = (len(a:lists) > 0)
@@ -946,8 +969,7 @@ function! s:process_tag_list(line, lists) "{{{
call add(a:lists, [en_tag, indent])
call add(lines, st_tag)
- call add(lines,
- \ substitute(a:line, lstRegExp.'\%('.checkbox.'\)\?', '', ''))
+ call add(lines, substitute(a:line, lstRegExp.'\%('.checkbox.'\)\?', '', ''))
let processed = 1
elseif in_list && a:line =~# '^\s\+\S\+'
if vimwiki#vars#get_global('list_ignore_newline')
@@ -960,9 +982,10 @@ function! s:process_tag_list(line, lists) "{{{
call s:close_tag_list(a:lists, lines)
endif
return [processed, lines]
-endfunction "}}}
+endfunction
-function! s:process_tag_def_list(line, deflist) "{{{
+
+function! s:process_tag_def_list(line, deflist)
let lines = []
let deflist = a:deflist
let processed = 0
@@ -984,9 +1007,10 @@ function! s:process_tag_def_list(line, deflist) "{{{
call add(lines, "</dl>")
endif
return [processed, lines, deflist]
-endfunction "}}}
+endfunction
-function! s:process_tag_para(line, para) "{{{
+
+function! s:process_tag_para(line, para)
let lines = []
let para = a:para
let processed = 0
@@ -1006,9 +1030,10 @@ function! s:process_tag_para(line, para) "{{{
let para = 0
endif
return [processed, lines, para]
-endfunction "}}}
+endfunction
-function! s:process_tag_h(line, id) "{{{
+
+function! s:process_tag_h(line, id)
let line = a:line
let processed = 0
let h_level = 0
@@ -1061,7 +1086,6 @@ function! s:process_tag_h(line, id) "{{{
endif
-
if centered
let h_part .= ' class="justcenter">'
else
@@ -1075,9 +1099,10 @@ function! s:process_tag_h(line, id) "{{{
let processed = 1
endif
return [processed, line]
-endfunction "}}}
+endfunction
+
-function! s:process_tag_hr(line) "{{{
+function! s:process_tag_hr(line)
let line = a:line
let processed = 0
if a:line =~# '^-----*$'
@@ -1085,10 +1110,11 @@ function! s:process_tag_hr(line) "{{{
let processed = 1
endif
return [processed, line]
-endfunction "}}}
+endfunction
-function! s:process_tag_table(line, table, header_ids) "{{{
- function! s:table_empty_cell(value) "{{{
+
+function! s:process_tag_table(line, table, header_ids)
+ function! s:table_empty_cell(value)
let cell = {}
if a:value =~# '^\s*\\/\s*$'
@@ -1110,9 +1136,9 @@ function! s:process_tag_table(line, table, header_ids) "{{{
endif
return cell
- endfunction "}}}
+ endfunction
- function! s:table_add_row(table, line) "{{{
+ function! s:table_add_row(table, line)
if empty(a:table)
if a:line =~# '^\s\+'
let row = ['center', []]
@@ -1123,7 +1149,7 @@ function! s:process_tag_table(line, table, header_ids) "{{{
let row = [[]]
endif
return row
- endfunction "}}}
+ endfunction
let table = a:table
let lines = []
@@ -1144,14 +1170,10 @@ function! s:process_tag_table(line, table, header_ids) "{{{
let table = s:close_tag_table(table, lines, a:header_ids)
endif
return [processed, lines, table]
-endfunction "}}}
-
-"}}}
+endfunction
-" }}}
-" WIKI2HTML "{{{
-function! s:parse_line(line, state) " {{{
+function! s:parse_line(line, state)
let state = {}
let state.para = a:state.para
let state.quote = a:state.quote
@@ -1169,7 +1191,7 @@ function! s:parse_line(line, state) " {{{
let processed = 0
- " pres "{{{
+ " pres
if !processed
let [processed, lines, state.pre] = s:process_tag_pre(line, state.pre)
" pre is just fine to be in the list -- do not close list item here.
@@ -1193,7 +1215,7 @@ function! s:parse_line(line, state) " {{{
endif
call extend(res_lines, lines)
endif
- "}}}
+
if !processed
if line =~# vimwiki#vars#get_syntaxlocal('rxComment')
@@ -1227,7 +1249,7 @@ function! s:parse_line(line, state) " {{{
endif
endif
- " html template -- placeholder "{{{
+ " html template -- placeholder
if !processed
if line =~# '\m^\s*%template\%(\s.*\)\?$'
let processed = 1
@@ -1235,17 +1257,16 @@ function! s:parse_line(line, state) " {{{
let state.placeholder = ['template', param]
endif
endif
- "}}}
- " tables "{{{
+
+ " tables
if !processed
- let [processed, lines, state.table] = s:process_tag_table(line,
- \ state.table, state.header_ids)
+ let [processed, lines, state.table] = s:process_tag_table(line, state.table, state.header_ids)
call extend(res_lines, lines)
endif
- "}}}
- " lists "{{{
+
+ " lists
if !processed
let [processed, lines] = s:process_tag_list(line, state.lists)
if processed && state.quote
@@ -1271,15 +1292,14 @@ function! s:parse_line(line, state) " {{{
call extend(res_lines, lines)
endif
- "}}}
- " headers "{{{
+
+ " headers
if !processed
let [processed, line] = s:process_tag_h(line, state.header_ids)
if processed
call s:close_tag_list(state.lists, res_lines)
- let state.table = s:close_tag_table(state.table, res_lines,
- \ state.header_ids)
+ let state.table = s:close_tag_table(state.table, res_lines, state.header_ids)
let state.pre = s:close_tag_pre(state.pre, res_lines)
let state.math = s:close_tag_math(state.math, res_lines)
let state.quote = s:close_tag_quote(state.quote, res_lines)
@@ -1288,9 +1308,9 @@ function! s:parse_line(line, state) " {{{
call add(res_lines, line)
endif
endif
- "}}}
- " quotes "{{{
+
+ " quotes
if !processed
let [processed, lines, state.quote] = s:process_tag_quote(line, state.quote)
if processed && len(state.lists)
@@ -1316,23 +1336,22 @@ function! s:parse_line(line, state) " {{{
call extend(res_lines, lines)
endif
- "}}}
- " horizontal rules "{{{
+
+ " horizontal rules
if !processed
let [processed, line] = s:process_tag_hr(line)
if processed
call s:close_tag_list(state.lists, res_lines)
- let state.table = s:close_tag_table(state.table, res_lines,
- \ state.header_ids)
+ let state.table = s:close_tag_table(state.table, res_lines, state.header_ids)
let state.pre = s:close_tag_pre(state.pre, res_lines)
let state.math = s:close_tag_math(state.math, res_lines)
call add(res_lines, line)
endif
endif
- "}}}
- " definition lists "{{{
+
+ " definition lists
if !processed
let [processed, lines, state.deflist] = s:process_tag_def_list(line, state.deflist)
@@ -1340,9 +1359,9 @@ function! s:parse_line(line, state) " {{{
call extend(res_lines, lines)
endif
- "}}}
- "" P "{{{
+
+ "" P
if !processed
let [processed, lines, state.para] = s:process_tag_para(line, state.para)
if processed && len(state.lists)
@@ -1358,15 +1377,14 @@ function! s:parse_line(line, state) " {{{
let state.math = s:close_tag_math(state.math, res_lines)
endif
if processed && len(state.table)
- let state.table = s:close_tag_table(state.table, res_lines,
- \ state.header_ids)
+ let state.table = s:close_tag_table(state.table, res_lines, state.header_ids)
endif
call map(lines, 's:process_inline_tags(v:val, state.header_ids)')
call extend(res_lines, lines)
endif
- "}}}
+
"" add the rest
if !processed
@@ -1375,14 +1393,17 @@ function! s:parse_line(line, state) " {{{
return [res_lines, state]
-endfunction " }}}
+endfunction
+
-function! s:use_custom_wiki2html() "{{{
+function! s:use_custom_wiki2html()
let custom_wiki2html = vimwiki#vars#get_wikilocal('custom_wiki2html')
- return !empty(custom_wiki2html) && (s:file_exists(custom_wiki2html) || s:binary_exists(custom_wiki2html))
-endfunction " }}}
+ return !empty(custom_wiki2html) &&
+ \ (s:file_exists(custom_wiki2html) || s:binary_exists(custom_wiki2html))
+endfunction
+
-function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) "{{{
+function! vimwiki#html#CustomWiki2HTML(path, wikifile, force)
call vimwiki#path#mkdir(a:path)
echomsg system(vimwiki#vars#get_wikilocal('custom_wiki2html'). ' '.
\ a:force. ' '.
@@ -1391,14 +1412,20 @@ function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) "{{{
\ shellescape(a:path). ' '.
\ shellescape(a:wikifile). ' '.
\ shellescape(s:default_CSS_full_name(a:path)). ' '.
- \ (len(vimwiki#vars#get_wikilocal('template_path')) > 1 ? shellescape(expand(vimwiki#vars#get_wikilocal('template_path'))) : '-'). ' '.
- \ (len(vimwiki#vars#get_wikilocal('template_default')) > 0 ? vimwiki#vars#get_wikilocal('template_default') : '-'). ' '.
- \ (len(vimwiki#vars#get_wikilocal('template_ext')) > 0 ? vimwiki#vars#get_wikilocal('template_ext') : '-'). ' '.
- \ (len(vimwiki#vars#get_bufferlocal('subdir')) > 0 ? shellescape(s:root_path(vimwiki#vars#get_bufferlocal('subdir'))) : '-'). ' '.
- \ (len(vimwiki#vars#get_wikilocal('custom_wiki2html_args')) > 0 ? vimwiki#vars#get_wikilocal('custom_wiki2html_args') : '-'))
-endfunction " }}}
-
-function! s:convert_file(path_html, wikifile) "{{{
+ \ (len(vimwiki#vars#get_wikilocal('template_path')) > 1 ?
+ \ shellescape(expand(vimwiki#vars#get_wikilocal('template_path'))) : '-'). ' '.
+ \ (len(vimwiki#vars#get_wikilocal('template_default')) > 0 ?
+ \ vimwiki#vars#get_wikilocal('template_default') : '-'). ' '.
+ \ (len(vimwiki#vars#get_wikilocal('template_ext')) > 0 ?
+ \ vimwiki#vars#get_wikilocal('template_ext') : '-'). ' '.
+ \ (len(vimwiki#vars#get_bufferlocal('subdir')) > 0 ?
+ \ shellescape(s:root_path(vimwiki#vars#get_bufferlocal('subdir'))) : '-'). ' '.
+ \ (len(vimwiki#vars#get_wikilocal('custom_wiki2html_args')) > 0 ?
+ \ vimwiki#vars#get_wikilocal('custom_wiki2html_args') : '-'))
+endfunction
+
+
+function! s:convert_file(path_html, wikifile)
let done = 0
let wikifile = fnamemodify(a:wikifile, ":p")
@@ -1450,14 +1477,13 @@ function! s:convert_file(path_html, wikifile) "{{{
let s:gt_pattern = '>'
if vimwiki#vars#get_global('valid_html_tags') != ''
let tags = join(split(vimwiki#vars#get_global('valid_html_tags'), '\s*,\s*'), '\|')
- let s:lt_pattern = '\c<\%(/\?\%('.tags.'\)\%(\s\{-1}\S\{-}\)\{-}/\?>\)\@!'
+ let s:lt_pattern = '\c<\%(/\?\%('.tags.'\)\%(\s\{-1}\S\{-}\)\{-}/\?>\)\@!'
let s:gt_pattern = '\c\%(</\?\%('.tags.'\)\%(\s\{-1}\S\{-}\)\{-}/\?\)\@<!>'
endif
" prepare regexps for lists
let s:bullets = '[*-]'
- let s:numbers =
- \'\C\%(#\|\d\+)\|\d\+\.\|[ivxlcdm]\+)\|[IVXLCDM]\+)\|\l\{1,2})\|\u\{1,2})\)'
+ let s:numbers = '\C\%(#\|\d\+)\|\d\+\.\|[ivxlcdm]\+)\|[IVXLCDM]\+)\|\l\{1,2})\|\u\{1,2})\)'
for line in lsource
let oldquote = state.quote
@@ -1539,17 +1565,19 @@ function! s:convert_file(path_html, wikifile) "{{{
endif
return path_html.htmlfile
-endfunction "}}}
+endfunction
+
-function! vimwiki#html#Wiki2HTML(path_html, wikifile) "{{{
+function! vimwiki#html#Wiki2HTML(path_html, wikifile)
let result = s:convert_file(a:path_html, a:wikifile)
if result != ''
call s:create_default_CSS(a:path_html)
endif
return result
-endfunction "}}}
+endfunction
+
-function! vimwiki#html#WikiAll2HTML(path_html) "{{{
+function! vimwiki#html#WikiAll2HTML(path_html)
if !s:syntax_supported() && !s:use_custom_wiki2html()
echomsg 'Vimwiki Error: Conversion to HTML is not supported for this syntax'
return
@@ -1577,7 +1605,8 @@ function! vimwiki#html#WikiAll2HTML(path_html) "{{{
let current_subdir = vimwiki#vars#get_bufferlocal('subdir')
let current_invsubdir = vimwiki#vars#get_bufferlocal('invsubdir')
- let wikifiles = split(glob(vimwiki#vars#get_wikilocal('path').'**/*'.vimwiki#vars#get_wikilocal('ext')), '\n')
+ let wikifiles = split(glob(vimwiki#vars#get_wikilocal('path').'**/*'.
+ \ vimwiki#vars#get_wikilocal('ext')), '\n')
for wikifile in wikifiles
let wikifile = fnamemodify(wikifile, ":p")
@@ -1606,27 +1635,32 @@ function! vimwiki#html#WikiAll2HTML(path_html) "{{{
echomsg 'Vimwiki: Done!'
let &more = setting_more
-endfunction "}}}
+endfunction
-function! s:file_exists(fname) "{{{
+
+function! s:file_exists(fname)
return !empty(getftype(expand(a:fname)))
-endfunction "}}}
+endfunction
-function! s:binary_exists(fname) "{{{
+
+function! s:binary_exists(fname)
return executable(expand(a:fname))
-endfunction "}}}
+endfunction
+
-function! s:get_wikifile_url(wikifile) "{{{
+function! s:get_wikifile_url(wikifile)
return vimwiki#vars#get_wikilocal('path_html') .
\ vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), a:wikifile).
\ fnamemodify(a:wikifile, ":t:r").'.html'
-endfunction "}}}
+endfunction
+
-function! vimwiki#html#PasteUrl(wikifile) "{{{
+function! vimwiki#html#PasteUrl(wikifile)
execute 'r !echo file://'.s:get_wikifile_url(a:wikifile)
-endfunction "}}}
+endfunction
+
-function! vimwiki#html#CatUrl(wikifile) "{{{
+function! vimwiki#html#CatUrl(wikifile)
execute '!echo file://'.s:get_wikifile_url(a:wikifile)
-endfunction "}}}
-"}}}
+endfunction
+
diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim
@@ -1,20 +1,25 @@
-" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=99
+" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
" Vimwiki autoload plugin file
-" Desc: Everything concerning lists and checkboxes
+" Description: Everything concerning lists and checkboxes
" Home: https://github.com/vimwiki/vimwiki/
+
if exists("g:loaded_vimwiki_list_auto") || &cp
finish
endif
let g:loaded_vimwiki_list_auto = 1
-"incrementation functions for the various kinds of numbers {{{
-function! s:increment_1(value) "{{{
+" ---------------------------------------------------------
+" incrementation functions for the various kinds of numbers
+" ---------------------------------------------------------
+
+function! s:increment_1(value)
return eval(a:value) + 1
-endfunction "}}}
+endfunction
+
-function! s:increment_A(value) "{{{
+function! s:increment_A(value)
let list_of_chars = split(a:value, '.\zs')
let done = 0
for idx in reverse(range(len(list_of_chars)))
@@ -31,9 +36,10 @@ function! s:increment_A(value) "{{{
call insert(list_of_chars, 'A')
endif
return join(list_of_chars, '')
-endfunction "}}}
+endfunction
-function! s:increment_a(value) "{{{
+
+function! s:increment_a(value)
let list_of_chars = split(a:value, '.\zs')
let done = 0
for idx in reverse(range(len(list_of_chars)))
@@ -50,9 +56,10 @@ function! s:increment_a(value) "{{{
call insert(list_of_chars, 'a')
endif
return join(list_of_chars, '')
-endfunction "}}}
+endfunction
+
-function! s:increment_I(value) "{{{
+function! s:increment_I(value)
let subst_list = [ ['XLVIII$', 'IL'], ['VIII$', 'IX'], ['III$', 'IV'],
\ ['DCCCXCIX$', 'CM'], ['CCCXCIX$', 'CD'], ['LXXXIX$', 'XC'],
\ ['XXXIX$', 'XL'], ['\(I\{1,2\}\)$', '\1I'], ['CDXCIX$', 'D'],
@@ -64,9 +71,10 @@ function! s:increment_I(value) "{{{
endif
endfor
return ''
-endfunction "}}}
+endfunction
+
-function! s:increment_i(value) "{{{
+function! s:increment_i(value)
let subst_list = [ ['xlviii$', 'il'], ['viii$', 'ix'], ['iii$', 'iv'],
\ ['dcccxcix$', 'cm'], ['cccxcix$', 'cd'], ['lxxxix$', 'xc'],
\ ['xxxix$', 'xl'], ['\(i\{1,2\}\)$', '\1i'], ['cdxcix$', 'd'],
@@ -78,27 +86,29 @@ function! s:increment_i(value) "{{{
endif
endfor
return ''
-endfunction "}}}
+endfunction
-"incrementation functions for the various kinds of numbers }}}
-"utility functions {{{
+" ---------------------------------------------------------
+" utility functions
+" ---------------------------------------------------------
-function! s:substitute_rx_in_line(lnum, pattern, new_string) "{{{
- call setline(a:lnum, substitute(getline(a:lnum), a:pattern, a:new_string,
- \ ''))
-endfunction "}}}
+function! s:substitute_rx_in_line(lnum, pattern, new_string)
+ call setline(a:lnum, substitute(getline(a:lnum), a:pattern, a:new_string, ''))
+endfunction
-function! s:substitute_string_in_line(lnum, old_string, new_string) "{{{
- call s:substitute_rx_in_line(a:lnum, vimwiki#u#escape(a:old_string),
- \ a:new_string)
-endfunction "}}}
-function! s:first_char(string) "{{{
+function! s:substitute_string_in_line(lnum, old_string, new_string)
+ call s:substitute_rx_in_line(a:lnum, vimwiki#u#escape(a:old_string), a:new_string)
+endfunction
+
+
+function! s:first_char(string)
return matchstr(a:string, '^.')
-endfunction "}}}
+endfunction
+
-if exists("*strdisplaywidth") "{{{
+if exists("*strdisplaywidth")
function! s:string_length(str)
return strdisplaywidth(a:str)
endfunction
@@ -106,31 +116,35 @@ else
function! s:string_length(str)
return strlen(substitute(a:str, '.', 'x', 'g'))
endfunction
-endif "}}}
+endif
+
-function! vimwiki#lst#default_symbol() "{{{
+function! vimwiki#lst#default_symbol()
return vimwiki#vars#get_syntaxlocal('list_markers')[0]
-endfunction "}}}
+endfunction
-function! vimwiki#lst#get_list_margin() "{{{
+
+function! vimwiki#lst#get_list_margin()
let list_margin = vimwiki#vars#get_wikilocal('list_margin')
if list_margin < 0
return &sw
else
return list_margin
endif
-endfunction "}}}
+endfunction
+
"Returns: the column where the text of a line starts (possible list item
"markers and checkboxes are skipped)
-function! s:text_begin(lnum) "{{{
+function! s:text_begin(lnum)
return s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_syntaxlocal('rxListItem')))
-endfunction "}}}
+endfunction
+
"Returns: 2 if there is a marker and text
" 1 for a marker and no text
" 0 for no marker at all (empty line or only text)
-function! s:line_has_marker(lnum) "{{{
+function! s:line_has_marker(lnum)
if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*$'
return 1
elseif getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*\S'
@@ -138,11 +152,12 @@ function! s:line_has_marker(lnum) "{{{
else
return 0
endif
-endfunction "}}}
+endfunction
-"utility functions }}}
-"get properties of an item {{{
+" ---------------------------------------------------------
+" get properties of a list item
+" ---------------------------------------------------------
"Returns: the mainly used data structure in this file
"An item represents a single list item and is a dictionary with the keys
@@ -150,7 +165,7 @@ endfunction "}}}
"type - 1 for bulleted item, 2 for numbered item, 0 for a regular line
"mrkr - the concrete marker, e.g. '**' or 'b)'
"cb - the char in the checkbox or '' if there is no checkbox
-function! s:get_item(lnum) "{{{
+function! s:get_item(lnum)
let item = {'lnum': a:lnum}
if a:lnum == 0 || a:lnum > line('$')
let item.type = 0
@@ -176,33 +191,37 @@ function! s:get_item(lnum) "{{{
endif
return item
-endfunction "}}}
+endfunction
-function! s:empty_item() "{{{
+
+function! s:empty_item()
return {'type': 0}
-endfunction "}}}
+endfunction
+
"Returns: level of the line
"0 is the 'highest' level
-function! s:get_level(lnum) "{{{
+function! s:get_level(lnum)
if getline(a:lnum) =~# '^\s*$'
return 0
endif
if !vimwiki#vars#get_syntaxlocal('recurring_bullets')
let level = indent(a:lnum)
else
- let level = s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_syntaxlocal(rx_bullet_chars)))-1
+ let level = s:string_length(matchstr(getline(a:lnum),
+ \ vimwiki#vars#get_syntaxlocal(rx_bullet_chars)))-1
if level < 0
let level = (indent(a:lnum) == 0) ? 0 : 9999
endif
endif
return level
-endfunction "}}}
+endfunction
+
"Returns: 1, a, i, A, I or ''
"If in doubt if alphanumeric character or romanian
"numeral, peek in the previous line
-function! s:guess_kind_of_numbered_item(item) "{{{
+function! s:guess_kind_of_numbered_item(item)
if a:item.type != 2 | return '' | endif
let number_chars = a:item.mrkr[:-2]
let divisor = a:item.mrkr[-1:]
@@ -260,9 +279,10 @@ function! s:guess_kind_of_numbered_item(item) "{{{
endif
endif
-endfunction "}}}
+endfunction
+
-function! s:regexp_of_marker(item) "{{{
+function! s:regexp_of_marker(item)
if a:item.type == 1
return vimwiki#u#escape(a:item.mrkr)
elseif a:item.type == 2
@@ -276,15 +296,16 @@ function! s:regexp_of_marker(item) "{{{
else
return ''
endif
-endfunction "}}}
+endfunction
-"get properties of an item }}}
-"functions for navigating between items {{{
+" ---------------------------------------------------------
+" functions for navigating between items
+" ---------------------------------------------------------
"Returns: the list item after a:item or an empty item
"If a:ignore_kind is 1, the markers can differ
-function! s:get_next_list_item(item, ignore_kind) "{{{
+function! s:get_next_list_item(item, ignore_kind)
let org_lvl = s:get_level(a:item.lnum)
if !a:ignore_kind
let org_regex = s:regexp_of_marker(a:item)
@@ -303,11 +324,12 @@ function! s:get_next_list_item(item, ignore_kind) "{{{
let cur_ln = s:get_next_line(cur_ln)
endwhile
return s:empty_item()
-endfunction "}}}
+endfunction
+
"Returns: the list item before a:item or an empty item
"If a:ignore_kind is 1, the markers can differ
-function! s:get_prev_list_item(item, ignore_kind) "{{{
+function! s:get_prev_list_item(item, ignore_kind)
let org_lvl = s:get_level(a:item.lnum)
if !a:ignore_kind
let org_regex = s:regexp_of_marker(a:item)
@@ -326,9 +348,10 @@ function! s:get_prev_list_item(item, ignore_kind) "{{{
let cur_ln = s:get_prev_line(cur_ln)
endwhile
return s:empty_item()
-endfunction "}}}
+endfunction
-function! s:get_item_of_level(cur_ln, cur_lvl, org_lvl, org_regex) "{{{
+
+function! s:get_item_of_level(cur_ln, cur_lvl, org_lvl, org_regex)
let cur_linecontent = getline(a:cur_ln)
if a:cur_lvl == a:org_lvl
if cur_linecontent =~# '^\s*'.a:org_regex.'\s'
@@ -339,17 +362,19 @@ function! s:get_item_of_level(cur_ln, cur_lvl, org_lvl, org_regex) "{{{
elseif a:cur_lvl < a:org_lvl
return s:empty_item()
endif
-endfunction "}}}
+endfunction
+
-function! s:get_any_item_of_level(cur_ln, cur_lvl, org_lvl) "{{{
+function! s:get_any_item_of_level(cur_ln, cur_lvl, org_lvl)
if a:cur_lvl == a:org_lvl
return s:get_item(a:cur_ln)
elseif a:cur_lvl < a:org_lvl
return s:empty_item()
endif
-endfunction "}}}
+endfunction
-function! s:get_first_item_in_list(item, ignore_kind) "{{{
+
+function! s:get_first_item_in_list(item, ignore_kind)
let cur_item = a:item
while 1
let prev_item = s:get_prev_list_item(cur_item, a:ignore_kind)
@@ -360,9 +385,10 @@ function! s:get_first_item_in_list(item, ignore_kind) "{{{
endif
endwhile
return cur_item
-endfunction "}}}
+endfunction
+
-function! s:get_last_item_in_list(item, ignore_kind) "{{{
+function! s:get_last_item_in_list(item, ignore_kind)
let cur_item = a:item
while 1
let next_item = s:get_next_list_item(cur_item, a:ignore_kind)
@@ -373,17 +399,17 @@ function! s:get_last_item_in_list(item, ignore_kind) "{{{
endif
endwhile
return cur_item
-endfunction "}}}
+endfunction
+
"Returns: lnum+1 in most cases, but skips blank lines and preformatted text,
"0 in case of nonvalid line.
"If there is no second argument, 0 is returned at a header, otherwise the
"header is skipped
-function! s:get_next_line(lnum, ...) "{{{
+function! s:get_next_line(lnum, ...)
if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxPreStart')
let cur_ln = a:lnum + 1
- while cur_ln <= line('$') &&
- \ getline(cur_ln) !~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
+ while cur_ln <= line('$') && getline(cur_ln) !~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
let cur_ln += 1
endwhile
let next_line = cur_ln
@@ -401,11 +427,12 @@ function! s:get_next_line(lnum, ...) "{{{
endif
return next_line
-endfunction "}}}
+endfunction
+
"Returns: lnum-1 in most cases, but skips blank lines and preformatted text
"0 in case of nonvalid line and a header, because a header ends every list
-function! s:get_prev_line(lnum) "{{{
+function! s:get_prev_line(lnum)
let prev_line = prevnonblank(a:lnum-1)
if getline(prev_line) =~# vimwiki#vars#get_syntaxlocal('rxPreEnd')
@@ -425,9 +452,10 @@ function! s:get_prev_line(lnum) "{{{
endif
return prev_line
-endfunction "}}}
+endfunction
+
-function! s:get_first_child(item) "{{{
+function! s:get_first_child(item)
if a:item.lnum >= line('$')
return s:empty_item()
endif
@@ -437,19 +465,18 @@ function! s:get_first_child(item) "{{{
if cur_item.type != 0 && s:get_level(cur_item.lnum) > org_lvl
return cur_item
endif
- if cur_item.lnum > line('$') || cur_item.lnum <= 0 ||
- \ s:get_level(cur_item.lnum) <= org_lvl
+ if cur_item.lnum > line('$') || cur_item.lnum <= 0 || s:get_level(cur_item.lnum) <= org_lvl
return s:empty_item()
endif
let cur_item = s:get_item(s:get_next_line(cur_item.lnum))
endwhile
-endfunction "}}}
+endfunction
"Returns: the next sibling of a:child, given the parent item
"Used for iterating over children
"Note: child items do not necessarily have the same indent, i.e. level
-function! s:get_next_child_item(parent, child) "{{{
+function! s:get_next_child_item(parent, child)
if a:parent.type == 0 | return s:empty_item() | endif
let parent_lvl = s:get_level(a:parent.lnum)
let cur_ln = s:get_last_line_of_item_incl_children(a:child)
@@ -465,9 +492,10 @@ function! s:get_next_child_item(parent, child) "{{{
endif
endwhile
return s:empty_item()
-endfunction "}}}
+endfunction
-function! s:get_parent(item) "{{{
+
+function! s:get_parent(item)
let parent_line = 0
let cur_ln = prevnonblank(a:item.lnum)
@@ -491,10 +519,11 @@ function! s:get_parent(item) "{{{
endif
endwhile
return s:get_item(parent_line)
-endfunction "}}}
+endfunction
+
"Returns: the item above or the item below or an empty item
-function! s:get_a_neighbor_item(item) "{{{
+function! s:get_a_neighbor_item(item)
let prev_item = s:get_prev_list_item(a:item, 1)
if prev_item.type != 0
return prev_item
@@ -505,9 +534,10 @@ function! s:get_a_neighbor_item(item) "{{{
endif
endif
return s:empty_item()
-endfunction "}}}
+endfunction
+
-function! s:get_a_neighbor_item_in_column(lnum, column) "{{{
+function! s:get_a_neighbor_item_in_column(lnum, column)
let cur_ln = s:get_prev_line(a:lnum)
while cur_ln >= 1
if s:get_level(cur_ln) <= a:column
@@ -516,11 +546,12 @@ function! s:get_a_neighbor_item_in_column(lnum, column) "{{{
let cur_ln = s:get_prev_line(cur_ln)
endwhile
return s:empty_item()
-endfunction "}}}
+endfunction
+
"Returns: the item if there is one in a:lnum
"else the multiline item a:lnum belongs to
-function! s:get_corresponding_item(lnum) "{{{
+function! s:get_corresponding_item(lnum)
let item = s:get_item(a:lnum)
if item.type != 0
return item
@@ -539,10 +570,11 @@ function! s:get_corresponding_item(lnum) "{{{
let cur_ln = s:get_prev_line(cur_ln)
endwhile
return s:empty_item()
-endfunction "}}}
+endfunction
+
"Returns: the last line of a (possibly multiline) item, including all children
-function! s:get_last_line_of_item_incl_children(item) "{{{
+function! s:get_last_line_of_item_incl_children(item)
let cur_ln = a:item.lnum
let org_lvl = s:get_level(a:item.lnum)
while 1
@@ -552,11 +584,12 @@ function! s:get_last_line_of_item_incl_children(item) "{{{
endif
let cur_ln = next_line
endwhile
-endfunction "}}}
+endfunction
+
"Returns: the last line of a (possibly multiline) item
"Note: there can be other list items between the first and last line
-function! s:get_last_line_of_item(item) "{{{
+function! s:get_last_line_of_item(item)
if a:item.type == 0 | return 0 | endif
let org_lvl = s:get_level(a:item.lnum)
let last_corresponding_line = a:item.lnum
@@ -571,20 +604,21 @@ function! s:get_last_line_of_item(item) "{{{
let last_corresponding_line = cur_ln
let cur_ln = s:get_next_line(cur_ln)
else
- let cur_ln = s:get_next_line(
- \ s:get_last_line_of_item_incl_children(cur_item))
+ let cur_ln = s:get_next_line(s:get_last_line_of_item_incl_children(cur_item))
endif
endwhile
return last_corresponding_line
-endfunction "}}}
+endfunction
+
-"functions for navigating between items }}}
+" ---------------------------------------------------------
+" renumber list items
+" ---------------------------------------------------------
-"renumber list items {{{
"Renumbers the current list from a:item on downwards
"Returns: the last item that was adjusted
-function! s:adjust_numbered_list_below(item, recursive) "{{{
+function! s:adjust_numbered_list_below(item, recursive)
if !(a:item.type == 2 || (a:item.type == 1 && a:recursive))
return a:item
endif
@@ -611,9 +645,10 @@ function! s:adjust_numbered_list_below(item, recursive) "{{{
let cur_item = next_item
endwhile
return cur_item
-endfunction "}}}
+endfunction
+
-function! s:adjust_items_recursively(parent) "{{{
+function! s:adjust_items_recursively(parent)
if a:parent.type == 0
return s:empty_item()
end
@@ -630,13 +665,14 @@ function! s:adjust_items_recursively(parent) "{{{
return last_item
endif
endwhile
-endfunction "}}}
+endfunction
+
"Renumbers the list a:item is in.
"If a:ignore_kind == 0, only the items which have the same kind of marker as
"a:item are considered, otherwise all items.
"Returns: the last item that was adjusted
-function! s:adjust_numbered_list(item, ignore_kind, recursive) "{{{
+function! s:adjust_numbered_list(item, ignore_kind, recursive)
if !(a:item.type == 2 || (a:item.type == 1 && (a:ignore_kind || a:recursive)))
return s:empty_item()
end
@@ -645,10 +681,8 @@ function! s:adjust_numbered_list(item, ignore_kind, recursive) "{{{
while 1
if first_item.type == 2
- let new_mrkr = s:guess_kind_of_numbered_item(first_item) .
- \ first_item.mrkr[-1:]
- call s:substitute_string_in_line(first_item.lnum, first_item.mrkr,
- \ new_mrkr)
+ let new_mrkr = s:guess_kind_of_numbered_item(first_item) . first_item.mrkr[-1:]
+ call s:substitute_string_in_line(first_item.lnum, first_item.mrkr, new_mrkr)
let first_item.mrkr = new_mrkr
endif
@@ -660,20 +694,22 @@ function! s:adjust_numbered_list(item, ignore_kind, recursive) "{{{
endif
let first_item = next_first_item
endwhile
-endfunction "}}}
+endfunction
+
"Renumbers the list the cursor is in
"also update its parents checkbox state
-function! vimwiki#lst#adjust_numbered_list() "{{{
+function! vimwiki#lst#adjust_numbered_list()
let cur_item = s:get_corresponding_item(line('.'))
if cur_item.type == 0 | return | endif
call s:adjust_numbered_list(cur_item, 1, 0)
call s:update_state(s:get_parent(cur_item))
-endfunction "}}}
+endfunction
+
"Renumbers all lists of the buffer
"of course, this might take some seconds
-function! vimwiki#lst#adjust_whole_buffer() "{{{
+function! vimwiki#lst#adjust_whole_buffer()
let cur_ln = 1
while 1
let cur_item = s:get_item(cur_ln)
@@ -685,14 +721,15 @@ function! vimwiki#lst#adjust_whole_buffer() "{{{
return
endif
endwhile
-endfunction "}}}
+endfunction
-"renumber list items }}}
-"checkbox stuff {{{
+" ---------------------------------------------------------
+" checkbox stuff
+" ---------------------------------------------------------
"Returns: the rate of checkboxed list item in percent
-function! s:get_rate(item) "{{{
+function! s:get_rate(item)
if a:item.type == 0 || a:item.cb == ''
return -1
endif
@@ -702,11 +739,12 @@ function! s:get_rate(item) "{{{
endif
let n = len(vimwiki#vars#get_syntaxlocal('listsyms_list'))
return index(vimwiki#vars#get_syntaxlocal('listsyms_list'), state) * 100/(n-1)
-endfunction "}}}
+endfunction
+
"Set state of the list item to [ ] or [o] or whatever
"Returns: 1 if the state changed, 0 otherwise
-function! s:set_state(item, new_rate) "{{{
+function! s:set_state(item, new_rate)
let new_state = s:rate_to_state(a:new_rate)
let old_state = s:rate_to_state(s:get_rate(a:item))
if new_state !=# old_state
@@ -715,11 +753,12 @@ function! s:set_state(item, new_rate) "{{{
else
return 0
endif
-endfunction "}}}
+endfunction
+
"Set state of the list item to [ ] or [o] or whatever
"Updates the states of its child items
-function! s:set_state_plus_children(item, new_rate) "{{{
+function! s:set_state_plus_children(item, new_rate)
call s:set_state(a:item, a:new_rate)
let child_item = s:get_first_child(a:item)
@@ -732,10 +771,11 @@ function! s:set_state_plus_children(item, new_rate) "{{{
endif
let child_item = s:get_next_child_item(a:item, child_item)
endwhile
-endfunction "}}}
+endfunction
+
"Returns: the appropriate symbol for a given percent rate
-function! s:rate_to_state(rate) "{{{
+function! s:rate_to_state(rate)
let listsyms_list = vimwiki#vars#get_syntaxlocal('listsyms_list')
let state = ''
let n = len(listsyms_list)
@@ -750,11 +790,12 @@ function! s:rate_to_state(rate) "{{{
let state = listsyms_list[index]
endif
return state
-endfunction "}}}
+endfunction
+
"updates the symbol of a checkboxed item according to the symbols of its
"children
-function! s:update_state(item) "{{{
+function! s:update_state(item)
if a:item.type == 0 || a:item.cb == ''
return
endif
@@ -787,18 +828,20 @@ function! s:update_state(item) "{{{
call s:set_state_recursively(a:item, 0)
endif
endif
-endfunction "}}}
+endfunction
-function! s:set_state_recursively(item, new_rate) "{{{
+
+function! s:set_state_recursively(item, new_rate)
let state_changed = s:set_state(a:item, a:new_rate)
if state_changed
call s:update_state(s:get_parent(a:item))
endif
-endfunction "}}}
+endfunction
+
"Creates checkbox in a list item.
"Returns: 1 if successful
-function! s:create_cb(item) "{{{
+function! s:create_cb(item)
if a:item.type == 0 || a:item.cb != ''
return 0
endif
@@ -810,20 +853,22 @@ function! s:create_cb(item) "{{{
call s:update_state(new_item)
return 1
-endfunction "}}}
+endfunction
+
-function! s:remove_cb(item) "{{{
+function! s:remove_cb(item)
let item = a:item
if item.type != 0 && item.cb != ''
let item.cb = ''
call s:substitute_rx_in_line(item.lnum, '\s\+\[.\]', '')
endif
return item
-endfunction "}}}
+endfunction
+
"Change state of checkbox
"in the lines of the given range
-function! s:change_cb(from_line, to_line, new_rate) "{{{
+function! s:change_cb(from_line, to_line, new_rate)
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -846,11 +891,12 @@ function! s:change_cb(from_line, to_line, new_rate) "{{{
call s:update_state(parent_item)
endfor
-endfunction "}}}
+endfunction
+
"Toggles checkbox between two states in the lines of the given range,
"creates chceckboxes if there aren't any.
-function! s:toggle_create_cb(from_line, to_line, state1, state2) "{{{
+function! s:toggle_create_cb(from_line, to_line, state1, state2)
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -886,11 +932,12 @@ function! s:toggle_create_cb(from_line, to_line, state1, state2) "{{{
endif
-endfunction "}}}
+endfunction
+
"Decrement checkbox between [ ] and [X]
"in the lines of the given range
-function! vimwiki#lst#decrement_cb(from_line, to_line) "{{{
+function! vimwiki#lst#decrement_cb(from_line, to_line)
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -903,11 +950,12 @@ function! vimwiki#lst#decrement_cb(from_line, to_line) "{{{
call s:change_cb(a:from_line, a:to_line, new_rate)
-endfunction "}}}
+endfunction
+
"Increment checkbox between [ ] and [X]
"in the lines of the given range
-function! vimwiki#lst#increment_cb(from_line, to_line) "{{{
+function! vimwiki#lst#increment_cb(from_line, to_line)
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -920,23 +968,26 @@ function! vimwiki#lst#increment_cb(from_line, to_line) "{{{
call s:change_cb(a:from_line, a:to_line, new_rate)
-endfunction "}}}
+endfunction
+
"Toggles checkbox between [ ] and [X] or creates one
"in the lines of the given range
-function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{
+function! vimwiki#lst#toggle_cb(from_line, to_line)
return s:toggle_create_cb(a:from_line, a:to_line, 100, 0)
-endfunction "}}}
+endfunction
+
"Toggles checkbox between [ ] and [-] or creates one
"in the lines of the given range
-function! vimwiki#lst#toggle_rejected_cb(from_line, to_line) "{{{
+function! vimwiki#lst#toggle_rejected_cb(from_line, to_line)
return s:toggle_create_cb(a:from_line, a:to_line, -1, 0)
-endfunction "}}}
+endfunction
+
"Increment checkbox between [ ] and [X]
"in the lines of the given range
-function! vimwiki#lst#increment_cb(from_line, to_line) "{{{
+function! vimwiki#lst#increment_cb(from_line, to_line)
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
return
@@ -949,21 +1000,24 @@ function! vimwiki#lst#increment_cb(from_line, to_line) "{{{
call s:change_cb(a:from_line, a:to_line, new_rate)
-endfunction "}}}
+endfunction
+
"Toggles checkbox between [ ] and [X] or creates one
"in the lines of the given range
-function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{
+function! vimwiki#lst#toggle_cb(from_line, to_line)
return s:toggle_create_cb(a:from_line, a:to_line, 100, 0)
-endfunction "}}}
+endfunction
+
"Toggles checkbox between [ ] and [-] or creates one
"in the lines of the given range
-function! vimwiki#lst#toggle_rejected_cb(from_line, to_line) "{{{
+function! vimwiki#lst#toggle_rejected_cb(from_line, to_line)
return s:toggle_create_cb(a:from_line, a:to_line, -1, 0)
-endfunction "}}}
+endfunction
+
-function! vimwiki#lst#remove_cb(first_line, last_line) "{{{
+function! vimwiki#lst#remove_cb(first_line, last_line)
let first_item = s:get_corresponding_item(a:first_line)
let last_item = s:get_corresponding_item(a:last_line)
@@ -988,11 +1042,11 @@ function! vimwiki#lst#remove_cb(first_line, last_line) "{{{
for parent_item in parent_items_of_lines
call s:update_state(parent_item)
endfor
-endfunction "}}}
+endfunction
-function! vimwiki#lst#remove_cb_in_list() "{{{
- let first_item = s:get_first_item_in_list(
- \ s:get_corresponding_item(line('.')), 0)
+
+function! vimwiki#lst#remove_cb_in_list()
+ let first_item = s:get_first_item_in_list(s:get_corresponding_item(line('.')), 0)
let cur_item = first_item
while 1
@@ -1006,29 +1060,31 @@ function! vimwiki#lst#remove_cb_in_list() "{{{
endwhile
call s:update_state(s:get_parent(first_item))
-endfunction "}}}
+endfunction
+
-"checkbox stuff }}}
-"change the level of list items {{{
+" ---------------------------------------------------------
+" change the level of list items
+" ---------------------------------------------------------
-function! s:set_indent(lnum, new_indent) "{{{
+function! s:set_indent(lnum, new_indent)
if &expandtab
let indentstring = repeat(' ', a:new_indent)
else
- let indentstring = repeat('\t', a:new_indent / &tabstop) .
- \ repeat(' ', a:new_indent % &tabstop)
+ let indentstring = repeat('\t', a:new_indent / &tabstop) . repeat(' ', a:new_indent % &tabstop)
endif
call s:substitute_rx_in_line(a:lnum, '^\s*', indentstring)
-endfunction "}}}
+endfunction
-function! s:decrease_level(item) "{{{
+
+function! s:decrease_level(item)
let removed_indent = 0
if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 &&
- \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(a:item.mrkr)) > -1
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'),
+ \ s:first_char(a:item.mrkr)) > -1
if s:string_length(a:item.mrkr) >= 2
- call s:substitute_string_in_line(a:item.lnum,
- \ s:first_char(a:item.mrkr), '')
+ call s:substitute_string_in_line(a:item.lnum, s:first_char(a:item.mrkr), '')
let removed_indent = -1
endif
else
@@ -1042,12 +1098,14 @@ function! s:decrease_level(item) "{{{
let removed_indent = new_indent - old_indent
endif
return removed_indent
-endfunction "}}}
+endfunction
+
-function! s:increase_level(item) "{{{
+function! s:increase_level(item)
let additional_indent = 0
if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 &&
- \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(a:item.mrkr)) > -1
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'),
+ \ s:first_char(a:item.mrkr)) > -1
call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, a:item.mrkr .
\ s:first_char(a:item.mrkr))
let additional_indent = 1
@@ -1062,31 +1120,32 @@ function! s:increase_level(item) "{{{
let additional_indent = new_indent - old_indent
endif
return additional_indent
-endfunction "}}}
+endfunction
+
"adds a:indent_by to the current indent
"a:indent_by can be negative
-function! s:indent_line_by(lnum, indent_by) "{{{
+function! s:indent_line_by(lnum, indent_by)
let item = s:get_item(a:lnum)
if vimwiki#vars#get_syntaxlocal('recurring_bullets') && item.type == 1 &&
- \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(item.mrkr)) > -1
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'),
+ \ s:first_char(item.mrkr)) > -1
if a:indent_by > 0
- call s:substitute_string_in_line(a:lnum, item.mrkr,
- \ item.mrkr . s:first_char(item.mrkr))
+ call s:substitute_string_in_line(a:lnum, item.mrkr, item.mrkr . s:first_char(item.mrkr))
elseif a:indent_by < 0
call s:substitute_string_in_line(a:lnum, s:first_char(item.mrkr), '')
endif
else
call s:set_indent(a:lnum, indent(a:lnum) + a:indent_by)
endif
-endfunction "}}}
+endfunction
+
"changes lvl of lines in selection
-function! s:change_level(from_line, to_line, direction, plus_children) "{{{
+function! s:change_level(from_line, to_line, direction, plus_children)
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
- if a:direction ==# 'increase' && a:from_line == a:to_line &&
- \ empty(getline(a:from_line))
+ if a:direction ==# 'increase' && a:from_line == a:to_line && empty(getline(a:from_line))
"that's because :> doesn't work on an empty line
normal! gi
else
@@ -1127,8 +1186,7 @@ function! s:change_level(from_line, to_line, direction, plus_children) "{{{
let first_line_level = s:get_level(from_item.lnum)
let more_than_one_level_concerned = 0
- let first_line_indented_by =
- \ (a:direction ==# 'increase') ?
+ let first_line_indented_by = (a:direction ==# 'increase') ?
\ s:increase_level(from_item) : s:decrease_level(from_item)
let cur_ln = s:get_next_line(from_item.lnum)
@@ -1158,36 +1216,41 @@ function! s:change_level(from_line, to_line, direction, plus_children) "{{{
call s:adjust_numbered_list(from_item, 0, 0)
call s:adjust_numbered_list(to_be_adjusted, 0, 0)
endif
-endfunction "}}}
+endfunction
+
-function! vimwiki#lst#change_level(from_line, to_line, direction, plus_children) "{{{
+function! vimwiki#lst#change_level(from_line, to_line, direction, plus_children)
let cur_col = col('$') - col('.')
call s:change_level(a:from_line, a:to_line, a:direction, a:plus_children)
call cursor('.', col('$') - cur_col)
-endfunction "}}}
+endfunction
+
"indent line a:lnum to be the continuation of a:prev_item
-function! s:indent_multiline(prev_item, lnum) "{{{
+function! s:indent_multiline(prev_item, lnum)
if a:prev_item.type != 0
call s:set_indent(a:lnum, s:text_begin(a:prev_item.lnum))
endif
-endfunction "}}}
+endfunction
+
-"change the level of list items }}}
+" ---------------------------------------------------------
+" change markers of list items
+" ---------------------------------------------------------
-"change markers of list items {{{
"Returns: the position of a marker in g:vimwiki_list_markers
-function! s:get_idx_list_markers(item) "{{{
+function! s:get_idx_list_markers(item)
if a:item.type == 1
let m = s:first_char(a:item.mrkr)
else
let m = s:guess_kind_of_numbered_item(a:item) . a:item.mrkr[-1:]
endif
return index(vimwiki#vars#get_syntaxlocal('list_markers'), m)
-endfunction "}}}
+endfunction
+
"changes the marker of the given item to the next in g:vimwiki_list_markers
-function! s:get_next_mrkr(item) "{{{
+function! s:get_next_mrkr(item)
let markers = vimwiki#vars#get_syntaxlocal('list_markers')
if a:item.type == 0
let new_mrkr = markers[0]
@@ -1196,10 +1259,11 @@ function! s:get_next_mrkr(item) "{{{
let new_mrkr = markers[(idx+1) % len(markers)]
endif
return new_mrkr
-endfunction "}}}
+endfunction
+
"changes the marker of the given item to the previous in g:vimwiki_list_markers
-function! s:get_prev_mrkr(item) "{{{
+function! s:get_prev_mrkr(item)
let markers = vimwiki#vars#get_syntaxlocal('list_markers')
if a:item.type == 0
return markers[-1]
@@ -1208,12 +1272,12 @@ function! s:get_prev_mrkr(item) "{{{
if idx == -1
return markers[-1]
else
- return markers[(idx - 1 + len(markers)) %
- \ len(markers)]
+ return markers[(idx - 1 + len(markers)) % len(markers)]
endif
-endfunction "}}}
+endfunction
+
-function! s:set_new_mrkr(item, new_mrkr) "{{{
+function! s:set_new_mrkr(item, new_mrkr)
if a:item.type == 0
call s:substitute_rx_in_line(a:item.lnum, '^\s*\zs\ze', a:new_mrkr.' ')
if indent(a:item.lnum) == 0 && !vimwiki#vars#get_syntaxlocal('recurring_bullets')
@@ -1222,9 +1286,10 @@ function! s:set_new_mrkr(item, new_mrkr) "{{{
else
call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, a:new_mrkr)
endif
-endfunction "}}}
+endfunction
-function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
+
+function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode)
let cur_col_from_eol = col("$") - (a:mode ==# "i" ? col("'^") : col('.'))
let new_mrkr = a:new_mrkr
let cur_ln = a:from_line
@@ -1241,25 +1306,23 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
if index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(new_mrkr)) > -1
"use *** if the item above has *** too
let item_above = s:get_prev_list_item(cur_item, 1)
- if item_above.type == 1 &&
- \ s:first_char(item_above.mrkr) ==# s:first_char(new_mrkr)
+ if item_above.type == 1 && s:first_char(item_above.mrkr) ==# s:first_char(new_mrkr)
let new_mrkr = item_above.mrkr
else
"use *** if the item below has *** too
let item_below = s:get_next_list_item(cur_item, 1)
- if item_below.type == 1 &&
- \ s:first_char(item_below.mrkr) ==# s:first_char(new_mrkr)
+ if item_below.type == 1 && s:first_char(item_below.mrkr) ==# s:first_char(new_mrkr)
let new_mrkr = item_below.mrkr
else
"if the old is ### and the new is * use ***
if cur_item.type == 1 &&
- \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(cur_item.mrkr))>-1
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'),
+ \ s:first_char(cur_item.mrkr))>-1
let new_mrkr = repeat(new_mrkr, s:string_length(cur_item.mrkr))
else
"use *** if the parent item has **
let parent_item = s:get_parent(cur_item)
- if parent_item.type == 1 &&
- \ s:first_char(parent_item.mrkr) ==# s:first_char(new_mrkr)
+ if parent_item.type == 1 && s:first_char(parent_item.mrkr) ==# s:first_char(new_mrkr)
let new_mrkr = repeat(s:first_char(parent_item.mrkr),
\ s:string_length(parent_item.mrkr)+1)
endif
@@ -1277,9 +1340,10 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
endwhile
call cursor('.', col('$') - cur_col_from_eol)
-endfunction "}}}
+endfunction
+
-function! vimwiki#lst#change_marker_in_list(new_mrkr) "{{{
+function! vimwiki#lst#change_marker_in_list(new_mrkr)
let cur_item = s:get_corresponding_item(line('.'))
let first_item = s:get_first_item_in_list(cur_item, 0)
let last_item = s:get_last_item_in_list(cur_item, 0)
@@ -1293,10 +1357,11 @@ function! vimwiki#lst#change_marker_in_list(new_mrkr) "{{{
endwhile
call s:adjust_numbered_list(s:get_item(first_item_line), 0, 0)
-endfunction "}}}
+endfunction
+
"sets kind of the item depending on neighbor items and the parent item
-function! s:adjust_mrkr(item) "{{{
+function! s:adjust_mrkr(item)
if a:item.type == 0 || vimwiki#vars#get_syntaxlocal('recurring_bullets')
return
endif
@@ -1309,20 +1374,20 @@ function! s:adjust_mrkr(item) "{{{
"if possible, set e.g. *** if parent has ** as marker
if neighbor_item.type == 0 && a:item.type == 1 &&
- \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), s:first_char(a:item.mrkr)) > -1
+ \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'),
+ \ s:first_char(a:item.mrkr)) > -1
let parent_item = s:get_parent(a:item)
- if parent_item.type == 1 &&
- \ s:first_char(parent_item.mrkr) ==# s:first_char(a:item.mrkr)
- let new_mrkr = repeat(s:first_char(parent_item.mrkr),
- \ s:string_length(parent_item.mrkr)+1)
+ if parent_item.type == 1 && s:first_char(parent_item.mrkr) ==# s:first_char(a:item.mrkr)
+ let new_mrkr = repeat(s:first_char(parent_item.mrkr), s:string_length(parent_item.mrkr)+1)
endif
endif
call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, new_mrkr)
call s:adjust_numbered_list(a:item, 0, 1)
-endfunction "}}}
+endfunction
-function! s:clone_marker_from_to(from, to) "{{{
+
+function! s:clone_marker_from_to(from, to)
let item_from = s:get_item(a:from)
if item_from.type == 0 | return | endif
let new_mrkr = item_from.mrkr . ' '
@@ -1337,9 +1402,10 @@ function! s:clone_marker_from_to(from, to) "{{{
let adjust_from = ( a:from < a:to ? a:from : a:to )
call s:adjust_numbered_list_below(s:get_item(adjust_from), 0)
endif
-endfunction "}}}
+endfunction
+
-function! s:remove_mrkr(item) "{{{
+function! s:remove_mrkr(item)
let item = a:item
if item.cb != ''
let item = s:remove_cb(item)
@@ -1353,9 +1419,10 @@ function! s:remove_mrkr(item) "{{{
let item.type = 0
call s:update_state(parent_item)
return item
-endfunction "}}}
+endfunction
-function! s:create_marker(lnum) "{{{
+
+function! s:create_marker(lnum)
let new_sibling = s:get_corresponding_item(a:lnum)
if new_sibling.type == 0
let new_sibling = s:get_a_neighbor_item_in_column(a:lnum, virtcol('.'))
@@ -1367,12 +1434,14 @@ function! s:create_marker(lnum) "{{{
call s:set_new_mrkr(cur_item, vimwiki#vars#get_syntaxlocal('list_markers')[0])
call s:adjust_numbered_list(cur_item, 0, 0)
endif
-endfunction "}}}
+endfunction
+
-"change markers of list items }}}
+" ---------------------------------------------------------
+" handle keys
+" ---------------------------------------------------------
-"handle keys {{{
-function! vimwiki#lst#kbd_o() "{{{
+function! vimwiki#lst#kbd_o()
let fold_end = foldclosedend('.')
let lnum = (fold_end == -1) ? line('.') : fold_end
let cur_item = s:get_item(lnum)
@@ -1385,9 +1454,10 @@ function! vimwiki#lst#kbd_o() "{{{
call s:clone_marker_from_to(cur_item.lnum, cur_item.lnum+1)
endif
startinsert!
-endfunction "}}}
+endfunction
+
-function! vimwiki#lst#kbd_O() "{{{
+function! vimwiki#lst#kbd_O()
normal! Ox
let cur_ln = line('.')
if getline(cur_ln+1) !~# '^\s*$'
@@ -1396,9 +1466,10 @@ function! vimwiki#lst#kbd_O() "{{{
call s:clone_marker_from_to(cur_ln-1, cur_ln)
endif
startinsert!
-endfunction "}}}
+endfunction
-function! s:cr_on_empty_list_item(lnum, behavior) "{{{
+
+function! s:cr_on_empty_list_item(lnum, behavior)
if a:behavior == 1
"just make a new list item
normal! gi
@@ -1452,18 +1523,20 @@ function! s:cr_on_empty_list_item(lnum, behavior) "{{{
endif
return
endif
-endfunction "}}}
+endfunction
+
-function! s:cr_on_empty_line(lnum, behavior) "{{{
+function! s:cr_on_empty_line(lnum, behavior)
"inserting and deleting the x is necessary
"because otherwise the indent is lost
normal! gix
if a:behavior == 2 || a:behavior == 3
call s:create_marker(a:lnum+1)
endif
-endfunction "}}}
+endfunction
-function! s:cr_on_list_item(lnum, insert_new_marker, not_at_eol) "{{{
+
+function! s:cr_on_list_item(lnum, insert_new_marker, not_at_eol)
if a:insert_new_marker
"the ultimate feature of this script: make new marker on <CR>
normal! gi
@@ -1479,9 +1552,10 @@ function! s:cr_on_list_item(lnum, insert_new_marker, not_at_eol) "{{{
let prev_line = s:get_corresponding_item(s:get_prev_line(a:lnum+1))
call s:indent_multiline(prev_line, a:lnum+1)
endif
-endfunction "}}}
+endfunction
+
-function! vimwiki#lst#kbd_cr(normal, just_mrkr) "{{{
+function! vimwiki#lst#kbd_cr(normal, just_mrkr)
let lnum = line('.')
let has_bp = s:line_has_marker(lnum)
@@ -1527,10 +1601,11 @@ function! vimwiki#lst#kbd_cr(normal, just_mrkr) "{{{
startinsert
endif
-endfunction "}}}
+endfunction
+
"creates a list item in the current line or removes it
-function! vimwiki#lst#toggle_list_item() "{{{
+function! vimwiki#lst#toggle_list_item()
let cur_col_from_eol = col("$") - col("'^")
let cur_item = s:get_item(line('.'))
@@ -1559,12 +1634,14 @@ function! vimwiki#lst#toggle_list_item() "{{{
else
startinsert
endif
-endfunction "}}}
+endfunction
-"handle keys }}}
-"misc stuff {{{
-function! vimwiki#lst#TO_list_item(inner, visual) "{{{
+" ---------------------------------------------------------
+" misc stuff
+" ---------------------------------------------------------
+
+function! vimwiki#lst#TO_list_item(inner, visual)
let lnum = prevnonblank('.')
let item = s:get_corresponding_item(lnum)
if item.type == 0
@@ -1580,9 +1657,10 @@ function! vimwiki#lst#TO_list_item(inner, visual) "{{{
call cursor(to_line, 0)
normal! o
call cursor(from_line, 0)
-endfunction "}}}
+endfunction
+
-fun! vimwiki#lst#fold_level(lnum) "{{{
+function! vimwiki#lst#fold_level(lnum)
let cur_item = s:get_item(a:lnum)
if cur_item.type != 0
let parent_item = s:get_parent(cur_item)
@@ -1595,6 +1673,5 @@ fun! vimwiki#lst#fold_level(lnum) "{{{
endif
endif
return '='
-endf "}}}
+endfunction
-"misc stuff }}}
diff --git a/autoload/vimwiki/markdown_base.vim b/autoload/vimwiki/markdown_base.vim
@@ -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
diff --git a/autoload/vimwiki/path.vim b/autoload/vimwiki/path.vim
@@ -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
+
diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim
@@ -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
diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim
@@ -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_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_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 "}}}
+endfunction
+
-function! vimwiki#tbl#create(...) "{{{
+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 "}}}
+endfunction
+
-function! vimwiki#tbl#align_or_cmd(cmd) "{{{
+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
-"}}}
diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim
@@ -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
+
diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim
@@ -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
+
diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim
@@ -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'))
-" }}}
diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim
@@ -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
diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim
@@ -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
+
diff --git a/syntax/vimwiki_default.vim b/syntax/vimwiki_default.vim
@@ -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\|$\)'
diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim
@@ -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\|$\)'
diff --git a/syntax/vimwiki_markdown_custom.vim b/syntax/vimwiki_markdown_custom.vim
@@ -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 "{{{
-"}}}
-"
diff --git a/syntax/vimwiki_media.vim b/syntax/vimwiki_media.vim
@@ -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\|$\)'