diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
index 14592cf..81c9c45 100644
--- a/autoload/vimwiki/base.vim
+++ b/autoload/vimwiki/base.vim
@@ -824,7 +824,7 @@ function! s:update_wiki_links_dir(dir, old_fname, new_fname) " {{{
let new_fname = a:new_fname
let old_fname_r = vimwiki#base#apply_template(
- \ vimwiki#vars#get_global('WikiLinkMatchUrlTemplate'), old_fname, '', '')
+ \ vimwiki#vars#get_syntaxlocal('WikiLinkMatchUrlTemplate'), old_fname, '', '')
let files = split(glob(vimwiki#vars#get_wikilocal('path').a:dir.'*'.vimwiki#vars#get_wikilocal('ext')), '\n')
for fname in files
@@ -1056,7 +1056,7 @@ endfunction "}}}
" WIKI link following functions {{{
" vimwiki#base#find_next_link
function! vimwiki#base#find_next_link() "{{{
- call vimwiki#base#search_word(vimwiki#vars#get_global('rxAnyLink'), '')
+ call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), '')
endfunction " }}}
" vimwiki#base#find_prev_link
@@ -1064,9 +1064,9 @@ 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_global('rxAnyLink'), 'b')
+ call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b')
endif
- call vimwiki#base#search_word(vimwiki#vars#get_global('rxAnyLink'), 'b')
+ call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b')
endfunction " }}}
" vimwiki#base#follow_link
@@ -1094,8 +1094,8 @@ function! vimwiki#base#follow_link(split, ...) "{{{ Parse link at cursor and pas
endif
" try WikiLink
- let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiLink')),
- \ vimwiki#vars#get_global('rxWikiLinkMatchUrl'))
+ let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink')),
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
" try WikiIncl
if lnk == ""
let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiIncl')),
@@ -1221,7 +1221,7 @@ function! vimwiki#base#rename_link() "{{{
return
endif
- let url = matchstr(new_link, vimwiki#vars#get_global('rxWikiLinkMatchUrl'))
+ let url = matchstr(new_link, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
if url != ''
let new_link = url
endif
@@ -1763,12 +1763,12 @@ endfunction " }}}
function! s:normalize_link_syntax_n() " {{{
" try WikiLink
- let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiLink'))
+ 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_global('rxWikiLinkMatchUrl'), vimwiki#vars#get_global('rxWikiLinkMatchDescr'),
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_global('rxWikiLinkMatchDescr'),
\ vimwiki#vars#get_global('WikiLinkTemplate2'))
- call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_global('rxWikiLink'), sub)
+ call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink'), sub)
return
endif
diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim
index 671ddc1..944e857 100644
--- a/autoload/vimwiki/html.vim
+++ b/autoload/vimwiki/html.vim
@@ -424,7 +424,7 @@ function! s:tag_wikilink(value) "{{{
" [[url#a1#a2]] -> url#a1#a2
" [[#a1#a2]] -> #a1#a2
let str = a:value
- let url = matchstr(str, vimwiki#vars#get_global('rxWikiLinkMatchUrl'))
+ let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
let descr = matchstr(str, vimwiki#vars#get_global('rxWikiLinkMatchDescr'))
let descr = (substitute(descr,'^\s*\(.*\)\s*$','\1','') != '' ? descr : url)
@@ -571,7 +571,7 @@ endfunction " }}}
function! s:process_tags_links(line) " {{{
let line = a:line
- let line = s:make_tag(line, vimwiki#vars#get_global('rxWikiLink'), 's:tag_wikilink')
+ 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_global('rxWeblink'), 's:tag_weblink')
return line
diff --git a/autoload/vimwiki/markdown_base.vim b/autoload/vimwiki/markdown_base.vim
index 7412176..429e2c5 100644
--- a/autoload/vimwiki/markdown_base.vim
+++ b/autoload/vimwiki/markdown_base.vim
@@ -8,7 +8,7 @@
" vimwiki#markdown_base#reset_mkd_refs
function! vimwiki#markdown_base#reset_mkd_refs() "{{{
- call VimwikiClear('markdown_refs')
+ call vimwiki#vars#set_bufferlocal('markdown_refs', {})
endfunction "}}}
" vimwiki#markdown_base#scan_reflinks
@@ -92,8 +92,8 @@ function! vimwiki#markdown_base#follow_link(split, ...) "{{{ Parse link at curso
endif
" try WikiLink
- let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiLink')),
- \ vimwiki#vars#get_global('rxWikiLinkMatchUrl'))
+ let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink')),
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'))
" try WikiIncl
if lnk == ""
let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiIncl')),
@@ -142,7 +142,7 @@ 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_global('rxWikiLinkMatchUrl'), vimwiki#vars#get_global('rxWikiLinkMatchDescr'),
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_global('rxWikiLinkMatchDescr'),
\ vimwiki#vars#get_syntaxlocal('WikiLink1Template2'))
call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink0'), sub)
return
@@ -152,7 +152,7 @@ function! s:normalize_link_syntax_n() " {{{
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_global('rxWikiLinkMatchUrl'), vimwiki#vars#get_global('rxWikiLinkMatchDescr'),
+ \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl'), vimwiki#vars#get_global('rxWikiLinkMatchDescr'),
\ vimwiki#vars#get_global('WikiLinkTemplate2'))
call vimwiki#base#replacestr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink1'), sub)
return
diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim
index 8b2c249..490b47d 100644
--- a/autoload/vimwiki/tags.vim
+++ b/autoload/vimwiki/tags.vim
@@ -326,7 +326,7 @@ function! vimwiki#tags#generate_tags(...) abort "{{{
let links_rx = '\m\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxH2').'\)\|\%(^\s*'
\ .vimwiki#u#escape(vimwiki#lst#default_symbol()).' '
- \ .vimwiki#vars#get_global('rxWikiLink').'$\)'
+ \ .vimwiki#vars#get_syntaxlocal('rxWikiLink').'$\)'
call vimwiki#base#update_listing_in_buffer(lines, 'Generated Tags', links_rx,
\ line('$')+1, 1)
diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim
index fa91bf7..009bf9d 100644
--- a/autoload/vimwiki/u.vim
+++ b/autoload/vimwiki/u.vim
@@ -46,11 +46,6 @@ function vimwiki#u#reload_regexes() "{{{
execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'.vim'
endfunction "}}}
-" Load omnipresent Wiki syntax
-function vimwiki#u#reload_omni_regexes() "{{{
- execute 'runtime! syntax/omnipresent_syntax.vim'
-endfunction "}}}
-
" Load syntax-specific functionality
function vimwiki#u#reload_regexes_custom() "{{{
execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'_custom.vim'
diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim
index d34a032..0d915df 100644
--- a/autoload/vimwiki/vars.vim
+++ b/autoload/vimwiki/vars.vim
@@ -95,18 +95,6 @@ function! s:populate_global_variables()
let g:vimwiki_global_vars.WikiLinkTemplate2 = wikilink_prefix . '__LinkUrl__'. wikilink_separator
\ . '__LinkDescription__' . wikilink_suffix
- " template for matching all wiki links with a given target file
- let g:vimwiki_global_vars.WikiLinkMatchUrlTemplate =
- \ g:vimwiki_global_vars.rx_wikilink_prefix .
- \ '\zs__LinkUrl__\ze\%(#.*\)\?' .
- \ g:vimwiki_global_vars.rx_wikilink_suffix .
- \ '\|' .
- \ g:vimwiki_global_vars.rx_wikilink_prefix .
- \ '\zs__LinkUrl__\ze\%(#.*\)\?' .
- \ g:vimwiki_global_vars.rx_wikilink_separator .
- \ '.*' .
- \ g:vimwiki_global_vars.rx_wikilink_suffix
-
let valid_chars = '[^\\\]]'
let g:vimwiki_global_vars.rxWikiLinkUrl = valid_chars.'\{-}'
let g:vimwiki_global_vars.rxWikiLinkDescr = valid_chars.'\{-}'
@@ -118,14 +106,6 @@ function! s:populate_global_variables()
let g:vimwiki_global_vars.rxWord = '[^[:blank:]!"$%&''()*+,:;<=>?\[\]\\^`{}]\+'
" [[URL]], or [[URL|DESCRIPTION]]
- " a) match [[URL|DESCRIPTION]]
- let g:vimwiki_global_vars.rxWikiLink = g:vimwiki_global_vars.rx_wikilink_prefix.
- \ g:vimwiki_global_vars.rxWikiLinkUrl.'\%('.g:vimwiki_global_vars.rx_wikilink_separator.
- \ g:vimwiki_global_vars.rxWikiLinkDescr.'\)\?'.g:vimwiki_global_vars.rx_wikilink_suffix
- " b) match URL within [[URL|DESCRIPTION]]
- let g:vimwiki_global_vars.rxWikiLinkMatchUrl = g:vimwiki_global_vars.rx_wikilink_prefix.
- \ '\zs'. g:vimwiki_global_vars.rxWikiLinkUrl.'\ze\%('. g:vimwiki_global_vars.rx_wikilink_separator.
- \ g:vimwiki_global_vars.rxWikiLinkDescr.'\)\?'.g:vimwiki_global_vars.rx_wikilink_suffix
" c) match DESCRIPTION within [[URL|DESCRIPTION]]
let g:vimwiki_global_vars.rxWikiLinkMatchDescr = g:vimwiki_global_vars.rx_wikilink_prefix.
\ g:vimwiki_global_vars.rxWikiLinkUrl . g:vimwiki_global_vars.rx_wikilink_separator.'\%('.
@@ -176,9 +156,6 @@ function! s:populate_global_variables()
" 0b) match DESCRIPTION within URL
let g:vimwiki_global_vars.rxWeblinkMatchDescr = ''
- let g:vimwiki_global_vars.rxAnyLink = g:vimwiki_global_vars.rxWikiLink.'\|'.
- \ g:vimwiki_global_vars.rxWikiIncl.'\|'.g:vimwiki_global_vars.rxWeblink
-
let g:vimwiki_global_vars.rxTodo = '\C\%(TODO:\|DONE:\|STARTED:\|FIXME:\|FIXED:\|XXX:\)'
" default colors when headers of different levels are highlighted differently
@@ -370,6 +347,113 @@ function! vimwiki#vars#populate_syntax_vars(syntax)
else
let g:vimwiki_syntax_variables[a:syntax].rxListItemAndChildren = '^\(\s*\)\%('.g:vimwiki_syntax_variables[a:syntax].rxListBullet.'\|'.g:vimwiki_syntax_variables[a:syntax].rxListNumber.'\)\s\+\['.g:vimwiki_syntax_variables[a:syntax].listsyms_list[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*'
endif
+
+ " template for matching all wiki links with a given target file
+ let g:vimwiki_syntax_variables[a:syntax].WikiLinkMatchUrlTemplate =
+ \ g:vimwiki_global_vars.rx_wikilink_prefix .
+ \ '\zs__LinkUrl__\ze\%(#.*\)\?' .
+ \ g:vimwiki_global_vars.rx_wikilink_suffix .
+ \ '\|' .
+ \ g:vimwiki_global_vars.rx_wikilink_prefix .
+ \ '\zs__LinkUrl__\ze\%(#.*\)\?' .
+ \ g:vimwiki_global_vars.rx_wikilink_separator .
+ \ '.*' .
+ \ g:vimwiki_global_vars.rx_wikilink_suffix
+
+ " a) match [[URL|DESCRIPTION]]
+ let g:vimwiki_syntax_variables[a:syntax].rxWikiLink = g:vimwiki_global_vars.rx_wikilink_prefix.
+ \ g:vimwiki_global_vars.rxWikiLinkUrl.'\%('.g:vimwiki_global_vars.rx_wikilink_separator.
+ \ g:vimwiki_global_vars.rxWikiLinkDescr.'\)\?'.g:vimwiki_global_vars.rx_wikilink_suffix
+ let g:vimwiki_syntax_variables[a:syntax].rxAnyLink = g:vimwiki_syntax_variables[a:syntax].rxWikiLink.'\|'.
+ \ g:vimwiki_global_vars.rxWikiIncl.'\|'.g:vimwiki_global_vars.rxWeblink
+ " b) match URL within [[URL|DESCRIPTION]]
+ let g:vimwiki_syntax_variables[a:syntax].rxWikiLinkMatchUrl = g:vimwiki_global_vars.rx_wikilink_prefix.
+ \ '\zs'. g:vimwiki_global_vars.rxWikiLinkUrl.'\ze\%('. g:vimwiki_global_vars.rx_wikilink_separator.
+ \ g:vimwiki_global_vars.rxWikiLinkDescr.'\)\?'.g:vimwiki_global_vars.rx_wikilink_suffix
+
+ if a:syntax ==# 'markdown'
+ call s:populate_extra_markdown_vars()
+ endif
+endfunction
+
+
+function! s:populate_extra_markdown_vars()
+ let mkd_syntax = g:vimwiki_syntax_variables['markdown']
+
+ " 0a) match [[URL|DESCRIPTION]]
+ let mkd_syntax.vimwiki_rxWikiLink0 = mkd_syntax.rxWikiLink
+ " 0b) match URL within [[URL|DESCRIPTION]]
+ let mkd_syntax.vimwiki_rxWikiLink0MatchUrl = mkd_syntax.rxWikiLinkMatchUrl
+ " 0c) match DESCRIPTION within [[URL|DESCRIPTION]]
+ let mkd_syntax.vimwiki_rxWikiLink0MatchDescr = g:vimwiki_global_vars.rxWikiLinkMatchDescr
+
+ let wikilink_md_prefix = '['
+ let wikilink_md_suffix = ']'
+ let wikilink_md_separator = ']['
+ let rx_wikilink_md_separator = vimwiki#u#escape(wikilink_md_separator)
+ let mkd_syntax.rx_wikilink_md_prefix = vimwiki#u#escape(wikilink_md_prefix)
+ let mkd_syntax.rx_wikilink_md_suffix = vimwiki#u#escape(wikilink_md_suffix)
+
+ " [URL][]
+ let mkd_syntax.WikiLink1Template1 = wikilink_md_prefix . '__LinkUrl__'.
+ \ wikilink_md_separator. wikilink_md_suffix
+ " [DESCRIPTION][URL]
+ let mkd_syntax.WikiLink1Template2 = wikilink_md_prefix. '__LinkDescription__'.
+ \ wikilink_md_separator. '__LinkUrl__'. wikilink_md_suffix
+ let mkd_syntax.WikiLinkMatchUrlTemplate .=
+ \ '\|' .
+ \ mkd_syntax.rx_wikilink_md_prefix .
+ \ '.*' .
+ \ rx_wikilink_md_separator .
+ \ '\zs__LinkUrl__\ze\%(#.*\)\?' .
+ \ mkd_syntax.rx_wikilink_md_suffix .
+ \ '\|' .
+ \ mkd_syntax.rx_wikilink_md_prefix .
+ \ '\zs__LinkUrl__\ze\%(#.*\)\?' .
+ \ rx_wikilink_md_separator .
+ \ mkd_syntax.rx_wikilink_md_suffix
+
+let valid_chars = '[^\\\[\]]'
+let mkd_syntax.rxWikiLink1Url = valid_chars.'\{-}'
+let mkd_syntax.rxWikiLink1Descr = valid_chars.'\{-}'
+let mkd_syntax.rxWikiLink1InvalidPrefix = '[\]\[]\@