Hello, Benjamin Andresen writes: > > I would like to change the public API of the :face part of > `org-link-set-parameters': > > (org-link-set-parameters "file" :face 'org-link) > > My ultimate goal is to have org-links be able to be have their face changed > based on the contents, not just the path of the link. > > I found the relevant code in org.el in the function `org-activate-links': > > 'face (pcase (org-link-get-parameter type :face) > ((and (pred functionp) face) (funcall face path)) > ((and (pred facep) face) face) > ((and (pred consp) face) face) ;anonymous > (_ 'org-link)) > > and would like to change this to > > 'face (pcase (org-link-get-parameter type :face) > ((and (pred functionp) face) (funcall face path contents)) ;; this is the > change > ((and (pred facep) face) face) > ((and (pred consp) face) face) ;anonymous > (_ 'org-link)) > > Now that will introduce a host of call issues because the callees don't > expect to the amount of arguments changed under their bottom. > > I would like some guidance how I could get what I think is neat: The > contents of the bracket-style links as an additional parameter to set > faces on and not breaking existing hookups.
Isn't the function called with point on the link? You may just need to extract the contents from the environment. Otherwise, a solution is to catch `wrong-number-of-arguments' error and call again the function with the old calling convention. See, e.g., `org-link-open'. > To make this more palatable I would suggest it's changed so that the > 2nd argument will be a list of alists or keywords so to not have this > function signature problem if someone else comes up with a reason to > introduce yet more data. Beware the over-engineering. At this point, someone motivated enough can put an advice to the link fontification function. Regards, -- Nicolas Goaziou