I'd like the ability to use a shortcut, but declare an explicit link text rather than using the link text defined on shortcuts. For example, if I create a shortcut protogit pointing to files in the xcb/proto.git gitweb repository, I don't always want to use the path to the file as the link text; I would like to src/xcb.xsd, but use the link text "XML Schema for the X Window System protocol". --JoshTriplett

If I understand you correctly, you can use Markdown [your link text](the path or URL) . Using your example: XML Schema for the X Window System protocol

If I don't understand this, can you give an HTML example? --JeremyReed

The problem is like that in shortcuts don't escape from Markdown. We would like to use the shortcuts plugin but add a descriptive text -- in this case [[!xcbgit src/xcb.xsd|XML Schema...]] The file src/xcb.xsd could be any url, and the point of shortcuts is that you get to shorten it. --Ethan

Some clarifications: You can always write something like [XML Schema for the X Window System Protocol](http://gitweb.freedesktop.org/?p=xcb/proto.git;a=blob;hb=HEAD;f=src/xcb.xsd) to get XML Schema for the X Window System Protocol. However, I want to define a shortcut to save the typing. If I define something like protogit pointing to http://gitweb.freedesktop.org/?p=xcb/proto.git;a=blob;hb=HEAD;f=%s, then I can write [[!protogit src/xcb.xsd]]; however, I then can't change the link text to anything other than what the shortcut defines as the link text. I want to write something like [[XML Schema for the X Window System Protocol|protogit src/xcb.xsd]], just as I would write a wikilink like [[the_shortcuts_on_this_wiki|shortcuts]] to get the shortcuts on this wiki. (The order you suggest, with the preprocessor directive first, seems quite confusing since wikilinks work the other way around.) --JoshTriplett

How about [xcbgit XML_Schema|src/xcb.xsd]. That's the same way round as a wikilink, if you look at it the right way. The syntax Josh suggests is not currently possible in ikiwiki.

However.. Short wikilinks has some similar objectives in a way, and over there a similar syntax to what Josh proposes was suggested. So maybe I should modify how ikiwiki preprocessors work to make it doable. Although, I seem to have come up with a clear alternative syntax over there. --Joey

One possible alternative, would be a general [[!url ]] scheme for all kinds of links. As mentioned in Short wikilinks, I have wanted a way to enter links to the wiki with markdown-style references, specifying the actual target elsewhere from the text, with just a short reference in the text. To facilitate automatic conversion from earlier (already markdownised) "blog", I finally ended up writing a custom plugin that simply gets the location of wikipage, and use markdown mechanisms:

Here [is][1] a link.

  [1]: [[!l  a_page_in_the_wiki]]

Obviously [this]([[!l  another_page]]) also works, although the syntax is quite cumbersome.

So that the 'l' plugin inserts the location the page there, and markdown does the rest. My plugin currently fails if it can't find the page, as that is sufficient for my needs. Differing colouring for non-existing pages is not doable in a straightforward manner with this approach.

For external links, that is no concern, however. So you could define for each shortcut an alternative directive, that inserts the URL. Perhaps [[!url shortcutname params]] or [[@shortcutname params]] (if the preprocessor supported the @), and this could be extended to local links in an obvious manner: [[!url page]] or [[@page]]. Now, if you could just get rid off the parantheses for markdown, for the short inline links --?tuomov (who'd really rather not have two separate linking mechanisms: ikiwiki's heavy syntax and markdown's lighter one).

I've added code to make the [[!foo 123]] syntax accept a desc parameter. I've named it like this to signal that it overrides the desc provided at description time. %s is expanded here as well.

done -- Adeodato Simó