buffer-quit-function 什么时候执行?

When is buffer-quit-function executed?

我想连接到 change-buffer,所以尝试使用 buffer-quit-function。 我编写了以下代码并进行了评估(使用 C-x C-e):

(add-hook 'buffer-quit-function    (lambda () (message "Buffer quit!")))

之后,我尝试使用 C-x o(其他-window)、C-x b(切换到缓冲区。) 但是我看不到字符串 Buffer quit!.

为什么我的buffer-quit-function没有执行?

有两处错误:

  1. buffer-quit-function 不是钩子。这是一个变量,所以设置为

    (set (make-local-variable 'buffer-quit-function)
         (lambda () (message "Buffer quit!")))
    
  2. 改变缓冲区时不调用;它在用户调用 keyboard-escape-quit 时使用,通常绑定到 ESC ESC ESC.

我认为没有提供任何机制来执行您想要执行的操作。