package.el pregunta si deseo guardar los archivos modificados antes de la instalación del paquete. ¿Cómo deshabilitar esto?

Pregunta:

Cuando ejecuto Mx package-install para instalar un paquete, me preguntan si quiero guardar archivos, que se han modificado desde la última vez Save file /a/b/c.txt? (y, n, !, ., q, Cr, d or Ch) en el minibúfer). Recibo este mensaje para cada archivo modificado y, si instalo varios paquetes desde el búfer *Packages* , ¡me preguntan varias veces! Esto es increíblemente frustrante, especialmente porque los archivos sobre los que me preguntan no tienen nada que ver con la compilación y, de hecho, podrían ser cualquier archivo, incluidos los archivos de texto ordinarios.

Investigué un poco y descubrí que, al final del día, package.el ejecuta package-unpack para instalar un paquete, que ejecuta package--compile , que ejecuta byte-recompile-directory . Por lo tanto, he configurado lo siguiente en mi init.el (¡aunque no creo que deba hacer eso (!)):

(setq compilation-ask-about-save nil)

Sin mejora.

Francamente, pensé que esto debe ser un efecto secundario de alguna personalización mía, ya que de ninguna manera lo consideraría un comportamiento deseable … hasta que ejecuté emacs -Q para reproducir esto sin mi configuración y, para mi sorpresa , se topó con lo mismo. Si bien esto parece desconcertante, también me ofrece alguna esperanza de que tal vez alguien haya descubierto una manera de desactivar este mensaje súper molesto.

Respuesta:

Como el texto de ayuda le indica cuando escribe Ch (como lo solicitan save-some-buffers , que es la función responsable de la consulta), puede omitir todas las consultas restantes con un simple RET o q .

Ciertamente no me encuentro en esta situación con tanta frecuencia que hacer eso sea una tarea onerosa, por lo que esto podría ser suficiente para usted.

ps compilation-ask-about-save está relacionado con la ejecución de procesos de compilación externos y no con elisp byte-compilation.

Editar:

Una opción sería vinculante noninteractive ("No nulo significa que Emacs se está ejecutando sin terminal interactivo") alrededor del package--compile con consejo, ya que byte-recompile-directory no activará save-some-buffers en ese caso; pero creo que eso va a tener algunas consecuencias indeseables más adelante.

Redefinir save-some-buffers durante el tiempo parece una opción más segura:

(defadvice package--compile (around no-byte-recompile-saves)
  "Inhibit `save-some-buffers' when byte-compiling packages."
  (require 'cl-lib)
  (cl-letf (((symbol-function 'save-some-buffers) 'ignore))
    ad-do-it))
(ad-activate 'package--compile)

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım