¿Es posible configurar Emacs, para que guarde todos los archivos cuando la ventana de emacs pierde el foco ?Cómo guardar archivos automáticamente al perder el foco en Emacs
Respuesta
Utilizo esto, solo funcionará si emacs se ejecuta bajo X (como probablemente lo haría en algo como ubuntu).
(when
(and (featurep 'x) window-system)
(defvar on-blur--saved-window-id 0 "Last known focused window.")
(defvar on-blur--timer nil "Timer refreshing known focused window.")
(defun on-blur--refresh()
"Runs on-blur-hook if emacs has lost focus."
(let* ((active-window (x-window-property
"_NET_ACTIVE_WINDOW" nil "WINDOW" 0 nil t))
(active-window-id (if (numberp active-window)
active-window
(string-to-number
(format "%x00%x"
(car active-window)
(cdr active-window)) 16)))
(emacs-window-id (string-to-number
(frame-parameter nil 'outer-window-id))))
(when (and
(= emacs-window-id on-blur--saved-window-id)
(not (= active-window-id on-blur--saved-window-id)))
(run-hooks 'on-blur-hook))
(setq on-blur--saved-window-id active-window-id)
(run-with-timer 1 nil 'on-blur--refresh)))
(add-hook 'on-blur-hook #'(lambda() (save-some-buffers t)))
(on-blur--refresh))
No estoy seguro si esto es lo que quiere.
(defun dld-deselect-frame-hook()
(save-some-buffers 1))
(add-hook 'deselect-frame-hook 'dld-deselect-frame-hook)
Desde: http://www.dribin.org/dave/blog/archives/2003/09/10/emacs/
EDIT: Sólo parece funcionar en XEmacs
Sí, busqué todas las funciones -hooks y -functions, pero no encontré algo que diga seleccionar o enfocar. – Rockiger
Puede usar `guardado automático de intervalo' para guardar cada n caracteres escritos. El mío está establecido en 100. ¿Entonces cada 2-3 líneas de código, tal vez?
auto-save-interval es una variable definida en el 'código fuente C'. Su valor es 100
Documentación: * Número de eventos de entrada entre guardado automático. Cero significa desactivar autoguardado debido al número de caracteres tipeado.
Puede personalizar esta variable.
Esto no responde a su pregunta original; es solo una manera de lograr algo similar.
Lo sé, la característica de la que hablo es de Scribes. Es muy útil al editar html y similares, ya no tiene que presionar C-x C-s, simplemente cambie la ventana y revise su navegador. – Rockiger
[...] la característica de la que estoy hablando es de Scribes. Es muy conveniente cuando editando html y cosas por el estilo, usted no tiene tiene que presionar C-x C-s más, simplemente cambie la ventana y verifique su navegador.
En ese caso, en lugar de cambiar a la aplicación de navegador, ordenar Emacs para cargar la aplicación de navegador (C-c C-v
o M-x browse-url-of-buffer
). Con este método, puede escribir su propia función que guarda la memoria intermedia y luego trae el navegador arriba, como:
(defun my-browse-url-of-buffer()
"Save current buffer and view its content in browser."
(interactive)
(save-buffer)
(browse-url-of-buffer))
y el gancho a una unión conveniente.
O puede seguir utilizando el html-autoview-mode
que cada vez que guarda el búfer, carga automáticamente el archivo en su navegador favorito.
Esto suena como una solución interesante. Voy a intentar esto. Pero todavía estoy un poco sorprendido, que Emacs no puede reaccionar en algo como cambiar el enfoque. – Rockiger
@Rockiger parece que Emacs no proporciona una forma de enganchar al evento desenfocar. –
He añadido focus hooks a Gnu Emacs 24.4.
Se llaman focus-in-hook
y focus-out-hook
.
Puede añadir
(defun save-all()
(interactive)
(save-some-buffers t))
(add-hook 'focus-out-hook 'save-all)
a su archivo .emacs y debe guardar todos los archivos en la pérdida de concentración.
Un liner: '(add-hook 'focus-out-hook (lambda() (interactivo) (save-some-buffers t)))' –
los documentos parecen implicar que su primera nota ya no se aplica, ¿es así? Después de una prueba rápida, parece que 'focus-out-hook' no se ejecuta cuando el administrador de ventanas cambia el foco entre marcos de emacs (que son de la misma instancia de emacs). ¿Quizás la adición de 'handle-switch-frame' alteró el comportamiento que describiste? – ohspite
@ohspite Parece que tienes razón. Gracias por la actualización. – bonkydog
- 1. Configurar 'Guardar al perder el foco' en visual studio 2010
- 2. Ocultar el teclado al perder el foco de UISearchBar
- 3. Ocultando el teclado al perder el foco en un UITextView
- 4. en el cambio sin perder el foco?
- 5. jQuery: perder el foco en el elemento
- 6. jQuery perder evento de foco
- 7. Guardar en textmate2 en el foco perdido
- 8. Toque fuera del texto de edición para perder el foco
- 9. ¿Cómo guardar automáticamente en Vim 7 cuando se pierde el foco de la ventana?
- 10. Emacs: A menudo el cambio entre Emacs y editor de mi IDE, cómo automáticamente 'sintonía' los archivos?
- 11. Cómo recargar los archivos al guardar al usar swank + leiningen + emacs
- 12. ¿Cómo guardar automáticamente en XE2?
- 13. javascript cambiar evento en el elemento de entrada se activa al perder solo el foco
- 14. Formatee automáticamente el código fuente en Netbeans al guardar?
- 15. Formulario de acceso no perder el foco correctamente
- 16. NHibernate establece las propiedades automáticamente al guardar
- 17. Guardar automáticamente la configuración al salir C#
- 18. El control Data Forms de Windows no reconoce el cambio hasta perder el foco
- 19. QFileDialog: ¿agregar extensión automáticamente al guardar el archivo?
- 20. Actualice WPF DataGrid sin perder el foco de celda
- 21. XCode Guardar automáticamente?
- 22. guardar y compilar automáticamente
- 23. Deshabilitar el código de reformateo al guardar archivos
- 24. Cómo cargar archivos en el búfer y cambiar al búfer en el inicio en Emacs
- 25. Emacs Llegar a untabify al guardar ciertos tipos de archivos (y sólo esos tipos de archivo)
- 26. Emacs abrir y guardar la codificación
- 27. Cómo no perder el foco en una página de inicio de sesión
- 28. emacs da advertencia al intentar guardar archivos a través de sshfs
- 29. cómo manejar el error al guardar managedObjectContext?
- 30. Frasco: IOError al guardar archivos cargados
Funciona en Ubuntu según lo anunciado, y no requiere hacer de Emacs el centro del flujo de trabajo. –
Esto es absolutamente increíble, finalmente la solución al problema y ninguna solución. – Rockiger
Creo que la cadena de formato correcta debe ser "% x% 04x" - para mí (Ubuntu 12.04) los marcos secundarios de Emacs tienen ID que no funcionan con tu gancho. (Basado solo en experimentos, no se pudo encontrar ninguna documentación al respecto.) – volferine