如何在emacs关闭之前自动运行此Emacs M-x命令“wg-update-workgroup”?

时间:2013-09-07 12:25:37

标签: emacs elisp

当我右键单击启动器... icon ..并选择退出...并选择文件退出时,我希望这种情况发生。我希望这个命令在emacs退出之前运行....所以当我右键单击启动器图标并选择退出然后运行此命令“wg-update-workgroup”然后Emacs退出..我试过了解钩子,但没有得到如何添加一个....如果有人可以给我我的初始化文件中的确切代码,我将非常感激....尝试将一个函数绑定到一个键但得到奇怪的命令p错误。

2 个答案:

答案 0 :(得分:2)

以下是代码:

(add-hook 'kill-emacs-hook
          (lambda ()
            (wg-update-workgroup)))

UPD

由于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)))

UPD:忽略上面的一切:)

我很确定这就是你想要的:

(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会话管理器。有人刚接手了。我很高兴能够推出具有更多功能的新版本:

https://github.com/pashinin/workgroups2/