emacs-orgmode
[Top][All Lists]
Advanced

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]