Respuestas:
Bueno, para sangrar con pestañas, querrás asegurarte de que indent-tabs-mode
sea t
(que es el valor predeterminado). Pero para obtener solo pestañas, debe ajustar el modo que está haciendo la sangría de modo que cada línea esté sangrada por un múltiplo de su tab-width
(valor predeterminado 8). Por ejemplo, en el modo C, puede intentar establecerlo c-basic-offset
en 8.
O bien, puede reducir su tab-width
valor a un valor menor, de modo que Emacs no necesite usar espacios para alcanzar cada nivel de sangría. Pero si haces eso, todos los que tengan que trabajar en tu código (y usen las tabulaciones estándar de 8 caracteres) se molestarán.
Te insto a que lo reconsideres. Personalmente, me resulta molesto trabajar en código sangrado con pestañas, especialmente si no parecen ser 8 pestañas espaciales. (Lo peor es el código donde algunas líneas usan espacios, algunas líneas usan pestañas, y claramente no son 8 pestañas espaciales). Haznos un favor a todos y solo (setq indent-tabs-mode nil)
.
Emacs viene con varios estilos predefinidos para la sangría en C, o puede escribir el suyo si ninguno satisface sus necesidades. Entre los estilos estándar , parece que está buscando linux
(el estilo utilizado en la fuente del kernel de Linux), que tiene sangrías de 8 columnas y usa caracteres de tabulación de ancho 8.
Puede hacer que esta configuración sea su estilo predeterminado para C poniendo esto en su .emacs
:
(setq c-default-style "linux")
(defun my-c-mode-hook ()
(setq indent-tabs-mode t)
(setq tab-width 8))
(add-hook 'c-mode-hook 'my-c-mode-hook)
Sin embargo, asegúrese de no utilizar esta configuración cuando colabore con otras personas con diferentes preferencias. En particular, el uso de pestañas te hará eneminas. Si un archivo en particular debe mantenerse en un estilo particular, puede usar variables de archivo para asegurarse de que todos los que editan el archivo en Emacs usen la misma configuración:
/*
* Local Variables:
* c-file-style: "linux"
* indent-tabs-mode: t
* tab-width: 8
* End:
*/
Si tiene un proyecto completo con archivos C con sangría similar, use variables de directorio en lugar de contaminar cada archivo. Cree un archivo llamado .dir-locals.el
con contenido como el siguiente:
((c-mode . ((c-file-style . "linux")
(indent-tabs-mode . t)
(tab-width . 8))))
Las pestañas me molestan, pero tuve que descubrir cómo hacer que emacs use solo pestañas para sangrar para poder trabajar en el código de otra persona. Esto es lo que funcionó para mí:
(defun tmp/change-indent ()
(interactive)
(setq indent-tabs-mode t)
(setq tab-width 2))
Me di cuenta de que antes de jugar con cualquier cosa, cuando presioné la tecla de tabulación, se sangraba automáticamente por 2 columnas. Establecer "ancho de tabulación" para que coincida con el desplazamiento de 2 columnas permitió a emacs usar tabulaciones al formatear automáticamente. Estaba trabajando en modo nxml, pero creo que esto debería funcionar para cualquier modo.