.. _45: 45 Guardar Sesiones de Emacs ============================ Puede usar la biblioteca de escritorio (desktop library) para guardar el estado de Emacs de una sesión a otra. La *configuración del escritorio* guardada de Emacs incluye los búferes, sus nombres de archivo, modos principales, posiciones de los búferes, configuración de ventanas y marcos, y algunas variables globales importantes. Para habilitar esta característica, use el búfer de personalización (ver :ref:`50.1`) para establecer ``desktop-save-mode`` a ``t`` para futuras sesiones, o añada esta línea en su fichero init (ver :ref:`50.4`): :: (desktop-save-mode 1) Si activa ``desktop-save-mode`` en su fichero init, cuando Emacs se inicia, busca un escritorio guardado en ``desktop-path`` (que por defecto es ``user-emacs-directory`` y luego su directorio home) y usa el primer escritorio que encuentra. Mientras Emacs se ejecuta con el modo ``desktop-save activado``, por defecto auto-guarda el escritorio cada vez que cambia la configuración del mismo. La variable ``desktop-auto-save-timeout`` determina la frecuencia con la que Emacs busca modificaciones en su escritorio. El escritorio también se guarda cuando sale de Emacs. Especifique la opción ``--no-desktop`` en la línea de comandos de Emacs cuando no quiera que recargue ninguna configuración de escritorio guardada. Esto desactiva el modo de guardar escritorio para la sesión actual. Arrancar Emacs con la opción ``--no-init-file`` también desactiva la recarga del escritorio, ya que se salta el archivo init, donde normalmente se activa el modo ``desktop-save``. Puede tener configuraciones de escritorio guardadas por separado en diferentes directorios; iniciar Emacs desde un directorio donde tiene una configuración de escritorio guardada restaurará esa configuración, siempre que personalice ``desktop-path`` para que anteponga ``.`` (el directorio actual) a los otros directorios allí. Puede guardar el escritorio actual y recargar el guardado en otro directorio escribiendo :kbd:`Alt`-:kbd:`x` ``desktop-change-dir`` (``M-x desktop-change-dir``). Tecleando :kbd:`Alt`-:kbd:`x` ``desktop-revert`` (``M-x desktop-revert``) se vuelve al escritorio previamente recargado. El archivo en el que Emacs guarda el escritorio está bloqueado mientras se ejecuta la sesión, para evitar sobrescribirlo inadvertidamente desde otra sesión de Emacs. Ese bloqueo se elimina normalmente cuando Emacs sale, pero si Emacs o su sistema se bloquea, el bloqueo permanece, y cuando reinicia Emacs, por defecto le preguntará si quiere usar el fichero de escritorio bloqueado. Puede evitar la pregunta personalizando la variable ``desktop-load-locked-desktop`` a ``nil``, que significa no cargar nunca el escritorio en este caso, o a ``t``, que significa cargar el escritorio sin preguntar. También puede personalizar la variable con el valor especial ``check-pid``, que significa cargar el archivo si el proceso Emacs que ha bloqueado el escritorio no se está ejecutando en la máquina local. Esto no debería usarse en circunstancias en las que el Emacs que ha bloqueado el escritorio pueda estar ejecutándose en otra máquina, lo que podría ser el caso en entornos multiusuario en los que su directorio personal está montado remotamente usando NFS o similar. Cuando Emacs arranca en modo demonio, no puede hacerle ninguna pregunta, así que si encuentra el fichero de escritorio bloqueado, no lo cargará, a menos que ``desktop-load-locked-desktop`` sea ``t``. Tenga en cuenta que restaurar el escritorio en modo demonio es algo problemático por otras razones: por ejemplo, el demonio no puede usar características de la GUI, así que parámetros como la posición del marco, el tamaño y las decoraciones no pueden restaurarse. Por esa razón, puede que desee retrasar la restauración del escritorio en modo demonio hasta que se conecte el primer cliente, llamando a ``desktop-read`` (ver más abajo) en una función de gancho que añada a ``server-after-make-frame-hook`` (ver **Creando Marcos** en `El Manual de Referencia de Emacs Lisp `_). Siempre que quiera, puede usar el comando ``M-x desktop-save`` para forzar el guardado inmediato del escritorio actual. Esto es útil si no quiere usar la restauración automática del escritorio, y por tanto no activa ``desktop-save-mode``, o cuando ha hecho cambios significativos en el escritorio, y quiere asegurarse de que la configuración no se pierde si Emacs o su sistema se bloquean. Puede usar ``M-x desktop-read`` para restaurar un escritorio previamente guardado si la sesión actual de Emacs aún no ha cargado ningún escritorio. Por defecto, el escritorio intenta guardar y restaurar la configuración de marcos y ventanas. Para desactivar esto, establezca ``desktop-restore-frames`` a ``nil``. (Consulte la documentación de esa variable para ver algunas opciones relacionadas que puede personalizar para afinar este comportamiento). Cuando el escritorio restaura la configuración de marcos y ventanas, usa los valores registrados de los parámetros de los marcos, ignorando cualquier configuración para esos parámetros que tenga en su fichero de inicialización (ver :ref:`50.4`). Esto significa que los parámetros de los marcos restaurados, como las fuentes y las caras, provendrán del archivo del escritorio, donde fueron guardados cuando salió de su sesión anterior de Emacs; cualquier configuración de esos parámetros en su archivo de inicialización sera ignorada. Para desactivar esto, personalice el valor de ``frameset-filter-alist`` para filtrar los parámetros de marco que no quiere que se restauren; entonces se establecerán de acuerdo a sus personalizaciones en el archivo init. La información sobre los búferes que visitan archivos remotos no se guarda por defecto. Personalice la variable ``desktop-files-not-to-save`` para cambiar esto. Por defecto, todos los búferes del escritorio se restauran de una sola vez. Sin embargo, esto puede ser lento si hay muchos búferes en el escritorio. Puede especificar el número máximo de búferes a restaurar inmediatamente con la variable ``desktop-restore-eager``; el resto de ellos se restauran lentamente, cuando Emacs está inactivo. Escriba :kbd:`Alt`-:kbd:`x` ``desktop-clear`` (``M-x desktop-clear``) para vaciar el escritorio de Emacs; esto puede ser útil, por ejemplo, si quiere cambiar a otro escritorio invocando ``M-x desktop-read next``. El comando ``desktop-clear`` elimina todos los búferes excepto los internos, y borra las variables globales listadas en ``desktop-globals-to-clear``. Si desea que conserve ciertos búferes, personalice la variable ``desktop-clear-preserve-búferes-regexp``, cuyo valor es una expresión regular que coincide con los nombres de los búferes que no debe eliminar. Si desea guardar el historial de minibúferes de una sesión a otra, utilice la biblioteca ``savehist``.