如何修改Emacs中savehist-minibuffer-history-variables的取值?
错误原因
你遇到的报错是因为savehist-save-hook的钩子项必须是可执行的函数,你直接将变量名savehist-minibuffer-history-variables加入钩子,Emacs执行钩子时会尝试调用该名称对应的函数,而这个符号仅作为变量存在、没有对应的函数定义,因此抛出Symbol’s function definition is void错误。
正确配置
你只需要在钩子中定义专门的设置逻辑即可,推荐使用更稳妥的延迟加载写法,避免savehist未加载时变量不存在的问题:
(with-eval-after-load 'savehist ;; 只保留你需要保存的自定义变量 (setq savehist-additional-variables '(filesets-data)) ;; 每次执行保存操作前清空 minibuffer 历史变量列表 (add-hook 'savehist-save-hook (lambda () (setq savehist-minibuffer-history-variables nil))))
如果还没有开启savehist自动保存功能,在配置中额外加入一行(savehist-mode 1)即可开启。
配置完成后重启Emacs生效,你也可以手动执行M-x savehist-save后查看savehist-file的内容,确认只会保留filesets-data的相关记录,不会保存其他默认的minibuffer历史。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

