22 Marcos y Pantallas Gráficas

Cuando Emacs se inicia en una pantalla gráfica, por ejemplo, en el sistema X Window, ocupa una región de pantalla gráfica a nivel de sistema. En este manual, llamamos a esto marco, reservando la palabra «ventana» para la parte del marco usada para mostrar un búfer. Un marco contiene inicialmente una ventana, pero puede subdividirse en múltiples ventanas (ver 21 Varias Ventanas). Normalmente, un marco también contiene una barra de menús, una barra de herramientas y un área de eco.

También puede crear marcos adicionales (véase 22.6 Creación de Marcos Creación de Marcos). Todos los marcos creados en la misma sesión de Emacs tienen acceso a los mismos búferes subyacentes y otros datos. Por ejemplo, si un búfer está siendo mostrado en más de un marco, cualquier cambio hecho en él en un marco se muestra inmediatamente en los otros marcos también.

Tecleando Ctrl-x Ctrl-c (C-x C-c) se cierran todos los marcos de la pantalla actual, y finaliza la sesión Emacs si no tiene marcos abiertos en ninguna otra pantalla (ver 7 Cómo Salir de Emacs Salir de Emacs). Para cerrar sólo el marco seleccionado, teclee Ctrl-x 50 (C-x 5 0, cero, no o).

Este capítulo describe las características de Emacs específicas de las pantallas gráficas (particularmente los comandos del ratón), y las características para gestionar múltiples marcos. En terminales de texto, muchas de estas características no están disponibles. Sin embargo, todavía es posible crear múltiples marcos en terminales de texto; tales marcos se muestran de uno en uno, llenando toda la pantalla del terminal (ver 22.22 Uso del Ratón en Terminales de Texto Terminales Sin Ventana). También es posible usar el ratón en algunos terminales de texto (véase 12.2 Comandos para Marcar Objetos Textuales Uso del Ratón en Terminales de Texto, para hacerlo en sistemas GNU y Unix; y véase Uso del Ratón en MS-DOS, para hacerlo en MS-DOS). Todos los terminales de texto admiten menús.

22.1 Comandos del Ratón para Edición

ratón-1

Mueve el punto al lugar donde hace clic (mouse-set-point).

arrastrar-mouse-2

Activa la región alrededor del texto seleccionado arrastrando, y sitúa el texto en la selección primaria (mouse-set-region).

ratón-2

Mueve el punto hacia donde ha hecho clic, e inserta allí el contenido de la selección primaria (mouse-yank-primary).

ratón-3

Si la región está activa, desplaza el extremo más cercano de la región a la posición del clic; en caso contrario, sitúa la marca en el valor actual del punto y el punto en la posición del clic. Guarda la región resultante en el anillo de muertes; con un segundo clic, se desactiva (mouse-save-then-kill).

Ctrl-Alt-ratón-1 (C-M-ratón-1)

Activa una región rectangular alrededor del texto seleccionado arrastrando. Véase 13.5 Rectángulos Rectángulos.

El comando más básico del ratón es mouse-set-point (establecer el punto) con el ratón, que se invoca haciendo clic con el botón izquierdo del ratón, (ratón-1), en el área de texto de una ventana. Esto mueve el punto a la posición donde hizo clic. Si esa ventana no era la ventana seleccionada, Se convertirá en ella. También puede activar una región haciendo doble clic con ratón-1 (consulte 22.2 Comandos de Ratón para Palabras y Líneas).

Normalmente, si el marco en el que ha hecho clic no era el marco seleccionado, se convierte en éste, además de seleccionar la ventana y fijar el cursor. En el sistema X Window, puede cambiar esto estableciendo la variable x-mouse-click-focus-ignore-position a t. En ese caso, el clic inicial en un marco no seleccionado sólo selecciona el marco, sin hacer nada más; hacer clic de nuevo selecciona la ventana y establece la posición del cursor.

Mantener pulsado ratón-1 y arrastrar el ratón sobre un tramo de texto activa la región alrededor de ese texto (mouse-set-region), colocando la marca donde se empezó a mantener pulsado el botón del ratón, y el punto donde se suelta (véase 12 La marca y la región). Además, el texto de la región se convierte en la selección principal (véase 13.3.2 Cortar y Pegar con Otras Aplicaciones de Ventana).

Si cambia la variable mouse-drag-copy-region a un valor no nulo, al arrastrar el ratón sobre un tramo de texto también se añade el texto al anillo de destrucción. El valor por defecto es nil.

Si esta variable es no-empty, sólo se copiará al anillo de muertes si la región no está vacía. Por ejemplo, si arrastra con el ratón un área de menos de medio carácter, normalmente obtendría la cadena vacía en el anillo de muertes, pero con non-empty, este breve arrastre del ratón no afectará a dicho anillo.

Si mueve el ratón fuera de la parte superior o inferior de la ventana mientras arrastra, la ventana se desplaza a un ritmo constante hasta que vuelva a mover el ratón dentro de la ventana. De este modo, puede seleccionar regiones que no caben completamente en la pantalla. El número de líneas que se desplazan por paso depende de lo lejos que se haya alejado el ratón del borde de la ventana; la variable mouse-scroll-min-lines especifica un tamaño mínimo de paso.

Si activa la opción mouse-drag-mode-line-buffer y el sistema de ventanas admite el arrastre de archivos, al arrastrar el ratón sobre la parte del nombre del búfer de la línea de modo se arrastrará el archivo de ese búfer a otro programa o marco.

Haciendo clic con el botón central del ratón (ratón-2) mueve el punto a la posición donde hizo clic e inserta el contenido de la selección primaria (mouse-yank-primary). Consulte 13.3.2 Cortar y Pegar con Otras Aplicaciones de Ventana. Este comportamiento es consistente con otras aplicaciones X. Como alternativa, puede volver a vincular mouse-2 a mouse-yank-at-click, que jala (tira) en la posición en la que hizo clic.

Si cambia la variable mouse-yank-at-point a un valor no nulo, mouse-2 no mueve el punto; inserta el texto en el punto, independientemente de dónde haya hecho clic o incluso en cuál de las ventanas del marco haya hecho clic. Esta variable afecta tanto a mouse-yank-primary como a mouse-yank-at-click.

Al hacer clic con el botón derecho del ratón (mouse-3) se ejecuta el comando mouse-save-then-kill. Esto realiza varias acciones dependiendo de dónde haga clic y del estado de la región:

  • Si no hay ninguna región activa, al pulsar ratón-3 se activa la región, colocando la marca donde estaba el punto y el punto en la posición pulsada.

  • Si hay una región activa, al pulsar ratón-3 se ajusta el extremo más cercano de la región, desplazándolo a la posición pulsada. El texto de la región ajustada se copia en el anillo de muertes; si el texto de la región original ya estaba en el anillo de muertes, lo sustituye allí.

  • Si originalmente especificó la región usando un doble o triple ratón-1, de modo que la región se define para consistir en palabras o líneas enteras (ver 22.2 Comandos de Ratón para Palabras y Líneas), entonces el ajuste de la región con ratón-3 también procede por palabras o líneas enteras.

  • Si usa ratón-3 una segunda vez consecutiva, en el mismo lugar, eso mata la región ya seleccionada. Por lo tanto, la forma más sencilla de matar el texto con el ratón es hacer clic con ratón-1 en un extremo, a continuación, haga clic en el ratón-3 dos veces en el otro extremo. Para copiar el texto en el anillo de muertes sin borrarlo del búfer, pulse ratón-3 una sola vez, o simplemente arrastre el texto con ratón-1. Luego puede copiarlo en otro lugar pulsando el botón del ratón-1 en un extremo y luego pulsando ratón-3 dos veces en el otro extremo. Luego puede copiarlo en otro lugar tirando de él.

El comando mouse-save-then-kill también obedece a la variable mouse-drag-copy-region (descrita anteriormente). Si el valor es distinto de cero, siempre que el comando establezca o ajuste la región activa, el texto de la región también se añadirá al anillo de muertes. Si la última entrada de dicho anillo se había añadido de la misma manera, esa entrada se sustituye en lugar de hacer una nueva entrada.

Siempre que ajuste la región mediante cualquiera de los comandos del ratón descritos anteriormente, la marca se desactivará mediante cualquier comando posterior de movimiento del cursor sin desplazamiento, además de las formas habituales de desactivar la marca. Véase 12.6 Selección mediante Mayúsculas (Shift).

Algunos ratones tienen una «rueda» que puede usarse para desplazarse. Emacs soporta el desplazamiento de ventanas con la rueda del ratón, por defecto, en la mayoría de las pantallas gráficas. Para activar esta función, use M-x mouse-wheel-mode. Las variables mouse-wheel-follow-mouse y mouse-wheel-scroll-amount determinan dónde y cuánto se desplazan los búferes. La variable mouse-wheel-progressive-speed determina si la velocidad de desplazamiento está vinculada a la rapidez con la que se mueve la rueda. Este modo también permite aumentar o disminuir el tamaño de la fuente, por defecto vinculado al desplazamiento con el modificador Ctrl (Ctrl). Cuando este modo está activado, la rueda del ratón produce eventos especiales como wheel-up (rueda-arriba) y wheel-down (rueda-abajo). (Algunos sistemas antiguos los reportan como ratón-4 y ratón-5) Si el ratón tiene una rueda de desplazamiento horizontal, también produce eventos wheel-left (rueda-izquierda) y wheel-right (rueda-derecha).

Emacs también soporta el desplazamiento horizontal con el modificador Shift. Escribiendo un prefijo numérico arg (e.g., Alt-5 (M-5)) antes de iniciar el desplazamiento horizontal cambia su valor de paso definido por la opción de Usuario mouse-wheel-scroll-amount-horizontal.

Si la rueda del ratón se puede inclinar, o si el panel táctil lo permite, también puede activar el desplazamiento horizontal personalizando la variable mouse-wheel-tilt-scroll con un valor distinto de cero. Por defecto, al inclinar la rueda del ratón, la vista de la ventana se desplaza horizontalmente en la dirección de la inclinación: por ejemplo, si se inclina hacia la derecha, la ventana se desplaza hacia la derecha, de modo que el texto que aparece en la ventana se desplaza horizontalmente hacia la izquierda. Si desea invertir la dirección del desplazamiento horizontal, personalice la variable mouse-wheel-flip-direction a un valor no nulo.

Cuando el puntero del ratón está sobre una imagen en el modo Imagen, véase 19.19 Visualización de Archivos de Imagen, el desplazamiento de la rueda del ratón con el modificador Ctrl escala la imagen bajo el puntero del ratón, y el desplazamiento de la rueda del ratón con el modificador Shift desplaza la imagen horizontalmente.

22.2 Comandos de Ratón para Palabras y Líneas

Estas variantes de ratón-1 seleccionan palabras o líneas enteras a la vez. Emacs activa la región alrededor del texto seleccionado, que también se copia en el anillo de muertes.

doble-clic-ratón-1

Selecciona el texto que rodea a la palabra o carácter sobre el que se hace clic.

El doble clic sobre un carácter con sintaxis de símbolo (como el guión bajo, en modo C) selecciona el símbolo que rodea a ese carácter. Al hacer doble clic en un carácter con sintaxis de paréntesis abierto o cerrado, se selecciona la agrupación parentética que inicia o termina dicho carácter. Doble clic sobre un carácter con sintaxis de delimitador de cadena (como una comilla simple o doble en C) selecciona la constante de la cadena (Emacs usa heurística para averiguar si ese carácter es el principio o el final de la misma).

Haciendo doble clic al principio de una agrupación parentética o al principio de un delimitador de cadena se mueve el punto al final de la región, desplazando la pantalla del búfer hacia delante si es necesario para mostrar la nueva ubicación del punto. Si se hace doble clic al final de una agrupación parentética o de un delimitador de cadena final, el punto se mantiene por defecto al final de la región, por lo que el principio de la región no será visible si se encuentra por encima de la parte superior de la ventana; si se establece la opción de Usuario mouse-select-region-move-to-beginning (seleccionar región con el ratón-mover al principio) a un valor distinto de cero, el punto se moverá al principio de la región, desplazando la pantalla hacia atrás si es necesario.

doble-clic-ratón-1-arrastrar

Selecciona el texto que arrastre, en unidades de palabras enteras.

triple-clic-ratón-1

Seleccione la línea en la que hace clic.

tripe-clic-ratón-1-arrastrar

Selecciona el texto que arrastra, en unidades de líneas enteras.

22.3 Seguir Referencias con el Ratón

Algunos búferes de Emacs incluyen botones, o hipervínculos: fragmentos de texto que realizan alguna acción (por ejemplo, seguir una referencia) cuando se activan (por ejemplo, pulsando sobre ellos). Normalmente, el texto de un botón se resalta visualmente: aparece subrayado o se dibuja un recuadro a su alrededor. Si pasa el ratón por encima de un botón, la forma del cursor cambia y el botón se ilumina. Si cambia la variable mouse-highlight a nil, Emacs desactiva este resaltado.

Puede activar un botón moviendo el puntero sobre él y escribiendo RETURN (RET), o pulsando con ratón-1 o ratón-2 sobre el botón. Por ejemplo, en un búfer Dired, cada nombre de archivo es un botón; activarlo hace que Emacs visite ese archivo (ver 21 Varias Ventanas). En un búfer *Compilation*, cada mensaje de error es un botón, y al activarlo se visita el código fuente de ese error (ver 28.1 Ejecutar Compiladores en Emacs).

Aunque pulsar con ratón-1 sobre un botón normalmente activa el botón, si mantiene pulsado el botón del ratón durante un periodo de tiempo antes de soltarlo (concretamente, durante más de 450 milisegundos), entonces Emacs mueve el punto donde ha pulsado, sin activar el botón. De esta forma, puede utilizar el ratón para mover el punto sobre un botón sin activarlo. Arrastrar el ratón sobre o hacia un botón tiene su comportamiento habitual de fijar la región, y no activa el botón.

Puede cambiar cómo se aplica ratón-1 a los botones personalizando la variable mouse-1-click-follows-link. Si el valor es un entero positivo, esto determina cuánto tiempo necesita mantener pulsado el botón del ratón, en milisegundos, para cancelar la activación del botón; el valor por defecto es 450, como se describe en el párrafo anterior. Si el valor es nil, ratón-1 sólo fija el punto donde se hizo clic, y no activa los botones. Si el valor es double, los clics dobles activan los botones, pero los clics simples sólo fijan el punto.

Normalmente, ratón-1 en un botón activa el botón incluso si está en una ventana no seleccionada. Si cambia la variable mouse-1-click-in-non-selected-windows a nil, ratón-1 sobre un botón en una ventana no seleccionada mueve el punto a la posición del clic y selecciona esa ventana, sin activar el botón.

22.4 Clics de Ratón para Menús

Varias pulsaciones del ratón con los modificadores Ctrl y SHIFT hacen aparecer menús.

C-ratón-1

Este menú sirve para seleccionar un búfer.

El modo menor global MSB («mouse select buffer», selección de búfer con el ratón) hace que este menú sea más inteligente y personalizable. Véase 20.7.3 Personalización de los Menús del Búfer.

C-ratón-2

Este menú contiene entradas para examinar las caras y otras propiedades del texto, así como para ajustarlas (esto último es útil sobre todo al editar texto enriquecido; véase 26.14 Texto enriquecido).

C-ratón-3

Este menú es específico de cada modo. En la mayoría de los modos, si el modo Barra de menús está activado, este menú tiene los mismos elementos que todos los menús de la barra de menús específicos de cada modo juntos. Algunos modos pueden especificar un menú diferente para este botón. Si el modo Barra de menús está desactivado, este menú contiene todos los elementos que estarían presentes en la barra de menús -no sólo los específicos de cada modo- para que pueda acceder a ellos sin tener que mostrar dicha barra.

Shift-ratón-1

Este menú sirve para cambiar la cara por defecto dentro del búfer de la ventana. Véase 15.12 Escala de Texto.

Muchas aplicaciones GUI usan mouse-3 para mostrar menús contextuales: menús que proporcionan acceso a varios ajustes y acciones pertinentes para la localización y el contexto del clic del ratón. Si prefiere esto en Emacs a la función por defecto de mouse-3, que está ligada al comando mouse-save-then-kill (ver 15.12 Escala de Texto), puede activar el modo menor context-menu-mode. Entonces Emacs mostrará menús contextuales cuando pulse ratón-3. El contenido exacto de estos menús contextuales depende del modo mayor actual y del contenido del búfer alrededor del lugar donde pulsa el ratón. Para personalizar los contenidos del menú contextual, puede usar la variable context-menu-functions (ver Convenciones del Modo Mayor en el Manual de Referencia de Emacs Lisp). También puede invocar el menú contextual pulsando Shift-F10 (S-F10).

22.5 Comandos del Ratón en la Línea de Modo

Puede usar los clics del ratón en las líneas de modo de ventana para seleccionar y manipularlas.

Algunas áreas de la línea de modo, como el nombre del búfer y los nombres de los modos mayor y menor, tienen sus propios enlaces especiales del ratón. Estas áreas se resaltan cuando se mantiene el ratón sobre ellas, y se mostrará información sobre los enlaces especiales (ver 22.19 Sugerencias sobre Herramientas (Tooltips)). Los comandos de esta sección no se aplican en esas áreas.

ratón-1

ratón-1 sobre una línea de modo selecciona la ventana a la que pertenece. Arrastrando ratón-1 sobre la línea de modo, puede moverla, cambiando así la altura de las ventanas por encima y por debajo. Al cambiar la altura con el ratón de esta manera nunca se borran ventanas, sólo se niega a hacer cualquier ventana más pequeña que la altura mínima.

ratón-2

ratón-2 en una línea de modo expande esa ventana para llenar su marco.

ratón-3

ratón-3 sobre una línea de modo borra la ventana a la que pertenece. Si el marco sólo tiene una ventana, no hace nada.

Ctrl-ratón-2 (C-ratón-2)

C-ratón-2 en una línea de modo divide esa ventana, produciendo dos ventanas una al lado de la otra con el límite pasando por la posición del clic (ver 21.2 Ventanas Divididas).

Además, haciendo clic y arrastrando ratón-1 en el divisor entre dos líneas de modo contiguas, puede mover el límite vertical a la izquierda o a la derecha.

Tenga en cuenta que el cambio de tamaño de las ventanas se ve afectado por el valor de window-resize-pixelwise, véase 21.2 Ventanas Divididas.

22.6 Creación de Marcos

La tecla de prefijo Ctrl-x 5 (C-x 5) es análoga a Ctrl-x 4 (C-x 4). Mientras que cada comando C-x 4 abre un búfer en una ventana diferente del marco seleccionado (véase 21.4 Visualización en Otra Ventana), los comandos C-x 5 usan un marco diferente. Si un marco existente visible o iconificado (también conocido como «minimizado», ver Visibilidad de Marcos en el Manual de Referencia de Emacs Lisp) ya muestra el búfer solicitado, ese marco es levantado y deiconificado («des-minimizado»); de lo contrario, un nuevo marco es creado en el terminal de visualización actual.

Los distintos comandos C-x 5 difieren en cómo encuentran o crean el búfer a seleccionar:

Ctrl-x 52 (C-x 5 2)

Crea un nuevo marco usando los parámetros por defecto del marco (make-frame-command).

Ctrl-x 5c (C-x 5 c)

Crea un nuevo marco usando la configuración de la ventana y los parámetros del marco actual (clone-frame).

Ctrl-x 5b nombrebúfer RETURN (C-x 5 b nombrebúfer RET)

Selecciona el búfer nombrebúfer en otro marco. Esto ejecuta switch-to-buffer-other-frame.

Ctrl-x 5f nombrearchivo RETURN (C-x 5 f nombrearchivo RET)

Visita el archivo nombrearchivo y selecciona su búfer en otro marco. Esto ejecuta find-file-other-frame (buscar-archivo-otro-marco). Véase 19.2 Visitar Archivos.

Ctrl-x 5d directorio RETURN (C-x 5 d directorio RET)

Selecciona un búfer Dired para el directorio en otro marco. Esto ejecuta dired-other-frame (directorio-otro-marco). Véase 31 Dired, el Editor de Directorios.

Ctrl-x 5m (C-x 5 m)

Comienza a redactar un mensaje de correo en otro marco. Esto ejecuta compose-mail-other-frame (componer-correo-otro-marco). Es la variante para otro marco de C-x m. Véase 33 Envío de Correo.

Ctrl-x 5. (C-x 5 .)

Encuentra la definición de un identificador en otro marco. Esto ejecuta xref-find-definitions-other-frame, la variante de marcos múltiples de Alt-. (M-.). Véase 29.4 Buscar Referencias de Identificador.

Ctrl-x 5r (C-x 5 r nombrearchivo RET)

Visita el archivo nombrearchivo de sólo lectura, y selecciona su búfer en otro marco. Esto ejecuta find-file-read-only-other-frame. Véase 19.2 Visitar Archivos.

Ctrl-x 55 (C-x 5 5)

Un comando prefijo más general que afecta al búfer mostrado por el siguiente comando invocado inmediatamente después de este comando prefijo (other-frame-prefix). Solicita que el búfer del siguiente comando se muestre en otro marco.

Puede controlar la apariencia y el comportamiento de los marcos recién creados especificando parámetros de marco. Consulte 22.11 Parámetros de Marco.

22.7 Comandos de Marco

Los siguientes comandos se usan para borrar y operar sobre marcos:

Ctrl-x 50 (C-x 5 0)

Elimina el marco seleccionado (delete-frame). Esto indica un error si sólo hay un marco.

Ctrl-x 5u (C-x 5 u)

Cuando se activa el modo undelete-frame-mode, se recupera uno de los 16 marcos eliminados más recientemente. Sin un argumento de prefijo, recupera el último marco eliminado. Con un prefijo numérico entre 1 y 16, donde 1 es el último marco borrado, se borra el marco correspondiente.

Ctrl-z (C-z)

Minimiza (o iconifica) el marco de Emacs seleccionado (suspend-frame, suspender-marco). Ver 7 Cómo Salir de Emacs.

Ctrl-x 5o (C-x 5 o)

Selecciona otro marco y lo levanta. Si repite este comando, recorre todos los marcos de su terminal.

Ctrl-x 51 (C-x 5 1)

Borra todos los marcos del terminal actual, excepto el seleccionado.

Alt-F10 (M-F10)

Cambia el estado de maximización del marco actual. Cuando un marco está maximizado, ocupa toda la pantalla.

F11 (F11)

Activa el modo de pantalla completa para el marco actual. (La diferencia entre pantalla completa y maximizada es normalmente que la primera oculta las decoraciones del gestor de ventanas, dando algo más de espacio de pantalla al propio Emacs).

Tenga en cuenta que con algunos gestores de ventanas puede que tenga que personalizar la variable frame-resize-pixelwise a un valor no nulo para que un marco quede realmente maximizado o a pantalla completa. Esta variable, cuando se establece a un valor no nulo, en general permite redimensionar marcos a resolución de píxel, en lugar de en múltiplos integrales de líneas y columnas.

El comando C-x 5 0 (delete-frame, borrar marco) borra el marco seleccionado. Sin embargo, se negará a borrar el último marco de una sesión Emacs, para evitar que pierda la capacidad de interactuar con la sesión Emacs. Tenga en cuenta que cuando Emacs se ejecuta como demonio (vea 40 Usar Emacs Como Servidor), siempre hay un marco virtual que permanece después de que todos los marcos interactivos ordinarios son borrados. En este caso, C-x 5 0 puede borrar el último marco interactivo; puedes usar emacsclient para reconectar con la sesión de Emacs.

El comando C-x 5 1 (delete-other-frames) borra todos los otros marcos en la terminal actual (esta terminal se refiere tanto a una pantalla gráfica, como a una terminal de texto; ver 22.21 Terminales sin Ventana). Si la sesión Emacs tiene marcos abiertos en otras pantallas gráficas o terminales de texto, éstos no se borran.

El comando C-x 5 o (other-frame) selecciona el siguiente marco en el terminal actual. Si está usando Emacs en el sistema X Window con un gestor de ventanas que selecciona (o da foco) a cualquier marco sobre el que esté el cursor del ratón, tiene que cambiar la variable focus-follows-mouse a t para que este comando funcione correctamente. Entonces invocar C-x 5 o también deformará el cursor del ratón en el marco elegido.

22.8 Fuentes

Por defecto, Emacs muestra el texto en pantallas gráficas usando una fuente monospace de 10 puntos, y el tamaño de la fuente puede cambiarse interactivamente (ver 15.12 Escala de Texto).

Hay varias formas de especificar una fuente diferente:

  • Haga clic en Set Default Font (Establecer fuente predeterminada) en el menú Options (Opciones). De este modo, la fuente seleccionada será la predeterminada en todos los marcos gráficos existentes. Para guardar esta opción para futuras sesiones, haga clic en Save Options (Guardar opciones) en el menú Options (Opciones).

  • Añada una línea a su archivo init, modificando la variable default-frame-alist para especificar el parámetro de fuente (ver:ref:22.11), de esta manera:

    (add-to-list 'default-frame-alist
    '(font . "DejaVu Sans Mono-10"))
    

Esto hace que la fuente sea la predeterminada en todos los marcos gráficos creados después de reiniciar Emacs con ese archivo init.

  • Añade una configuración de recursos X emacs.font a su archivo de recursos X, así:

    emacs.font: DejaVu Sans Mono-12
    

Debe reiniciar X, o usar el comando xrdb, para que el archivo de recursos X surta efecto. Consulte D.1 Recursos X. No entrecomille los nombres de las fuentes en los archivos de recursos X.

  • Si está ejecutando Emacs en el escritorio GNOME o Haiku, puede decirle a Emacs que ajuste la fuente por defecto del marco junto con los cambios en la fuente por defecto del sistema, estableciendo la variable font-use-system-font a t (por defecto es nil). Para que esto funcione, Emacs debe haber sido compilado con soporte para Gsettings (o el antiguo Gconf). (Para ser específicos, los nombres de configuración Gsettings usados son org.gnome.desktop.interface monospace-font-name y org.gnome.desktop.interface font-name).

  • Usar la opción de línea de comandos -fn (o --font). Consulte C.6 Opciones de Especificación de Fuentes.

Para comprobar qué fuente está usando actualmente, el comando C-u C-x = puede ser útil. Describe el carácter en el punto, y nombra la fuente en la que está representado.

Hay cuatro formas diferentes de expresar el nombre de una fuente. La primera es usar un patrón Fontconfig. Los patrones Fontconfig tienen la siguiente forma:

fontname[-fontsize][:name1=values1][:name2=values2]...

En este formato, cualquiera de los elementos entre paréntesis puede omitirse. Aquí, fontname es el nombre de la familia de la fuente, como Monospace o DejaVu Sans Mono; fontsize es el tamaño en puntos de la fuente (un punto de impresora es aproximadamente 1/72 de pulgada); y las entradas name=values especifican ajustes como la inclinación y el peso de la fuente. Cada valor puede ser un único valor o una lista de valores separados por comas. Además, algunos valores de propiedad sólo son válidos con un tipo de nombre de propiedad, en cuyo caso puede omitirse la parte name=.

Esta es una lista de las propiedades más comunes de las fuentes:

slant (inclinada)

Una de las opciones italic (cursiva), oblique (oblicua) o roman.

weight (peso)

Una de las siguientes opciones: light (liviana), medium (peso medio), demibold (casi como fuente negrita), bold (negrita) o black.

style (estilo)

Algunas fuentes definen estilos especiales que son una combinación de inclinación y peso. Por ejemplo, Dejavu Sans define el estilo book, que anula las propiedades de inclinación y peso.

width (ancho)

Uno de los siguientes: condensed (condensado), normal o expanded (ampliado).

spacing (espaciado)

Una de las siguientes opciones: monospace (monoespaciada), proportional (proporcional), dual-width (doble ancho) o charcell.

Estos son algunos ejemplos de patrones de Fontconfig:

Monospace
Monospace-12
Monospace-12:bold
DejaVu Sans Mono:bold:italic
Monospace-12:weight=bold:slant=italic

Para una descripción más detallada de los patrones de Fontconfig, consulte el manual de Fontconfig, que se distribuye con Fontconfig y está disponible en línea en https://fontconfig.org/fontconfig-user.html.

En MS-Windows, sólo el subconjunto de la forma fontname[-fontsize] está soportado para todas las fuentes; el patrón Fontconfig completo podría no funcionar para todas ellas.

La segunda forma de especificar una fuente es usar un patrón de fuente GTK. Estos tienen la sintaxis

fontname [properties] [fontsize]
nombrefuente [propiedades] [tamañofuente]

donde fontname es el nombre de la familia, properties es una lista de valores de propiedades separados por espacios, y fontsize es el tamaño de letra. Las propiedades que puede especificar para los patrones de fuentes GTK son las siguientes:

  • Propiedades de inclinación: Italic u Oblique. Si se omite, se aplica la inclinación por defecto (roman).

  • Propiedades de peso: Bold, Book, Light, Medium, Semi-bold o Medium. Si se omite, se utilizará el peso Medium.

  • Propiedades de anchura: Semi-condensed o Condensed. Si se omite, se usa un ancho por defecto.

He aquí algunos ejemplos de patrones de fuentes GTK:

Monospace 12
Monospace Bold Italic 12

En MS-Windows, sólo se admite el subconjunto fontname.

La tercera forma de especificar una fuente es usar un XLFD (X Logical Font Description, Descripción de fuente lógica para X). Este es el método tradicional para especificar fuentes en X, y también es compatible con MS-Windows. Cada XLFD consta de catorce palabras o números, separados por guiones, de la siguiente manera:

misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1

Un carácter comodín (*) en un XLFD coincide con cualquier secuencia de caracteres (incluida ninguna), y ? coincide con cualquier carácter único. Sin embargo, la coincidencia depende de la implementación y puede ser imprecisa cuando los comodines coinciden con guiones en un nombre largo. Para obtener resultados fiables, introduzca los 14 guiones y use comodines sólo dentro de un campo. Las mayúsculas y minúsculas son insignificantes en un XLFD. La sintaxis de un XLFD es la siguiente:

-maker-family-weight-slant-widthtype-style…
…-pixels-height-horiz-vert-spacing-width-registry-encoding

Las entradas tienen los siguientes significados:

maker (fabricante)

El nombre del fabricante de la fuente.

family (familia)

El nombre de la familia de fuentes (por ejemplo, “courier”).

weight (peso)

Peso de la fuente, normalmente bold (negrita), medium (media) o medium (mediana). Algunos nombres de fuentes admiten otros valores.

slant (inclinación)

La inclinación de la fuente, normalmente r (roman, romana), i (italic, cursiva), o (oblique, oblicua), ri (reversic italic, cursiva inversa) u ot (other, otra). Algunos nombres de fuentes admiten otros valores.

widthtype (tipo de ancho)

La anchura de la fuente, normalmente normal, condensed (condensada), semicondensed (semicondensada) o extended (extendida). Algunos nombres de fuentes admiten otros valores.

style (estilo)

Un nombre de estilo adicional opcional. Normalmente está vacío; la mayoría de los XLFD tienen dos guiones seguidos en este punto. El nombre del estilo también puede especificar un nombre de idioma ISO-639 de dos letras, como ja o ko; algunas fuentes que admiten los alfabetos CJK lo tienen escrito en la parte del nombre del estilo.

pixels

Altura de la fuente, en píxeles.

height (altura)

La altura de la fuente en la pantalla, medida en décimas de punto de impresora. Es el tamaño en puntos de la fuente, multiplicado por diez. Para una resolución vertical dada, la altura y los píxeles son proporcionales; por lo tanto, es habitual especificar sólo uno de ellos y usar * para el otro.

horiz

La resolución horizontal, en píxeles por pulgada, de la pantalla a la que está destinada la fuente.

vert

La resolución vertical, en píxeles por pulgada, de la pantalla para la que está pensada la fuente. Normalmente, la resolución de las fuentes en su sistema es el valor correcto para su pantalla; por lo tanto, normalmente se especifica * para esto y horiz.

spacing (espaciado)

Es m (monospace, monoespaciada), p (proportional, proporcional) o c (character cell, celda de caracter).

width (ancho)

El ancho medio de los caracteres, en píxeles, multiplicado por diez.

registry (registro)
encoding (codificación)

El juego de caracteres X font que representa la fuente. (Los juegos de caracteres de X font no son los mismos que los de Emacs, pero son similares). Puedes usar el programa xfontsel para comprobar qué opciones tienes. Normalmente debería usar iso8859 para el registro y 1 para la codificación.

El cuarto y último método para especificar una fuente es usar un apodo de fuente. Algunas fuentes tienen apodos más cortos, que puede usar en lugar de una especificación de fuente normal. Por ejemplo, 6x13 equivale a

-misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1

Esta forma no está soportada en MS-Windows.

En X, Emacs reconoce dos tipos de fuentes: fuentes del lado del cliente, que son proporcionadas por las bibliotecas Xft y Fontconfig, y fuentes del lado del servidor, que son proporcionadas por el servidor X mismo. La mayoría de las fuentes del lado del cliente soportan características avanzadas como antialiasing y subpixel hinting, mientras que las fuentes del lado del servidor no. Fontconfig y los patrones GTK sólo coinciden con las fuentes del lado del cliente.

Probablemente querrá usar una fuente predeterminada de ancho fijo, es decir, una fuente en la que todos los caracteres tengan el mismo ancho. Para las fuentes Xft y Fontconfig, puede usar el comando fc-list para listar las fuentes de ancho fijo disponibles, de esta forma:

fc-list :spacing=mono
fc-list :spacing=charcell

Para las fuentes X del lado del servidor, puede usar el programa xlsfonts para listar las fuentes de ancho fijo disponibles, de la siguiente manera:

xlsfonts -fn '*x*' | grep -E '^[0-9]+x[0-9]+'
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-m*'
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-c*'

Cualquier fuente con m o c en el campo de espaciado del XLFD es una fuente de ancho fijo. Para ver el aspecto de un determinado tipo de letra, use el comando xfd. Por ejemplo:

xfd -fn 6x13

muestra la fuente completa 6x13.

Mientras ejecuta Emacs, también puede establecer el tipo de letra de un tipo de texto específico (véase 15.8. Caras de Texto), o de un marco en particular (véase 22.11 Parámetros de Marco).

22.9 Marcos con Speedbar (con barra de control o barra rápida)

La barra speedbar es un marco especial para navegar u operar cómodamente en otro marco. Cuando existe, siempre está asociada a un marco específico, llamado marco adjunto; todas las operaciones de Speedbar actúan sobre ese marco.

Escriba Alt-x speedbar (M-x speedbar) para crear una speedbar (una barra de control) y asociarla al marco actual. Para desactivarla, teclee Alt-x speedbar (``M-x speedbar) de nuevo, o selecciónela y teclee q (q). (También puede borrar el marco de speedbar como cualquier otro marco de Emacs.) Si desea asociar speedbar a un marco diferente, desactívelo y llame a M-x speedbar desde ese marco.

La barra de control puede funcionar en varios modos. Su modo por defecto es el de Visualización de Archivos, que muestra los archivos del directorio actual de la ventana seleccionada del marco adjunto, un archivo por línea. Al hacer clic en un archivo que no sea un directorio, se visita ese archivo en la ventana seleccionada del marco adjunto, y al hacer clic en un directorio se muestra ese directorio en la barra de control (véase 22.3 Seguir Referencias con el Ratón). Cada línea tiene también un recuadro, [+] o <+>, en el que puede hacer clic para ampliar el contenido de ese elemento. Al desplegar un directorio, su contenido se muestra en la barra de direcciones, debajo de la línea del directorio. Al desplegar un archivo normal, se muestra una lista de las etiquetas de ese archivo en la barra de velocidad; puede hacer clic en el nombre de una etiqueta para saltar a esa etiqueta en la ventana seleccionada del marco adjunto. Cuando se expande un archivo o directorio, el signo [+] cambia a [-]; puedes hacer clic en esa casilla para contraer el elemento, ocultando su contenido.

También se puede navegar por la barra rápida usando el teclado. Escribir RETURN (RET) mientras el punto está en una línea de dicha barra equivale a hacer clic en el elemento de la línea actual, y SPACE (SPC) expande o contrae el elemento. U muestra el directorio padre del directorio actual. Para copiar, borrar o renombrar el fichero en la línea actual, teclee C (C), D (D) y R (R) respectivamente. Para crear un nuevo directorio, escriba M (M).

Otro modo de uso general de Speedbar es el modo de visualización de búferes; en este modo, speedbar muestra una lista de los búferes de Emacs. Para cambiar a este modo, teclee b (b) en la barra de control. Para volver al modo de visualización de archivos, teclee f (f). También puede cambiar el modo de visualización pulsando con ratón-3 en cualquier lugar de la ventana de Speedbar (o con ratón-1 en la línea de modo) y seleccionando Displays en el menú emergente.

Algunos modos principales, incluyendo el modo Rmail, Info y GUD, tienen formas específicas de poner elementos útiles en speedbar para que los seleccione. Por ejemplo, en el modo Rmail, la barra muestra una lista de archivos Rmail y permite mover el mensaje actual a otro archivo Rmail haciendo clic en su casilla <M>.

Para más detalles sobre cómo usar y programar speedbar, consulte Speedbar en el Manual de Speedbar.

22.10. Múltiples Pantallas

Un único Emacs puede comunicarse con más de una pantalla X. Inicialmente, Emacs usa sólo una pantalla-la especificada con la variable de entorno DISPLAY o con la opción --display (ver C.2 Opciones Iniciales). Para conectar con otra pantalla, use el comando make-frame-on-display:

Alt-x make-frame-on-display RETURN pantalla RETURN
M-x make-frame-on-display RET display RET

Crea un nuevo marco en la pantalla de visualización.

Un único servidor X puede manejar más de una pantalla. Cuando se abren marcos en dos pantallas pertenecientes a un servidor, Emacs sabe que comparten un único teclado, y trata todos los comandos que llegan desde estas pantallas como un único flujo de entrada.

Cuando se abren marcos en diferentes servidores X, Emacs hace un flujo de entrada separado para cada servidor. Cada servidor también tiene su propio marco seleccionado. Los comandos que introduzca con un servidor X en particular se aplican al marco seleccionado de ese servidor.

En pantallas multimonitor es posible usar el comando make-frame-on-monitor:

Alt-x make-frame-on-monitor RETURN monitor RETURN
M-x make-frame-on-monitor RET monitor RET

Crea un nuevo marco en el monitor cuya área de pantalla forme parte de la presentación actual.

22.11 Parámetros de Marco

Puede controlar la apariencia y el comportamiento por defecto de todos los marcos especificando una lista por defecto de parámetros de marco en la variable default-frame-alist. Su valor debe ser una lista de entradas, cada una especificando un nombre de parámetro y un valor para ese parámetro. Estas entradas tienen efecto cada vez que Emacs crea un nuevo marco, incluyendo el marco inicial.

Por ejemplo, puede añadir las siguientes líneas a su archivo init (vea 50.4. El Archivo de Inicialización de Emacs) para establecer la anchura del marco por defecto a 90 columnas de caracteres, la altura del marco por defecto a 40 filas de caracteres, y la fuente por defecto a Monospace-10:

(add-to-list 'default-frame-alist '(width  . 90))
(add-to-list 'default-frame-alist '(height . 40))
(add-to-list 'default-frame-alist '(font . "Monospace-10"))

Para una lista de parámetros de marco y sus efectos, vea Parámetros de Marco en el Manual de Referencia de Emacs Lisp.

También puede especificar una lista de parámetros de marco que se apliquen sólo al marco inicial, personalizando la variable initial-frame-alist.

Si Emacs está compilado para usar un juego de herramientas X, los parámetros de marco que especifican colores y fuentes no afectan a los menús y a la barra de menús, ya que éstos son dibujados por el juego de herramientas y no directamente por Emacs.

La apariencia y el comportamiento de los marcos también pueden personalizarse a través de los recursos X (ver D.1 Recursos X); estos anulan los parámetros del marco inicial especificado en su archivo de inicio.

Tenga en cuenta que si está usando la biblioteca de escritorio para guardar y restaurar sus sesiones, los marcos a restaurar se registran en el archivo de escritorio, junto con sus parámetros. Cuando estos marcos son restaurados, los parámetros grabados tienen prioridad sobre los parámetros de marco especificados por default-frame-alist y initial-frame-alist en su archivo init. Vea 45 Guardar Sesiones de Emacs, para saber cómo evitarlo.

22.12. Barras de Desplazamiento

En las pantallas gráficas, hay una barra de desplazamiento vertical en el lateral de cada ventana de Emacs. Pulsando con ratón-1 sobre los botones arriba y abajo de la barra de desplazamiento se desplaza la ventana una línea cada vez (pero algunos paquetes de herramientas (toolkits) permiten personalizar las barras de desplazamiento para que no tengan esos botones). Al hacer clic con ratón-1 por encima o por debajo de la caja interior de la barra de desplazamiento, la ventana se desplaza casi toda la altura de la ventana, como M-v y C-v respectivamente (véase 8.2 Cambiar la Ubicación del Punto). (Esto también puede comportarse de forma diferente con algunos kits de herramientas). Arrastrando la caja interior se desplaza continuamente.

Si Emacs está compilado en el Sistema X Window sin soporte para toolkit X, la barra de desplazamiento se comporta de forma diferente. Pulsando con ratón-1 en cualquier lugar de la barra de desplazamiento se desplaza hacia delante como C-v, mientras que con ratón-3 se desplaza hacia atrás como M-v. Haciendo clic con ratón-2 en la barra de desplazamiento puede arrastrar la caja interior hacia arriba y hacia abajo.

Para usar la barra de desplazamiento vertical, escriba Alt-x scroll-bar-mode (M-x scroll-bar-mode). Este comando se aplica a todos los marcos, incluidos los que aún no se han creado. Para usar la barra de desplazamiento sólo en el marco seleccionado, use el comando M-x toggle-scroll-bar.

Para controlar el uso de las barra de desplazamiento vertical al inicio, personalice la variable scroll-bar-mode (véase 50 Personalización). Su valor debe ser o bien right (poner la barra de desplazamiento a la derecha de las ventanas), left (ponerla a la izquierda), o nil (deshabilitar la barra de desplazamiento vertical). Por defecto, Emacs pone la barra de desplazamiento a la derecha si fue compilado con soporte GTK+ en el Sistema X Window, y en MS-Windows o macOS; Emacs pone la barra de desplazamiento a la izquierda si fue compilado en el Sistema X Window sin soporte GTK+ (siguiendo la antigua convención para aplicaciones X).

También puede usar el recurso X verticalScrollBars para activar o desactivar las barras de desplazamiento (ver D.1 Recursos X). Para controlar el ancho de la barra de desplazamiento, cambia el parámetro de marco scroll-bar-width (ver Parámetros de Marco en el Manual de Referencia de Emacs Lisp).

Si usa Emacs en X (con GTK+ o Motif), puede personalizar la variable scroll-bar-adjust-thumb-portion para controlar el sobredesplazamiento de la barra de desplazamiento, es decir, arrastrar el pulgar hacia abajo incluso cuando el final del búfer es visible. Si su valor es no nulo, la barra de desplazamiento puede arrastrarse hacia abajo aunque se muestre el final del búfer; si es nulo, el pulgar estará en la parte inferior cuando se muestre el final del búfer. No se puede avanzar o retroceder cuando todo el búfer está visible.

El aspecto visual de las barras de desplazamiento se controla mediante la cara scroll-bar (barra de desplazamiento). (Algunos toolkits, como GTK+ y MS-Windows, ignoran esta cara; el aspecto de la barra de desplazamiento sólo puede personalizarse en todo el sistema; para GTK+, véanse D.5 Recursos GTK).

En los marcos gráficos, la barra de desplazamiento vertical sirve implícitamente para separar visualmente las ventanas contiguas. Cuando las barras de desplazamiento vertical están desactivadas, Emacs separa por defecto dichas ventanas con la ayuda de un borde vertical de un píxel de ancho. Ese borde ocupa la primera columna de píxeles de la ventana de la derecha y, por tanto, puede sobredibujar los píxeles más a la izquierda de cualquier pictograma que se muestre allí. Si estos píxeles transmiten información importante, puede hacerlos visibles activando los divisores de ventana, véase Divisores de Ventanas en El Manual de Referencia de Lisp. Para replicar el aspecto de los bordes verticales, establezca el parámetro right-divider-width de los marcos a uno y haga que la cara del divisor de ventana herede de la función vertical-border, Divisores de Ventanas en El Manual de Referencia de Lisp.

En pantallas gráficas con soporte para toolkits (caja de herramientas), Emacs también puede proporcionar una barra de desplazamiento horizontal en la parte inferior de cada ventana. Pulsando con ratón-1 sobre los botones izquierdo y derecho de la barra de desplazamiento, la ventana se desplaza horizontalmente una columna cada vez. (Tenga en cuenta que algunos kits de herramientas permiten personalizaciones de la barra de desplazamiento que hacen que estos botones no se muestren). Al hacer clic con ratón-1 a la izquierda o a la derecha del cuadro interior de la barra de desplazamiento, la ventana se desplaza cuatro columnas. Si se arrastra el cuadro interior, la ventana se desplaza de forma continua.

Tenga en cuenta que este desplazamiento horizontal puede hacer desaparecer la posición del punto de la ventana a la izquierda o a la derecha. Si escribe un carácter para insertar texto o mueve el punto con un comando del teclado, normalmente volverá a verlo.

Para usar las barras de desplazamiento horizontal, escriba Alt-x horizontal-scroll-bar-mode (M-x horizontal-scroll-bar-mode). Este comando se aplica a todos los marcos, incluidos los que aún no se han creado. Para usar las barras de desplazamiento horizontal sólo en el marco seleccionado, use el comando M-x toggle-horizontal-scroll-bar.

Para controlar el uso de barra de desplazamiento horizontal al inicio, personalice la variable horizontal-scroll-bar-mode.

También puede usar el recurso X horizontalScrollBars para activar o desactivar las barras de desplazamiento horizontal (ver D.1 Recursos X). Para controlar la altura de la barra de desplazamiento, cambia el parámetro de marco scroll-bar-height (ver Parámetros de Marco en el Manual de Referencia de Emacs Lisp).

22.13 Separadores de Ventanas

En pantallas gráficas, puede usar separadores de ventanas para separarlas visualmente. Los divisores de ventanas son barras que pueden arrastrarse con el ratón, lo que permite cambiar fácilmente el tamaño de las ventanas adyacentes.

Para cambiar la visualización de estos separadores, use el comando M-x window-divider-mode.

Para personalizar dónde deben aparecer los divisores, use la opción window-divider-default-places. Su valor debe ser bottom-only (para mostrar los divisores sólo en la parte inferior de las ventanas), right-only (para mostrar los divisores sólo en la parte derecha de las ventanas) o t (para mostrarlos en la parte inferior y en la derecha).

Para ajustar el ancho de los separadores de ventana mostrados por este modo, personalice las opciones window-divider-default-bottom-width y window-divider-default-right-width.

Cuando las barra de desplazamiento vertical está deshabilitadas, los separadores también pueden ser útiles para hacer visible la primera columna de píxeles de una ventana, que de otro modo quedaría cubierta por el borde vertical usado para separar las ventanas de lado a lado (ver 22.12. Barras de Desplazamiento Barras de Desplazamiento).

Para más detalles sobre los divisores de ventanas, véase Divisores de Ventanas en el Manual de Referencia de Emacs Lisp.

22.14 Arrastrar y Soltar

En la mayoría de los entornos gráficos de escritorio, Emacs tiene soporte básico para operaciones de arrastrar y soltar. Por ejemplo, soltar texto sobre un marco Emacs es insertar el texto donde se suelta. Soltar un archivo en un marco de Emacs visita ese archivo. Como caso especial, soltar el archivo en un búfer Dired mueve o copia el archivo (según las convenciones de la aplicación de la que procede) en el directorio mostrado en ese búfer.

Al soltar un archivo, normalmente se visita en la ventana en la que se suelta. Si prefiere visitar el archivo en una nueva ventana en estos casos, personalice la variable dnd-open-file-other-window.

Actualmente se soportan los protocolos de arrastrar y soltar XDND y Motif, y el antiguo protocolo KDE 1.x.

Puede ser difícil desplazar una ventana o determinar dónde se insertará el texto soltado mientras se arrastra dicho texto a una ventana de Emacs. Establecer la opción dnd-indicate-insertion-point a un valor no nulo hace que el punto se mueva a la ubicación en la que se insertará cualquier texto soltado cuando el ratón se mueva en una ventana durante el arrastre, y establecer dnd-scroll-margin a un valor entero hace que una ventana se desplace si el ratón se mueve dentro de ese número de líneas de la parte superior o inferior de la ventana durante el arrastre.

Emacs también puede opcionalmente arrastrar la región con el ratón a otra porción de este u otro búfer. Para activar eso, personalice la variable mouse-drag-and-drop-region a un valor no nulo. Normalmente, el texto se mueve, es decir, se corta y se pega, cuando el destino es el mismo búfer que el origen; si se suelta la región en otro búfer, se copia el texto en su lugar. Si el valor de esta variable nombra una tecla modificadora, como shift, control o alt, al pulsar esa tecla modificadora al soltar el texto se copiará en lugar de cortarse, aunque se suelte en el mismo búfer del que procedía el texto.

Para cortar el texto incluso cuando los búferes de origen y destino difieren, establezca la opción mouse-drag-and-drop-region-cut-when-buffers-differ en un valor no nulo. Por defecto, en una pantalla gráfica el texto seleccionado se muestra en un tooltip (sugerencia) y el punto se mueve junto con el cursor del ratón durante el arrastre. Para suprimir este comportamiento, establezca las opciones mouse-drag-and-drop-region-show-tooltip y/o mouse-drag-and-drop-region-show-cursor en nil.

Para arrastrar texto desde Emacs a otros programas, establezca la opción mouse-drag-and-drop-region-cross-program a un valor no nulo.

En el sistema de ventanas X, algunos programas pueden soltar archivos en Emacs, esperando que este los guarde. Normalmente, el Editor preguntará por un nombre de archivo bajo el cual el archivo será guardado, y luego abrirá el archivo, pero ese comportamiento puede ser cambiado cambiando la variable x-dnd-direct-save-function. Ver Arrastrar y Soltar en el Manual de Referencia de Emacs Lisp.

22.15 Barras de Menús

Puede usar la barra de menús con M-x menu-bar-mode. Sin argumento, este comando activa el modo Menu Bar (Barra de Menú), un modo global menor. Con un argumento, el comando activa el modo Barra de Menú si el argumento es positivo, lo desactiva si el argumento no es positivo. Para controlar el uso de dicha barra al inicio, personalice la variable menu-bar-mode.

Los Usuarios expertos a menudo desactivan la barra de menú, especialmente en terminales de texto, donde esto hace que haya una línea adicional disponible para texto. Si la barra de menús está desactivada, puede abrir un menú con su contenido con Ctrl-ratón-3 (C-ratón-3) en una pantalla que admita menús emergentes. O puede activar el modo menú contextual y personalizar la variable context-menu-functions para que aparezca un menú contextual con mouse-3. Ver 22.4 Clics de Ratón para Menús.

Consulte 1.4 La Barra de Menús La Barra de Menús, para obtener información sobre cómo invocar comandos con la barra de menús. Consulte Apéndice D Opciones y Recursos de X, para saber cómo personalizar el aspecto visual de los menús de la barra de menús.

22.16. Barras de Herramientas

En las pantallas gráficas, Emacs pone una barra de herramientas en la parte superior de cada marco, justo debajo de la barra de menú. Es una fila de iconos sobre los que puede pulsar con el ratón para invocar varios comandos.

La barra de herramientas global (por defecto) contiene comandos generales. Algunos modos principales definen sus propias barras de herramientas; siempre que haya un búfer con un modo principal de este tipo, la barra de herramientas del modo sustituye a la barra de herramientas global.

Para usar la barra de herramientas, escriba M-x tool-bar-mode. Este comando se aplica a todos los marcos, incluidos los que aún no se han creado. Para controlar el uso de las barras de herramientas al inicio, personalice la variable tool-bar-mode.

Cuando Emacs se compila con soporte GTK+, cada elemento de la barra de herramientas puede consistir en una imagen, una etiqueta de texto o ambas. Por defecto, Emacs sigue la configuración del estilo de la barra de herramientas del escritorio Gnome; si no se define ninguno, muestra los elementos de la barra de herramientas sólo como imágenes. Para imponer un estilo específico de barra de herramientas, personalice la variable tool-bar-style.

También puede controlar la colocación de la barra de herramientas para la barra de herramientas GTK+ con el parámetro de marco tool-bar-position. Ver Parámetros de Marco en el Manual de Referencia de Emacs Lisp.

Las construcciones NS consideran la barra de herramientas como una decoración de la ventana, y por lo tanto no la muestran cuando una ventana no está decorada. : Ver Parámetros de Marco en el Manual de Referencia de Emacs Lisp. En macOS la barra de herramientas se oculta cuando el marco se pone a pantalla completa, pero puede mostrarse moviendo el puntero del ratón a la parte superior de la pantalla.

22.17 Barras de Pestañas

En pantallas gráficas y en terminales de texto, Emacs puede mostrar opcionalmente una Barra de Pestañas en la parte superior de cada marco, justo debajo de la barra de menús (ver 22.15 Barras de Menús) y encima o debajo de la barra de herramientas (ver 22.16. Barras de Herramientas) dependiendo de la variable tab-bar-position. La barra de pestañas es una fila de pestañas, botones que puede pulsar para cambiar entre configuraciones de ventana.

Cada pestaña de la barra de pestañas representa una configuración de ventana persistente con nombre de su marco, es decir, cómo se divide ese marco en ventanas y qué búfer se muestra en cada ventana. El nombre de la pestaña se compone de la lista de nombres de los búferes que se muestran en las ventanas de esa configuración de ventana. Al hacer clic en la pestaña, se pasa a la configuración de ventanas registrada por la pestaña; se trata de una configuración de ventanas y búferes que se usaba anteriormente en el marco cuando esa pestaña era la pestaña actual.

Si está usando la librería del escritorio para guardar y restaurar sus sesiones (vea 45 Guardar Sesiones de Emacs), las pestañas de la Barra de Pestañas se graban en el archivo del escritorio, junto con sus configuraciones de ventana asociadas, y estarán disponibles después de restaurar la sesión.

Tenga en cuenta que la Barra de Pestañas es diferente de la Línea de Pestañas (vea 21.8 Línea de Pestañas de Ventana). Mientras que las pestañas de la línea de pestañas de la parte superior de cada ventana se usan para cambiar entre los búferes de la ventana, las pestañas de la barra de pestañas de la parte superior de cada marco se usan para cambiar entre configuraciones de ventanas que contienen varias ventanas que muestran uno o más búferes.

Para usar las barras de pestañas, escriba Alt-x tab-mar-mode (M-x tab-bar-mode). Este comando se aplica a todos los marcos, incluidos los marcos aún por crear. Para controlar el uso de las barras de pestañas al inicio, personalice la variable tab-bar-mode y guarde su personalización.

La variable tab-bar-show controla si el modo de barra de pestañas se activa automáticamente. Si el valor es t, el modo barra de pestañas se activa cuando se usan los comandos que crean nuevas de ellas. El valor 1 oculta la barra de pestañas cuando sólo tiene una pestaña, y la vuelve a mostrar cuando se crean más pestañas. De forma más general, un valor que sea un entero no negativo hace que la barra de pestañas se muestre sólo si el número de pestañas es mayor que ese entero. El valor nil siempre mantiene la Barra de Pestañas oculta; en este caso es posible cambiar entre configuraciones de ventanas con nombre sin mostrar la Barra de Pestañas usando M-x tab-next, M-x tab-switcher, y otros comandos que permiten completar los nombres de las pestañas. También es posible crear y cerrar pestañas sin la barra de pestañas usando los comandos M-x tab-new, M-x tab-close, etc.

Tenga en cuenta que un valor numérico de tab-bar-show puede hacer que la Barra de Pestañas se muestre en algunos marcos, pero no en otros, dependiendo del número de pestañas creadas en cada marco.

Para usar la barra de pestañas sólo en el marco seleccionado, escriba Alt-x toggle-frame-tab-bar (M-x toggle-frame-tab-bar). Este comando permite activar la visualización de la barra de pestañas en algunos marcos y desactivarla en otros, independientemente de los valores de tab-bar-mode y tab-bar-show.

La tecla de prefijo Ctrl-x t (C-x t) es análoga a Ctrl-x 5 (C-x 5). Mientras que cada comando C-x 5 abre un búfer en un marco diferente (véase 22.6 Creación de Marcos), los comandos C-x t usan una pestaña diferente con una configuración de ventana diferente en el marco seleccionado.

Los distintos comandos C-x t difieren en cómo encuentran o crean el búfer a seleccionar. Los siguientes comandos se pueden usar para seleccionar un búfer en una nueva pestaña:

Ctrl-x t2 (C-x t 2)

Añade una nueva pestaña (tab-new, pestaña-nueva). Puede controlar la elección del búfer mostrado en una nueva pestaña personalizando la variable tab-bar-new-tab-choice. Puede controlar los nombres dados por defecto a las nuevas pestañas personalizando la variable tab-bar-tab-name-function.

Ctrl-x tb nombre-búfer RETURN (C-x t b nombre-búfer RET)

Selecciona el nombre del búfer en otra pestaña. Esto ejecuta switch-to-buffer-other-tab.

Ctrl-x tf nombre-archivo RETURN (C-x t f nombre-archivo RET)

Visita el archivo nombre-archivo (ver 19.2 Visitar Archivos) y selecciona su búfer en otra pestaña. Esto ejecuta find-file-other-tab (buscar-archivo-otra-pestaña).

Ctrl-x td directorio RETURN (C-x t d directorio RET)

Edita el directorio especificado (véase 31 Dired, el Editor de Directorios) en otra pestaña. Esto ejecuta dired-other-tab.

Ctrl-x tt (C-x t t)

Este es un comando prefijo (other-tab-prefix) que afecta al siguiente comando invocado inmediatamente después de este comando prefijo. Solicita que el búfer mostrado por el siguiente comando se muestre en otra pestaña.

Por defecto, una nueva pestaña comienza con el búfer que estaba activo antes de llamar al comando que añade una nueva pestaña. Para iniciar una nueva pestaña con otros búferes, personalice la variable tab-bar-new-tab-choice.

La variable tab-bar-new-tab-to define dónde colocar una nueva pestaña. Por defecto, una nueva pestaña se añade a la derecha de la pestaña actual.

Se pueden usar los siguientes comandos para eliminar pestañas:

Ctrl-x t0 (C-x t 0)

Cierra la pestaña seleccionada (tab-close). Esto no tiene efecto si sólo hay una pestaña, a menos que la variable tab-bar-close-last-tab-choice se personalice con un valor no predeterminado.

Ctrl-x t1 (C-x t 1)

Cierra todas las pestañas, excepto la seleccionada, en el marco seleccionado.

La variable tab-bar-close-tab-select define qué pestaña seleccionar después de cerrar la pestaña actual. Por defecto, selecciona una pestaña usada recientemente.

El comando tab-undo restaura la última pestaña cerrada.

Los siguientes comandos se pueden usar para cambiar entre pestañas:

Ctrl-x to (C-x t o)
Ctrl-TAB (C-TAB)

Pasa a la pestaña siguiente (tab-next). Si repite este comando, pasará por todas las pestañas del marco seleccionado. Con un argumento numérico positivo n, pasa a la enésima pestaña siguiente; con un argumento negativo -n, vuelve a la enésima pestaña anterior.

Shift-Ctrl-TAB (S-C-TAB)

Pasa a la pestaña anterior (tab-previous). Con un argumento numérico positivo n, pasa a la enésima pestaña anterior; con un argumento negativo -n, pasa a la enésima pestaña siguiente.

Ctrl-x t RETURN nombre-pestaña RETURN (C-x t RET nombre-pestaña RET)

Cambia a la pestaña por su nombre (tab-switch), con finalización en todos los nombres de pestaña. El valor predeterminado y el «historial futuro» de nombres de pestañas se ordenan por antigüedad, por lo que puedes usar M-n (next-history-element) para obtener el nombre de la última pestaña visitada, la penúltima, etc.

modifier-tab-number

Cambia a la pestaña por su número tab-number (tab-select). Después de personalizar la variable tab-bar-select-tab-modifiers para especificar una o más teclas modificadoras, puede seleccionar una pestaña por su número ordinal usando uno de los modificadores especificados en combinación con el número de pestaña a seleccionar. El número 9 puede usarse para seleccionar la última pestaña. Puede seleccionar cualquier modificador soportado por Emacs, vea 50.3.7. Teclas Modificadoras. Para mostrar el número de pestaña junto al nombre de la pestaña, puede personalizar otra variable tab-bar-tab-hints. Esto le ayudará a decidir qué tecla numérica pulsar para seleccionar la pestaña por su número.

modifier-9

Pasa a la última pestaña (tab-last). La combinación de teclas es la tecla modificadora definida por tab-bar-select-tab-modifiers y la tecla 9 (9). Con un argumento numérico n, cambiar a la enésima última pestaña.

modifier-0

Cambia a la pestaña reciente (tab-recent). La combinación de teclas es la tecla modificadora definida por tab-bar-select-tab-modifiers y la tecla 0 (0, cero). Con un argumento numérico n, cambia a la enésima pestaña reciente.

Se pueden usar los siguientes comandos para operar sobre las pestañas:

Ctrl-x tr (C-x t r nombre-pestaña RET)

Cambia el nombre de la pestaña actual a nombre-pestaña (tab-rename).

Ctrl-x tm (C-x t m)

Mueve la pestaña actual una posición a la derecha (tab-move). Con un argumento numérico positivo n, se mueve esa cantidad de posiciones a la derecha; con un argumento negativo -n, se mueve n posiciones a la izquierda.

Puede usar el ratón para operar sobre las pestañas. Al hacer clic con ratón-2 se cierra la pestaña. Al hacer clic con ratón-3 se abre el menú contextual con los elementos que actúan sobre la pestaña seleccionada. Arrastrando la pestaña con ratón-1 se mueve a otra posición en la barra de pestañas. Si se desplaza con la rueda del ratón, se pasa a la pestaña siguiente o anterior. Si se mantiene pulsada la tecla Shift (MAYÚS) durante el desplazamiento, la pestaña se desplaza hacia la izquierda o la derecha.

Puede activar el modo de historial de la barra de pestañas para recordar las configuraciones de ventana usadas en cada pestaña y restaurarlas más tarde.

Alt-x tab-bar-history-back (M-x tab-bar-history-back)

Restaura una configuración de ventana anterior usada en la pestaña actual. Esto navega hacia atrás en el historial de configuraciones de ventanas.

Alt-x tab-bar-history-forward (M-x tab-bar-history-forward)

Cancela la restauración de la configuración de ventana anterior. Esto avanza en el historial de configuraciones de ventanas.

Es posible personalizar los elementos mostrados en la barra de pestañas mediante la opción de Usuario tab-bar-format.

22.19 Sugerencias sobre Herramientas (Tooltips)

Los tooltips son pequeños marcos especiales que muestran información de texto en la posición actual del ratón. Se activan cuando hay una pausa en el movimiento del ratón sobre algún fragmento significativo de texto en una ventana, o la línea de modo, o alguna otra parte del marco de Emacs como un botón de la barra de herramientas o un elemento de menú.

Puede alternar el uso de tooltips con el comando M-x tooltip-mode. Cuando el modo Tooltip está desactivado, el texto de ayuda se muestra en el área de eco en su lugar. Para controlar el uso de información sobre herramientas al inicio, personalice la variable tooltip-mode siguientes variables proporcionan opciones de personalización para la visualización de información sobre herramientas:

tooltip-delay

Esta variable especifica cuánto tiempo debe esperar Emacs antes de mostrar el primer tooltip. El valor está en segundos.

tooltip-short-delay

Esta variable especifica cuánto tiempo debe esperar Emacs antes de mostrar los tooltips subsiguientes sobre diferentes elementos, habiendo mostrado ya el primer tooltip. El valor está en segundos.

tooltip-hide-delay

El número de segundos transcurridos desde que se muestra un tooltip para ocultarlo, si el ratón no se mueve.

tooltip-x-offset
tooltip-y-offset Los desplazamientos X e Y, en píxeles, de la esquina superior izquierda de la información sobre herramientas desde la posición del puntero del ratón. Tenga en cuenta que se ignoran si tooltip-frame-parameters se personalizó para incluir, respectivamente, los parámetros izquierdo y superior. Los valores de los desplazamientos deben elegirse de modo que la información sobre herramientas no cubra el punto activo del puntero del ratón, o podría interferir con el clic del mismo.
tooltip-frame-parameters

Los parámetros de marco usados para mostrar información sobre herramientas. Ver Parámetros de Marco en el Manual de Referencia de Emacs Lisp, y también Tooltips en el Manual de Referencia de Emacs Lisp.

Para opciones adicionales de personalización para mostrar tooltips, usae M-x customize-group RET tooltip RET.

Si Emacs está construido con el toolkit GTK+, Nextstep windowing, o Haiku windowing, muestra la información sobre herramientas a través del toolkit, usando la apariencia por defecto de la información sobre herramientas del toolkit. [8] Para desactivar esto, cambia la variable use-system-tooltips a nil. Si hace esto, o si Emacs está construido sin el soporte de ventanas apropiado, la mayoría de los atributos del texto de la tooltip están especificados por la cara de la tooltip, y por los recursos X (vea Opciones y recursos X).

Los tooltips GUD son tooltips especiales que muestran los valores de las variables cuando se depura un programa con GUD. Ver Operación del Depurador.

22.20 Evitar el Puntero del Ratón

En terminales gráficos, el puntero del ratón puede oscurecer el texto en el marco de Emacs. Emacs proporciona dos métodos para evitar este problema.

En primer lugar, Emacs oculta el puntero del ratón cada vez que se escribe un carácter autoinsertado, si el puntero se encuentra dentro de un marco Emacs; moviendo el puntero del ratón se hace visible de nuevo. Para desactivar esta característica, establece la variable make-pointer-invisible a nil. Ver 15.24 Personalización de la Pantalla.

En segundo lugar, puede usar el modo Mouse Avoidance, un modo menor, para mantener el puntero del ratón alejado del punto. Para usar este modo, personalice la variable mouse-avoidance-mode. Puede establecer esto a varios valores para mover el ratón de varias maneras:

banish

Mueve el puntero a una esquina del marco al pulsar cualquier tecla. Puede personalizar la variable mouse-avoidance-banish-position para especificar a dónde va el puntero cuando es desplazado.

exile

Desplaza el puntero sólo si el cursor se acerca demasiado, y permite que vuelva una vez que el cursor se haya apartado.

jump

Si el cursor se acerca demasiado al puntero, lo desplazará una distancia y dirección aleatorias.

animate

Como jump, pero muestra los pasos a lo largo del camino para la ilusión de movimiento.

cat-and-mouse

Lo mismo que animate.

proteus

Como animate, pero cambia también la forma del puntero del ratón.

También puede usar el comando M-x mouse-avoidance-mode para activar el modo. Siempre que el modo Mouse Avoidance mueve el ratón, también levanta el marco.

22.21 Terminales sin Ventana

En un terminal de texto, Emacs sólo puede mostrar un marco Emacs a la vez. Sin embargo, aún puede crear múltiples marcos Emacs, y cambiar entre ellos. Cambiar de marco en estos terminales es muy parecido a cambiar entre diferentes configuraciones de ventana.

Puede usar C-x 5 2 para crear un nuevo marco y cambiar a él; use C-x 5 o para recorrer los marcos existentes; use C-x 5 0 para borrar el marco actual.

Cada marco tiene un número para distinguirlo. Si su terminal sólo puede mostrar un marco a la vez, el número n del marco seleccionado aparece cerca del principio de la línea de modo, en la forma Fn.

Fn es, de hecho, el nombre inicial del marco. Si lo desea, puede dar nombres más significativos a los marcos, y puede seleccionar un marco por su nombre. Use el comando M-x set-frame-name RET nombre RET para especificar un nuevo nombre para el marco seleccionado, y use M-x select-frame-by-name RET nombre RET para seleccionar un marco según su nombre. El nombre que especifique aparecerá en la línea de modo cuando se seleccione el marco.

22.22 Uso del Ratón en Terminales de Texto

Algunos terminales de texto soportan clics de ratón en la ventana del terminal.

En un emulador de terminal compatible con xterm, puede usar M-x xterm-mouse-mode para dar a Emacs control sobre usos simples del ratón - básicamente, sólo se soportan clics simples no modificados. Las nuevas versiones de xterm también soportan el seguimiento del ratón. La funcionalidad normal del ratón xterm para este tipo de clics sigue estando disponible manteniendo pulsada la tecla SHIFT al pulsar el botón del ratón. El modo Ratón de xterm es un modo menor global (ver 24.2 Modos Menores). Repitiendo el comando se desactiva de nuevo el modo.

En la consola en GNU/Linux, puede usar M-x gpm-mouse-mode para habilitar el soporte de ratón. Debe tener el servidor gpm instalado y funcionando en su sistema para que esto funcione. Tenga en cuenta que cuando este modo está activado, no puede usar el ratón para transferir texto entre Emacs y otros programas que usen GPM. Esto se debe a limitaciones en GPM y el kernel de Linux.

Ver Uso del ratón en MS-DOS, para información sobre el soporte del ratón en MS-DOS.