Hello again everyone, On Sun, Jul 14, 2013 at 08:41:25AM +0200, Suvayu Ali wrote: > On Sat, Jul 13, 2013 at 11:01:08PM -0400, Nick Dokos wrote: > > Suvayu Ali <fatkasuvayu+li...@gmail.com> writes: > > > > > > How do I add text properties to org elements? In my particular case, I > > > want to echo tooltips when I move my cursor over an org link (or other > > > org elements for that matter). To do this, I need to add the properties > > > point-left and point-entered to all org-links. How do I do that? > > > > > > Thanks for any ideas. > > > > Not sure if this is the best method: > > > > o go to (point-min) > > o loop > > (goto-char (cdr (org-element-link-successor (point-max)))) > > (org-element-link-parser) and extract :begin and :end values from > > the returned list > > > > Untested (mostly) - termination, error handling (and who knows what > > else) left to the interested reader... > > I was afraid of this. I think the safest way of not screwing up the > parsing and error handling would be to implement it as a patch to > org-activate-*-links in org.el.
I was taking a shot at this again. This is where I stand at the moment: - I want to add the properties `point-left' and `point-entered' to all links where the target is invisible (hidden), so for the moment I'm focusing on bracket links. - I tried to patch `org-activate-bracket-links' to this end; in the let* bind I extended the list of properties with like this: (let* ((hl (org-match-string-no-properties 1)) (help (concat "LINK: " (save-match-data (org-link-unescape hl)))) (ip (org-maybe-intangible (list 'invisible 'org-link 'keymap org-mouse-map 'mouse-face 'highlight 'font-lock-multiline t 'help-echo help 'point-left sa-echo-tooltip ; <-- my addition 'point-entered sa-echo-tooltip ; <-- my addition 'htmlize-link `(:uri ,hl)))) (vp (list 'keymap org-mouse-map 'mouse-face 'highlight 'font-lock-multiline t 'help-echo help 'point-left sa-echo-tooltip ; <-- my addition 'point-entered sa-echo-tooltip ; <-- my addition 'htmlize-link `(:uri ,hl)))) ;; rest of the code is unchanged ) With this "new" org-activate-bracket-links, when I open an Org file, I see some bad fontification (e.g. keywords are in default face) and the invisible parts of backet links are visible. As in: instead of showing this is a link (in org-link face) I see [[http://www.example.com/target][this is a link]] (the http part is in org-link face, the rest in default) I tried to run edebug-defun on org-activate-bracket-links before opening the org file, but that doesn't trigger the step by step execution of org-activate-bracket-links I was expecting. I tested with `get-text-property' interactively, my properties were not added to the links. So I'm wondering what am I doing wrong? Better yet, is there a better way to do this? Thanks for any help or ideas. Cheers, -- Suvayu Open source is the future. It sets us free.