Question

Est-il possible de configurer Emacs pour qu’il enregistre tous les fichiers lorsque la fenêtre emacs perd se concentrer?

Était-ce utile?

La solution

J'utilise ceci, cela ne fonctionnera que si emacs fonctionne sous X (comme ce serait probablement le cas dans quelque chose comme 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))

Autres conseils

J'ai ajouté des points d'ancrage à Gnu Emacs 24.4.

Ils s'appellent focus-in-hook et focus-out-hook .

Vous pouvez ajouter

(defun save-all ()
  (interactive)
  (save-some-buffers t))

(add-hook 'focus-out-hook 'save-all)

dans votre fichier .emacs et il devrait enregistrer tous les fichiers en cas de perte de concentration.

Vous ne savez pas si c'est ce que vous voulez.

(defun dld-deselect-frame-hook ()
  (save-some-buffers 1))

(add-hook 'deselect-frame-hook 'dld-deselect-frame-hook)

De: http: //www.dribin. org / dave / blog / archives / 2003/09/10 / emacs /

EDIT: Cela ne semble fonctionner que dans XEmacs

  

[& # 8230;] la fonctionnalité dont je parle provient de   Scribes. C'est très pratique quand   l'édition html et similaire, vous ne le faites pas   devez appuyer sur C-x C-s plus, vous   il suffit de changer la fenêtre et vérifiez votre   navigateur.

Dans ce cas, au lieu de basculer vers l'application de navigateur, demandez à Emacs de charger l'application de navigateur ( C-c C-v ou M-x parcourir-url-de-tampon ). Avec cette méthode, vous pouvez écrire votre propre fonction qui enregistre le tampon et puis affiche le navigateur, tel que:

(defun my-browse-url-of-buffer ()
  "Save current buffer and view its content in browser."
  (interactive)
  (save-buffer)
  (browse-url-of-buffer))

Et accrochez-le à une reliure pratique.

Vous pouvez également utiliser le html-autoview-mode pour charger automatiquement le fichier à chaque fois que vous enregistrez le tampon dans votre navigateur favori.

Vous pouvez utiliser "auto-save-interval" pour enregistrer tous les n caractères que vous tapez. Le mien est défini sur 100. Donc, environ toutes les 2-3 lignes de code, peut-être?

  

auto-save-interval est une variable   défini dans le `code source C '. Sa valeur   est 100

     

Documentation:   * Nombre d'événements d'entrée entre les sauvegardes automatiques. Zéro signifie désactiver   sauvegarde automatique en raison du nombre de caractères   tapé.

     

Vous pouvez personnaliser cette variable.

Cela ne répond pas à votre question initiale. c'est juste un moyen de réaliser quelque chose de similaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top