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.