I am using Emacs+auctex+evince on Debian. Suppose I have a latex document main.tex which includessections/sec1.tex. When compiling with C-c C-a from within main.tex and using backwards search in Section 1, Emacs opens sections/sec1.tex within a new Emacs window (Ew) (but within the same window in the sense of the window manager, aka frame in Emacs speak, see https://emacs.stackexchange.com/questions/13583/whats-the-difference-between-a-buffer-a-file-a-window-and-a-frame). That is, the Ew showing main.tex is halved in size, a new Ew is created in the spare space, and I am seeing both main.tex and sec1.tex.

I would like to avoid that, instead having the file opened in the Ew that showed main.tex before.

I am using Emacs on Debian stable:

GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
 of 2019-09-22, modified by Debian 

The undesired behaviour is shown with a virgin configuration, hence does not seem to be caused by any customization I am using.


As noted in a comment, the answer

(setq same-window-regexps '("\\.tex$"))

has the unintended consequence of breaking the AucTeX commands C-c C-l and C-c C-` . One way to fix this is to restrict the new value of same-window-regexps to TeX-mode buffers, i.e. replace the above line with

(add-hook 'LaTeX-mode-hook
           '(lambda () (set (make-local-variable 'same-window-regexps) '("\\.tex$"))))

However, this restricts it as a solution to the original problem so that it only works when Emacs is currently viewing some TeX file; if the current buffer is a different mode, then reverse-search opens in a separate Emacs-window.

A different solution that seems to work in all cases is to keep the original global (setq same-window-regexps '("\\.tex$")), but trick C-c C-l and C-c C-` into telling TeX-pop-to-buffer to always open in another window:

(defun TeX-force-pop-to-buffer-other-window (orig-fun buffer &optional other-window norecord)
  (funcall orig-fun buffer t norecord))
(defun TeX-force-pop-in-other-window (orig-fun &rest rest)
  "Don't depend on `pop-to-buffer' using a different window."
  (advice-add 'TeX-pop-to-buffer :around 'TeX-force-pop-to-buffer-other-window)
  (apply orig-fun rest)
  (advice-remove 'TeX-pop-to-buffer 'TeX-force-pop-to-buffer-other-window))  
(advice-add 'TeX-help-error :around 'TeX-force-pop-in-other-window)
(advice-add 'TeX-recenter-output-buffer :around 'TeX-force-pop-in-other-window)

A solution to this question, provided by Mike Shulman, is to use

(setq same-window-regexps '("\\.tex$"))
  • Unfortunately, it seems that this solution has the unintended consequence of breaking the AucTeX commands C-c C-l and C-c C-` , which expect pop-to-buffer to always choose a different window: they first pop to the buffer they want to display and then pop back to the original window, assuming that this will leave the new buffer displayed in a separate window. I will post a solution to this as a separate answer. – Mike Shulman Sep 29 '20 at 17:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.