8
votes

EMACS Auto-Enregistrer sur la mémoire tampon de commutation

Appelle-moi boiteux, mais je suis fatigué de mon subconscient C-X C-S Twitch nerveux. Je chante des tampons assez souvent et je pense que je voudrais enregistrer un certain tampon dès que je passe à un autre. Je n'ai pas encore eu le temps d'apprendre les bases EMACS-LISP.

Toute astuce sur la façon de faire cela, ou de meilleures solutions?

(sur une note connexe, j'ai trouvé un Solution de contournement automatique qui peut enregistrer le tampon actuel comme dès que vous êtes inactif pour un temps donné.)


0 commentaires

3 Réponses :


6
votes

Je suis un peu nouveau à Emacs Lisp moi-même, mais cela fonctionne dans mes tests:

(ad-disable-advice 'switch-to-buffer 'before 'save-buffer-now)
(ad-activate 'switch-to-buffer)


0 commentaires

2
votes

Quelques idées.

Premièrement, si vous vous trouvez appeler une commande comme épargne avec une fréquence suffisamment haute, vous pouvez envisager une liaison de clé plus courte pour la commande. Par exemple, je me suis également retrouvé avoir le même "Twitch", alors maintenant que j'utilise f2 au lieu de CX CS pour sauvegarder les modifications.

La fonction que je lie à F2 enregistre chaque tampon non enregistré inconditionnellement. Vous pourriez le trouver utile: xxx

maintenant, sur le problème principal. Vous pouvez essayer quelque chose comme ceci (remarque que forcer-sauve-tout est appelé): xxx

Bien sûr, vous pouvez également lier le tampon de commutateur fonctionnalité à une autre clé, comme une clé de fonction, de sorte qu'il s'agit d'une opération de presse unique.

Je pensais que @Seth a eu une bonne idée de l'utilisation de conseils, mais j'ai remarqué que le manuel ELISP suggère que Les conseils ne sont pas utilisés pour des liaisons clés . Je ne sais pas trop pourquoi c'est le cas, mais c'est ce que le manuel suggère FYI.


3 commentaires

Intéressant. Je n'ai pas vu cette partie sur les clés de bord lorsque je lisais le manuel. Merci.


Le seul problème avec cette solution est lorsque vous par exemple. Commencez à utiliser IDO-Switch-tampon , vous devez également suivre les modifications de votre fonction.


C'est vrai, je suppose que vous pouvez reculer le symbole de commutation à la mémoire tampon à cette nouvelle fonction (sauvegarder l'original dans un autre symbole, par exemple Orig-Save-to-tamper)



16
votes

Pour développer sur Seth 'S Réponse , je ferais ceci:

(defadvice switch-to-buffer (before save-buffer-now activate)
  (when buffer-file-name (save-buffer)))
(defadvice other-window (before other-window-now activate)
  (when buffer-file-name (save-buffer)))
(defadvice other-frame (before other-frame-now activate)
  (when buffer-file-name (save-buffer)))


1 commentaires

Parfait! Merci :) 6 ans plus tard et encore une bonne réponse