Emacs打开文件时会merge相同文件的窗口

Emacs split windows下,打开相同文件会merge split windows。但我不想merge,不知道是哪个参数或者是哪个hook,导致这样的行为。不确定是不是spacemacs的坑,不过我试了下用dired打开文件,也是一样的效果。

复现如下:

  1. split window

  2. open the same file using dired or ranger

  3. split windows are merged

Update: 发现好像是ranger的锅,但还是没找到解决方案。

看看 find-file-hooks 中有没有可疑的。

find-file-hooks设成nil了还是一样的效果

会报这样的一个warning:

pop-to-buffer: Wrong type argument: window-valid-p, #<window 33>

M-x toggle-debug-on-error 开启调试观察下,出错的时候根据堆栈应该就能找出是谁引发的。

并不是error,没法toggle住。

找到解决方案了,overwrite ranger-disable函数。

  • default:
(defun ranger-disable ()
  "Interactively disable ranger-mode."
  (interactive)
  ;; don't kill ranger buffer if open somewhere else
  (if (> (length (get-buffer-window-list)) 1)
      (delete-window)
    (ranger-revert)))
  • New one
(defun ranger-disable ()
    "Interactively disable ranger-mode."
    (interactive)
    (ranger-revert))