emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nick Dokos <ndokos@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: custom link export and ox-md
Date: Mon, 24 Feb 2014 14:37:33 -0500	[thread overview]
Message-ID: <8761o4714y.fsf@alphaville.bos.redhat.com> (raw)
In-Reply-To: 87ob1xgl5e.fsf@gmail.com

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 <ndokos@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

  reply	other threads:[~2014-02-24 19:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-24  2:12 custom link export and ox-md John Peloquin
2014-02-24  5:00 ` Nick Dokos
2014-02-24 19:37   ` Nick Dokos [this message]
2014-02-25 17:20     ` Nicolas Goaziou
2014-03-21  8:15       ` Bastien

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8761o4714y.fsf@alphaville.bos.redhat.com \
    --to=ndokos@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).