2014-01-30 96 views
3

我希望在org-mode中使用這樣的功能:在退出emacs之前(org-mode運行時)它問我:「你想在退出之前運行vc-dir函數嗎? 我嘗試這樣做:在退出emacs之前運行函數

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

但它的錯誤: 「錯誤的參數數目」

還試圖爲這裏找到:

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

同樣的錯誤。

  • 那麼如何使它在簡單的方式工作:vc-dir始終在退出時運行。
  • 或如何使它與警告消息(最好的方式)?

謝謝!

回答

5

vc-dir需要一個參數(「dir」)。

所以,你可以這樣做:VC-DIR打開一個緩衝區,但不「等待」用戶輸入:

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

當然這並不會退出停止emacs的。如果你想用上次訪問緩存爲VC-目錄由default-directory

(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))) 

更改"your-directory":對於互動的方式,你想你可以做到這一點。

+0

它不起作用。它關閉emacs並顯示消息「沒有文件需要更改」,但是有。 – user3003873

+0

查看更新的答案 – juanleon

+0

不幸的是,幾乎一樣的行爲。如何讓它等到我做出必要的動作然後退出? – user3003873

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;)

+0

woops,Juanleon的答案(同時發佈)看起來更好,並且完整。 – Ehvince

+1

不幸的是,同樣的行爲。 – user3003873

相關問題