.. _21: 21 Varias Ventanas ================== Emacs puede dividir un marco en dos o muchas ventanas. Múltiples ventanas pueden mostrar partes de diferentes búferes, o diferentes partes de un búfer. Múltiples marcos siempre implican múltiples ventanas, porque cada marco tiene su propio conjunto de ventanas. Cada ventana pertenece a uno y sólo un marco. 21.1 Conceptos de las Ventanas Emacs ------------------------------------ Cada ventana de Emacs muestra un búfer de la aplicación en cualquier momento. Un mismo búfer puede aparecer en más de una ventana; si es así, cualquier cambio en su texto se muestra en todas las ventanas donde aparezca. Pero estas ventanas pueden mostrar diferentes partes del búfer, porque cada ventana tiene su propio valor para el punto. En cualquier momento, una ventana Emacs es la *ventana seleccionada*; el búfer que esta ventana está mostrando es el búfer actual. En las pantallas gráficas, el punto se indica mediante un cursor sólido parpadeante en la ventana seleccionada, y mediante una caja hueca en las ventanas no seleccionadas. En los terminales de texto, el cursor sólo se dibuja en la ventana seleccionada. Véase :ref:`15.21`. Los comandos para mover el punto afectan al valor del mismo sólo para la ventana Emacs seleccionada. No afectan a dicho valor en otras ventanas de Editor, ni siquiera en las que muestran el mismo búfer. Lo mismo ocurre con los comandos de cambio de búfer como ``C-x b``; no afectan a otras ventanas en absoluto. Sin embargo, hay otros comandos como ``C-x 4 b`` que seleccionan una ventana diferente y cambian de búfer en ella. Además, todos los comandos que muestran información en una ventana, incluyendo (por ejemplo) ``C-h f`` (``describe-función``) y ``C-x C-b`` (``list-buffers``), normalmente funcionan mostrando búferes en una ventana no seleccionada sin afectar a la ventana seleccionada. Cuando varias ventanas muestran el mismo búfer, pueden tener diferentes regiones, porque pueden tener diferentes valores para el punto. Sin embargo, todas tienen el mismo valor de marca, porque cada búfer sólo tiene una posición de marca. Cada ventana tiene su propia línea de modo, que muestra el nombre del búfer, el estado de modificación y los modos mayor y menor del búfer que se muestra en la ventana. La línea de modo de la ventana seleccionada aparece en un color diferente. Véase :ref:`1.3`, para más detalles. .. _21.2: 21.2 Ventanas Divididas ----------------------- :kbd:`Ctrl`-:kbd:`x` :kbd:`2` (``C-x 2``) Divide la ventana seleccionada en dos, una encima de la otra (``split-window-below``, dividir-ventana-abajo). :kbd:`Ctrl`-:kbd:`x` :kbd:`3` (``C-x 3``) Divide la ventana seleccionada en dos, dispuestas una al lado de la otra (``split-window-right``, dividir-ventana-derecha). :kbd:`Ctrl`-``ratón-2`` (``C-ratón-2``) En la línea de modo de una ventana, la divide. ``C-x 2`` (``split-window-below``) divide la ventana seleccionada en dos, una encima de la otra. Tras la división, la ventana seleccionada es la superior, y la recién dividida es la inferior. Ambas ventanas tienen el mismo valor de punto que antes, y muestran la misma porción del búfer (o lo más cercana posible). Si es necesario, las ventanas se desplazan para mantener el punto en pantalla. Por defecto, las dos ventanas tienen cada una la mitad de la altura de la ventana original. Un argumento numérico positivo especifica cuántas líneas dar a la ventana superior; un argumento numérico negativo especifica cuántas líneas dar a la ventana inferior. Si cambia la variable ``split-window-keep-point`` a ``nil``, ``C-x 2`` ajusta la porción del búfer mostrada por las dos ventanas, así como el valor del punto en cada ventana, para mantener el texto en pantalla lo más cercano posible al que había antes; además, si el punto estaba en la mitad inferior de la ventana original, se selecciona la ventana inferior en lugar de la superior. ``C-x 3`` (``split-window-right``) divide la ventana seleccionada en dos ventanas contiguas. La ventana izquierda es la seleccionada; la ventana derecha muestra la misma porción del mismo búfer, y tiene el mismo valor del punto. Un argumento numérico positivo especifica cuántas columnas hay que dar a la ventana izquierda; un argumento numérico negativo especifica cuántas columnas hay que dar a la ventana derecha. Al dividir una ventana con ``C-x 3``, cada ventana resultante ocupa menos que el ancho total del cuadro. Si se estrecha demasiado, el búfer puede ser difícil de leer si se están usando líneas de continuación (ver :ref:`8.8`). Por lo tanto, Emacs cambia automáticamente al truncamiento de líneas si el ancho de la ventana se estrecha más de 50 columnas. Este truncamiento ocurre independientemente del valor de la variable ``truncate-lines`` (ver :ref:`15.22`); en su lugar es controlado por la variable ``truncate-partial-width-windows``. Si el valor de esta variable es un entero positivo (el valor por defecto es 50), esto especifica la anchura total mínima para una ventana de anchura parcial antes de que se produzca el truncado automático de líneas; si el valor es ``nil``, el truncado automático de líneas está desactivado; y para cualquier otro valor no ``nil``, Emacs trunca las líneas en cada ventana de anchura parcial independientemente de su anchura. La anchura total de una ventana está en unidades de columna tal y como se informa en ``window-total-width`` (ver **Tamaños de Ventana** en el Manual de Referencia de Emacs Lisp), incluye los márgenes, los glifos de continuación y truncado, los márgenes y la barra de desplazamiento. En las terminales de texto, las ventanas contiguas están separadas por un divisor vertical que se dibuja utilizando la cara ``vertical-border``. Si se pulsa ``C-ratón-2`` en la línea de modo de una ventana, se divide la ventana, poniendo un divisor vertical donde se pulsó. Dependiendo de cómo esté compilado Emacs, también puede dividir una ventana pulsando ``C-ratón-2`` en la barra de desplazamiento, que pone un divisor horizontal donde se pulsa (esta característica no funciona cuando Emacs usa barras de desplazamiento GTK+). Por defecto, cuando se divide una ventana, Emacs da a cada una de las ventanas resultantes dimensiones que son un múltiplo integral del tamaño de fuente por defecto del marco. Esto puede subdividir la pantalla de forma desigual entre las ventanas resultantes. Si establece la variable ``window-resize-pixelwise`` a un valor no nulo, Emacs dará a cada ventana el mismo número de píxeles (más o menos un píxel si la dimensión inicial era un número impar de píxeles). Tenga en cuenta que cuando el tamaño en píxeles de un marco no es múltiplo del tamaño en caracteres del marco, al menos una ventana puede ser redimensionada en píxeles incluso si esta opción es nula. .. _21.3: 21.3 Utilización de Otras Ventanas ---------------------------------- :kbd:`Ctrl`-:kbd:`x` :kbd:`o` (``C-x o``) Selecciona otra ventana (``other-window``). :kbd:`Ctrl`-:kbd:`Alt`-:kbd:`v` (``C-M-v``) Desplaza la ventana siguiente hacia arriba (``scroll-other-window``). :kbd:`Ctrl`-:kbd:`Alt`-:kbd:`Shift`-:kbd:`v` (``C-M-S-v``) Desplaza la ventana siguiente hacia abajo (``scroll-other-window-down``). :kbd:`Ctrl`-:kbd:`Alt`-:kbd:`Shift`-:kbd:`l` (``C-M-S-l``) Vuelve a centrar la ventana siguiente (``recenter-other-window``). ``ratón-1`` ``ratón-1``, en el área de texto de una ventana, selecciona la ventana y mueve punto a la posición pulsada. Haciendo clic en la línea de modo se selecciona la ventana sin mover el punto en ella. Con el teclado, puede cambiar de ventana escribiendo :kbd:`Ctrl`-:kbd:`x` :kbd:`o` (``C-x o``, ``other-window``). Es una ``o``, de "*o*\tra", no un cero. Cuando hay más de dos ventanas, este comando recorre todas las ventanas en un orden cíclico, generalmente de arriba abajo y de izquierda a derecha. Después de la ventana situada más a la derecha y más abajo, vuelve a la situada en la esquina superior izquierda. Un argumento numérico significa moverse varios pasos en el orden cíclico de las ventanas. Un argumento negativo se desplaza por el ciclo en el orden inverso. Cuando el minibúfer está activo, la ventana del minibúfer es la última ventana del ciclo; se puede cambiar de la ventana del minibúfer a una de las otras ventanas, y más tarde volver a cambiar y terminar de suministrar el argumento del minibúfer que se solicita. Véase :ref:`9.3`. El comando ``other-window`` normalmente sólo cambiará a la siguiente ventana en el marco actual (a menos que se configure de otra manera). Si trabaja en un entorno de varios marcos y desea que las ventanas de todos los marcos formen parte del ciclo, puede volver a vincular ``C-x o`` al comando ``next-window-any-frame``. (Para saber cómo volver a vincular un comando, consulte :ref:`50.3.5`). Los comandos de desplazamiento habituales (véase :ref:`15`) se aplican sólo a la ventana seleccionada, pero también existen comandos para desplazarse a la ventana siguiente. ``C-M-v`` (``scroll-other-window``) desplaza la ventana que ``C-x o`` seleccionaría. En otros aspectos, el comando se comporta como ``C-v``; ambos mueven el texto del búfer hacia arriba en relación con la ventana, y toman argumentos positivos y negativos. (En el minibúfer, ``C-M-v`` desplaza la ventana de ayuda asociada al minibúfer, si existe, en lugar de la ventana siguiente en el orden cíclico estándar; véase :ref:`9.3`). ``C-M-S-v`` (``scroll-other-window-down``) desplaza la siguiente ventana hacia abajo de forma similar. Del mismo modo, ``C-M-S-l`` (``recenter-other-window``) se comporta como ``C-l`` (``recenter-top-bottom``) en la siguiente ventana. Si establece ``mouse-autoselect-window`` a un valor no nulo, al mover el ratón sobre una ventana diferente se selecciona esa ventana. Esta función está desactivada por defecto. .. _21.4: 21.4 Visualización en Otra Ventana ---------------------------------- ``C-x 4`` es una tecla prefijo para una variedad de comandos que cambian a un búfer en una ventana diferente, ya sea otra ventana existente, o una nueva ventana creada dividiendo la ventana seleccionada. Ver :ref:`21.6.1`, para saber cómo Emacs elige o crea la ventana a usar. :kbd:`Ctrl`-:kbd:`x` :kbd:`4`:kbd:`b` *nombrebúfer* :kbd:`RETURN` (``C-x 4 b`` *nombrebúfer* ``RET``) Selecciona *nombrebúfer* en otra ventana (``switch-to-buffer-other-window``). Véase :ref:`20.1`. :kbd:`Ctrl`-:kbd:`x` :kbd:`4` :kbd:`Ctrl`-:kbd:`o` *nombrebúfer* :kbd:`RETURN` (``C-x 4 C-o`` *nombrebúfer* ``RET``) Muestra *nombrebúfer* en alguna ventana, sin intentar seleccionarlo (``display-buffer``). Ver :ref:`21.6`, para más detalles sobre cómo se elige la ventana. :kbd:`Ctrl`-:kbd:`x` :kbd:`4`:kbd:`f` *nombrearchivo* :Kbd:`RETURN` (``C-x 4 f`` *nombrearchivo* ``RET``) Visita el archivo *nombrearchivo* y selecciona su búfer en otra ventana (``find-file-other-window``). Véase :ref:`19.2`. :kbd:`Ctrl`-:kbd:`x` :kbd:`4`:kbd:`d` *directorio* :kbd:`RETURN` (``C-x 4 d`` *directorio* ``RET``) Selecciona un búfer de Dired para el directorio en otra ventana (``dired-other-window``). Véase :ref:`31`. :kbd:`Ctrl`-:kbd:`x` :kbd:`4`:kbd:`m` (``C-x 4 m``) Comienza a redactar un mensaje de correo, de forma similar a ``C-x m`` (véase :ref:`33`), pero en otra ventana (``compose-mail-other-window``). :kbd:`Ctrl`-:Kbd:`x` :Kbd:`4`:kbd:`.` (``C-x 4 .``) Busca la definición de un identificador, de forma similar a ``M-.`` (véase :ref:`29.4`), pero en otra ventana (``xref-find-definitions-other-window``). :kbd:`Ctrl`-:kbd:`x` :kbd:`4`:kbd:`r` (``C-x 4 r`` *nombrearchivo* ``RET``) Visita el archivo de sólo lectura, y selecciona su búfer en otra ventana (``find-file-read-only-other-window``). Véase :ref:`19.2`. :kbd:`Ctrl`-:kbd:`x` :kbd:`4`:kbd:`4` (``C-x 4 4``) Un comando prefijo más general afecta al búfer mostrado por el siguiente comando invocado inmediatamente después de este comando prefijo. Solicita que el búfer de la orden siguiente se muestre en otra ventana. :kbd:`Ctrl`-:kbd:`x` :kbd:`4`:kbd:`1` (``C-x 4 1``) Este comando de prefijo general solicita el búfer del comando siguiente que se mostrará en la misma ventana. 21.5 Borrar y Redimensionar Ventanas ------------------------------------ :kbd:`Ctrl`-:kbd:`x` :kbd:`0` (``C-x 0``) Borra la ventana seleccionada (``delete-window``). :kbd:`Ctrl`-:kbd:`x` :kbd:`1` (``C-x 1``) Elimina todas las ventanas del marco seleccionado excepto la ventana seleccionada (``delete-other-windows``). :kbd:`Ctrl`-:kbd:`x` :Kbd:`4`:kbd:`0` (``C-x 4 0``) Elimina la ventana seleccionada y mata el búfer que aparecía en ella (``kill-buffer-and-window``). El último carácter de esta secuencia de teclas es un cero. | :kbd:`Alt`-:kbd:`x` ``delete-windows-on`` :kbd:`RETURN` *búfer* :Kbd:`RETURN` | (``M-x delete-windows-on RET`` *búfer* ``RET``) Elimina las ventanas que muestran el búfer especificado. :kbd:`Ctrl`-:kbd:`x` :kbd:`^` (``C-x ^``) Aumenta el tamaño de la ventana seleccionada (``enlarge-window``). :kbd:`Ctrl`-:kbd:`x` :kbd:`}` (``C-x }``) Amplía la ventana seleccionada (``enlarge-window-horizontally``). :kbd:`Ctrl`-:kbd:`x` :kbd:`{` (``C-x {``) Hace más estrecha la ventana seleccionada (``shrink-window-horizontally``). Hace más ancha la ventana seleccionada (``enlarge-window-horizontally``). :kbd:`Ctrl`-:kbd:`x` :kbd:`-` (``C-x -``) Reduce esta ventana si su búfer no necesita tantas líneas (``shrink-window-if-larger-than-buffer``). :kbd:`Ctrl`-:kbd:`x` :kbd:`+` (``C-x +``) Hace que todas las ventanas tengan la misma altura (``balance-windows``). Para borrar la ventana seleccionada, escriba :kbd:`Ctrl`-:kbd:`x` :kbd:`0` (``C-x 0``, ``delete-window``). (Es un cero.) Una vez borrada una ventana, el espacio que ocupaba se cede a una ventana adyacente (pero no a la ventana del minibúfer, aunque esté activa en ese momento). La supresión de la ventana no tiene ningún efecto sobre el búfer que mostraba; el búfer sigue existiendo, y todavía se puede pasar a él con ``C-x b``. La opción ``delete-window-choose-selected`` controla qué ventana es elegida como la nueva ventana seleccionada en su lugar (ver **Borrar Ventanas** en El Manual de Referencia de Emacs Lisp). ``C-x 4 0`` (``kill-buffer-and-window``) es un comando más fuerte que ``C-x 0``; mata el búfer actual y luego borra la ventana seleccionada. ``C-x 1`` (``delete-other-windows``) borra todas las ventanas, *excepto* la seleccionada; la ventana seleccionada se expande para usar todo el marco. (Este comando no puede utilizarse mientras la ventana del minibúfer está activa; al intentarlo se produce un error). ``M-x delete-windows-on`` borra las ventanas que muestran un búfer específico. Pide el búfer, por defecto el búfer actual. Con el argumento de prefijo cero, ``C-u 0``, este comando borra ventanas sólo en los marcos de la pantalla actual. El comando ``C-x ^`` (``enlarge-window``) hace la ventana seleccionada una línea más alta, tomando espacio de una ventana verticalmente adyacente sin cambiar la altura del marco. Con un argumento numérico positivo, este comando aumenta la altura de la ventana en esa cantidad de líneas; con un argumento negativo, reduce la altura en esa cantidad de líneas. Si no hay ventanas adyacentes verticalmente (es decir, la ventana está a la altura completa del marco), esto indica un error. El comando también indica un error si intenta reducir la altura de cualquier ventana por debajo de un cierto número mínimo de líneas, especificado por la variable ``window-min-height`` (el valor por defecto es 4). Del mismo modo, ``C-x }`` (``enlarge-window-horizontally``) ensancha la ventana seleccionada, y ``C-x {`` (``shrink-window-horizontally``) la estrecha. Estos comandos señalan un error si se intenta reducir el ancho de cualquier ventana por debajo de un cierto número mínimo de columnas, especificado por la variable ``window-min-width`` (el valor por defecto es 10). Los clics del ratón en la línea de modo (véase :ref:`22.5`) o en los divisores de ventana (véase :ref:`22.13`) proporcionan otra forma de cambiar la altura de las ventanas y de dividir o eliminar ventanas. ``C-x -`` (``shrink-window-if-larger-than-buffer``) reduce la altura de la ventana seleccionada, si es más alta de lo necesario para mostrar todo el texto del búfer que está mostrando. Cede las líneas sobrantes a otras ventanas del marco. También puede utilizar ``C-x +`` (``balance-windows``) para igualar las alturas de todas las ventanas del marco seleccionado. .. _21.6: 21.6. Mostrar un Búfer en una Ventana ------------------------------------- Es una operación común de Emacs mostrar o hacer aparecer algún búfer en respuesta a un comando del Usuario. Hay varias maneras diferentes en que los comandos hacen esto. Muchos comandos, como ``C-x C-f`` (``find-file``), por defecto muestran el búfer "ocupando" la ventana seleccionada, esperando que la atención del Usuario se desvíe a ese búfer. Algunos comandos tratan de mostrar de forma inteligente, intentando no ocupar la ventana seleccionada, por ejemplo, separando una nueva ventana y mostrando allí el búfer deseado. Estos comandos, que incluyen varios comandos de ayuda (ver :ref:`11`), funcionan llamando internamente a ``display-búfer``. Ver :ref:`21.6.1`, para más detalles. Otros comandos hacen lo mismo que ``display-buffer``, y además seleccionan la ventana de visualización para que pueda empezar a editar su búfer. El comando ``M-g M-n`` (``next-error``) es un ejemplo (ver :ref:`28.2`). Tales comandos funcionan llamando internamente a la función ``pop-to-búfer``. Ver **Cambiar a un Búfer en una Ventana** en el Manual de Referencia de Emacs Lisp. Los comandos con nombres que terminan en ``other-window`` se comportan como ``display-buffer``, excepto que nunca se muestran en la ventana seleccionada. Varios de estos comandos están enlazados en la tecla de prefijo :kbd:`Ctrl`-:kbd:`x` :kbd:`4` (``C-x 4``) (ver :ref:`21.4`). Los comandos cuyos nombres terminan en ``other-frame`` se comportan como ``display-buffer``, salvo que (i) nunca se muestran en la ventana seleccionada y (ii) prefieren crear un nuevo marco o usar una ventana en otro marco para mostrar el búfer deseado. Varios de estos comandos están vinculados a la tecla de prefijo :kbd:`Ctrl`-:kbd:`x` :kbd:`5` (``C-x 5``). .. _21.6.1: 21.6.1 Cómo Funciona display-buffer ``````````````````````````````````` El comando ``display-buffer`` (así como los comandos que lo llaman internamente) elige una ventana para mostrar siguiendo los pasos que se dan a continuación. Véase **Elegir una Ventana para Mostrar un Búfer** en El Manual de Referencia de Emacs Lisp, para más detalles sobre cómo alterar esta secuencia de pasos. * Si el búfer debe mostrarse en la ventana seleccionada independientemente de otras consideraciones, reutiliza la ventana seleccionada. Por defecto, este paso se omite, pero puede decirle a Emacs que no lo omita añadiendo una expresión regular que coincida con el nombre del búfer junto con una referencia a la función ``display-buffer-same-window``(mostrar-búfer-misma-ventana) (ver **Funciones de Acciones para Mostrar Búferes** en El Manual de Referencia de Emacs Lisp) a la opción `display-buffer-alist` (ver **Elegir Una Ventana para Mostrar** un Búfer en El Manual de Referencia de Emacs Lisp). Por ejemplo, para mostrar el búfer ``*scratch*`` preferiblemente en la ventana seleccionada escriba: :: (setopt display-buffer-alist '(("\\*scratch\\*" (display-buffer-same-window)))) Por defecto, ``display-buffer-alist`` es ``nil``. * De lo contrario, si el búfer ya se muestra en una ventana existente, reutiliza esa ventana. Normalmente, sólo se consideran las ventanas en el marco seleccionado, pero las ventanas en otros marcos también son reutilizables si usa la correspondiente entrada ``reusable-frames action alist`` (vea **Listas de Acciones para la Visualización de Búferes** en el Manual de Referencia de Emacs Lisp). Vea en el siguiente paso un ejemplo de cómo hacerlo. * De lo contrario, crea opcionalmente un nuevo marco y muestra allí el búfer. Por defecto, este paso se omite. Para habilitarlo, cambie el valor de la opción ``display-buffer-base-action`` (vea **Elegir una Ventana para Mostrar un Búfer** en el Manual de Referencia de Emacs Lisp) como sigue: :: (setopt display-buffer-base-action '((display-buffer-reuse-window display-buffer-pop-up-frame) (reusable-frames . 0))) Esta personalización también intentará que el paso anterior busque una ventana reutilizable en todos los marcos visibles o iconificados. * De lo contrario, intenta crear una nueva ventana dividiendo una ventana en el marco seleccionado, y muestra el búfer en esa nueva ventana. La división puede ser vertical u horizontal, dependiendo de las variables ``split-height-threshold`` y ``split-width-threshold``. Estas variables deben tener valores enteros. Si ``split-height-threshold`` es menor que la altura de la ventana elegida, la división coloca la nueva ventana debajo. En caso contrario, si ``split-width-threshold`` es menor que la anchura de la ventana, la división coloca la nueva ventana a la derecha. Si no se cumple ninguna de las dos condiciones, Emacs intenta dividir de forma que la nueva ventana quede debajo, pero sólo si la ventana no se ha dividido antes (para evitar una división excesiva). * En caso contrario, muestra el búfer en una ventana que ya lo mostraba previamente. Normalmente, sólo se tienen en cuenta las ventanas del marco seleccionado, pero con una entrada ``reusable-frames`` de la lista de acciones adecuada (véase más arriba) la ventana puede estar también en otro marco. * De lo contrario, muestra el búfer en una ventana existente en el marco seleccionado. * Si todos los métodos anteriores fallan por cualquier motivo, crea un nuevo marco y muestra el búfer allí. 21.6.2 Visualización de Búferes no Editables ```````````````````````````````````````````` Algunos búferes se muestran en ventanas para su lectura en lugar de para su edición. Los comandos de ayuda (ver :ref:`11`) suelen utilizar un búfer llamado ``*Help*`` para este propósito, el minibúfer de completado (ver :ref:`9.4`) utiliza un búfer llamado ``*Completions*``, etc. Estos búferes suelen mostrarse sólo durante un corto periodo de tiempo. Normalmente, Emacs elige la ventana para tales visualizaciones temporales mediante ``display-buffer``, como se describe en la subsección anterior. El búfer ``*Completions*``, por otro lado, se muestra normalmente en una ventana en la parte inferior del marco seleccionado, independientemente del número de ventanas que ya se muestren en ese marco. Si prefiere que Emacs muestre un búfer temporal de una manera diferente, personalice la variable ``display-buffer-alist`` (vea **Eligiendo una Ventana para Mostrar un Búfer** en El Manual de Referencia de Emacs Lisp) apropiadamente. Por ejemplo, para mostrar ``*Completions*`` siempre debajo de la ventana seleccionada, use la siguiente forma en su archivo de inicialización (vea :ref:`50.4`): :: (setopt display-buffer-alist '(("\\*Completions\\*" display-buffer-below-selected))) El búfer ``*Completions*`` también es especial en el sentido de que Emacs normalmente intenta hacer su ventana tan grande como sea necesario para mostrar todo su contenido. Para redimensionar las ventanas que muestran otras pantallas temporales, como, por ejemplo, el búfer ``*Help*``, activa el modo menor (ver :ref:`24.2`) ``temp-buffer-resize-mode`` (ver **Ventanas Temporales** en el Manual de Referencia de Emacs Lisp). El tamaño máximo de las ventanas redimensionadas por ``temp-buffer-resize-mode`` puede controlarse personalizando las opciones ``temp-buffer-max-height`` y ``temp-buffer-max-width`` (ver **Ventanas Temporales** en el Manual de Referencia de Emacs Lisp), y no puede exceder el tamaño del marco que las contiene. .. _21.7: 21.7 Características Convenientes para el Manejo de Ventanas ------------------------------------------------------------ El modo Winner es un modo menor global que registra los cambios en la configuración de la ventana (es decir, cómo se particionan los marcos en ventanas), para que pueda deshacerlos. Puede activar este modo con ``M-x winner-mode``, o personalizando la variable ``winner-mode``. Cuando el modo está activado, :kbd:`Ctrl`-:kbd:`c` :Kbd:`←` (````C-c izquierda```, ``winner-undo``) deshace el último cambio de configuración de la ventana. Si cambia de opinión mientras deshace, puede rehacer los cambios que había deshecho usando :kbd:`Ctrl`-:kbd:`c` :Kbd:`→` (``C-c derecha``, ``M-x winner-redo``). Para evitar que el modo Winner vincule ``C-c izquierda`` y ``C-c derecha``, puede personalizar la variable ``winner-dont-bind-my-keys`` a un valor no nulo. Por defecto, el modo Winner almacena un máximo de 200 configuraciones de ventana por marco, pero puede cambiarlo modificando la variable ``winner-ring-size``. Si hay algunos búferes cuyas ventanas no desea que Winner mode restaure, añada sus nombres a la variable de lista ``winner-boring-buffers`` o a la ``regexp winner-boring-buffers-regexp``. El modo de seguimiento (``M-x follow-mode``) sincroniza varias ventanas en el mismo búfer para que siempre muestren secciones adyacentes de ese búfer. Véase :ref:`15.7`. El paquete Windmove define comandos para moverse direccionalmente entre ventanas vecinas en un marco. ``M-x windmove-right`` selecciona la ventana inmediatamente a la derecha de la actualmente seleccionada, y de forma similar para las contrapartidas izquierda, arriba y abajo. ``windmove-default-keybindings`` vincula estos comandos a :kbd:`Shift`-:kbd:`←` (``S-right``) etc.; al hacerlo se desactiva la selección de mayúsculas para esas teclas (ver :ref:`12.6`). De la misma manera que se pueden definir combinaciones de teclas para comandos que seleccionan ventanas direccionalmente, puede usar ``windmove-display-default-keybindings`` para definir combinaciones de teclas para comandos que especifican en qué dirección mostrar la ventana para el búfer que el siguiente comando va a mostrar. También hay ``windmove-delete-default-keybindings`` para definir keybindings para comandos que borran ventanas direccionalmente, y ``windmove-swap-states-default-keybindings`` que define combinaciones de teclas para comandos que intercambian el contenido de la ventana seleccionada con la ventana en la dirección especificada. El comando ``M-x compare-windows`` le permite comparar el texto mostrado en diferentes ventanas. Véase :ref:`19.9`. El modo Desplazar Todo (``M-x scroll-all-mode``) es un modo menor global que hace que los comandos de desplazamiento y los comandos de movimiento de puntos se apliquen a todas las ventanas. .. _21.8: 21.8 Línea de Pestañas de Ventana --------------------------------- El comando ``global-tab-line-mode`` activa la visualización de una *línea de pestañas* en la línea superior de la pantalla de cada ventana. La línea de pestañas muestra botones especiales ("pestañas") para cada búfer que se mostró en una ventana, y permite cambiar a cualquiera de estos búferes pulsando el botón correspondiente. Pulsando sobre el icono ``+`` se añade un nuevo búfer a la línea de pestañas de búferes de la ventana, y pulsando sobre el icono ``x`` de una pestaña se borra. La rueda del ratón en la línea de pestañas desplaza las pestañas horizontalmente. Seleccionar la pestaña local de la ventana anterior es lo mismo que teclear :kbd:`Ctrl`-:kbd:`x` :kbd:`←` (``C-x IZQUIERDA``, ``previous-búfer``), seleccionar la pestaña siguiente es lo mismo que teclear :kbd:`Ctrl`-:kbd:`x` :kbd:`→` (``C-x DERECHA``, ``next-búfer``). Ambos comandos admiten un prefijo numérico como argumento de repetición. Puede personalizar la variable ``tab-line-tabs-function`` para definir el contenido preferido de la línea de tabulación. Por defecto, muestra todos los búferes visitados anteriormente en la ventana, como se ha descrito anteriormente. Pero también puede configurarla para que muestre una lista de búferes con el mismo modo principal que el búfer actual, o para que muestre búferes agrupados por su modo principal, donde al hacer clic en el nombre del modo en la primera pestaña se muestra una lista de todos los modos principales donde puede seleccionar otro grupo de búferes. Tenga en cuenta que la línea de pestañas es diferente de la barra de pestañas (consulte :ref:`22.17`). Mientras que 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 con búferes, 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.