有没有一种方法可以使用y-or-n-p表示确认终止emacs,而使用yes-or-no-p表示保存提示?

有没有一种方法可以使用y-or-n-p表示确认终止emacs,而使用yes-or-no-p表示保存提示?,emacs,elisp,Emacs,Elisp,我已经看到了几个相关的问题,但我似乎无法将它们缝合在一起以达到我想要的结果。这些文件当前位于my.emacs中: (defalias 'yes-or-no-p 'y-or-no-p) (setq confirm-kill-emacs 'y-or-no-p) 但是我想在“savefilexxxx?(y,n,…C-h)”提示中使用yes-or-no-p而不是y-or-no-p。如果confirm kill emacs使用y或no-p,我会接受使用yes-or-no-p的所有其他方式,但我也无法让它

我已经看到了几个相关的问题,但我似乎无法将它们缝合在一起以达到我想要的结果。这些文件当前位于my.emacs中:

(defalias 'yes-or-no-p 'y-or-no-p)
(setq confirm-kill-emacs 'y-or-no-p)
但是我想在“savefilexxxx?(y,n,…C-h)”提示中使用yes-or-no-p而不是y-or-no-p。如果confirm kill emacs使用y或no-p,我会接受使用yes-or-no-p的所有其他方式,但我也无法让它工作。我删除了yes-or-no-p到y-or-no-p别名,修改的buffers exist提示符使用yes-or-no-p,但save file提示符仍然使用y-or-no-p。我有办法做到这一点吗

  • 诽谤是个坏主意,伊莫

  • 通过提供自己的函数而不是默认函数,准确地使用您想要的行为


  • 照此,提供默认行为的函数是在钩子上的——它们不是硬连线的。您可以将这些函数(在挂钩上)替换为您自己的函数,这些函数的行为类似,但完全使用您喜欢的提示等。

    我认为没有一个简单的解决方案
    保存一些缓冲区
    使用
    map-y-or-n-p
    为每个缓冲区询问问题,该函数不只是调用
    y-or-n-p
    ,而是直接实现行为(使用基于
    查询替换映射
    的键映射)。没有默认的
    map-yes-or-no-p
    函数。我会查看您想要更改的每个函数的源代码,并使用与该函数特别相关的建议,或者更改函数本身并为新函数创建一个defalias?就个人而言,我只是在init.el中使用
    (fset'yes-or-no-p'y-or-n-p)
    ,这在大多数情况下已经足够了。这里有一个建议的例子:你能给我一个例子,说明我如何做这样的事情/做得更好吗?对不起,我想这毕竟是硬连接的。正如@phils所指出的,您需要为
    save some buffers
    编写一个替代命令,该命令将执行您需要的操作,而不是调用
    map-y-or-n-p
    。您可以将
    保存一些缓冲区
    (例如
    C-x s
    )中的键重新映射到您的命令。您还需要为
    save buffers kill terminal
    编写一个替代命令,因此它调用您的第一个命令,然后重新映射其键(例如
    C-x C-C
    )。这是可行的,但并不像我想象的那么简单。你们可以在保存缓冲区杀死终端上定义建议