[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Adding text properties to all Org mode links
From: |
Suvayu Ali |
Subject: |
Re: [O] Adding text properties to all Org mode links |
Date: |
Tue, 10 Sep 2013 01:15:42 +0200 |
User-agent: |
Mutt/1.5.21 (2012-12-30) |
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 <address@hidden> 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.
- Re: [O] Adding text properties to all Org mode links,
Suvayu Ali <=