1 La organización de la pantalla

En una pantalla gráfica, como en GNU/Linux usando el Sistema X Window, Emacs ocupa una ventana gráfica. En un terminal de texto, Emacs ocupa toda la pantalla del terminal. Usaremos el término marco para referirnos a una ventana gráfica o pantalla de terminal ocupada por Emacs. Emacs se comporta de forma muy similar en ambos tipos de marcos. Normalmente comienza con un solo marco, pero puede crear marcos adicionales si lo desea (ver 22 Marcos y Pantallas Gráficas Marcos y Pantallas Gráficas).

Cada marco consta de varias regiones distintas. En la parte superior del marco hay una barra de menús, que permite acceder a los comandos a través de una serie de menús. En una pantalla gráfica, justo debajo de la barra de menús hay una barra de herramientas, una fila de iconos que ejecutan comandos de edición al hacer clic sobre ellos. En la parte inferior del marco hay un área de eco, donde se muestran mensajes informativos y donde introduce información cuando Emacs se la pide.

La zona principal del marco, por debajo de la barra de herramientas (si existe) y por encima de la zona de eco, se denomina ventana. En adelante, en este manual, usaremos la palabra «ventana» en este sentido. Los sistemas de visualización gráfica suelen utilizar la palabra «ventana» con un significado diferente; pero, como se ha indicado anteriormente, nos referimos a esas ventanas gráficas como «marcos».

Una ventana de Emacs es el lugar donde se muestra el buffer -el texto u otros gráficos que esté editando o visualizando-. En una pantalla gráfica, la ventana posee una barra de desplazamiento en un lado, que puede usarse para desplazarse por el búfer. La última línea de la ventana es una línea de modo. Muestra información diversa sobre lo que ocurre en el búfer, como por ejemplo si hay cambios sin guardar, los modos de edición que se están utilizando, el número de línea actual, etc.

Cuando inicia Emacs, normalmente sólo hay una ventana en el marco. Sin embargo, puede subdividir esta ventana horizontal o verticalmente para crear múltiples ventanas, cada una de las cuales puede mostrar independientemente un buffer (vea 21 Varias Ventanas).

En cualquier momento, una ventana es la ventana seleccionada. En una pantalla gráfica, la ventana seleccionada muestra un cursor más prominente (normalmente sólido y parpadeante); otras ventanas muestran un cursor menos prominente (normalmente una caja hueca). En un terminal de texto, sólo hay un cursor, que se muestra en la ventana seleccionada. El búfer que se muestra en la ventana seleccionada se llama búfer actual, y es donde tiene lugar la edición. La mayoría de los comandos de Emacs se aplican implícitamente al buffer actual; el texto mostrado en las ventanas no seleccionadas es visible principalmente como referencia. Si usa múltiples marcos en una pantalla gráfica, al seleccionar un marco en particular se selecciona una ventana en ese marco.

1.1 El Punto

El cursor en la ventana seleccionada muestra la localización donde la mayoría de los comandos de edición tienen efecto, que se llama punto [2]. Muchos comandos de Emacs mueven el punto a diferentes lugares del buffer; por ejemplo, puede colocar el punto pulsando el botón 1 del ratón (normalmente el botón izquierdo) en el lugar deseado.

Por defecto, el cursor en la ventana seleccionada se dibuja como un bloque sólido y parece estar sobre un carácter, pero debe pensar en el punto como si estuviera entre dos caracteres; está situado antes del carácter bajo el cursor. Por ejemplo, si su texto se parece a frob con el cursor sobre la b, entonces el punto está entre la o y la b. Si inserta el carácter ! en esa posición, el resultado será fro!b, con el punto entre el ! y la b. Así, el cursor permanece sobre la b, como antes.

Si está editando varios ficheros en Emacs, cada uno en su propio buffer, cada buffer tiene su propio valor de punto. Un búfer que no se muestra en ese momento recuerda su valor de punto si lo vuelve a mostrar más tarde. Además, si un buffer se muestra en varias ventanas, cada una de esas ventanas tiene su propio valor de punto.

Si está editando varios ficheros en Emacs, cada uno en su propio buffer, cada buffer tiene su propio valor de punto. Un búfer que no se muestra en ese momento recuerda su valor de punto si lo vuelve a mostrar más tarde. Además, si un buffer se muestra en múltiples ventanas, cada una de esas ventanas tiene su propio valor de punto.

Ver 15.21 Visualización del Cursor, para opciones que controlan cómo Emacs muestra el cursor.

1.2 El área de Eco

La línea situada en la parte inferior del marco es el área de eco. Se usa para mostrar pequeñas cantidades de texto para varios propósitos.

El área de eco se llama así porque una de las cosas para las que se utiliza es para hacer eco, lo que significa mostrar los caracteres de un comando de varios caracteres a medida que se escribe. Los comandos de un solo carácter no tienen eco. Los comandos de varios caracteres (ver 3 Teclas) se repiten si hace una pausa de más de un segundo en medio de un comando. Emacs entonces hace eco de todos los caracteres del comando hasta el momento, para preguntarle por el resto. Una vez que el eco ha comenzado, el resto del comando se hace eco inmediatamente mientras lo teclea. Este comportamiento está diseñado para dar a los Usuarios confiados una respuesta rápida, mientras que a los Usuarios indecisos les proporciona la mejor retroalimentación.

El área de eco también se usa para mostrar un mensaje de error cuando un comando no puede hacer su trabajo. Los mensajes de error pueden ir acompañados de un pitido o de un parpadeo de la pantalla.

Algunos comandos muestran mensajes informativos en el área de eco para decirle lo que ha hecho el comando, o para proporcionarle alguna información específica. Estos mensajes informativos, a diferencia de los mensajes de error, no van acompañados de un pitido o parpadeo. Por ejemplo, Ctrl-x = (C-x = mantenga pulsada la tecla Ctrl y escriba x, luego suelte la tecla Ctrl y escriba =) muestra un mensaje que describe el carácter en el punto, su posición en el búfer intermedia y su columna actual en la ventana. Los comandos que llevan mucho tiempo suelen mostrar mensajes que terminan en ... mientras trabajan (a veces también indican cuánto se ha avanzado, en porcentaje), y añaden done (terminado) cuando finaliza.

Los mensajes informativos del área de eco se guardan en un búfer especial denominado *Messages* (*Mensajes*). (Aún no hemos explicado los búferes; consulte 20 Uso de Varios Búferes, para obtener más información sobre ellos). Si se pierde un mensaje que ha aparecido brevemente en la pantalla, puede pasar al búfer *Messages* para volver a verlo. Este búfer está limitado a un cierto número de líneas, especificado por la variable message-log-max. (Tampoco hemos explicado las variables; véase 50.2 Variables, para más información sobre ellas). Más allá de este límite, se borra una línea del principio cada vez que se añade una nueva línea de mensaje al final.

Vea 15.4 Desplazamiento Horizontal, para opciones que controlan cómo Emacs usa el área de eco.

El área de eco también se usa para mostrar el minibuffer, una ventana especial en la que se pueden introducir argumentos para los comandos, como el nombre de un archivo que se va a editar. Cuando se utiliza el minibuffer, el texto que aparece en el área de eco comienza con una cadena de comandos, y el cursor activo aparece dentro del minibuffer, que se considera temporalmente la ventana seleccionada. Siempre se puede salir del minibuffer tecleando Ctrl-g (C-g). Véase 15.24 Personalización de la Pantalla.

1.3 La Línea de Modo

En la parte inferior de cada ventana hay una línea de modo, que describe lo que está pasando en el búfer actual. Cuando sólo hay una ventana, la línea de modo aparece justo encima del área de eco; es la penúltima línea del cuadro. En una pantalla gráfica, la línea de modo se dibuja con una apariencia de caja 3D. Emacs también suele dibujar la línea de modo de la ventana seleccionada con un color diferente al de las ventanas no seleccionadas, para que destaque.

El texto mostrado en la línea de modo tiene el siguiente formato:

cs:ch-fr  buf      pos line   (major minor)

En un terminal de texto, este texto va seguido de una serie de guiones que se extienden hasta el borde derecho de la ventana. Estos guiones se omiten en una pantalla gráfica.

La cadena cs y los dos puntos que la siguen describen el juego de caracteres y la convención de nueva línea usada para el buffer actual. Normalmente, Emacs maneja automáticamente estos ajustes por Ud., pero a veces es útil tener esta información.

cs describe el juego de caracteres del texto del búfer (véase 23.5 Sistemas de Codificación). Si es un guión (-), indica que no hay tratamiento especial del juego de caracteres (con la posible excepción de las convenciones de fin de línea, descritas en el párrafo siguiente). = significa que no hay conversión alguna, y suele utilizarse para ficheros que contienen datos no textuales. Otros caracteres representan diversos sistemas de codificación; por ejemplo, 1 representa ISO Latin-1.

En un terminal de texto, cs va precedido de dos caracteres adicionales que describen los sistemas de codificación para la entrada del teclado y la salida del terminal. Además, si está usando un método de entrada, cs va precedido de una cadena que identifica el método de entrada (véase 23.3 Métodos de Entrada).

El carácter después de cs suele ser dos puntos. Si se muestra una cadena diferente, eso indica una convención de final de línea no trivial para codificar un archivo. Normalmente, las líneas de texto se separan mediante caracteres de nueva línea en un archivo, pero a veces se usan otras dos convenciones. La convención MS-DOS utiliza un carácter de retorno de carro seguido de un carácter de salto de línea; al editar estos archivos, los dos puntos cambian a una barra invertida (\) o (DOS), dependiendo del sistema operativo. Otra convención, empleada por los antiguos sistemas Macintosh, usa un carácter de retorno de carro en lugar de una nueva línea; al editar dichos ficheros, los dos puntos cambian a una barra inclinada (/) o (Mac). En algunos sistemas, Emacs muestra (Unix) en lugar de los dos puntos para los ficheros que usan la nueva línea como separador de línea.

En marcos creados para emacsclient (ver 40.3 Opciones de emacsclient Invocando emacsclient), el siguiente carácter es @. Esta indicación es típica para marcos de un proceso Emacs ejecutándose como demonio (ver 40 Usar Emacs Como Servidor).

El siguiente elemento en la línea de modo es la cadena indicada por ch. Esta muestra dos guiones (--) si el buffer mostrado en la ventana tiene el mismo contenido que el archivo correspondiente en el disco; es decir, si el buffer no está modificado. Si el búfer está modificado, muestra dos asteriscos (**). Para un búfer de sólo lectura, muestra %* si el búfer está modificado, y %% en caso contrario.

Normalmente, el carácter que sigue a ch es un guión (-). Sin embargo, si el directorio por defecto (véase 19.1 Nombres de Archivos) para el búfer actual está en una máquina remota, en su lugar aparece @.

fr da el nombre del marco seleccionado (ver 22 Marcos y Pantallas Gráficas). Sólo aparece en terminales de texto. El nombre del marco inicial es F1.

buf es el nombre del buffer que se muestra en la ventana. Normalmente, es el mismo que el nombre del fichero que está editando. Véase 22 Marcos y Pantallas Gráficas.

pos le indica si hay texto adicional por encima de la parte superior de la ventana, o por debajo de la parte inferior. Si su búfer es pequeño y todo él es visible en la ventana, pos es All (Todo). De lo contrario, es Top (Arriba) si está mirando al principio del buffer, Bot si está mirando al final del buffer, o nn%, donde nn es el porcentaje del buffer por encima de la parte superior de la ventana. Con el modo Indication Size Mode (modo Indicación de Tamaño), también puede mostrar el tamaño del búfer. Véase 15.19 Características Opcionales de la Línea de Modo.

line (línea) es el carácter L seguido del número de línea en el punto. (También puede visualizar el número de columna actual, activando el modo Column Number (Número de Columna). Véase 15.19 Características Opcionales de la Línea de Modo).

major es el nombre del modo principal (o Modo Mayor) utilizado en el búfer. Un modo principal es un modo de edición principal para el búfer, como el modo Texto, el modo Lisp, el modo C, etc. Véase 24.1 Modos Mayores (o Principales). Algunos modos principales muestran información adicional después del nombre del modo principal. Por ejemplo, los buffers de Compilación y Shell muestran el estado del subproceso.

minor es una lista de algunos de los modos menores habilitados, que son modos de edición opcionales que proporcionan características adicionales además del modo mayor. Ver 24.2 Modos Menores.

Algunas funciones aparecen junto con los modos secundarios cuando están activados, aunque no sean realmente modos secundarios. Narrow (Estrechamiento) significa que el búfer que se está visualizando tiene la edición restringida sólo a una parte de su texto (vea 15.5 Estrechamiento). Def significa que se está definiendo una macro de teclado (ver 18 Macros de Teclado).

Además, si Emacs está dentro de un nivel de edición recursivo, aparecen corchetes ([...]) alrededor de los paréntesis que rodean los modos. Si Emacs está en un nivel de edición recursiva dentro de otro, aparecen corchetes dobles, y así sucesivamente. Como los niveles de edición recursiva afectan a Emacs globalmente, tales corchetes aparecen en la línea de modo de cada ventana. Ver 46 Niveles de Edición Recursiva.

Puede cambiar la apariencia de la línea de modo así como el formato de su contenido. Vea _ref_`22.5`. Además, la línea de modo es sensible al ratón; al hacer clic en diferentes partes de la línea de modo se ejecutan varios comandos. Consulte 22.5 Comandos del Ratón en la Línea de Modo. Además, al pasar el puntero del ratón por encima de las partes de la línea de modo sensibles al ratón, se muestra información sobre herramientas (consulte 22.19 Sugerencias sobre Herramientas (Tooltips)) con información sobre los comandos que puede invocar haciendo clic en la línea de modo.

1.4 La Barra de Menús

Cada marco de Emacs tiene normalmente una barra de menú en la parte superior que puede usar para realizar operaciones comunes. No hay necesidad de listarlas aquí, ya que puede verlas Usted mismo más fácilmente.

En una pantalla que soporte ratón, puede usar el ratón para elegir un comando de la barra de menú. Una flecha en el borde derecho de un elemento de menú significa que conduce a un menú secundario, o submenú. Tres puntos seguidos ... al final de un elemento de menú significa que el comando le pedirá más información antes de realizar ninguna acción.

Algunos de los comandos de la barra de menús también están vinculados a teclas normales; si es así, se muestra un vínculo a la tecla después del propio elemento. Para ver el nombre completo del comando y la documentación de un elemento de menú, escriba Ctrl-h k (C-h k) y, a continuación, seleccione la barra de menús con el ratón de la forma habitual (consulte 11.2 Documentación de una Tecla).

En lugar de usar el ratón, también puede invocar el primer elemento de la barra de menús pulsando F10 (para ejecutar el comando menú-bar-open). A continuación, puede navegar por los menús con las teclas de flecha o con Ctrl-b (C-b, izquierda), Ctrl-f (C-f, derecha), Ctrl-p (C-p, arriba) y Ctrl-n (C-n, abajo). Para activar un elemento de menú seleccionado, pulse RET; para cancelar la navegación por el menú, pulse Ctrl-g (C-g) o Esc ESC ESC (ESC ESC ESC). (Sin embargo, tenga en cuenta que cuando Emacs ha sido construido con un kit de herramientas GUI, los menús son dibujados y controlados por el kit de herramientas, y las secuencias de teclas para cancelar la navegación por el menú pueden ser diferentes de la descripción anterior).

En un terminal de texto, puede acceder opcionalmente a los menús de la barra de menús en el área de eco. Para ello, personalice la variable tty-menu-open-use-tmm a un valor no nulo. Entonces tecleando F10 se ejecutará el comando tmm-menubar en lugar de desplegarse el menú. (También puede escribir M-` (M-`), que siempre invoca tmm-menubar). tmm-menubar le permite seleccionar un elemento del menú con el teclado. Aparece una opción provisional en el área de eco. Puede utilizar las teclas de flecha arriba y abajo para desplazarse por el menú hasta los distintos elementos y, a continuación, puede escribir RET para seleccionar el elemento. Cada elemento del menú también se designa con una letra o un dígito (normalmente la inicial de alguna palabra del nombre del elemento). Esta letra o dígito se separa del nombre del elemento mediante ==>. Puede escribir la letra o el dígito del elemento para seleccionarlo.