2011-06-08 21 views
5

¿Qué se necesita para reemplazar el/usr/bin/python regular con un shell de python personalizado en el modo python de Emacs?Shell de Python personalizado para Emacs python-mode

Básicamente tengo un binario/usr/bin/mypython que realiza algunas inicializaciones antes de iniciar el intérprete de Python, y para todas las interacciones, el intérprete shell resultante es equivalente a/usr/bin/python.

Sin embargo, si especifica este binario en "python-python-comando" (usando python.el en Emacs 23.3), me sale "versiones de Python Sólo> = 2.2 y 3.0 están soportadas <"

Respuesta

5

I' Estoy a punto de leer la elisp para verificar, pero apostaría que si agregaras una bandera --version que diera los resultados guardados como /usr/bin/python, emacs estaría feliz.

actualización

Aquí está el código en línea python.el 1555 y siguientes en Emacs 23.3.1:

(defvar python-version-checked nil) 
(defun python-check-version (cmd) 
    "Check that CMD runs a suitable version of Python." 
    ;; Fixme: Check on Jython. 
    (unless (or python-version-checked 
      (equal 0 (string-match (regexp-quote python-python-command) 
        cmd))) 
    (unless (shell-command-to-string cmd) 
     (error "Can't run Python command `%s'" cmd)) 
    (let* ((res (shell-command-to-string 
       (concat cmd 
         " -c \"from sys import version_info;\ 
print version_info >= (2, 2) and version_info < (3, 0)\"")))) 
     (unless (string-match "True" res) 
    (error "Only Python versions >= 2.2 and < 3.0 are supported"))) 
    (setq python-version-checked t))) 

lo que está haciendo está ejecutando una sola línea

from sys import version_info; 
print version_info >= (2, 2) and version_info < (3, 0) 

que solo imprime "Verdadero" o "Falso". Arregle su script para manejar el indicador -c y debería estar bien.

Alternativamente, podría tomar la salida del hacker y forzar el valor de python-version-checked a t, y nunca lo hará.

+0

Gracias por el puntero, al buscar en el archivo encontré otro problema: el indicador "-i" está cableado (por lo que quitarlo de python-python-command-args no evitará que se pase) –

+0

Bueno, es por eso que te dan las fuentes. Pero eso, en particular, me parece un error; cámbialo y envía un parche. –

1

La forma más fácil de derrotar el cheque es mentir y decirle python-check-version que ya se ha verificado:

(setq python-version-checked t) 
0

con python-mode.el acaba de hacer

Mx MI-PYTHON RET

da la versión de Python se instala

https://launchpad.net/python-mode

+0

¡Bienvenido a StackOverflow! Veo que eres entusiasta y tienes una herramienta favorita. Sin embargo, recomendar o vincular al mismo sitio en ** todas ** sus publicaciones, y 10 veces solo durante su primer día, corre el riesgo de desencadenar las señales de "posible correo no deseado" en este sitio. ¡Así que ten cuidado! Solo un consejo amistoso. –