vimwiki

Personal wiki for vim
git clone https://github.com/vimwiki/vimwiki.git
Log | Files | Refs | README | LICENSE

commit e1826702b7c1c538ce5b3993c9f3aea60df5dcc6
parent 865b402c062c7a2eab3f60d33cb46a34dbed95b3
Author: Tinmarino <tinmarino@gmail.com>
Date:   Tue, 16 Jun 2020 17:47:40 -0400

Fix: Link substitution of __FileExtension__ #914

Diffstat:
Mautoload/vimwiki/base.vim | 16++++++++++++++--
Mautoload/vimwiki/markdown_base.vim | 23+++++++++++++----------
Mautoload/vimwiki/vars.vim | 10++++++----
3 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim @@ -2189,7 +2189,7 @@ endfunction " Construct a regular expression matching from template (with special " characters properly escaped), by substituting rxUrl for __LinkUrl__, rxDesc " for __LinkDescription__, rxStyle for __LinkStyle__ and rxExtension for -" __FileExtention__. The four arguments rxUrl, rxDesc, rxStyle and +" __FileExtension__. The four arguments rxUrl, rxDesc, rxStyle and " rxExtension are copied verbatim, without any special character escapes or " substitutions. function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle, rxExtension) abort @@ -2204,7 +2204,7 @@ function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle, rxExtens let lnk = s:safesubstitute(lnk, '__LinkStyle__', a:rxStyle, 'g') endif if a:rxExtension !=? '' - let lnk = s:safesubstitute(lnk, '__FileExtention__', a:rxExtension, 'g') + let lnk = s:safesubstitute(lnk, '__FileExtension__', a:rxExtension, 'g') endif return lnk endfunction @@ -2254,6 +2254,7 @@ endfunction " Treat link string towards normalization +" [__LinkDescription__](__LinkUrl__.FileExtension) function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) abort let url = matchstr(a:str, a:rxUrl) if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' && vimwiki#vars#get_global('markdown_link_ext') @@ -2266,8 +2267,11 @@ function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) abort let descr = s:clean_url(url) if descr ==# '' | return url | endif endif + " Substiture placeholders let lnk = s:safesubstitute(a:template, '__LinkDescription__', descr, '') let lnk = s:safesubstitute(lnk, '__LinkUrl__', url, '') + let file_extension = vimwiki#vars#get_wikilocal('ext', vimwiki#vars#get_bufferlocal('wiki_nr')) + let lnk = s:safesubstitute(lnk, '__FileExtension__', file_extension , '') return lnk endfunction @@ -2358,12 +2362,16 @@ function! s:normalize_link_syntax_n() abort let sub = s:safesubstitute( \ vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', lnk, '') endif + " Replace file extension + let file_extension = vimwiki#vars#get_wikilocal('ext', vimwiki#vars#get_bufferlocal('wiki_nr')) + let sub = s:safesubstitute(sub, '__FileExtension__', file_extension , '') call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub) return endif endfunction +" TODO mutualize most code with syntax_n " Normalize link in visual mode Enter keypress function! s:normalize_link_syntax_v() abort let sel_save = &selection @@ -2376,12 +2384,16 @@ function! s:normalize_link_syntax_v() abort normal! gv""y " Set substitution + " Replace Url if vimwiki#base#is_diary_file(expand('%:p')) let sub = vimwiki#base#normalize_link_in_diary(@") else let sub = s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'), \ '__LinkUrl__', @", '') endif + " Replace file extension + let file_extension = vimwiki#vars#get_wikilocal('ext', vimwiki#vars#get_bufferlocal('wiki_nr')) + let sub = s:safesubstitute(sub, '__FileExtension__', file_extension , '') " Put substitution in register " and change text let sc = vimwiki#vars#get_wikilocal('links_space_char') diff --git a/autoload/vimwiki/markdown_base.vim b/autoload/vimwiki/markdown_base.vim @@ -130,10 +130,16 @@ function! s:normalize_link_syntax_v() abort \ '__LinkUrl__', visual_selection, '') endif - " replace spaces with new character if option is set + " Replace spaces with new character if option is set let link = substitute(link, '\s', vimwiki#vars#get_wikilocal('links_space_char'), 'g') + " Replace description let link = s:safesubstitute(link, '__LinkDescription__', visual_selection, '') + + " Replace file extension + let file_extension = vimwiki#vars#get_wikilocal('ext', vimwiki#vars#get_bufferlocal('wiki_nr')) + let link = s:safesubstitute(link, '__FileExtension__', file_extension , '') + call setreg('"', substitute(link, '\n', '', ''), visualmode()) " paste result @@ -148,15 +154,12 @@ endfunction function! vimwiki#markdown_base#normalize_link(is_visual_mode) abort - if 0 - " Syntax-specific links - else - if !a:is_visual_mode - call s:normalize_link_syntax_n() - elseif line("'<") == line("'>") - " action undefined for multi-line visual mode selections - call s:normalize_link_syntax_v() - endif + + if !a:is_visual_mode + call s:normalize_link_syntax_n() + elseif line("'<") == line("'>") + " action undefined for multi-line visual mode selections + call s:normalize_link_syntax_v() endif endfunction diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim @@ -874,10 +874,12 @@ function! s:populate_extra_markdown_vars() abort let mkd_syntax.rxWeblink1Suffix = ')' let mkd_syntax.rxWeblink1EscapeCharsSuffix = '\(\\\)\@<!\()\)' let mkd_syntax.rxWeblink1Separator = '](' + let rxWeblink1Ext = '' if vimwiki#vars#get_global('markdown_link_ext') - let rxWeblink1Ext = '__FileExtention__' + let rxWeblink1Ext = '__FileExtension__' endif + " [DESCRIPTION](URL) let mkd_syntax.Weblink1Template = mkd_syntax.rxWeblink1Prefix . '__LinkDescription__'. \ mkd_syntax.rxWeblink1Separator. '__LinkUrl__'. rxWeblink1Ext. @@ -902,18 +904,18 @@ function! s:populate_extra_markdown_vars() abort \ mkd_syntax.rx_wikilink_md_prefix . \ '.*' . \ rx_wikilink_md_separator . - \ '\zs__LinkUrl__\ze\%(#.*\)\?\%(__FileExtention__\)\?'. + \ '\zs__LinkUrl__\ze\%(#.*\)\?\%(__FileExtension__\)\?'. \ mkd_syntax.rx_wikilink_md_suffix . \ '\|' . \ mkd_syntax.rx_wikilink_md_prefix . - \ '\zs__LinkUrl__\ze\%(#.*\)\?\%(__FileExtention__\)\?'. + \ '\zs__LinkUrl__\ze\%(#.*\)\?\%(__FileExtension__\)\?'. \ rx_wikilink_md_separator . \ mkd_syntax.rx_wikilink_md_suffix . \ '\|' . \ mkd_syntax.rxWeblink1Prefix. \ '.*' . \ mkd_syntax.rxWeblink1Separator. - \ '\zs__LinkUrl__\ze\%(#.*\)\?\%(__FileExtention__\)\?'. + \ '\zs__LinkUrl__\ze\%(#.*\)\?\%(__FileExtension__\)\?'. \ mkd_syntax.rxWeblink1EscapeCharsSuffix " 1. [DESCRIPTION](URL)