Puede definir grupos de filtros para proyectos conocidos usando algo como esto:
;; Define ibuffer filter groups for each known project
(defun my/define-projectile-filter-groups ()
(when (boundp 'projectile-known-projects)
(setq my/project-filter-groups
(mapcar
(lambda (it)
(let ((name (file-name-nondirectory (directory-file-name it))))
`(,name (filename . ,(expand-file-name it)))))
projectile-known-projects))))
;; Set up default ibuffer filter groups
(setq ibuffer-saved-filter-groups
(list
(cons "default"
(append
(my/define-projectile-filter-groups)
;; ... whatever other groups you want, e.g.
'(("dired" (mode . dired-mode))
("erc" (mode . erc-mode)))
))))
;; Enable default groups by default
(add-hook 'ibuffer-mode-hook
(lambda ()
(ibuffer-switch-to-saved-filter-groups "default")))
;; You probably don't want to see empty project groups
(setq ibuffer-show-empty-filter-groups nil)
Actualizar
Desde que originalmente escribí esta respuesta, @sanityinc ha creado una variante ibuffer-vcque crea grupos de filtros por raíz del proyecto de proyectil. Puedes encontrarlo ibuffer-projectileen MELPA o en GitHub .
Esto es exactamente lo que he estado buscando, ¡gracias!
ckruse
Esto podría fusionarse en proyectil.
Tu Do
Sí, debería enviar una solicitud de extracción para admitir grupos de ibuffer. Surgió una vez antes pero no hice seguimiento. : D Voy a echar un vistazo más de cerca, podría tener más sentido hacer algo como ibuffer-vc y construir los grupos en función de los buffers actuales en lugar de la lista de proyectos conocidos. Pero una opción simple sería hacer que el proyectil defina un grupo de filtros con nombre de proyectos conocidos como se muestra aquí.
glucas
Como @Silex señaló en otra respuesta, alguien ya agregó soporte de ibuffer a principios de este año, me lo había perdido. Es un enfoque diferente en el sentido de que filtra ibuffer solo para el proyecto actual, pero parece útil.
glucas
@glucas bien, pero creo que los comportamientos actuales de Ibuffer en Projectile son redundantes projectile-switch-buffer. Ibuffer está diseñado para administrar una gran cantidad de buffers, y es por eso que tiene agrupación y filtrado. Me gusta el enfoque actual que agrupa según la lista de proyectos conocidos, lo que lo hace más coherente con Projectile.
Tu Do
5
Proyecto se entiende en el sentido proyectil de la palabra.
Usando Projectile, hay una manera de cambiar a un buffer dentro de un proyecto específico C-c p b
¿Puedo sugerir ibuffer-vc ? Una forma de agrupar sus búferes por su directorio raíz padre vc.
ibuffer-vcestá bastante cerca de lo que estoy buscando. Pero sobreescribe mi ibuffer-saved-filter-groups; ¿Hay alguna manera de crear los grupos de VC además de mis grupos estándar?
projectile-switch-buffer
. Ibuffer está diseñado para administrar una gran cantidad de buffers, y es por eso que tiene agrupación y filtrado. Me gusta el enfoque actual que agrupa según la lista de proyectos conocidos, lo que lo hace más coherente con Projectile.Usando Projectile, hay una manera de cambiar a un buffer dentro de un proyecto específico
C-c p b
¿Puedo sugerir ibuffer-vc ? Una forma de agrupar sus búferes por su directorio raíz padre vc.
fuente
ibuffer-vc
está bastante cerca de lo que estoy buscando. Pero sobreescribe miibuffer-saved-filter-groups
; ¿Hay alguna manera de crear los grupos de VC además de mis grupos estándar?nox/ibuffer-apply-filter-groups
.Usando proyectil, simplemente puede escribir C-c p I(projectile-ibuffer) y solo los buffers para ese proyecto aparecerán en ibuffer.
fuente