[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] custom link export and ox-md

From: Nicolas Goaziou
Subject: Re: [O] custom link export and ox-md
Date: Tue, 25 Feb 2014 18:20:17 +0100


Nick Dokos <address@hidden> writes:

> can you take a look at this patch?

Thank you for the patch. Here we go.

> If it looks OK, I can push it to maint.

Why maint? It isn't a bugfix.

> commit f820173bf514549134e8ba10bbbba1e539cb89f6
> Author: Nick Dokos <address@hidden>
> 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)))

I'd rather not bind RAW-PATH here, as only half the branches in the
`cond' are using it. Also, I think it is clearer to mostly do bindings
close to the areas where they are needed.

> -        (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)))

See above.

> -        (let ((ref (org-element-property :path link)))
> +        (let ((ref raw-path))

If you want to go further, you could even remove REF, but, see above.

> -       (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))
> +

This raises an interesting question. What do we do with derived
back-ends? E.g., what should happen if TYPE is handled in
`org-link-protocols' for `html' but not `md'?

Also the blank line is not needed.


Nicolas Goaziou

reply via email to

[Prev in Thread] Current Thread [Next in Thread]