Managing helper death Managing helper death python python

Managing helper death


The easiest solution I can think of is to use kill-buffer-query-functions hook to prevent *Pymacs* to be killed. Like this:

(defun my-pymacs-saver ()  (if (equal (buffer-name) "*Pymacs*")      (yes-or-no-p "Really kill *Pymacs* buffer? ")    t))(add-hook 'kill-buffer-query-functions 'my-pymacs-saver)

It will ask you if you really want to kill *Pymacs* buffer or not. You can even make it impossible to kill from keybinds by this:

(defun my-pymacs-saver ()  (if (equal (buffer-name) "*Pymacs*")      (progn        (message "NEVER kill *Pymacs*!")        nil)    t))

I use pymacs-terminate-services to forcefully reload all modules. I have a function similar to pymacs-reload-rope in http://www.emacswiki.org/emacs/AntonNazarov.

Probably you can add pymacs-terminate-services to kill-buffer-hook (locally in *Pymacs* buffer) for more graceful termination. But I am not sure. For the rest of your question, I guess it's better to ask/request in the Pymacs issue tracker.


If you accidentally kill the *Pymacs* buffer or execute pymacs-terminate-services you can recover the process by executing the following command and answering "yes" at the prompt.

(pymacs-load "ropemacs" "rope-")

You can modify your init-file function to allow for the restart to be called interactively with M-x python-restart. Restarting Pymacs in this manner will avoid the TypeError: major()... error.

(defun pymacs-restart ()  (interactive)  (pymacs-load "ropemacs" "rope-"))(load "~/.emacs.d/pymacs.el")(autoload 'pymacs-apply "pymacs")(autoload 'pymacs-call "pymacs")(autoload 'pymacs-eval "pymacs" nil t)(autoload 'pymacs-exec "pymacs" nil t)(autoload 'pymacs-load "pymacs" nil t)(autoload 'pymacs-autoload "pymacs")(require 'pymacs)(pymacs-restart)