python emacs rope ropemacs pymacs

subplot title python



Manejando la muerte del ayudante (2)

La solución más fácil que se me ocurre es usar hook kill-buffer-query-functions para evitar que *Pymacs* sea ​​eliminado. Me gusta esto:

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

Le preguntará si realmente quiere matar el *Pymacs* o no. Incluso puede hacer que sea imposible eliminar los enlaces de teclado con esto:

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

Yo uso pymacs-terminate-services para cargar con fuerza todos los módulos. Tengo una función similar a pymacs-reload-rope en http://www.emacswiki.org/emacs/AntonNazarov .

Probablemente pueda agregar pymacs-terminate-services a kill-buffer-hook (localmente en el buffer *Pymacs* ) para una terminación más elegante. Pero no estoy seguro. Por el resto de su pregunta, creo que es mejor preguntar / solicitar en el rastreador de problemas de Pymacs.

Instalé Pymacs, soga, ropemode, ropemacs, y cuando pymacs-terminate-services por accidente, no pude guardar buffers modificados. Primero me preguntó: The Pymacs helper died. Restart it? (yes or no) The Pymacs helper died. Restart it? (yes or no) The Pymacs helper died. Restart it? (yes or no) . Si respondí "sí", arrojó - Debugger entered--Lisp error: (error "There is no Pymacs helper!") . Si respondí "no", arrojó:

Debugger entered--Lisp error: (error "Python: Traceback (most recent call last): File /"/usr/local/lib/python2.7/dist-packages/Pymacs.py/", line 258, in loop value = eval(text) File /"<string>/", line 1, in <module> IndexError: list index out of range ")

Me las arreglé para pymacs-load ejecutando pymacs-load , cargando el módulo os y respondiendo sí a Pymacs helper restart question. El búfer se guardó, pero luego comencé a tener otro error cada vez que guardé el archivo:

Debugger entered--Lisp error: (error "Python: Traceback (most recent call last): File /"/usr/local/lib/python2.7/dist-packages/Pymacs.py/", line 258, in loop value = eval(text) File /"<string>/", line 1, in <module> TypeError: major() takes exactly 1 argument (0 given) ")

Este es mi archivo de inicio:

(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-load "ropemacs" "rope-")

El manual de Pymacs describe la muerte del ayudante de Pymacs. *Pymacs* que no debería cerrar el *Pymacs* , porque esto mata al ayudante, y también debería reiniciar Emacs si se elimina el helper. Esto es inaceptable ya que tengo la costumbre de cerrar todos los buffers de vez en cuando y rara vez reinicio Emacs. Tengo varias preguntas relacionadas ahora:

  • ¿Cuál es la mejor manera de manejar Pymacs para minimizar esos problemas? ¿Es posible ejecutar Pymacs solo cuando trabajo con Python y luego terminarlo de forma segura?
  • ¿ pymacs-terminate-services qué sirve pymacs-terminate-services y debería ejecutarlo alguna vez?
  • ¿Qué debo hacer si alguna vez accidentalmente ejecuto pymacs-terminate-services ? Estoy especialmente interesado en cómo editar before-save-hook para hacer posible el almacenamiento en búfer sin mensajes de error.

Si mata accidentalmente el búfer * Pymacs * o ejecuta los pymacs-terminate-services puede recuperar el proceso ejecutando el siguiente comando y respondiendo "sí" en el aviso.

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

Puede modificar su función init-file para permitir que el reinicio sea llamado interactivamente con Mx python-restart . Reiniciar Pymacs de esta manera evitará el error TypeError: major()...

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