summaryrefslogtreecommitdiff
path: root/cape.el
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2025-05-09 18:15:07 +0200
committerDaniel Mendler <mail@daniel-mendler.de>2025-05-09 18:15:07 +0200
commit74429090fa5a7d2fc623d9f3de11e181eb67c0c2 (patch)
tree477b73dcfb0ccecc446465ae6516c1b39eea8a34 /cape.el
parent1d579099f2d59842ddbf2a32f7bfc09268015016 (diff)
cape-same-mode-buffers/cape-text-buffers: Support completion in the minibuffer
Diffstat (limited to 'cape.el')
-rw-r--r--cape.el33
1 files changed, 19 insertions, 14 deletions
diff --git a/cape.el b/cape.el
index 4166931..a58c1a0 100644
--- a/cape.el
+++ b/cape.el
@@ -133,25 +133,30 @@ The buffers are scanned for completion candidates by `cape-line'."
;;;; Helpers
-(defun cape-same-mode-buffers ()
- "Return buffers with same major mode as current buffer."
+(defun cape--buffer-list (pred)
+ "Return list of buffers satisfying PRED."
(let ((cur (current-buffer)))
(cons cur
- (cl-loop for buf in (buffer-list)
- if (and (not (eq buf cur))
- (eq major-mode (buffer-local-value 'major-mode buf)))
- collect buf))))
+ (if (minibufferp)
+ (cl-loop for win in (window-list)
+ for buf = (window-buffer win)
+ unless (eq buf cur) collect buf)
+ (cl-loop for buf in (buffer-list)
+ if (and (not (eq buf cur)) (funcall pred buf))
+ collect buf)))))
+
+(defun cape-same-mode-buffers ()
+ "Return buffers with same major mode as current buffer."
+ (cape--buffer-list
+ (lambda (buf) (eq major-mode (buffer-local-value 'major-mode buf)))))
(defun cape-text-buffers ()
"Return `text-mode' and `prog-mode' buffers."
- (let ((cur (current-buffer)))
- (cons cur
- (cl-loop for buf in (buffer-list)
- for mode = (buffer-local-value 'major-mode buf)
- if (and (not (eq buf cur))
- (or (provided-mode-derived-p mode #'text-mode)
- (provided-mode-derived-p mode #'prog-mode)))
- collect buf))))
+ (cape--buffer-list
+ (lambda (buf)
+ (let ((mode (buffer-local-value 'major-mode buf)))
+ (or (provided-mode-derived-p mode #'text-mode)
+ (provided-mode-derived-p mode #'prog-mode))))))
(defun cape--case-fold-p (fold)
"Return non-nil if case folding is enabled for FOLD."