2017-11-20 3 views
0

Ich benutze Python in Emacs, mit Elpy und iPython. Ich betreiben Code aus einer Datei mit C - cC - c, aber manchmal würde Ich mag den Prozess (Tastatur-Interrupt) beenden. Ich verwende die gleiche Abkürzung, um zu versuchen, den Prozess zu beenden (wie this question).Wie Process Python Interrupt und Tastatur-Interrupt in Emacs aufrufen?

Mein Ziel wäre es zu versuchen, zwischen dem Töten des gesamten Python-Prozesses oder dem Unterbrechen des Kernels zu unterscheiden. Mit der obigen Verknüpfung macht es manchmal die erste und manchmal die zweite. Ich habe noch keine Hinweise gefunden, wie man es verallgemeinern kann.

So ist die Frage: Wie man den Python-Prozess stoppt und wie man den Kern unterbricht?

Antwort

1

Ich würde nur eine Funktion definieren, um einen Interrupt an den Prozess zu senden. Ich benutze anaconda-mode nicht elpy, so dass ich nicht sicher bin, was elpy verwendet, um die zugehörige process-buffer zu bekommen, aber python-mode hat python-shell-get-process-or-error. Dann könnten Sie den Schlüssel C-c C-a zum Beispiel im python-mode-map an die folgende Funktion binden.

(defun my-interrupt() 
    "Send an interrupt signal to python process" 
    (interactive) 
    (let ((proc (ignore-errors 
       (python-shell-get-process-or-error)))) 
    (when proc 
     (interrupt-process proc))))