2014-01-17 13 views
19

Gibt es eine Möglichkeit zu verhindern, dass Emacs austritt, sobald ich den Exit-Prozess einleite?Verhindere das Beenden von Emacs, nachdem der Exit-Vorgang eingeleitet wurde?

I gelegentlich Fett Finger C-xC-s als C-xC-C. Es ist kein schrecklicher Prozess, um wieder zum Laufen zu kommen, aber ich bin neugierig, ob es eine Möglichkeit gibt, den Exit-Prozess zu stoppen, so dass ich ununterbrochen mit all meinen offenen Dateien fortfahren kann.

Verwenden von GNU Emacs 24.3.1. Running on Cygwin unter Window 7.

+0

Obwohl ich scottfrazer Antwort akzeptiert, ich bin dankbar, für die alternativen Methoden gezeigt. –

+0

Ich konnte diese Frage nicht finden, also habe ich die gleiche Frage gestellt: [eine Bestätigung nach C-x C-c vor dem Beenden von Emacs] (https://emacs.stackexchange.com/q/13662/5165). –

Antwort

27

Es gibt eine integrierte Variable Sie auf eine Funktion wie so einstellen:

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

scottfrazer die Antwort ist die geeigneter, für mich, als was folgt.

aktivieren Emacs Lock minor Modus (emacs-lock-mode) auf jedem der Puffer, Emacs, um zu verhindern, falls sie versehentlich verlass C-xC-C.

Aus der Emacs Wiki-Seite:

Emacs nicht austreten kann, bis der Puffer getötet oder entriegelt wird

(emacs-lock-mode) in Ihre .emacs/init.el Datei, so dass diese Sperre in jeder Emacs-Sitzung aktiviert ist . Das Hinzufügen wird den *scratch* Puffer sperren, der entsperrt werden muss, falls Sie wirklich Emacs beenden möchten.

Ein anderer Weg/Hack dabei ist, einen Prozess in Emacs zu starten, z. M-xshell oder eine nicht gespeicherte Datei einem Puffer zugeordnet haben. Dadurch werden Sie zur Bestätigung aufgefordert, wenn Emacs beendet wird.

Ja eine mehr, ungesetzt C-xC-Cglobal-unset-key verwenden. Und dann, wenn Sie Emacs M-xkill-emacs verlassen möchten.

1
  • confirm-kill-emacs Verwendung, wie @scottfrazer vorgeschlagen, ein Ansatz ist.

  • Allgemeiner können Sie kill-emacs-query-functions verwenden, um in dieser Hinsicht zu tun, was Sie wollen. (Es gab keine wirkliche Notwendigkeit für sie confirm-kill-emacs hinzufügen, aber sie taten.)

  • Sie wollen wahrscheinlich nicht kill-emacs-hook in diesem Zusammenhang verwenden (das ist, was kill-emacs-query-functions für ist), aber bewusst sein, es, Sie für den Fall, stolpern über apropos usw.

Ein Vorteil kill-emacs-query-functions über nur confirm-kill-emacs ist, dass Sie eine bessere Bestätigung verlangen kann: yes statt nur Schlüssel y schlagen. Zum Beispiel:

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

Das ist, was ich tue. Es ist zu einfach, Schlüssel zu treffen und versehentlich C-x C-c y zu treffen, insbesondere, da ich ähnliche Schlüssel gebunden habe (z. B. C-x c, C-x C-x, C-x C-y).

1

Wenn Sie sich für eine kürzere Antwort suchen, ich habe am Ende diese Linie hat all meine .emacs Dateien seit dem letzten Jahrhundert:

(shell) 
+0

Können Sie erklären, was das Hinzufügen (Shell) tut? Ich suche im Emacs-Wiki und suche nur nach "Shell", um herauszufinden, was das ist. –

+0

Ich habe es in meiner Antwort erwähnt. '(shell)' startet tatsächlich einen Prozess, bei dem Emacs Sie auffordert, aktiv zu sein und wenn Sie wirklich beenden möchten. [Shell-Modus] (http://www.emacswiki.org/emacs/ShellMode). –