Here is a globally defined version that would let you define a function for
any other kind of link I think. There are probably many variations on this
theme, like storing functions in some variable as an alist, etc. Something
like that is what would happen if this was defined in the link parameters.

#+BEGIN_SRC emacs-lisp
(defun my-comp (&optional arg)
  (format "fruit:%s"
          (completing-read "Choose a fruit: " '("apple" "orange" "grapes"

(org-link-set-parameters "fruit"
                         :complete 'my-comp)

(defun org-fruit-make-link-description (link desc)
  (replace-regexp-in-string "fruit:" "" link))

(setq org-make-link-description-function
      (lambda (link desc)
(let* ((link-type (car (s-split ":" link)))
       (make-func (intern (format "org-%s-make-link-description"
  (if (fboundp make-func)
      (funcall make-func link desc)


Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213

On Fri, Apr 13, 2018 at 10:23 AM, Eric Abrahamsen <>

> John Kitchin <> writes:
> > Not with the way I wrote it. It should only affect your links and pass
> everything else through I
> > think.
> I just meant, you can only have one of these functions set. So if I
> provide special behavior for ebdb links, no other function would be able
> to do the equivalent for some other type of link.

Reply via email to