【问题标题】:changing the value of savehist-minibuffer-history-variables in Emacs在 Emacs 中更改 savehist-minibuffer-history-variables 的值
【发布时间】:2021-12-13 16:53:13
【问题描述】:

它在 https://github.com/emacs-mirror/emacs/blob/master/lisp/savehist.el 的第 129-130 行表示默认行为是在 emacs 运行时确定 savehist-minibuffer-history-variables 的内容。我确实在我的savehist-file 中看到这似乎是yes-or-no-p-historybuffer-name-history 和其他一些变量。

但是,我想在 emacs 中保存一个特定的历史记录,即 filesets-data 的历史记录,通过

实现
(setq savehist-additional-variables '(filesets-data))

savehist.el 的第 59-60 行表示,这可以通过使用 savehist-save-hook 更改 savehist-minibuffer-history-variables 的值来实现。

不幸的是,我不知道该怎么做。我试过了

(setq savehist-minibuffer-history-variables nil)
(add-hook 'savehist-save-hook 'savehist-minibuffer-history-variables)

在我的.emacs.d 中,但会产生错误消息:

Symbol’s function definition is void: savehist-minibuffer-history-variables

感谢您在退出 emacs 时将 savehist-minibuffer-history-variables 更改为空的任何帮助。谢谢!

【问题讨论】:

    标签: function variables emacs hook


    【解决方案1】:

    你挂在钩子上的是一个函数,而不是一个变量(也不是其他的sexp)。

    (defun foo ()
      (setq savehist-minibuffer-history-variables nil))
    
    (add-hook 'savehist-save-hook #'foo)
    

    【讨论】:

    • 你是完全正确的,当然,@Drew。太感谢了!尽管add-hook 中没有#,但它就像一个梦一样工作。为什么要添加它?
    • #' 而不是 ' 告诉 Emacs,包括字节编译器,引用的东西是一个函数。知道这一点,它(原则上)有时会更聪明一些或产生更高效的代码。不过,普通的' 可以正常工作。请参阅 Elisp 手册,节点 Anonymous Functions。 (手册中的i #' TAB 将您带到Info 中的那个节点。)
    • 我明白了。谢谢你,@Drew!
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2015-09-10
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多