recuperar - Emacs: ¿cómo deshabilitar la comprobación de ''archivo cambiado en disco''?
como recuperar un archivo no guardado en excel (4)
Emacs realmente está tratando de ayudarte aquí. Lea la página de información sobre Protección contra la edición simultánea .
Pero, si aún desea evitar ese mensaje / solicitud, puede redefinir la función que está realizando la solicitud:
(defun ask-user-about-supersession-threat (fn)
"blatantly ignore files that changed on disk"
)
(defun ask-user-about-lock (file opponent)
"always grab lock"
t)
La segunda función es para cuando dos personas están usando Emacs para editar el mismo archivo y brindan una solicitud similar (pero no a la que parecía referirse en la pregunta).
Aconsejaría no anular las dos rutinas, pero está ahí si lo desea.
Si está desactivado, elglobal-auto-revert-mode
activado, puede deshabilitarlo. Añade esto a tu .emacs: (global-auto-revert-mode -1)
Puede saber si el modo está activado mirando la variable del mismo nombre:
C-h v global-auto-revert-mode RET
Si el valor es t
, entonces el modo está activado, de lo contrario está desactivado.
¿Cómo deshabilitar a Emacs para que compruebe que el archivo del búfer se cambió fuera del editor?
En mi caso quise:
(setq revert-without-query ''(".*"))
Documentación para revert-without-query
:
Specify which files should be reverted without query.
The value is a list of regular expressions.
If the file name matches one of these regular expressions,
then ‘revert-buffer’ reverts the file without querying
if the file has changed on disk and you have not edited the buffer.
Me molestó esto porque cada vez que cambiaba de sucursales en git, Emacs pensaba que todos mis archivos habían cambiado.
Revbuffs te ayuda a lidiar con los síntomas de esto. Te permite hacer que todos tus buffers sean recargados.
También puedes probar (global-auto-revert-mode)
que revertirá automáticamente tus archivos a lo que hay en el disco.
Tengo los siguientes en mis .emacs
. Hace que Emacs solo pregunte por los archivos realmente modificados. Si un archivo permanece en el mismo byte, solo se actualiza su marca de tiempo, como sucede a menudo cuando cambia de sucursales en VCS, este "cambio" es ignorado por Emacs.
;; Ignore modification-time-only changes in files, i.e. ones that
;; don''t really change the contents. This happens often with
;; switching between different VC buffers.
(defun update-buffer-modtime-if-byte-identical ()
(let* ((size (buffer-size))
(byte-size (position-bytes size))
(filename buffer-file-name))
(when (and byte-size (<= size 1000000))
(let* ((attributes (file-attributes filename))
(file-size (nth 7 attributes)))
(when (and file-size
(= file-size byte-size)
(string= (buffer-substring-no-properties 1 (1+ size))
(with-temp-buffer
(insert-file-contents filename)
(buffer-string))))
(set-visited-file-modtime (nth 5 attributes))
t)))))
(defun verify-visited-file-modtime--ignore-byte-identical (original &optional buffer)
(or (funcall original buffer)
(with-current-buffer buffer
(update-buffer-modtime-if-byte-identical))))
(advice-add ''verify-visited-file-modtime :around #''verify-visited-file-modtime--ignore-byte-identical)
(defun ask-user-about-supersession-threat--ignore-byte-identical (original &rest arguments)
(unless (update-buffer-modtime-if-byte-identical)
(apply original arguments)))
(advice-add ''ask-user-about-supersession-threat :around #''ask-user-about-supersession-threat--ignore-byte-identical)