Estoy tratando de configurar el demonio del servidor emacs y usar emacsclient en MS Windows para que los archivos se puedan abrir rápidamente sin el retraso y la sobrecarga asociados con el inicio de instancias adicionales de emacs para cada archivo abierto. Estoy siguiendo las instrucciones específicas proporcionadas en emacswiki para MS Windows que implica:
- Ejecutando emacs como demonio,
runemacs.exe --daemon
- Seguido invocando
emacsclientw.exe
con las opciones apropiadas.
El inicio del daemon tiene éxito (veo emacs.exe en la lista de procesos), pero invocar emacsclient produce errores. La wiki dice crear un atajo emacsclientw.exe
y cambiar el objetivo a
X:\path\to\emacs\bin\emacsclientw.exe -na "X:\path\to\emacs\bin\emacsclientw.exe" -c -n
¿Es esto correcto? Parece que el cliente se invoca dos veces. El uso del destino como se muestra no ejecuta el programa y produce el error "nombre de archivo o argumento requerido". Usando solo la primera parte del objetivo que se muestra arriba
X:\path\to\emacs\bin\emacsclientw.exe -na
produce un error genérico Usando solo la segunda parte
X:\path\to\emacs\bin\emacsclientw.exe -c -n
produce el error "Sin socket o editor alternativo". (Las opciones oficiales de emacsclient se describen aquí ) .
¿Alguna sugerencia? Emacs funciona bien en modo estándar, es decir, no en modo demonio. Versión 25.1. Preferiría ejecutar el daemon en lugar de iniciar el servidor en mi archivo de inicialización.
fuente
Error: Cannot connect even after starting the Emacs daemon
Confirmado que este acceso directo inicia el proceso del demonio, pero los archivos aún se abren en su propia instancia de emacs. Probado con y sin privilegios de administrador. Emacs 25.1, Windows 7.Error: Cannot connect even after starting the Emacs daemon
.El comando que uso es:
(Si la carpeta bin Emacs no está en su
PATH
, use las rutas completas paraemacsclientw.exe
yrunemacs.exe
.)o con los nombres cortos de las opciones y el truco de la cadena vacía,
Tenga en cuenta que el truco de la cadena vacía para
-a
iniciará el demonio si no se está ejecutando, pero se supone que esto no funcionará hasta Emacs 26 (todavía estoy en 25). Antes del 26 debe especificar el editor alternativo explícitamente. Solíarunemacs.exe
, pero mi Emacs está configurado para iniciar el servidor y dejarlo en funcionamiento.Debido a que Windows carece de los sockets de dominio de Unix locales que
emacsclient
normalmente se habrían utilizado para conectarse al servidor, tiene que recurrir al uso de un socket TCP de red. Por razones obvias de seguridad, no desea que cualquiera en su red acceda a todo su sistema de archivos a través del servidor Emacs. Por lo tanto,emacsclient
debe conocer el puerto correcto (efímero) y el token de seguridad escrito en el archivo del servidor antes de que el servidor le permita conectarse.Si el servidor ya se está ejecutando, entonces no debería necesitar el
-a
(pero no hace daño). Puede establecer laALTERNATE_EDITOR
variable de entorno en lugar de usar-a
.Si configura la
EMACS_SERVER_FILE
variable de entorno, no necesita especificarla nuevamente con-f
.fuente
Para Emacs 26.3 y Windows 10 funciona:
Demonio :
C:\YOUR_EMACS\emacs-26.3\bin\emacs.exe "--daemon"
Cliente : por ejemplo:
C:\YOUR_EMACS\emacs-26.3\bin\emacsclientw.exe "temp.org"
Cuando agrega el ejecutable de Emacs
PATH
, puede abrirlo fácilmenteemacsclientw.exe
desde cualquier lugar. También puede agregar daemon en la carpeta de inicio:C:\Windows\System32\cmd.exe /c start /high emacs.exe "--daemon"
fuente