1 votes

Comment puis-je fermer tous les tampons dans Emacs ?

Je laisse souvent Emacs (en fait Aquamacs) ouvert et je me retrouve avec de nombreux tampons qui encombrent mon auto-complétion. J'aimerais pouvoir les fermer tous et recommencer à zéro. Pour l'instant, je quitte et rouvre Emacs, mais cela ne me semble pas correct.

Existe-t-il un moyen de fermer tous les tampons dans Emacs ?

C'est Emacs 24.4 / Aquamacs 3.2.

4voto

Ajay Singh Tj Points 71

La fonction suivante a été écrite par le nom d'utilisateur Starkey sur stackoverflow dans une question connexe : https://stackoverflow.com/a/3417472/2112489

(defun close-all-buffers ()
(interactive)
  (mapc 'kill-buffer (buffer-list)))

EDIT :  Comme suggéré par @Drew dans le commentaire ci-dessous, c'est généralement une bonne idée de conserver les tampons internes qui ont un espace en tête dans leur nom. La doc-string fournit une explication sur le fonctionnement de cette fonction. Le raccourci clavier de la fonction F5 est juste un exemple pour tester la fonction en conjonction avec un argument universel.

(defun custom-kill-buffer-fn (&optional arg)
"When called with a prefix argument -- i.e., C-u -- kill all interesting
buffers -- i.e., all buffers without a leading space in the buffer-name.
When called without a prefix argument, kill just the current buffer
-- i.e., interesting or uninteresting."
(interactive "P")
  (cond
    ((and (consp arg) (equal arg '(4)))
      (mapc
        (lambda (x)
          (let ((name (buffer-name x)))
            (unless (eq ?\s (aref name 0))
              (kill-buffer x))))
        (buffer-list)))
    (t
      (kill-buffer (current-buffer)))))

(global-set-key [f5] 'custom-kill-buffer-fn)

2voto

Christian Herenz Points 404

Il me semble que votre principal problème est la présence de trop de vieux tampons, que vous n'avez probablement pas visités depuis un certain temps.

Dans emacs il y a une commande clean-buffer-list . Par défaut, il nettoie les tampons qui n'ont pas été accédés depuis 3 jours (ou 1 heure, dans le cas de certains tampons spéciaux). Bien sûr, vous pouvez personnaliser cette durée. Jetez également un coup d'œil à midnight-mode qui le fait automatiquement à un moment précis.

Si vous voulez tuer tous les tampons, sauf celui que vous utilisez actuellement :

(defun kill-other-buffers ()
  "Kill all other buffers."
  (interactive)
  (mapc 'kill-buffer (delq (current-buffer) (buffer-list))))

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X