commit 41b40374f9682b02a3b1c8faced48bf2beeee15d
parent 77607f635ab30822336a82c0e3293b7302173612
Author: EinfachToll <istjanichtzufassen@googlemail.com>
Date: Thu, 30 Apr 2015 13:50:58 +0200
Finish doc for absolute/relative link stuff
Diffstat:
1 file changed, 40 insertions(+), 12 deletions(-)
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -1121,8 +1121,9 @@ number of special schemes are supported: "wikiX:", "diary:", "file:", "local:"
and schemeless.
While "wikiX", "diary" and schemeless links are automatically opened in Vim,
-all other links are opened with the system command. To customize this
-behavior, see |VimwikiLinkHandler|.
+all other links are opened with the system command, i.e. !xdg-open (Linux),
+!open (Mac), or !start (Windows). To customize this behavior, see
+|VimwikiLinkHandler|.
Interwiki:~
@@ -2219,17 +2220,17 @@ Default: 1
------------------------------------------------------------------------------
*VimwikiLinkHandler*
-A customizable link handler, |VimwikiLinkHandler|, can be defined to override
-Vimwiki's opening of links. Each recognized link, whether it is a wikilink,
-wiki-include link or a weblink, is first passed to |VimwikiLinkHandler| to see
-if it can be handled. The return value 1/0 indicates success.
+A customizable link handler can be defined to override Vimwiki's opening of
+links. Each recognized link, whether it is a wikilink, wiki-include link or a
+weblink, is first passed to |VimwikiLinkHandler| to see if it can be handled.
+The return value 1 indicates success.
If the link is not handled successfully, the behavior of Vimwiki depends on
the scheme. "wiki:", "diary:" or schemeless links are opened in Vim. "file:"
-and "local:" links are opened with a system default handler; i.e. Linux
-(!xdg-open), Mac (!open), and Windows (!start).
+and "local:" links are opened with a system default handler.
-You can redefine |VimwikiLinkHandler| function to do something else: >
+You can redefine the VimwikiLinkHandler function in your .vimrc to do
+something else: >
function! VimwikiLinkHandler(link)
try
@@ -2242,15 +2243,15 @@ You can redefine |VimwikiLinkHandler| function to do something else: >
return 0
endfunction
-A second example handles a new scheme, 'vfile:', which behaves similar to
-'file:', but the files are always opened with Vim: >
+A second example handles a new scheme, "vfile:", which behaves similar to
+"file:", but the files are always opened with Vim: >
function! VimwikiLinkHandler(link)
" Use Vim to open external files with the 'vfile:' scheme. E.g.:
" 1) [[vfile:~/Code/PythonProject/abc123.py]]
" 2) [[vfile:./|Wiki Home]]
let link = a:link
- if link =~ "vfile:"
+ if link =~# '^vfile:'
let link = link[1:]
else
return 0
@@ -2268,6 +2269,30 @@ A second example handles a new scheme, 'vfile:', which behaves similar to
------------------------------------------------------------------------------
*VimwikiLinkConverter*
+This function can be overridden in your .vimrc to specify what a link looks
+like when converted to HTML. It should return the HTML link if successful or
+an empty string '' otherwise.
+
+This example changes how relative links to external files using the "local:"
+scheme look like in HTML. Per default, they would become links relative to
+the HTML output directory. This function converts them to links relative to
+the wiki file, i.e. a link [[local:../document.pdf]] becomes
+<a href="../document.pdf">. Also, this function will copy document.pdf to the
+right place. >
+
+ fu! VimwikiLinkConverter(link, source_wiki_file, target_html_file)
+ if a:link =~# '^local:'
+ let link_infos = vimwiki#base#resolve_link(a:link)
+ let html_link = vimwiki#path#relpath(
+ \ fnamemodify(a:source_wiki_file, ':h'), link_infos.filename)
+ let relative_link =
+ \ fnamemodify(a:target_html_file, ':h') . '/' . html_link
+ call system('cp ' . fnameescape(link_infos.filename) .
+ \ ' ' . fnameescape(relative_link))
+ return html_link
+ endif
+ return ''
+ endfu
------------------------------------------------------------------------------
*VimwikiWikiIncludeHandler*
@@ -2617,6 +2642,9 @@ Vim plugins: http://www.vim.org/scripts/script.php?script_id=2226
???~
+ * Support for wiki links absolute to the wiki root
+ * The "file:" and "local:" schemes semantic changed slightly
+ * Added the |VimwikiLinkConverter| function
* Support for |g:vimwiki_auto_chdir| option.
* Support for anchors, see |vimwiki-anchors|
* in this context, add support for TOC, see |vimwiki-toc|