退出emacs之前运行功能

时间:2014-01-30 14:08:35

标签: emacs version-control org-mode

我想在org-mode中使用这样的功能:在退出emacs之前(当org-mode运行时)它会问我:“你想在退出之前运行函数vc-dir吗?” 我试过这个:

(add-hook 'kill-emacs-hook 'vc-dir)

但它错误:“参数数量错误”

也尝试了这里:

(defadvice save-buffers-kill-emacs (before update-mod-flag activate)
(vc-dir))

同样的错误。

  • 那么如何让它以简单的方式工作:vc-dir总是在退出时运行。
  • 或者如何使用警告信息(最好的方法)?

谢谢!

2 个答案:

答案 0 :(得分:6)

vc-dir接受一个参数(“dir”)。

所以你可以这样做:

(add-hook 'kill-emacs-hook (lambda () (vc-dir "your-dir-here")))

当然这不会阻止emacs退出:vc-dir打开缓冲区但不“等待”用户输入。对于您想要的交互式方法,您可以这样做:

(add-hook 'kill-emacs-query-functions
          (lambda ()
            (if (y-or-n-p "Do you want to run function vc-dir before exit?")
                (progn
                  (vc-dir "your-directory")
                  nil)
              t)))

如果要将上次访问的缓冲区用作vc-directory,请将"your-directory"更改为default-directory

答案 1 :(得分:0)

如何尝试该功能,在运行vc-dir之前要求确认:

(defun my-vc-check-onexit ()
     (interactive)
     (let ((doquit (read-from-minibuffer "Do you want to run vcs? ")))
       (if (string-equal doquit "y") (vc-dir "~/my/dir"))
       ))

并将其绑定到钩子上。

注意:它可能不是好的elisp;)