Make normalized links in diary pages use relative path.
A previous PR added this feature to the default syntax. This add the same functionality to markdown syntax. Fixes #729
This commit is contained in:
parent
b997e687c3
commit
c58268df3f
@ -386,7 +386,7 @@ function! vimwiki#base#generate_links(create)
|
|||||||
let bullet = repeat(' ', vimwiki#lst#get_list_margin()) . vimwiki#lst#default_symbol().' '
|
let bullet = repeat(' ', vimwiki#lst#get_list_margin()) . vimwiki#lst#default_symbol().' '
|
||||||
for link in links
|
for link in links
|
||||||
let link_infos = vimwiki#base#resolve_link(link)
|
let link_infos = vimwiki#base#resolve_link(link)
|
||||||
if !s:is_diary_file(link_infos.filename)
|
if !vimwiki#base#is_diary_file(link_infos.filename)
|
||||||
if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
|
if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
|
||||||
let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template')
|
let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template')
|
||||||
else
|
else
|
||||||
@ -2080,7 +2080,7 @@ function! s:clean_url(url)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:is_diary_file(filename)
|
function! vimwiki#base#is_diary_file(filename)
|
||||||
let file_path = vimwiki#path#path_norm(a:filename)
|
let file_path = vimwiki#path#path_norm(a:filename)
|
||||||
let rel_path = vimwiki#vars#get_wikilocal('diary_rel_path')
|
let rel_path = vimwiki#vars#get_wikilocal('diary_rel_path')
|
||||||
let diary_path = vimwiki#path#path_norm(vimwiki#vars#get_wikilocal('path') . rel_path)
|
let diary_path = vimwiki#path#path_norm(vimwiki#vars#get_wikilocal('path') . rel_path)
|
||||||
@ -2107,26 +2107,31 @@ function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, t
|
|||||||
return lnk
|
return lnk
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! vimwiki#base#normalize_link_in_diary(lnk)
|
||||||
function! s:normalize_link_in_diary(lnk)
|
let sc = vimwiki#vars#get_wikilocal('links_space_char')
|
||||||
let link = a:lnk . vimwiki#vars#get_wikilocal('ext')
|
let link = a:lnk . vimwiki#vars#get_wikilocal('ext')
|
||||||
let link_wiki = vimwiki#vars#get_wikilocal('path') . '/' . link
|
let link_wiki = substitute(vimwiki#vars#get_wikilocal('path') . '/' . link, '\s', sc, 'g')
|
||||||
let link_diary = vimwiki#vars#get_wikilocal('path') . '/'
|
let link_diary = substitute(vimwiki#vars#get_wikilocal('path') . '/'
|
||||||
\ . vimwiki#vars#get_wikilocal('diary_rel_path') . '/' . link
|
\ . vimwiki#vars#get_wikilocal('diary_rel_path') . '/' . link, '\s', sc, 'g')
|
||||||
let link_exists_in_diary = filereadable(link_diary)
|
let link_exists_in_diary = filereadable(link_diary)
|
||||||
let link_exists_in_wiki = filereadable(link_wiki)
|
let link_exists_in_wiki = filereadable(link_wiki)
|
||||||
let link_is_date = a:lnk =~# '\d\d\d\d-\d\d-\d\d'
|
let link_is_date = a:lnk =~# '\d\d\d\d-\d\d-\d\d'
|
||||||
|
|
||||||
if link_exists_in_diary || link_is_date
|
if link_is_date
|
||||||
|
let str = a:lnk
|
||||||
|
let rxUrl = vimwiki#vars#get_global('rxWord')
|
||||||
|
let rxDesc = '\d\d\d\d-\d\d-\d\d'
|
||||||
|
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
||||||
|
elseif link_exists_in_diary
|
||||||
let str = a:lnk
|
let str = a:lnk
|
||||||
let rxUrl = vimwiki#vars#get_global('rxWord')
|
let rxUrl = vimwiki#vars#get_global('rxWord')
|
||||||
let rxDesc = ''
|
let rxDesc = ''
|
||||||
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
||||||
elseif link_exists_in_wiki
|
elseif link_exists_in_wiki
|
||||||
let depth = len(split(vimwiki#vars#get_wikilocal('diary_rel_path'), '/'))
|
let depth = len(split(vimwiki#vars#get_wikilocal('diary_rel_path'), '/'))
|
||||||
let str = repeat('../', depth) . a:lnk . '|' . a:lnk
|
let str = repeat('../', depth) . a:lnk
|
||||||
let rxUrl = '^.*\ze|'
|
let rxUrl = '.*'
|
||||||
let rxDesc = '|\zs.*$'
|
let rxDesc = '[^/]*$'
|
||||||
let template = vimwiki#vars#get_global('WikiLinkTemplate2')
|
let template = vimwiki#vars#get_global('WikiLinkTemplate2')
|
||||||
else
|
else
|
||||||
let str = a:lnk
|
let str = a:lnk
|
||||||
@ -2135,6 +2140,10 @@ function! s:normalize_link_in_diary(lnk)
|
|||||||
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
let template = vimwiki#vars#get_global('WikiLinkTemplate1')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if vimwiki#vars#get_wikilocal('syntax') ==? 'markdown'
|
||||||
|
let template = vimwiki#vars#get_syntaxlocal('Weblink1Template')
|
||||||
|
endif
|
||||||
|
|
||||||
return vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template)
|
return vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -2173,8 +2182,8 @@ function! s:normalize_link_syntax_n()
|
|||||||
" normalize_link_syntax_v
|
" normalize_link_syntax_v
|
||||||
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord'))
|
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord'))
|
||||||
if !empty(lnk)
|
if !empty(lnk)
|
||||||
if s:is_diary_file(expand("%:p"))
|
if vimwiki#base#is_diary_file(expand("%:p"))
|
||||||
let sub = s:normalize_link_in_diary(lnk)
|
let sub = vimwiki#base#normalize_link_in_diary(lnk)
|
||||||
else
|
else
|
||||||
let sub = s:safesubstitute(
|
let sub = s:safesubstitute(
|
||||||
\ vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', lnk, '')
|
\ vimwiki#vars#get_global('WikiLinkTemplate1'), '__LinkUrl__', lnk, '')
|
||||||
@ -2197,8 +2206,8 @@ function! s:normalize_link_syntax_v()
|
|||||||
normal! gv""y
|
normal! gv""y
|
||||||
|
|
||||||
" Set substitution
|
" Set substitution
|
||||||
if s:is_diary_file(expand("%:p"))
|
if vimwiki#base#is_diary_file(expand("%:p"))
|
||||||
let sub = s:normalize_link_in_diary(@")
|
let sub = vimwiki#base#normalize_link_in_diary(@")
|
||||||
else
|
else
|
||||||
let sub = s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
|
let sub = s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'),
|
||||||
\ '__LinkUrl__', @", '')
|
\ '__LinkUrl__', @", '')
|
||||||
|
@ -97,9 +97,13 @@ function! s:normalize_link_syntax_n()
|
|||||||
" normalize_link_syntax_v
|
" normalize_link_syntax_v
|
||||||
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord'))
|
let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord'))
|
||||||
if !empty(lnk)
|
if !empty(lnk)
|
||||||
|
if vimwiki#base#is_diary_file(expand("%:p"))
|
||||||
|
let sub = vimwiki#base#normalize_link_in_diary(lnk)
|
||||||
|
else
|
||||||
let sub = vimwiki#base#normalize_link_helper(lnk,
|
let sub = vimwiki#base#normalize_link_helper(lnk,
|
||||||
\ vimwiki#vars#get_global('rxWord'), '',
|
\ vimwiki#vars#get_global('rxWord'), '',
|
||||||
\ vimwiki#vars#get_syntaxlocal('Weblink1Template'))
|
\ vimwiki#vars#get_syntaxlocal('Weblink1Template'))
|
||||||
|
endif
|
||||||
call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub)
|
call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@ -118,8 +122,13 @@ function! s:normalize_link_syntax_v()
|
|||||||
try
|
try
|
||||||
norm! gvy
|
norm! gvy
|
||||||
let visual_selection = @"
|
let visual_selection = @"
|
||||||
|
|
||||||
|
if vimwiki#base#is_diary_file(expand('%:p'))
|
||||||
|
let link = vimwiki#base#normalize_link_in_diary(visual_selection)
|
||||||
|
else
|
||||||
let link = s:safesubstitute(vimwiki#vars#get_syntaxlocal('Weblink1Template'),
|
let link = s:safesubstitute(vimwiki#vars#get_syntaxlocal('Weblink1Template'),
|
||||||
\ '__LinkUrl__', visual_selection, '')
|
\ '__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')
|
let link = substitute(link, '\s', vimwiki#vars#get_wikilocal('links_space_char'), 'g')
|
||||||
|
Loading…
Reference in New Issue
Block a user