commit 69eb1c2b5f47d474b583846589ea9b8bfa480409
parent 2a05c31001b2be7de7aab1531b8a108c38b78db2
Author: andsy10 <andsy1016@gmail.com>
Date: Sun, 27 Sep 2026 21:35:09 +0800
Use default ibuffer predicates with prefix arg
Diffstat:
1 file changed, 32 insertions(+), 30 deletions(-)
diff --git a/project-ibuffer.el b/project-ibuffer.el
@@ -1,4 +1,4 @@
-;;; project-ibuffer.el --- IBuffer integration for project.el -*- lexical-binding: t; -*-
+;;; project-ibuffer.el --- Ibuffer integration for project.el -*- lexical-binding: t; -*-
;;; Commentary:
@@ -9,49 +9,51 @@
;;
;; M-x project-ibuffer
;;
-;; With a prefix argument, prompt for a project. Otherwise, use the
-;; current project.
+;; With a prefix argument, use the standard value of
+;; `ibuffer-maybe-show-predicates' instead of the customized one.
;;; Code:
(require 'project)
+(require 'ibuf-ext)
+
+(define-ibuffer-filter project-files
+ "Limit current view to buffers belonging to a given project."
+ (:description "project root dir"
+ :reader (read-directory-name "Project root: "
+ (when-let* ((pr (project-current)))
+ (project-root pr))))
+ (with-current-buffer buf
+ (and (or buffer-file-name
+ dired-directory
+ list-buffers-directory)
+ (let ((file-name (or buffer-file-name
+ dired-directory
+ list-buffers-directory)))
+ (file-in-directory-p file-name qualifier)))))
-(with-eval-after-load 'ibuffer
- (require 'ibuf-ext nil t)
- (define-ibuffer-filter project-files
- "Show Ibuffer with all buffers in the current project."
- (:description "project root dir"
- :reader (read-directory-name "Project root: "
- (when-let* ((pr (project-current)))
- (project-root pr))))
- (with-current-buffer buf
- (and (or buffer-file-name
- dired-directory
- list-buffers-directory)
- (let ((file-name (or buffer-file-name
- dired-directory
- list-buffers-directory)))
- (file-in-directory-p file-name qualifier))))))
-
-;;;###autoload
(defun project-ibuffer-by-project (project-root)
- "Open an IBuffer window showing all buffers in PROJECT-ROOT."
- (require 'ibuf-ext nil t)
+ "Open an Ibuffer window showing all buffers in PROJECT-ROOT."
(let ((project-name (file-name-nondirectory
(directory-file-name project-root))))
(ibuffer nil (format "*%s Buffers*" project-name)
(list (cons 'project-files project-root)))))
;;;###autoload
-(defun project-ibuffer (prompt-for-project)
- "Open an IBuffer window showing all buffers in the current project.
+(defun project-ibuffer (default-pred)
+ "Open an Ibuffer window showing all buffers in the current project.
-Let user choose another project when PROMPT-FOR-PROJECT is supplied."
+Use the standard value of `ibuffer-maybe-show-predicates' when
+DEFAULT-PRED is supplied."
(interactive "P")
- (let ((project-root (if prompt-for-project
- (project-prompt-project-dir)
- (project-root (project-current t)))))
- (project-ibuffer-by-project project-root)))
+ (let ((project-root (project-root (project-current t))))
+ (if (not default-pred)
+ (project-ibuffer-by-project project-root)
+ (let ((ibuffer-maybe-show-predicates
+ (ignore-errors
+ (eval (car (get 'ibuffer-maybe-show-predicates
+ 'standard-value))))))
+ (project-ibuffer-by-project project-root)))))
(provide 'project-ibuffer)
;;; project-ibuffer.el ends here