Vous pouvez définir des groupes de filtres pour des projets connus en utilisant quelque chose comme ceci:
;; 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)
Mise à jour
Depuis que j'ai écrit cette réponse à l'origine, @sanityinc a créé une variante ibuffer-vcqui crée des groupes de filtres par racine de projet de projectile. Vous pouvez le trouver ibuffer-projectilesur MELPA ou sur GitHub .
Oui, je dois soumettre une demande d'extraction pour soutenir les groupes ibuffer. Il est venu une fois auparavant mais je n'ai pas suivi. : D Je vais y regarder de plus près, il pourrait être plus logique de faire quelque chose comme ibuffer-vc et de construire les groupes en fonction des tampons actuels plutôt que de la liste de projets connue. Mais une option simple serait que le projectile définisse un groupe de filtres nommé à partir de projets connus, comme indiqué ici.
glucas
Comme @Silex l'a noté dans une autre réponse, quelqu'un a déjà ajouté le support ibuffer plus tôt cette année - cela m'avait manqué. C'est une approche différente dans la mesure où elle filtre ibuffer uniquement pour le projet en cours, mais semble pratique.
glucas
@glucas bien mais je pense que les comportements actuels d'Ibuffer dans Projectile sont redondants projectile-switch-buffer. Ibuffer est destiné à gérer une grande quantité de tampons, et c'est pourquoi il a un regroupement et un filtrage. J'aime l'approche actuelle qu'elle regroupe en fonction de la liste des projets connus, ce qui la rend plus cohérente avec Projectile.
Tu Do
5
Projet est entendu dans le sens Projectile du terme.
En utilisant Projectile, il existe un moyen de basculer vers un tampon dans un projet spécifique C-c p b
Puis-je suggérer ibuffer-vc ? Un moyen de regrouper vos tampons par leur répertoire racine vc parent.
ibuffer-vcest assez proche de ce que je recherche. Mais il écrase mon ibuffer-saved-filter-groups; existe-t-il un moyen de créer des groupes VC en plus de mes groupes standard?
ckruse
@ckruse ne sait pas; laissez-moi creuser s'il vous plaît.
projectile-switch-buffer
. Ibuffer est destiné à gérer une grande quantité de tampons, et c'est pourquoi il a un regroupement et un filtrage. J'aime l'approche actuelle qu'elle regroupe en fonction de la liste des projets connus, ce qui la rend plus cohérente avec Projectile.En utilisant Projectile, il existe un moyen de basculer vers un tampon dans un projet spécifique
C-c p b
Puis-je suggérer ibuffer-vc ? Un moyen de regrouper vos tampons par leur répertoire racine vc parent.
la source
ibuffer-vc
est assez proche de ce que je recherche. Mais il écrase monibuffer-saved-filter-groups
; existe-t-il un moyen de créer des groupes VC en plus de mes groupes standard?nox/ibuffer-apply-filter-groups
.En utilisant projectile, vous pouvez simplement taper C-c p I(projectile-ibuffer) et seuls les tampons pour ce projet apparaîtront dans ibuffer.
la source