J'ai remarqué que dans des sessions d'édition longues, appeler Y a-t-il un moyen de nettoyer l'arborescence de l'UNDOS sur un fichier ouvert? J'ai essayé Undo-arborescence code> (c-x c-u) devient plus lent et plus lent. Je présume que la raison est que, car l'arbre pousse plus grand, il faut plus de temps pour l'analyser (car il garde une trace de toutes mes modifications depuis que j'ai ouvert le fichier) p>
cx cv code> (
recherche-alternate-fichier code>), mais cela ouvre le fichier qui réinitialise le curseur (et dans les modes tels que
org-mode < / code> effondre mes listes) p>
4 Réponses :
Réinitialiser le Ceci peut également être effectué dans une commande et lié à une clé avec code comme celui-ci: p > tampon-tann-arborescence code> variable à l'aide de
M-: (SETQ tampon-tann-arbre nil) code>. Ceci repeille l'ensemble des antécédents du tampon, tel que enregistré par
annuler-arbor.el code>.
(defun clear-undo-tree ()
(interactive)
(setq buffer-undo-tree nil))
(global-set-key [(control c) u] 'clear-undo-tree)
Merci. Savez-vous quelle est la différence entre votre réponse et celle de @npostavs?
Une différence est que annuler-arbores-jupard-historique code> essaie de pruneal de l'historique en fonction des variables
annuler-limite code>,
défaire-limite code>, et
Undo-externe-limite code>, tandis que ma solution supprime l'historique des annulations complètes. Plus important encore,
Undo-Tree-Discard-Historique Code> est automatiquement invoqué sur toutes les opérations d'annulation / redo / redo / commutateur, donc évidemment, cela ne fonctionne pas pour vous.
Vous pouvez tailler l'arborescence au lieu de jeter le tout:
undo-tree-discard-history is a compiled Lisp function in `undo-tree.el'. (undo-tree-discard-history) Discard undo history until we're within memory usage limits set by `undo-limit', `undo-strong-limit' and `undo-outer-limit'.
Quelle est la différence entre appeler la fonction (anglo-arbores-jupard) code> et régler la variable
(tampon-annulation) code> à
nil code> nil code> ? (comme dans @ user4815162342 réponse)
@ user273158: réduire ou supprimer entièrement selon l'utilisateur 4815162342 Commentaire. Je n'avais pas remarqué que cela s'appelait chaque annulation / refait. Vraisemblablement, vous pourriez réduire les limites pour le rendre plus efficace.
Notez que cette pointe peut être obsolète dans les versions récentes des annulations. À partir de la version 0.6, Annuler l'arbre utilise "dessin paresseux" par défaut. Cela accélère considérablement la visualisation des grands arbres d'annulation, en tirant uniquement la partie visible (et en l'étendant si nécessaire que vous déplacez autour de l'arbre). Voir la docstring pour le Si vous voulez néanmoins supprimer l'intégralité de l'arborescence d'annulation, régler manuellement Appeler manuellement Undo-Tree-Visualizer-paresseux-dessin code> variable pour plus de détails. P>
tampon-tannant-arborescence code> à
nil code> est une bonne solution unique. Une solution à plus longue durée consiste à réduire les valeurs de
annuler-limite code>,
échec-forte-limite code> et
défaire-externe-limite code> à limiter La taille des arbres d'annulation, en limitant la quantité d'antécédents d'annulation qu'il stocke avant de jeter des données plus anciennes. P>
Undo-Tree-Discard-Historique Code> est inutile. Il est appelé automatiquement chaque fois que vous faites quelque chose d'annulation. P>
De temps en temps, je dois affleurer un annulation d'un tampon, car j'ai collé un texte qui contenait des caractères qui ne peuvent pas être affichés dans le codage actuel de la mémoire tampon / du fichier. J'ai donc trouvé la fonction de @amelio Vazquez-Reina très utile. Cependant, je ne veux pas que la fonction soit appelée par accident, donc une invite de confirmation ajoutée et un chèque que tampon-tann-arborescent code> est vraiment une variable locale tampon:
(defun clean-undo-tree ()
"Clear current buffer's undo-tree.
Undo-tree can cause problems with file encoding when characters
are inserted that cannot be represented using the files current
encoding. This is even the case when characters are only
temporarily inserted, e.g. pasted from another source and then
instantly deleted. In these situations it can be necessary to
clear the buffers undo-tree before saving the file."
(interactive)
(let ((buff (current-buffer)))
(if (local-variable-p 'buffer-undo-tree)
(if (y-or-n-p "Clear buffer-undo-tree? ")
(progn
(setq buffer-undo-tree nil)
(message "Cleared undo-tree of buffer: %s" (buffer-name buff)))
(message "Cancelled clearing undo-tree of buffer: %s" (buffer-name buff)))
(error "Buffer %s has no local binding of `buffer-undo-tree'" (buffer-name buff)))))