branch: externals/consult
commit 5908d5f0b7d1d2f25c9055156aeeab95ae013166
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
Introduce consult-preview-variables (Fix #538)
---
README.org | 1 +
consult.el | 41 ++++++++++++++++++++++++++++-------------
2 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/README.org b/README.org
index b9795887c1..d88e271d15 100644
--- a/README.org
+++ b/README.org
@@ -949,6 +949,7 @@ configuration examples.
| consult-preview-max-count | Maximum number of files to keep open
during preview |
| consult-preview-max-size | Files larger than this size are not
previewed |
| consult-preview-raw-size | Files larger than this size are
previewed in raw form |
+ | consult-preview-variables | Alist of variables to bind during
preview |
| consult-project-buffer-sources | List of virtual project buffer sources
|
| consult-project-function | Function which returns current project
root |
| consult-recent-file-filter | Filter for =consult-recent-file=
|
diff --git a/consult.el b/consult.el
index c298c8d8d5..cf011e04ee 100644
--- a/consult.el
+++ b/consult.el
@@ -306,6 +306,15 @@ The dynamically computed arguments are appended."
"List of `find-file' hooks, which should be executed during file preview."
:type '(repeat symbol))
+(defcustom consult-preview-variables
+ '((inhibit-message . t)
+ (enable-dir-local-variables . nil)
+ (enable-local-variables . nil)
+ (non-essential . t)
+ (delay-mode-hooks . t))
+ "Variables which are bound for file preview."
+ :type '(alist :key-type symbol))
+
(defcustom consult-bookmark-narrow
`((?f "File" ,#'bookmark-default-handler)
(?h "Help" ,#'help-bookmark-jump)
@@ -1117,23 +1126,29 @@ MARKER is the cursor position."
(defun consult--find-file-temporarily (name)
"Open file NAME temporarily for preview."
- (cl-letf ((inhibit-message t)
- (enable-dir-local-variables nil)
- (enable-local-variables nil)
- (non-essential t)
- ((default-value 'delay-mode-hooks) t)
+ (cl-letf ((orig (mapcar (pcase-lambda (`(,k . ,_))
+ (list k (default-value k) (symbol-value k)))
+ consult-preview-variables))
((default-value 'find-file-hook)
(seq-filter (lambda (x)
(memq x consult-preview-allowed-hooks))
(default-value 'find-file-hook))))
- ;; file-attributes may throw permission denied error
- (when-let* ((attrs (ignore-errors (file-attributes name)))
- (size (file-attribute-size attrs)))
- (if (<= size consult-preview-max-size)
- (find-file-noselect name 'nowarn (> size consult-preview-raw-size))
- (message "File `%s' (%s) is too large for preview"
- name (file-size-human-readable size))
- nil))))
+ (unwind-protect
+ (progn
+ (pcase-dolist (`(,k . ,v) consult-preview-variables)
+ (set-default k v)
+ (set k v))
+ ;; file-attributes may throw permission denied error
+ (when-let* ((attrs (ignore-errors (file-attributes name)))
+ (size (file-attribute-size attrs)))
+ (if (<= size consult-preview-max-size)
+ (find-file-noselect name 'nowarn (> size
consult-preview-raw-size))
+ (message "File `%s' (%s) is too large for preview"
+ name (file-size-human-readable size))
+ nil)))
+ (pcase-dolist (`(,k ,_ ,d ,v) orig)
+ (set-default k d)
+ (set k v)))))
(defun consult--temporary-files ()
"Return a function to open files temporarily for preview."