我们有buf-1
,其他缓冲区buf-2
我(kill-buffer buf-1)
,我怎样才能可靠地显示buf-2
而不是1
我的意思是Emacs如何做到这一点,而不仅仅是为此做点什么。
从源代码kill-buffer
调用:
+replace_buffer_in_windows (buffer);
|
+-+(switch-to-prev-buffer window 'kill)
|
+-+(window-prev-buffers window) and other functions
我曾与set-window-prev-buffers
和set-window-next-buffers
玩过,但没有运气
至少" this_code
适合我"会有所帮助。
修改
从技术上讲,我想要的是:记住"记住"调用kill-buffer
后Emacs将打开缓冲区的顺序。然后能够重新创建相同的窗口(在新的Emacs会话中),这样如果我在这个新窗口中调用kill-buffer
,我将得到相同的结果。
现在要记住"我需要了解Emacs本身如何做出这种选择(杀戮后要显示的内容)。只是因为这个我说自定义钩子可能没帮助。
答案 0 :(得分:1)
Hooks" Emacs Way":
在buf-1
中,执行以下操作:
(add-hook 'kill-buffer-hook
(lambda ()
(set-window-next-buffers nil (cons "buf-2" (window-next-buffers)))))
代码未经测试,因此您可能需要使用它才能使其正常工作(例如,您可能需要将"buf-2"
替换为(get-buffer "buf-2")
)。
请参阅window.el
获取灵感。
答案 1 :(得分:0)
你不会喜欢我的回答,但是,嗯,这是我的回答:
切换到您想要首先的缓冲区,然后执行C-x k M-n M-n RET
删除之前的当前缓冲区。