当我右键单击启动器... icon ..并选择退出...并选择文件退出时,我希望这种情况发生。我希望这个命令在emacs退出之前运行....所以当我右键单击启动器图标并选择退出然后运行此命令“wg-update-workgroup”然后Emacs退出..我试过了解钩子,但没有得到如何添加一个....如果有人可以给我我的初始化文件中的确切代码,我将非常感激....尝试将一个函数绑定到一个键但得到奇怪的命令p错误。
答案 0 :(得分:2)
以下是代码:
(add-hook 'kill-emacs-hook
(lambda ()
(wg-update-workgroup)))
由于wg-update-workgroup
需要参数,因此代码似乎不适合您。
你必须自己测试一下,因为我真的不想熟悉这个包。
解决方案1:
(add-hook 'kill-emacs-hook
(lambda ()
(wg-update-all-workgroups)))
解决方案2:
(add-hook 'kill-emacs-hook
(lambda ()
(call-interactively 'wg-update-workgroup)))
我很确定这就是你想要的:
(setq wg-query-for-save-on-emacs-exit nil)
(push (lambda()(or (ignore-errors
(wg-update-all-workgroups-and-save)) t))
kill-emacs-query-functions)
第一个语句删除了有关保存的非常烦人的y / n查询 工作组退出。第二个语句在退出时无条件地保存所有内容。
只列出我的完整配置:
(require 'workgroups)
(workgroups-mode 1)
(setq wg-query-for-save-on-emacs-exit nil)
(wg-load "~/wg")
(push (lambda()(or (ignore-errors
(wg-update-all-workgroups-and-save)) t))
kill-emacs-query-functions)
答案 1 :(得分:1)
你感到困惑是对的。问题在于:当Emacs开始退出时,workgroups.el会比'kill-emacs-hook更早地清理自己。你想要的是这个:
(add-hook 'kill-emacs-query-functions 'wg-update-all-workgroups)
钩子变量应该看起来像这样:
(wg-update-all-workgroups wg-emacs-exit-query)
我建议使用'wg-update-all-workgroups而不是'wg-update-workgroup,如果像我一样,你在给定的工作组文件中保存了多个工作组。
IMO workgroups.el是最好的Emacs会话管理器。有人刚接手了。我很高兴能够推出具有更多功能的新版本: