commit c05037a490d76e424e63d4c13a97b75da61770cf
parent cde47033540ae8251fd3e65421d7db1c3253d700
Author: Rane Brown <rane.brown@gmail.com>
Date: Wed, 8 May 2019 21:30:06 -0600
Allow escaped characters in markdown links.
Fixes #619
Diffstat:
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
@@ -117,8 +117,9 @@ function! vimwiki#base#resolve_link(link_text, ...)
let source_file = vimwiki#path#current_wiki_file()
endif
- let link_text = a:link_text
-
+ " get rid of '\' in escaped characters in []() style markdown links
+ " other style links don't allow '\'
+ let link_text = substitute(a:link_text, '\(\\\)\(\W\)\@=', '', 'g')
let link_infos = {
\ 'index': -1,
diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim
@@ -769,6 +769,7 @@ function! s:populate_extra_markdown_vars()
let mkd_syntax.rxWeblink1Prefix = '['
let mkd_syntax.rxWeblink1Suffix = ')'
+ let mkd_syntax.rxWeblink1EscapeCharsSuffix = '\(\\\)\@<!\()\)'
let mkd_syntax.rxWeblink1Separator = ']('
let mkd_syntax.rxWeblink1Ext = ''
if vimwiki#vars#get_global('markdown_link_ext')
@@ -787,11 +788,12 @@ function! s:populate_extra_markdown_vars()
\ '#__LinkAnchor__'. mkd_syntax.rxWeblink1Suffix
let valid_chars = '[^\\\]]'
+ " spaces and '\' must be allowed for filename and escaped chars
+ let valid_chars_url = '[^[:cntrl:]]'
let mkd_syntax.rxWeblink1Prefix = vimwiki#u#escape(mkd_syntax.rxWeblink1Prefix)
- let mkd_syntax.rxWeblink1Suffix = vimwiki#u#escape(mkd_syntax.rxWeblink1Suffix)
let mkd_syntax.rxWeblink1Separator = vimwiki#u#escape(mkd_syntax.rxWeblink1Separator)
- let mkd_syntax.rxWeblink1Url = valid_chars.'\{-}'
+ let mkd_syntax.rxWeblink1Url = valid_chars_url.'\{-}'
let mkd_syntax.rxWeblink1Descr = valid_chars.'\{-}'
let mkd_syntax.WikiLinkMatchUrlTemplate =
\ mkd_syntax.rx_wikilink_md_prefix .
@@ -809,26 +811,26 @@ function! s:populate_extra_markdown_vars()
\ '.*' .
\ mkd_syntax.rxWeblink1Separator.
\ '\zs__LinkUrl__\ze\%(#.*\)\?\%('.vimwiki#vars#get_wikilocal('ext').'\)\?'.
- \ mkd_syntax.rxWeblink1Suffix
+ \ mkd_syntax.rxWeblink1EscapeCharsSuffix
" 1. [DESCRIPTION](URL)
" 1a) match [DESCRIPTION](URL)
let mkd_syntax.rxWeblink1 = mkd_syntax.rxWeblink1Prefix.
\ mkd_syntax.rxWeblink1Descr . mkd_syntax.rxWeblink1Separator.
- \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1Suffix
+ \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1EscapeCharsSuffix
" 1b) match URL within [DESCRIPTION](URL)
let mkd_syntax.rxWeblink1MatchUrl = mkd_syntax.rxWeblink1Prefix.
\ mkd_syntax.rxWeblink1Descr. mkd_syntax.rxWeblink1Separator.
- \ '\zs' . mkd_syntax.rxWeblink1Url . '\ze' . mkd_syntax.rxWeblink1Suffix
+ \ '\zs' . mkd_syntax.rxWeblink1Url . '\ze' . mkd_syntax.rxWeblink1EscapeCharsSuffix
" 1c) match DESCRIPTION within [DESCRIPTION](URL)
let mkd_syntax.rxWeblink1MatchDescr = mkd_syntax.rxWeblink1Prefix.
\ '\zs'.mkd_syntax.rxWeblink1Descr.'\ze'. mkd_syntax.rxWeblink1Separator.
- \ mkd_syntax.rxWeblink1Url. mkd_syntax.rxWeblink1Suffix
+ \ mkd_syntax.rxWeblink1Url. mkd_syntax.rxWeblink1EscapeCharsSuffix
" TODO: image links too !!
let mkd_syntax.rxWeblink1Prefix1 = mkd_syntax.rxWeblink1Prefix
let mkd_syntax.rxWeblink1Suffix1 = mkd_syntax.rxWeblink1Separator.
- \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1Suffix
+ \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1EscapeCharsSuffix
" *a) match ANY weblink
let mkd_syntax.rxWeblink = ''.
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -3487,6 +3487,7 @@ Removed:~
point.
Fixed:~
+ * Issue #619: allow escaped characters in markdown links.
* Issue #240: Fix regex pattern for markdown '[]()' links
* Issue #685: Error message for invalid user options fixed.
* Issue #481: Allow surrounding URLs with '<' '>'