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

AD.16 Usar Emacs como servidor

Diversos programas como mail pueden invocar su editor preferido para editar cierto texto, por ejemplo un mensaje que esté enviando. Por convención, la mayoría de dichos programas usan la variable de entorno EDITOR para especificar qué editor ejecutar. Si establece EDITOR como `emacs', invocan a Emacs, pero de forma incómoda, iniciando un proceso nuevo, aparte, de Emacs. Esto es incómodo porque demora tiempo y porque el nuevo proceso de Emacs no comparte los búferes con ningún proceso existente de Emacs.

Ud. puede preparar que se utilice su proceso existente de Emacs como editor en los programas como mail utilizando el cliente Emacs y el servidor Emacs. Éste es el método.

Primero, la preparación. Dentro de Emacs, llame a la función server-start. (Su archivo `.emacs' lo puede hacer automáticamente si le agrega la expresión (server-start).) Luego, fuera de Emacs, establezca la variable de entorno EDITOR como `emacsclient'. (Observe que algunos programas usan otra variable de entorno; por ejemplo, para hacer que TeX utilice `emacsclient', ud. debe establecer la variable de entorno TEXEDIT a `emacsclient +%d %s'.)

Entonces, siempre que algún programa invoque su programa especificado en EDITOR, el efecto será enviar un mensaje a su Emacs principal diciendo que visite un archivo. (Eso es lo que hace el programa emacsclient.) Emacs muestra el búfer inmediatamente y ud. puede comenzar a editarlo inmediatamente.

Cuando haya terminado de editar dicho búfer, teclee C-x # (server-edit). Esto guarda el archivo y devuelve un mensaje al programa emacsclient ordenándole que salga. Los programas que utilizan EDITOR esperan que el "editor" (en realidad, emacsclient) salga. C-x # también revisa otros pedidos externos pendientes para editar diversos archivos, y selecciona el siguiente de dichos archivos.

Ud. puede pasarse a un búfer del servidor manualmente si quiere; no necesita llegar a él con C-x #. Pero C-x # es el modo de decir que ha acabado con uno.

Acabar con un búfer del servidor también mata el búfer, salvo que ya existiese en la sesión de Emacs antes que el servidor pidiera crearlo. Sin embargo, si ajusta server-kill-new-buffers a nil, se usará un critero diferente: acabar con un búfer del servidor lo mata si el nombre de archivo concuerda con la expresión regular server-temp-file-regexp. La misma está configurada para distinguir ciertos archivos "temporales".

Si asigna a la variable server-window una ventana o marco, C-x # muestra el búfer del servidor en dicha ventana o marco.

Mientars mail u otra aplicación está esperando que emacsclient termine, emacsclient no lee entrada de la terminal. Entonces la terminal que mail usaba está efectivamente bloqueada por ese tiempo. Para editar con su Emacs principal, necesita poder usarlo sin emplear dicha terminal. Hay tres maneras de hacer esto:

Si corre emacsclient con la opción `--no-wait', regresa automáticamente sin esperar que ud. "termine" el búfer con Emacs. Observe que los búfers del servidor creados de esta forma no se matan automáticamente cuando termina con ellos.


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

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