Nicolas, can you take a look at this patch? If it looks OK, I can push it to maint.
--8<---------------cut here---------------start------------->8--- commit f820173bf514549134e8ba10bbbba1e539cb89f6 Author: Nick Dokos <ndo...@redhat.com> Date: Mon Feb 24 14:31:33 2014 -0500 Add handling of user-defined custom links to org-md-link * ox-md.el (org-md-link): Add code to handle user-defined custom links. Refactor raw-path calculation to simplify the code. Reported by John Peloquin (http://thread.gmane.org/gmane.emacs.orgmode/82627) diff --git a/lisp/ox-md.el b/lisp/ox-md.el index 39843d5..fbc5d6f 100644 --- a/lisp/ox-md.el +++ b/lisp/ox-md.el @@ -278,7 +278,8 @@ a communication channel." (if (string= ".org" (downcase (file-name-extension raw-path "."))) (concat (file-name-sans-extension raw-path) ".md") raw-path)))) - (type (org-element-property :type link))) + (type (org-element-property :type link)) + (raw-path (org-element-property :path link))) (cond ((member type '("custom-id" "id")) (let ((destination (org-export-resolve-id-link link info))) (if (stringp destination) ; External file. @@ -294,9 +295,8 @@ a communication channel." destination info) "."))))))) ((org-export-inline-image-p link org-html-inline-image-rules) - (let ((path (let ((raw-path (org-element-property :path link))) - (if (not (file-name-absolute-p raw-path)) raw-path - (expand-file-name raw-path)))) + (let ((path (if (not (file-name-absolute-p raw-path)) raw-path + (expand-file-name raw-path))) (caption (org-export-data (org-export-get-caption (org-export-get-parent-element link)) info))) @@ -304,7 +304,7 @@ a communication channel." (if (not (org-string-nw-p caption)) path (format "%s \"%s\"" path caption))))) ((string= type "coderef") - (let ((ref (org-element-property :path link))) + (let ((ref raw-path)) (format (org-export-get-coderef-format ref contents) (org-export-resolve-coderef ref info)))) ((equal type "radio") @@ -318,8 +318,11 @@ a communication channel." (when number (if (atom number) (number-to-string number) (mapconcat 'number-to-string number ".")))))))) - (t (let* ((raw-path (org-element-property :path link)) - (path + ;; Link type is handled by a special function. + ((functionp (setq protocol (nth 2 (assoc type org-link-protocols)))) + (funcall protocol raw-path contents 'md)) + + (t (let* ((path (cond ((member type '("http" "https" "ftp")) (concat type ":" raw-path)) --8<---------------cut here---------------end--------------->8--- Thanks, Nick