emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* org-follow-link-in-same-window
@ 2009-06-27  8:41 Nicolas Girard
  2009-06-27  9:38 ` org-follow-link-in-same-window Carsten Dominik
  0 siblings, 1 reply; 3+ messages in thread
From: Nicolas Girard @ 2009-06-27  8:41 UTC (permalink / raw)
  To: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 1637 bytes --]

Hi all,
when clicking on a link, I whish I could choose between
- following it in another window (the current behaviour, which I'm often
fine with, but not always);
- following it in the same window

I tried to create a new function, org-follow-link-in-same-window, and bind
it to a key.

As for the key binding, I couldn't get down-mouse-2 to work, as initially
expected. I tried the following bindings:

(add-hook 'org-load-hook
      '(lambda ()
         (define-key org-mouse-map [C-down-mouse-1]
'org-follow-link-in-same-window)
         (define-key org-mouse-map [down-mouse-2]
'org-follow-link-in-same-window)
         (define-key org-mouse-map [C-down-mouse-2]
'org-follow-link-in-same-window)
         (define-key org-mouse-map [s-down-mouse-1]
'org-follow-link-in-same-window)
         (define-key org-mouse-map [s-mouse-1]
'org-follow-link-in-same-window)))

I found none of them to work *but* the latest, [s-mouse-1].
(I'm not fond of incantations, so when emacs leaves me under the impression
that some kind of black magic is happening, I always feel a little upset.
Anyway, i'm digressing, and after all I'm fine with [s-mouse-1].)

Now, as for the function, I came to the following:

(defun org-follow-link-in-same-window (ev)
  (interactive "e")
  (let ((org-display-internal-link-with-indirect-buffer t))
    (save-excursion
      (set-buffer (window-buffer (posn-window (event-end ev))))
    (select-window (posn-window (event-end ev)))
    (org-open-at-mouse ev)))

which doesn't work. I mean, it does follow the link, but not in the same
window.

Could you please give me a hand on this ?

Thanks in advance,
Nicolas

[-- Attachment #1.2: Type: text/html, Size: 1846 bytes --]

[-- Attachment #2: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: org-follow-link-in-same-window
  2009-06-27  8:41 org-follow-link-in-same-window Nicolas Girard
@ 2009-06-27  9:38 ` Carsten Dominik
  2009-06-27 10:25   ` org-follow-link-in-same-window Nicolas Girard
  0 siblings, 1 reply; 3+ messages in thread
From: Carsten Dominik @ 2009-06-27  9:38 UTC (permalink / raw)
  To: Nicolas Girard; +Cc: emacs-orgmode


On Jun 27, 2009, at 10:41 AM, Nicolas Girard wrote:

> Hi all,
> when clicking on a link, I whish I could choose between
> - following it in another window (the current behaviour, which I'm  
> often fine with, but not always);
> - following it in the same window
>
> I tried to create a new function, org-follow-link-in-same-window,  
> and bind it to a key.
>
> As for the key binding, I couldn't get down-mouse-2 to work, as  
> initially expected. I tried the following bindings:
>
> (add-hook 'org-load-hook
>       '(lambda ()
>          (define-key org-mouse-map [C-down-mouse-1]  'org-follow- 
> link-in-same-window)
>          (define-key org-mouse-map [down-mouse-2]    'org-follow- 
> link-in-same-window)
>          (define-key org-mouse-map [C-down-mouse-2]  'org-follow- 
> link-in-same-window)
>          (define-key org-mouse-map [s-down-mouse-1]  'org-follow- 
> link-in-same-window)
>          (define-key org-mouse-map [s-mouse-1]       'org-follow- 
> link-in-same-window)))
>
> I found none of them to work *but* the latest, [s-mouse-1].
> (I'm not fond of incantations, so when emacs leaves me under the  
> impression that some kind of black magic is happening, I always feel  
> a little upset.
> Anyway, i'm digressing, and after all I'm fine with [s-mouse-1].)
>
> Now, as for the function, I came to the following:
>
> (defun org-follow-link-in-same-window (ev)
>   (interactive "e")
>   (let ((org-display-internal-link-with-indirect-buffer t))
>     (save-excursion
>       (set-buffer (window-buffer (posn-window (event-end ev))))
>     (select-window (posn-window (event-end ev)))
>     (org-open-at-mouse ev)))
>
> which doesn't work. I mean, it does follow the link, but not in the  
> same window.


When following a link, Org does all kinds of things, including
possibly searching for a particular place in a file.  So it is best
to let Org do its thing, but to scope a different value of
org-link-frame-setup.  Like so:

(defun org-open-at-mouse-same-window (ev)
   "Open file link or URL at mouse."
   (interactive "e")
   (mouse-set-point ev)
   (if (eq major-mode 'org-agenda-mode)
       (org-agenda-copy-local-variable 'org-link-abbrev-alist-local))
   (let ((org-link-frame-setup
	 '((vm . vm-visit-folder)
	   (gnus . gnus)
	   (file . find-file))))
     (org-open-at-point)))


HTH

- Carsten

>
> Could you please give me a hand on this ?
>
> Thanks in advance,
> Nicolas
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: org-follow-link-in-same-window
  2009-06-27  9:38 ` org-follow-link-in-same-window Carsten Dominik
@ 2009-06-27 10:25   ` Nicolas Girard
  0 siblings, 0 replies; 3+ messages in thread
From: Nicolas Girard @ 2009-06-27 10:25 UTC (permalink / raw)
  To: emacs-orgmode

2009/6/27 Carsten Dominik <carsten.dominik@gmail.com>
>
> On Jun 27, 2009, at 10:41 AM, Nicolas Girard wrote:

> (defun org-open-at-mouse-same-window (ev)
>  "Open file link or URL at mouse."
>  (interactive "e")
>  (mouse-set-point ev)
>  (if (eq major-mode 'org-agenda-mode)
>      (org-agenda-copy-local-variable 'org-link-abbrev-alist-local))
>  (let ((org-link-frame-setup
>         '((vm . vm-visit-folder)
>           (gnus . gnus)
>           (file . find-file))))
>    (org-open-at-point)))

Thanks ! This works great !

>>
>> I found none of them to work *but* the latest, [s-mouse-1].

Now, I must have been mistaken because none of the bindings I tried
actually worked. I'm sure I could trigger my own function thanks to a
debugging message, but it was after a bit of trial and error, and I
can't see how.

Here's what I tried and which didn't work:


(add-hook 'org-load-hook
	  '(lambda ()
	     (define-key org-mouse-map [s-mouse-1] 'org-open-at-mouse-same-window)
	     (define-key org-mouse-map [s-down-mouse-1] 'org-open-at-mouse-same-window)
	     (define-key org-mode-map [(control button1)]
'org-open-at-mouse-same-window)
	     (define-key org-mouse-map [C-down-mouse-1]
'org-open-at-mouse-same-window)
	     (define-key org-mouse-map [C-down-mouse-2] 'org-open-at-mouse-same-window)
))

I could only get the behaviour I want by de-defining
org-mouse-move-tree-start with the body of your
org-open-at-mouse-same-window function.

Nicolas

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-06-27 10:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-27  8:41 org-follow-link-in-same-window Nicolas Girard
2009-06-27  9:38 ` org-follow-link-in-same-window Carsten Dominik
2009-06-27 10:25   ` org-follow-link-in-same-window Nicolas Girard

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).