From 68233c51ebfb7739222e284081feda8084e6a71d Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Thu, 23 May 2019 21:23:53 -0600 Subject: [PATCH] Handle markdown image links '![]()'. --- autoload/vimwiki/base.vim | 14 ++++++++++++++ autoload/vimwiki/vars.vim | 13 +++++++++---- doc/vimwiki.txt | 4 +--- syntax/vimwiki_markdown_custom.vim | 9 +++++++++ 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 8a5200e..d3ee9da 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -1272,6 +1272,20 @@ function! vimwiki#base#follow_link(split, ...) \ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl')) endif + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' + " markdown image ![]() + if lnk ==# '' + let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxImage')), + \ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl')) + if lnk !=# '' + if lnk !~# '\%(\%('.vimwiki#vars#get_global('web_schemes1').'\):\%(\/\/\)\?\)\S\{-1,}' + " prepend file: scheme so link is opened by sytem handler if it isn't a web url + let lnk = 'file:'.lnk + endif + endif + endif + endif + if lnk != "" " cursor is indeed on a link let processed_by_user_defined_handler = VimwikiLinkHandler(lnk) if processed_by_user_defined_handler diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index 26e516c..cbe47ea 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -827,13 +827,17 @@ function! s:populate_extra_markdown_vars() \ '\zs'.mkd_syntax.rxWeblink1Descr.'\ze'. mkd_syntax.rxWeblink1Separator. \ mkd_syntax.rxWeblink1Url. mkd_syntax.rxWeblink1EscapeCharsSuffix - " TODO: image links too !! + " image ![DESCRIPTION](URL) + let mkd_syntax.rxImage = '!' . mkd_syntax.rxWeblink1Prefix. + \ mkd_syntax.rxWeblink1Descr . mkd_syntax.rxWeblink1Separator. + \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1EscapeCharsSuffix + let mkd_syntax.rxWeblink1Prefix1 = mkd_syntax.rxWeblink1Prefix let mkd_syntax.rxWeblink1Suffix1 = mkd_syntax.rxWeblink1Separator. \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1EscapeCharsSuffix - " *a) match ANY weblink - let mkd_syntax.rxWeblink = ''. + " *a) match ANY weblink (exclude image links starting with !) + let mkd_syntax.rxWeblink = '\(!\)\@ Image link: > ![Looks like this](URL) -The URL can be anything recognized by Vimwiki as a raw URL. - - Reference-style links: > a) [Link Name][Id] b) [Id][], using the "implicit link name" shortcut @@ -3520,6 +3517,7 @@ Removed:~ point. Fixed:~ + * Properly handle markdown image links `![]()` * Issue #415: Expand iabbrev entries on . * Issue #619: allow escaped characters in markdown links. * Issue #240: Fix regex pattern for markdown '[]()' links diff --git a/syntax/vimwiki_markdown_custom.vim b/syntax/vimwiki_markdown_custom.vim index 46f3ce1..3fa2450 100644 --- a/syntax/vimwiki_markdown_custom.vim +++ b/syntax/vimwiki_markdown_custom.vim @@ -99,6 +99,7 @@ endif " Weblink call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWeblink1'), 'VimwikiWeblink1') +call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxImage'), 'VimwikiImage') " WikiLink @@ -157,6 +158,12 @@ execute 'syn match VimwikiWeblink1Char "'. \ vimwiki#vars#get_syntaxlocal('rxWeblink1Prefix1').'"'.s:options execute 'syn match VimwikiWeblink1Char "'. \ vimwiki#vars#get_syntaxlocal('rxWeblink1Suffix1').'"'.s:options +"image +execute 'syn match VimwikiImageChar "!"'.s:options +execute 'syn match VimwikiImageChar "'. + \ vimwiki#vars#get_syntaxlocal('rxWeblink1Prefix1').'"'.s:options +execute 'syn match VimwikiImageChar "'. + \ vimwiki#vars#get_syntaxlocal('rxWeblink1Suffix1').'"'.s:options if exists("+conceallevel") syntax conceal off @@ -186,6 +193,8 @@ syntax match VimwikiTableRow /^\s*|.\+|\s*$/ " syntax group highlighting +hi def link VimwikiImage VimwikiLink +hi def link VimwikiImageT VimwikiLink hi def link VimwikiWeblink1 VimwikiLink hi def link VimwikiWeblink1T VimwikiLink