Utilizo el archivo por lotes de Windows para abrir archivos en una instancia de Emacs que ya se está ejecutando utilizando emacsclientw.exe. Sin embargo, cualquier archivo abierto de esa manera se abre en modo servidor, lo que significa que tengo que usar C-x # para matarlo, en lugar del habitual C-x k. ¿Cómo cambio este comportamiento?¿Cómo se usa C-x k para matar un búfer de Emacs abierto en modo servidor?
Respuesta
uso:
D:\> emacsclientw -n foo.txt
la -n dice "no esperar". Esto está en GNU Emacs 22.2.1 (i386-mingw-nt5.1.2600) de 2008-03-26 en RELEASE (y muchas versiones anteriores, IIRC).
hrm - no puedo hacer que funcione con FireFox "Es todo el "complemento" de texto. No se puede encontrar la ruta
yo uso También es texto completo y solo tiene D: \ producto \ emacs \ bin \ emacsclientw.exe. No tengo problemas para eliminar los búferes visitados usando IAT. No recuerdo haber cambiado nunca el kill-buffer para acomodar esto (y una comprobación rápida a través de mis .emacs confirma esto). –
Ya sabes, odio sugerir soluciones alternativas en lugar de una solución real ... pero después de leer el código del servidor, estoy confundido en cuanto a cómo emacs incluso determina que un búfer es un búfer del servidor.
Con esto en mente, ¿por qué no abrir archivos como:
emacsclient --eval '(find-file "/path/to/file")'
De esta manera Emacs no saben que el tampón se abre a través de emacsclient, que suena como lo que realmente quiere.
Editar:
No estoy muy contento con esto, pero parece que funciona:
(global-set-key (kbd "C-x k") (lambda() (interactive) (server-kill-buffer (current-buffer))))
Obtengo un depurador ingresado - Error Lisp: (número-de-argumentos incorrecto # [nil "
Mi solución fue volver a enlazar (bueno en realidad Mw) a:
(lambda()
(interactive)
(if server-buffer-clients
(server-edit)
(kill-this-buffer)))
[edit: ahora que ha leído el código para editar el servidor, es mejor usar server-done (dependiendo de lo que desee). server-edit lo cambiará a un búfer editado por el servidor (si aún existe alguno) pero server-done simplemente lo cambiará al siguiente buffer. También podría usar la salida de server-done para ver si el búfer realmente fue eliminado (no es el caso si el archivo estaba abierto antes de invocar emacsclient) y luego matarlo si no lo hace. . O el uso del servidor-kill-buffer como se sugiere en otros lugares]
Esto romperá las cosas horriblemente. 'server-edit' cambiará a un búfer de servidor si no está actualmente en uno, lo que significa que solo puede matar búferes si ha matado a todos los búferes del servidor. Además, Mw es un enlace bastante importante, ¿nunca lo usaste?) – jrockway
server-buffer-clients es no-nil si estoy editando si ya estoy en un buffer que un cliente espera, a menos que la documentación esté mal. Y no, no uso kill-ring-save vinculado a Mw. Debo admitir que probablemente vuelva a enlazar demasiadas teclas, pero ... –
OK, tienes razón. Yo usaría server-kill-buffer en su lugar de server-edit. – jrockway
Bueno, esto ha funcionado para mí:
(global-set-key (kbd "C-x k") '(lambda()
(interactive)
(if server-buffer-clients
(server-done)
(kill-this-buffer))))
(este es el código de la respuesta de IvanAndrus con los cambios explícitos de ediciones y comentarios, y el uso de jrockway's keybinding.)
Y, sí, estoy reencuadernando un enlace estándar. PERO es un reemplazo funcional NO algo completamente diferente (por ejemplo, reemplazar el kill-ring-save con cosas del kill-buffer).
Por cierto, EmacsWiki tiene un par de páginas en este topic-- KillKey y KillingBuffer - ninguno de los cuales de aclarar cuáles para mí que el anterior (aunque la primera función de KillKey también utilizó "servidor-editar" .. .).
Esto es lo que puso en mi .emacs para hacer esto:
(add-hook 'server-switch-hook
(lambda()
(local-set-key (kbd "C-x k") '(lambda()
(interactive)
(if server-buffer-clients
(server-edit)
(ido-kill-buffer))))))
gusta esta obra k Cx de la forma habitual cuando no estoy encontrando un archivo de emacsclient (que para mí es ido-mata -buffer), y si estoy usando emacsclient, Cx k hace server-edit si el cliente está esperando, o ejecuta ido-kill-buffer de lo contrario (si usé emacsclient -n).
¡Oh, qué bonito! ¡Funciona como un amuleto, y elimina ese problema de reenlace completo! –
Éste. Este es el que funcionó para mí. – robru
No estoy seguro de si eso funcionará en Windows, pero en Linux, emacs -daemon es genial. Con él, no tiene que ejecutar un programa diferente, y sus enlaces son los mismos. Supongo que hay otras ventajas, pero como nunca pude aprender esas encuadernaciones de emacsclient, nunca las utilicé y no puedo decir.
No creo que haya sido lanzado aún, estoy usando 23.0.60.1 de CVS.
- 1. En Emacs, ¿cómo puedo tener el mismo búfer abierto en marcos de múltiples (cuando se usa ido/iswitch)?
- 2. Se muestra el búfer de Emacs después de cerrar un búfer
- 3. GNU Emacs: modo esqueleto, ¿todavía se usa?
- 4. ¿Cómo matar un proceso abierto en node.js?
- 5. emacs no se cierra a causa de búfer "ido.last"
- 6. "abrir el búfer aquí" en emacs (modo ido)
- 7. emacs lisp, ¿cómo obtener el modo principal de búfer?
- 8. ¿Cómo matar un servidor glassfish en Windows?
- 9. ¿Cerrar automáticamente el modo de shell de emacs?
- 10. En Emacs, ¿cómo habilitar automáticamente un modo secundario en función del nombre del búfer?
- 11. Abrir un búfer de Emacs cuando un comando intenta abrir un editor en modo de shell
- 12. Emacs - Varias columnas un búfer
- 13. Modo Emacs para R?
- 14. ¿Cómo volver a cargar un modo principal de emacs?
- 15. Renderización en el búfer de Emacs
- 16. modo de PHP para Emacs
- 17. emacs - autocompletado en modo Emacs Lisp
- 18. "Diff, save or kill" al matar búferes en Emacs
- 19. Modo Emacs para un lenguaje c-like
- 20. ¿Cómo cambiar el sistema de codificación de búfer en Emacs?
- 21. ¿Hay un modo BNF para Emacs?
- 22. ¿Hay un modo Emacs para Rscript?
- 23. Modo git recomendado para Emacs
- 24. .emacs ¿Editar para iniciar siempre Emacs en modo terminal?
- 25. Ejecutando emacs en modo gráfico en el servidor remoto
- 26. ¿Hay un modo Intercal para GNU Emacs?
- 27. Establecer la fuente de la fuente predeterminada de Emacs por búfer/modo
- 28. ¿Dónde encontrar un software/herramienta de código abierto K-medoid (no k-means) confiable?
- 29. Emacs Lisp: ¿Cómo, un búfer interactivo con REPL?
- 30. Modo principal GLSL para Emacs?
Este es un duplicado de http://stackoverflow.com/questions/268088/, que tiene más respuestas. – Glenn