2010-03-05 14 views
5

Estoy dando el salto a EMACS, y no puedo encontrar lo que necesito hacer en mi archivo .emacs para obtener el modo php Y todos los demás modos para insertar 4 espacios en lugar de una TAB. ¿Ayuda?No puedo encontrar esto: ¿Cómo uso 4 ESPACIOS en lugar de una TAB en EMACS?

ACTUALIZACIÓN:

Cuando llegué a la pestaña sigo teniendo 8 espacios en un archivo plano con las respuestas dadas. En php-mode todavía tengo 2 espacios. Al tocar la pestaña en el modo php no se hace nada, la pestaña en EMACS regular agrega 8 espacios.

Update2:

Esto es lo que tengo en mi .emacs:

(require 'color-theme) 
(color-theme-calm-forest) 

(setq-default indent-tabs-mode nil) 
(setq-default tab-width 4) 
(setq c-basic-offset 4) 

Todavía en archivos regulares 8 espacios, y en PHP los archivos de la tabulación no funciona, o saltos en torno al azar ahora. Mi php-mode es desde el Ubuntu 9,10 apt-get install php-mode


UDATE3:

OK Esto es lo que quiero ...

  1. Cuando golpeo la tecla TAB, y cuando me golpeó siempre la tecla TAB, quiero 4 ESPACIOS insertados.
  2. Quiero la tecla TAB para saltar a la posición relativa de la línea anterior (automático pestaña hasta la última línea, de nuevo entrar en espacios)

Estas reglas deben aplicarse a todos los archivos pero si Necesidad necesaria para, antes que nada, aplicar a (texto) y archivos PHP.

Respuesta

9

Cambie la variable sangría-pestañas-modo a nil. Puede hacerlo de forma interactiva (solo para un búfer) por M-x set-variable. Para que sea permanente (y para todos los buffers), ponga

(setq-default indent-tabs-mode nil) 

en su archivo init.

Para realizar una pestaña hacen sólo 4 espacios en la mayoría de los modos, también se suman

(setq-default tab-width 4) 

Para los modos basados ​​en C (como PHP) que tendrá que hacer:

(setq c-basic-offset 4) 
+0

OK, eso no ayudó en el modo php (aún 2) y para la edición general usó 8 espacios. – Urda

+0

Agregó una línea sobre cómo cambiar a 4 espacios en edición general. El modo Php probablemente tiene su propia configuración para esto. –

+0

Tiene un error de sintaxis. Asumiría que es '(setq-default tab-width 4)' Y eso no ayudó en absoluto. Y sí, me estoy asegurando de que EMACS tome la nueva configuración cada vez que lo intento. – Urda

0

Puede usar M-x untabify para convertir todas las pestañas en espacios.

Bueno, en ese caso, puede establecer el valor de indent-tabs-mode en nil para su modo secundario php.

También puede encontrar la wiki: http://www.fnal.gov/docs/products/emacs/emacs/emacs_23.html#SEC185 y la publicación de Jamie Zawinski: http://www.jwz.org/doc/tabs-vs-spaces.html para ser informativos.

+0

OK, es bueno saberlo. Pero quiero que sea una configuración permanente para cuando edite archivos en PHP y otros modos. – Urda

0

Esto es lo que 'Yo hice.

;;;; Tab settings ;;;; 
;Tab width is 3 
(setq tab-width 3) 
(setq-default tab-width 3) ;;going to force it. yessir. 
;Use spaces always. 
(setq-default indent-tabs-mode nil) 
;Jump by 3. 
(setq c-basic-offset 3) 
;this defaulted to 4 and had to be reset to 3. the prior settings did not override it. Lame. 
(setq perl-indent-level 3) 
;Tab stop list out to col 60 
;Manually set by x3 
(setq tab-stop-list '(3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60)) 
+0

¿Por qué tiene 2 '(setq-default tab-width 3)' en una fila? – Gabe

+0

Estupidez excesiva. ¿Por qué preguntas? –

3

Falta un (setq c-basic-indent 4).Así que usted debe tener:

;; 4 spaces rather than tabs 
(setq-default indent-tabs-mode nil) 
(setq-default tab-width 4) 
(setq c-basic-offset 4) 
(setq c-basic-indent 4) 
+1

Repito: do * not * change 'tab-width' a menos que * realmente * sepas lo que estás haciendo. – Stefan

2

El comportamiento predeterminado de TAB en Emacs (en los modos de programación) es guión automáticamente a el lugar correcto, en este lugar se decide sobre la base de reglas de sangría descritos por el modo mayor (es uno de los trabajos más importantes de un modo principal, de hecho, mucho más exigente en general que el color resaltado). Por supuesto, si la línea ya está sangrada en el lugar correcto, presionar TAB no hará nada.

Así que puedes obligar a TAB a comportarse de una manera tonta, como lo estás preguntando, pero luego te perderías la mayor parte de la diversión. P. ej. usted podría hacer algo como

(global-set-key "\t" 
    (lambda() 
    (interactive) 
    (let ((prevline-indent (save-excursion (forward-line -1) (current-indentation)))) 
     (if (< (current-column) prevline-indent)) 
      (indent-to prevline-indent) 
     (insert " "))))) 

Pero en cambio, le recomiendo usar el tabulador de la manera Emacs destinado a Emacs y explicar cómo te gusta el código para tener una sangría. Probablemente estableciendo algo como:

(setq-default indent-tabs-mode nil) ;; Prefer SPC over TAB when indenting. 
(setq c-basic-offset 4)    ;; I like indenting by 4 spaces. 

Por lo que dice, la sangría TAB en su php-mode no funciona bien, por lo que podría ser simplemente un error en su PHP-mode. Díganos exactamente en qué caso no está funcionando bien, mostrando el texto que se escribe erróneamente y explicando de qué manera la sangría no coincide con sus expectativas.

Cuestiones relacionadas