stardiviner
stardiviner

Reputation: 1130

How to let Org-mode open a link like [[file://file.org]] in current window instead of default in other window?

I hope to use [C-c C-o] to open a link like [[file://filename.org|filename]] in current window, instead of the default in other window.

How to change this Org-mode default behavior ?

Seems default [C-u C-c C-o] is force open link in other window.

And there is a similar question at here: How do I keep Emacs org-mode from splitting windows?

Upvotes: 24

Views: 9776

Answers (2)

wuzwm
wuzwm

Reputation: 531

Here is the solution I wrote, inspired by the answer of @juanleon. It maps C-c C-o to open the link in the current window, but leaves the default behaviour for C-u C-c C-o (open in other window). It does so without breaking the universal argument function (which happens for me when I naively remap C-u C-c C-o).

(defun org-force-open-current-window ()
  (interactive)
  (let ((org-link-frame-setup (quote
                               ((vm . vm-visit-folder)
                                (vm-imap . vm-visit-imap-folder)
                                (gnus . gnus)
                                (file . find-file)
                                (wl . wl)))
                              ))
    (org-open-at-point)))
;; Depending on universal argument try opening link
(defun org-open-maybe (&optional arg)
  (interactive "P")
  (if arg
      (org-open-at-point)
    (org-force-open-current-window)
    )
  )
;; Redefine file opening without clobbering universal argumnet
(define-key org-mode-map "\C-c\C-o" 'org-open-maybe)

Upvotes: 5

juanleon
juanleon

Reputation: 9390

You need to change the value of org-link-frame-setup. Default value contains the cons (file . find-file-other-window). You may replace it by (file . find-file).

Upvotes: 26

Related Questions