Oct 19 2008

Identación: Tabulaciones y espacios en emacs

Tag: basicoverdrive @ 9:31 pm

Explicaremos en la primera parte de este artículo el comportamiento de las tabulaciones en emacs, problemas típicos así como sus soluciones hasta conseguir un control total del entorno.

En emacs Antes que nada decir que por defecto en emacs una tabulación (a partir de ahora lo llamaremos TAB) son tomados como 8 espacios, la forma de representarlo. Por defecto emacs trabaja en modo fundamental, el cual es un modo generalizado para la mayoría de tareas. Sin embargo, para trabajar en texto plano de forma específica podemos emplear text-mode.

En text-mode cuando escribimos texto, si presionamos intro para ir a la siguiente línea y pulsamos acto seguido tabulador, la tabulación no será tomada como 8 espacios sino que se posicionará justo por debajo del primer carácter de la segunda palabra de la línea anterior, y así tantas veces como TAB pulsemos, o dicho de otra manera el TAB se alineará con la línea anterior.

Es posible editar las posiciones para cada tabulación mediante M-x edit-tab-stops, esto nos abrirá:

emacstabs

Básicamente de estas 3 líneas, la primera significa en que posición pararía cada vez que pulsasemos una tabulación. La segunda línea indica el número de decenas de carácteres, mientras que la tercera indica el número de carácteres. Podemos cambiar el comportamiento de las tabulaciones desde aquí.

Para añadir una nueva tabulación nos desplazariamos con C-f o C-b hasta la columna deseada, y luego presionamos :. Para eliminar una tabulación nos desplazariamos de la misma forma con C-f o C-b hasta la columna deseada donde se encuentre una tabulación y presionamos DEL.

Fijémonos que el buffer se encuentra en modo Ovwrt (sobreescritura) cuando realizamos esta acción de modificar las tabulaciones, y dichos cambios sólo serán aplicados sobre el buffer actual. Una vez hayamos terminado de modificarlos podemos guardar dichos cambios y salir presionando C-c C-c. Sin embargo si queremos ignorar los cambios podemos simplemete eliminar el buffer mediante C-x k.

Debemos tener en cuenta que hasta ahora hemos trabajado con tabulaciones no rigidas que se llaman, es decir, que dependia de las líneas contiguas para realizar la tabulación y rara vez se cumplian los 8 carácteres. Sin embargo existe una forma de trabajar con tabulaciones rígidas para ello debemos utilizar C-q TAB en lugar de TAB, que se traduce como el carácter ^I. Para cambiar el ancho del TAB rígido podemos editar nuestro .emacs y poner por ejemplo:

(setq-default tab-width 4)

Si queremos que emacs inserte espacios en lugar de TAB podemos añadir en nuestro .emacs:

(setq-default indent-tabs-mode nil)

Para eliminar TABs creados anteriormente a esta regla, pero que aún persisten ahí podemos utilizar M-x untabify, y convertirá todos los TABs del documento actual en blancos. Si queremos realizar el paso inverso de convertir blancos en TABs podemos emplear M-x tabify.