tutorial source para mac descargar code emacs elisp

source - emacs para mac



Cierre todos los buffers además del actual en Emacs (6)

¿Cómo cierro todo excepto el buffer actual en Emacs? ¿Similar a la función "Cerrar otras pestañas" en los navegadores web modernos?


De EmacsWiki: Killing Buffers :

(defun kill-other-buffers () "Kill all other buffers." (interactive) (mapc ''kill-buffer (delq (current-buffer) (remove-if-not ''buffer-file-name (buffer-list)))))

Editar : actualizado con comentarios de Gilles


Encontré que esta solución es la más simple. Esto elimina todos los búferes excepto el actual. Tienes que agregar este código a tu archivo .emacs

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

Por supuesto, luego lo usas con Mx kill-other-buffers RET o .emacs también el siguiente código en el archivo .emacs y luego presionas Cx Cb

(global-set-key (kbd "C-x C-b") ''kill-other-buffers)


Hay un comando incorporado m - x kill-some-buffers (estoy usando 24.3.50) En mi gui de nextstep (no probado en un terminal pero seguro que es similar), entonces puedes aprobar qué búfer matar.


No hay una manera directa en emacs para hacer esto.

Podrías escribir una función para hacer esto. Lo siguiente cerrará todos los buffers:

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


Para un enfoque más manual, puede listar todos los buffers con Cx Cb , marcar los buffers en la lista para eliminarlos con d , y luego usar x para eliminarlos.

También recomiendo reemplazar list-buffers con el ibuffer más avanzado: (global-set-key (kbd "Cx Cb") ''ibuffer) . Lo anterior funcionará con ibuffer, pero también podrías hacer esto:

m (marque el buffer que desea mantener)
t (marcas de alternancia)
D (matar a todos los búfers marcados)

También utilizo este fragmento de Emacs Wiki, que simplificaría aún más este enfoque manual:

;; Ensure ibuffer opens with point at the current buffer''s entry. (defadvice ibuffer (around ibuffer-point-to-most-recent) () "Open ibuffer with cursor pointed to most recent buffer name." (let ((recent-buffer-name (buffer-name))) ad-do-it (ibuffer-jump-to-buffer recent-buffer-name))) (ad-activate ''ibuffer)


(defun only-current-buffer () (interactive) (let ((tobe-killed (cdr (buffer-list (current-buffer))))) (while tobe-killed (kill-buffer (car tobe-killed)) (setq tobe-killed (cdr tobe-killed)))))

Funciona como esperabas.

Y después de leer la respuesta de @ Starkey, creo que esto será mejor:

(defun only-current-buffer () (interactive) (mapc ''kill-buffer (cdr (buffer-list (current-buffer)))))

(buffer-list (current-buffer)) devolverá una lista que contiene todos los búferes existentes, con el búfer actual a la cabeza de la lista.

Esta es mi primera respuesta en . Espero eso ayude :)