nuevo comandos archivo emacs python-mode

comandos - ¿Establecer sangría de python a 2 espacios en emacs 23?



comandos emacs terminal (3)

Puedes poner esto en tu archivo .emacs:

(add-hook ''python-mode-hook ''(lambda () (setq python-indent 2)))

La razón por la cual

(setq-default python-indent 2)

no funciona puede porque esta variable no se cierra cuando se carga .emacs. (Pero soy un novato de Emacs. No estoy seguro de mi explicación).

Sin embargo, PEP 8 - Guía de estilo para el código Python recomienda "4 espacios por nivel de sangría" y encuentro 4 espacios más legibles. De hecho, uso este código para forzar una sangría de 4 espacios.

Estoy usando emacs 23.1.1 en Ubuntu 10.04. Deseo programar en Python con una sangría de 2 espacios. emacs parece tener un modo predeterminado para python (python.el?).

Pongo lo siguiente en mi .emacs:

;; Only spaces, no tabs (setq indent-tabs-mode nil) ;; Always end a file with a newline (setq require-final-newline nil) ;; Don''t know which of these might work (setq-default tab-width 2) (setq-default python-indent 2) (setq-default py-indent-offset 2)

Cuando edito un archivo Python, usa una sangría de 4 espacios. Cuando intento Ch v python-indent dice:

python-indent''s value is 4 Local in buffer webpage_cache.py; global value is 2 This variable is safe as a file local variable if its value satisfies the predicate `integerp''. Documentation: Number of columns for a unit of indentation in Python mode. See also `M-x python-guess-indent'' You can customize this variable.

Es decir, es 4, no 2. Grr. Intenté personalizar la variable y guardar, todavía 4. Intenté personalizar sangría de grupo, todavía 4.

¿Cómo consigo que emacs le preste atención?


Simplemente me encontré con este problema, y ​​creo que la ayuda para python-indent contiene una gran pista que nadie más mencionó:

See also `M-x python-guess-indent''

Si no personaliza python-guess-indent estableciéndolo en nil , entonces python.el configurará automáticamente python-indent para cada búfer de Python (que contiene texto con sangría), haciendo que su personalización python-indent inefectiva. (Por otro lado, cuando en Roma ...)

Al final, esto es lo que entró en mi archivo .emacs (ignorando todas las demás variables personalizadas):

(custom-set-variables ''(python-guess-indent nil) ''(python-indent 2))


Ya sea en su archivo .emacs o en un archivo referenciado por su .emacs agregue:

(setq-default indent-tabs-mode nil) (setq-default tab-width 2)

Puedes poner un gancho si quieres localizar

;; Python Hook (add-hook ''python-mode-hook (function (lambda () (setq indent-tabs-mode nil tab-width 2))))

EDITAR: He encontrado que los siguientes problemas pueden alterar mi configuración:

  • configurando la variable antes de que se cargue la biblioteca
  • Otros paquetes / configuraciones restableciendo las variables globales

Para estos dos problemas he encontrado que crear enlaces y localizar las variables puede ayudar.