2014-01-17 52 views
19

有沒有辦法阻止Emacs退出一旦我啓動退出進程?防止退出程序啓動後Emacs退出?

我偶爾胖手指C-XC-S作爲C-XC-C。恢復正常運行並不是一個可怕的過程,但我很好奇是否有辦法阻止退出過程,這樣我就可以繼續不間斷地打開所有文件。

使用GNU Emacs 24.3.1。在Windows 7下運行Cygwin。

+0

儘管我接受scottfrazer的答案,我很感謝爲所示的替代方法。 –

+0

我找不到這個問題,所以我發佈了同樣的問題:[在退出Emacs之前在C-x C-c之後確認](https://emacs.stackexchange.com/q/13662/5165)。 –

回答

27

有一個內置的變量,你可以設置爲一個功能,像這樣:

(setq confirm-kill-emacs 'y-or-n-p) 
3

scottfrazer的答案對我來說比以下更合適。

啓用任何緩衝器的Emacs Lock次要模式(emacs-lock-mode),防止從Emacs的情況下退出你不小心碰到C-XC-C

從Emacs的Wiki頁面:

的Emacs不能退出,直到緩衝區被殺害或解鎖

添加(emacs-lock-mode).emacs/​​文件,以便該鎖在每個Emacs會話中啓用。如果您想要退出Emacs,確實將添加此鎖定*scratch*緩衝區,這將不得不解鎖。

這樣做的另一種方式是在Emacs中啓動一個進程,例如, M-xshell或者有一個未保存的文件與緩衝區關聯,這樣做會在Emacs退出時提示您進行確認。

是一個以上,未設置C-XC-C使用global-unset-key。然後如果你想退出Emacs M-xkill-emacs

1
  • 使用confirm-kill-emacs,如@scottfrazer建議,是一種方法。

  • 更一般地說,您可以使用kill-emacs-query-functions在這方面做任何你想做的事情。 (有沒有真正的需要爲他們添加confirm-kill-emacs,但他們做到了。)

  • 你可能不希望在這方面使用kill-emacs-hook(這就是kill-emacs-query-functions是),但要注意的是,如果你遇到它使用apropos等的kill-emacs-query-functions經過短短confirm-kill-emacs

一個好處是,你可以要求一個更好的確認:yes,而不是隻打關鍵y。例如:

(add-hook 'kill-emacs-query-functions 
      (lambda() (y-or-n-p "Do you really want to exit Emacs? ")) 
      'append) 

這就是我所做的。鍵擊太容易,並且意外擊中了C-x C-c y,特別是因爲我有類似的鍵綁定(例如,C-x c,C-x C-x,C-x C-y)。

1

如果你正在尋找一個更短的答案,我已經自上個世紀,在我所有的.emacs文件的底部,這條線:

(shell) 
+0

你能解釋一下添加(shell)的功能嗎?我正在通過emacs wiki進行搜索,只是搜索「shell」對於瞭解它的功能有點含糊不清。 –

+0

我在我的回答中提到過它。 '(shell)'實際上啓動了一個Emacs會提示你處於活動狀態並且你真的想退出的進程。 [Shell模式](http://www.emacswiki.org/emacs/ShellMode)。 –