emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/consult 4f4d29d3e6: consult--multi: Support multiple na


From: ELPA Syncer
Subject: [elpa] externals/consult 4f4d29d3e6: consult--multi: Support multiple narrow keys per source
Date: Tue, 10 Dec 2024 03:57:47 -0500 (EST)

branch: externals/consult
commit 4f4d29d3e6665c73dbfbe743e0c2ae7e6f8cb8af
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    consult--multi: Support multiple narrow keys per source
---
 CHANGELOG.org |  2 ++
 README.org    |  2 ++
 consult.el    | 20 ++++++++++++--------
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index dccfcd72ff..8b183aced5 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -15,6 +15,8 @@
 - Remove special ~org-fold~ code. Set ~org-fold-core-style~ to ~overlays~ if 
unfolding
   in Org files does not work for you.
 - ~consult-info~: Support sub files.
+- ~consult--multi~: Support multiple narrow keys per source. Used by the 
project
+  buffer and project recent file source.
 - ~consult--async-sink~: The new action ~cancel~ was added to the async 
protocol.
 - ~consult--read~: Add new keyword argument ~:initial-narrow~.
 
diff --git a/README.org b/README.org
index 22b6144652..dfdaa693c8 100644
--- a/README.org
+++ b/README.org
@@ -101,6 +101,8 @@ their descriptions.
   - r File registers
   - m Bookmarks
   - p Project
+  - B Project buffers
+  - F Project files
   - Custom [[#multiple-sources][other sources]] configured in 
=consult-buffer-sources=.
 - =consult-buffer-other-window=, =consult-buffer-other-frame=,
   =consult-buffer-other-tab=: Variants of =consult-buffer=.
diff --git a/consult.el b/consult.el
index 692a58eed6..724dea96ec 100644
--- a/consult.el
+++ b/consult.el
@@ -2711,21 +2711,23 @@ KEYMAP is a command-specific keymap."
 (defun consult--multi-predicate (sources cand)
   "Predicate function called for each candidate CAND given SOURCES."
   (let* ((src (consult--multi-source sources cand))
-         (narrow (plist-get src :narrow))
-         (type (or (car-safe narrow) narrow -1)))
-    (or (eq consult--narrow type)
+         (narrow (or (plist-get src :narrow) -1)))
+    (or (pcase narrow
+          (`((,_ . ,_) . ,_) (assq consult--narrow narrow))
+          (`(,k . ,_) (eq consult--narrow k))
+          (k (eq consult--narrow k)))
         (not (or consult--narrow (plist-get src :hidden))))))
 
 (defun consult--multi-narrow (sources)
   "Return narrow list from SOURCES."
   (thread-last
     sources
-    (mapcar (lambda (src)
+    (mapcan (lambda (src)
               (when-let (narrow (plist-get src :narrow))
                 (if (consp narrow)
-                    narrow
+                    (if (consp (car narrow)) (append narrow nil) (list narrow))
                   (when-let (name (plist-get src :name))
-                    (cons narrow name))))))
+                    (list (cons narrow name)))))))
     (delq nil)
     (delete-dups)))
 
@@ -4530,11 +4532,13 @@ If NORECORD is non-nil, do not record the buffer switch 
in the buffer list."
   "Project file candidate source for `consult-buffer'.")
 
 (defvar consult--source-project-buffer-hidden
-  `(:hidden t :narrow (?p . "Project") ,@consult--source-project-buffer)
+  `(:hidden t :narrow ((?p . "Project") (?B . "Project Buffer"))
+            ,@consult--source-project-buffer)
   "Like `consult--source-project-buffer' but hidden by default.")
 
 (defvar consult--source-project-recent-file-hidden
-  `(:hidden t :narrow (?p . "Project") ,@consult--source-project-recent-file)
+  `(:hidden t :narrow ((?p . "Project") (?F . "Project File"))
+            ,@consult--source-project-recent-file)
   "Like `consult--source-project-recent-file' but hidden by default.")
 
 (defvar consult--source-hidden-buffer



reply via email to

[Prev in Thread] Current Thread [Next in Thread]