You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Emacs钩子以在关闭Dired缓冲区前进行提示?

实现Dired缓冲区关闭前的标记文件提示

你可以用kill-buffer-hook来实现这个需求,这是Emacs内置的钩子,会在缓冲区被关闭前触发。直接把下面这段代码复制到你的Emacs配置文件(比如~/.emacs或者~/.emacs.d/init.el)里就行:

(add-hook 'kill-buffer-hook
          (lambda ()
            ;; 检查当前缓冲区是否是Dired模式
            (when (derived-mode-p 'dired-mode)
              ;; 获取所有标记的文件,非空则说明有标记
              (when (dired-get-marked-files)
                ;; 弹出确认提示,用户选"否"就终止关闭操作
                (unless (y-or-n-p "当前Dired缓冲区有标记的文件,确定要关闭吗? ")
                  (throw 'kill-buffer nil))))))

代码说明:

  • add-hook:把自定义的匿名函数绑定到kill-buffer-hook钩子上
  • derived-mode-p 'dired-mode:判断当前缓冲区是否为Dired模式,避免干扰其他类型的缓冲区
  • dired-get-marked-files:返回当前Dired缓冲区中所有被标记的文件列表,空列表代表无标记
  • y-or-n-p:弹出简洁的yes/no确认对话框
  • throw 'kill-buffer nil:若用户选择"否",直接终止关闭缓冲区的操作

使用步骤:

  1. 将代码粘贴到你的Emacs配置文件中
  2. 重启Emacs,或者在配置文件缓冲区执行M-x eval-buffer使配置立即生效

之后你关闭带有标记文件的Dired缓冲区时,Emacs就会自动弹出确认提示,防止误操作。

内容的提问来源于stack exchange,提问作者jordan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:42:05