commit 7d82c7541de59598831f37dce4b6143d007a79cb
parent 9964026586c1241e8465330e4a3541e6493f5c1b
Author: Rane Brown <ranebrown@users.noreply.github.com>
Date: Tue, 19 Mar 2019 21:54:32 -0600
Merge pull request #529 from sstallion/sstallion/markdown_link_ext
Add support for Markdown link extensions!!!
Diffstat:
3 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
@@ -197,7 +197,10 @@ function! vimwiki#base#resolve_link(link_text, ...)
\ vimwiki#vars#get_wikilocal('ext', link_infos.index)
endif
else
- let link_infos.filename .= vimwiki#vars#get_wikilocal('ext', link_infos.index)
+ let ext = fnamemodify(link_text, ':e')
+ if ext == '' " append ext iff one not already present
+ let link_infos.filename .= vimwiki#vars#get_wikilocal('ext', link_infos.index)
+ endif
endif
elseif link_infos.scheme ==# 'diary'
@@ -350,9 +353,15 @@ function! vimwiki#base#generate_links()
for link in links
let abs_filepath = vimwiki#path#abs_path_of_link(link)
if !s:is_diary_file(abs_filepath)
- call add(lines, bullet.
- \ s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
- \ '__LinkUrl__', link, ''))
+ if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
+ let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template')
+ else
+ let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate1')
+ endif
+
+ let entry = s:safesubstitute(link_tpl, '__LinkUrl__', link, '')
+ let entry = s:safesubstitute(entry, '__LinkDescription__', link, '')
+ call add(lines, bullet. entry)
endif
endfor
@@ -598,7 +607,12 @@ function! s:get_links(wikifile, idx)
endif
let syntax = vimwiki#vars#get_wikilocal('syntax', a:idx)
- let rx_link = vimwiki#vars#get_syntaxlocal('wikilink', syntax)
+ if syntax == 'markdown'
+ let rx_link = vimwiki#vars#get_syntaxlocal('rxWeblink1MatchUrl', syntax)
+ else
+ let rx_link = vimwiki#vars#get_syntaxlocal('wikilink', syntax)
+ endif
+
let links = []
let lnum = 0
@@ -1870,7 +1884,7 @@ function! vimwiki#base#table_of_contents(create)
let bullet = vimwiki#lst#default_symbol().' '
for [lvl, link, desc] in complete_header_infos
if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
- let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template')
+ let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink2Template')
else
let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate2')
endif
diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim
@@ -168,6 +168,7 @@ function! s:read_global_settings_from_user()
\ 'listsyms': {'type': type(''), 'default': ' .oOX', 'min_length': 2},
\ 'listsym_rejected': {'type': type(''), 'default': '-', 'length': 1},
\ 'map_prefix': {'type': type(''), 'default': '<Leader>w'},
+ \ 'markdown_link_ext': {'type': type(0), 'default': 0, 'min': 0, 'max': 1},
\ 'menu': {'type': type(''), 'default': 'Vimwiki'},
\ 'table_auto_fmt': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
\ 'table_mappings': {'type': type(0), 'default': 1, 'min': 0, 'max': 1},
@@ -689,10 +690,17 @@ function! s:populate_extra_markdown_vars()
let mkd_syntax.rxWeblink1Prefix = '['
let mkd_syntax.rxWeblink1Suffix = ')'
let mkd_syntax.rxWeblink1Separator = ']('
+ let mkd_syntax.rxWeblink1Ext = ''
+ if vimwiki#vars#get_global('markdown_link_ext')
+ let mkd_syntax.rxWeblink1Ext = vimwiki#vars#get_wikilocal('ext')
+ endif
" [DESCRIPTION](URL)
let mkd_syntax.Weblink1Template = mkd_syntax.rxWeblink1Prefix . '__LinkDescription__'.
- \ mkd_syntax.rxWeblink1Separator. '__LinkUrl__'.
+ \ mkd_syntax.rxWeblink1Separator. '__LinkUrl__'. mkd_syntax.rxWeblink1Ext.
\ mkd_syntax.rxWeblink1Suffix
+ " [DESCRIPTION](ANCHOR)
+ let mkd_syntax.Weblink2Template = mkd_syntax.rxWeblink1Prefix . '__LinkDescription__'.
+ \ mkd_syntax.rxWeblink1Separator. '__LinkUrl__'. mkd_syntax.rxWeblink1Suffix
let valid_chars = '[^\\]'
@@ -705,8 +713,8 @@ function! s:populate_extra_markdown_vars()
" 1. [DESCRIPTION](URL)
" 1a) match [DESCRIPTION](URL)
let mkd_syntax.rxWeblink1 = mkd_syntax.rxWeblink1Prefix.
- \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1Separator.
- \ mkd_syntax.rxWeblink1Descr . mkd_syntax.rxWeblink1Suffix
+ \ mkd_syntax.rxWeblink1Descr . mkd_syntax.rxWeblink1Separator.
+ \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1Suffix
" 1b) match URL within [DESCRIPTION](URL)
let mkd_syntax.rxWeblink1MatchUrl = mkd_syntax.rxWeblink1Prefix.
\ mkd_syntax.rxWeblink1Descr. mkd_syntax.rxWeblink1Separator.
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -2554,6 +2554,19 @@ Default: 1
------------------------------------------------------------------------------
+*g:vimwiki_markdown_link_ext*
+
+Append wiki file extension to links in Markdown. This is needed for
+compatibility with other Markdown tools.
+
+Value Description~
+0 Do not append wiki file extension.
+1 Append wiki file extension.
+
+Default: 0
+
+
+------------------------------------------------------------------------------
*VimwikiLinkHandler*
A customizable link handler can be defined to override Vimwiki's behavior when