Emacs:如何在电流被杀死后出现特定的缓冲区?

时间:2014-07-28 17:57:28

标签: emacs

我们有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-buffersset-window-next-buffers玩过,但没有运气 至少" this_code适合我"会有所帮助。

修改
从技术上讲,我想要的是:记住"记住"调用kill-buffer后Emacs将打开缓冲区的顺序。然后能够重新创建相同的窗口(在新的Emacs会话中),这样如果我在这个新窗口中调用kill-buffer,我将得到相同的结果。

现在要记住"我需要了解Emacs本身如何做出这种选择(杀戮后要显示的内容)。只是因为这个我说自定义钩子可能没帮助。

2 个答案:

答案 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删除之前的当前缓冲区。