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