>
> WDYT?
>
>> Presumably we would then eliminate the "org-%s-complete-link"
>> functions?
>
> Indeed.
>
> I think it is possible to proceed in four steps.
>
> 1. First, we create the variable, with appropriate getter, setter and
>    default values. At this point it is sufficient to
>    support :follow, :export and :completion properties only.

Would it make sense to use a defstruct for the link? Then we get getters
and setters automatically. We would still use an a-list of ("type"
org-link-struct). I see defstruct is an alias for cl-defstruct, does
that have Emacs version implications?

E.g.

#+BEGIN_SRC emacs-lisp
(defstruct org-link  follow export completion face display echo)
#+END_SRC

#+RESULTS:
: org-link

A getter:

#+BEGIN_SRC emacs-lisp
(let ((new-link (make-org-link :follow nil :face '(:background "red"))))
  (org-link-face new-link))
#+END_SRC

#+RESULTS:
| :background | red |

A setter:

#+BEGIN_SRC emacs-lisp
(let ((new-link (make-org-link :follow nil :face '(:background "red"))))
  (setf (org-link-face new-link) '(:background "blue"))
  (org-link-face new-link))
#+END_SRC

#+RESULTS:
| :background | blue |

To get the follow property on a link it would look like:

(org-link-follow (cdr (assoc "type" org-link-parameters)))

It isn't that different from this:

(plist-get (cdr (assoc "type" org-link-parameters)) :follow)

and I suppose it might be nice to have

(org-link--get "type" :follow) instead.

WDYT?


> 2. Then we get all the code base to extract information about links
>    through this variable instead of various existing ways, namely,
>    `org-%s-complete-link', `org-link-protocols' and `org-link-types'.
>
> 3. Then we extend it with new properties, i.e., :display, :echo
>    and :face.
>
> 4. Document the changes in the manual and ORG-NEWS file.
>
> You have mostly worked out the third part of the process. Do you want to
> take a stab at any of the other steps? Or do you prefer me to do some
> parts?
>
> Regards,


-- 
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu

Reply via email to