" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79 " Vimwiki autoload plugin file " Desc: Link functions for markdown syntax " Author: Maxim Kim " Home: http://code.google.com/p/vimwiki/ function! s:normalize_link_syntax_n() " {{{ let lnum = line('.') " try WikiIncl let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiIncl) if !empty(lnk) " NO-OP !! if g:vimwiki_debug > 1 echomsg "WikiIncl: ".lnk." Sub: ".lnk endif return endif " try WikiLink0: replace with WikiLink1 let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiLink0) if !empty(lnk) let sub = vimwiki#base#normalize_link_helper(lnk, \ g:vimwiki_rxWikiLinkMatchUrl, g:vimwiki_rxWikiLinkMatchDescr, \ g:vimwiki_WikiLink1Template2) call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWikiLink0, sub) if g:vimwiki_debug > 1 echomsg "WikiLink: ".lnk." Sub: ".sub endif return endif " try WikiLink1: replace with WikiLink0 let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWikiLink1) if !empty(lnk) let sub = vimwiki#base#normalize_link_helper(lnk, \ g:vimwiki_rxWikiLinkMatchUrl, g:vimwiki_rxWikiLinkMatchDescr, \ g:vimwiki_WikiLinkTemplate2) call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWikiLink1, sub) if g:vimwiki_debug > 1 echomsg "WikiLink: ".lnk." Sub: ".sub endif return endif " try Weblink let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWeblink) if !empty(lnk) let sub = vimwiki#base#normalize_link_helper(lnk, \ g:vimwiki_rxWeblinkMatchUrl, g:vimwiki_rxWeblinkMatchDescr, \ g:vimwiki_Weblink1Template) call vimwiki#base#replacestr_at_cursor(g:vimwiki_rxWeblink, sub) if g:vimwiki_debug > 1 echomsg "WebLink: ".lnk." Sub: ".sub endif return endif " try Word (any characters except separators) " rxWord is less permissive than rxWikiLinkUrl which is used in " normalize_link_syntax_v let lnk = vimwiki#base#matchstr_at_cursor(g:vimwiki_rxWord) if !empty(lnk) let sub = vimwiki#base#normalize_link_helper(lnk, \ g:vimwiki_rxWord, '', \ g:vimwiki_WikiLinkTemplate1) call vimwiki#base#replacestr_at_cursor('\V'.lnk, sub) if g:vimwiki_debug > 1 echomsg "Word: ".lnk." Sub: ".sub endif return endif endfunction " }}} function! s:normalize_link_syntax_v() " {{{ let lnum = line('.') let sel_save = &selection let &selection = "old" let rv = @" let rt = getregtype('"') let done = 0 try norm! gvy let visual_selection = @" let visual_selection = substitute(g:vimwiki_WikiLinkTemplate1, '__LinkUrl__', '\='."'".visual_selection."'", '') call setreg('"', visual_selection, 'v') " paste result norm! `>pgvd finally call setreg('"', rv, rt) let &selection = sel_save endtry endfunction " }}} " normalize_link function! vimwiki#markdown_base#normalize_link(is_visual_mode) "{{{ if !a:is_visual_mode call s:normalize_link_syntax_n() elseif visualmode() ==# 'v' && line("'<") == line("'>") " action undefined for 'line-wise' or 'multi-line' visual mode selections call s:normalize_link_syntax_v() endif endfunction "}}}