Hello, John Kitchin <jkitc...@andrew.cmu.edu> writes:
> Would it make sense to use a defstruct for the link? I thought about that. Unfortunately, defstructs are not customize friendly. If we are going to give direct access to `org-link-parameters', i.e., make it a defcustom, this is not an option. > 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? Org 9.0 minimal requirement is Emacs 24.3, so "cl-lib" is fine. > 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) This is not very different, but the value you are manipulating is slightly more opaque in the first case. > and I suppose it might be nice to have > > (org-link--get "type" :follow) instead. `org-link-get-parameter' and `org-link-set-parameter', or some such. We should make them public. > WDYT? As I said above, if `org-link-parameters' is a defcustom, we need to use a plist. This is, however, not mandatory. Indeed, we can also treat `org-link--parameters' as an internal variable and force users, and libraries, to manipulate these parameters only through a set of functions (e.g., `org-link-get-parameter', `org-link-set-parameter', `org-link-add-parameters' and `org-link-show-parameters'). Nevertheless, I tend to think the former is clearer for users, simply because plists are simpler to grasp than structs. OTOH, /you/ are customizing links and I'm not, so your opinion on the subject is probably more accurate. Regards, -- Nicolas Goaziou