[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

V.11.2 Caracteres eléctricos en C

En el modo C y afines, ciertos caracteres imprimibles son "eléctricos": además de insertarse a sí mismos, también resangran la línea actual y pueden insertar nuevalíneas. Esta funcionalidad es controlada por la variable c-auto-newline. Los caracteres "eléctricos" son {, }, :, #, ;, ,, <, >, /, *, (, y ).

Los caracteres eléctricos insertan nuevalíneas solamente cuando la funcionalidad auto-nuevalínea está habilitada (indicada por `/a' en la línea de modo después del nombre del modo). Esta funcionalidad es controlada por la variable c-auto-newline. Ud. puede habilitar y deshabilitar esta funcionalidad con el comando C-c C-a:

C-c C-a

Conmuta la funcionalidad auto-nuevalínea (c-toggle-auto-state). Con un argumento prefijo, este comando activa la funcionalidad auto-nuevalínea si el argumento es positivo, y la desactiva si es negativo.

El carácter dos puntos es eléctrico porque eso es adecuado para un único dos puntos. Pero si quiere insertar un doble dos puntos en C++, el comportamiento eléctrico del dos puntos es inoportuno. Ud. puede insertar un doble dos puntos sin sangrado ni nuevalíneas tecleando C-c ::

C-c :

Inserta un operador de alcance doble dos puntos en el punto, sin resangrar la línea ni añadir nuevalíneas (c-scope-operator).

La tecla # eléctrica resangra la línea si aparece al comienzo de una directiva de preprocesador. Esto ocurre cuando el valor de c-electric-pound-behavior es (alignleft). Ud. puede desactivar esta funcionalidad ajustando c-electric-pound-behavior en nil.

La variable c-hanging-braces-alist controla la inserción de nuevalíneas antes y despues de las llaves que se insertan. Es una lista asociativa con elementos de la siguiente forma: (símbolo-sintáctico . lista-nl). La mayoría de los símbolos sintácticos que aparecen en c-offsets-alist también tienen sentido aquí.

La lista lista-nl puede contener uno de los símbolos before o after, o ambos; o puede ser nil. Cuando se inserta una llave, el contexto sintáctico que ésta define se busca en c-hanging-braces-alist; si se encuentra, se usa la lista-nl para determinar donde se insertan nuevalíneas: antes de la llave, después, o ambos. Si no se encuentra, la acción por defecto es insertar un nuevalínea antes y uno después de las llaves.

La variable c-hanging-colons-alist controla la inserción de nuevalíneas antes y después de los dos puntos que se inserten. Es una lista asociativa con elementos de la siguiente forma: (símbolo-sintáctico . lista-nl). La lista list-nl puede contener uno de los símbolos before o after, o ambos; o bien puede ser nil.

Cuando se insertan dos puntos, el símbolo sintáctico que éstos definen se buscan en dicha lista, y si se encuentra, se utiliza la lista-nl para determinar dónde se insertan nuevalíneas: antes de la llave, después, o ambos. Si no se encuentra el símbolo sintáctico en esta lista, no se insertan nuevalíneas.

Los caracteres eléctricos también pueden borrar los nuevalíneas automáticamente cuando se habilita la funcionalidad auto-nuevalínea. Esta funcionalidad hace más aceptable a auto-nuevalínea, borrando los nuevalíneas en los casos más comunes donde no son deseados. Emacs puede reconocer varios caso en los cuales puede ser deseable borrar un nuevalínea; ajustando la variable c-cleanup-list, ud. puede especificar cuáles de estos casos deben ocurir. El valor de la variable es una lista de símbolos, de los cuales cada uno describe un caso posible de borrado de nuevalínea. Estos son los símbolos significativos, y sus significados:

brace-catch-brace

Ordena construcciones `} catch (condición) {' poniendo la construcción entera en una sola línea. La reubicación tiene lugar cuando ud. teclea la `{', si no hay nada entre las llaves además de catch y condición.

brace-else-brace

Ordena construcciones `} else {' poniendo la construcción entera en una sola línea. La reubicación tiene lugar cuando ud. teclea la `{' después del else, pero solamente si no hay más que espacio en blanco entre las llaves y el else.

brace-elseif-brace

Ordena construcciones `} else if (…) {' poniendo la construcción entera en una sola línea. La reubicación tiene lugar cuando ud. teclea la `{', si solamente hay espacio en blanco entre `}' y `{' aparte de las palabras claves y la condición del if.

empty-defun-braces

Ordena llaves vacías de defun poniendo las llaves en la misma línea. La reubicación ocurre cuando ud. teclea la llave de cierre.

defun-close-semi

Ordena el punto y coma después de un struct o declaración de tipos similar, poniendo el punto y coma en la misma línea que la llave de cierre. La reubicación ocurre cuando ud. teclea el punto y coma.

list-close-comma

Ordena las comas después de las llaves en inicializadores de arrays y agregados. La reubicación ocurre cuando ud. teclea la coma.

scope-operator

Ordena pares de dos puntos que pueden designar un operador de visibilidad de C++, juntando los dos puntos. La reubicación ocurre cuando ud. teclea los segundos dos puntos, pero únicamente cuando los pares de dos puntos están separados por nada más que espacio en blanco.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by Roberto on abril, 2 2007 using texi2html 1.76.