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

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

[elpa] externals/consult b6cd535ee7 1/2: Extract consult--find-file-temp


From: ELPA Syncer
Subject: [elpa] externals/consult b6cd535ee7 1/2: Extract consult--find-file-temporarily
Date: Tue, 5 Apr 2022 14:57:26 -0400 (EDT)

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

    Extract consult--find-file-temporarily
---
 consult.el | 49 +++++++++++++++++++++++++------------------------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/consult.el b/consult.el
index 0b65f3e7ec..c298c8d8d5 100644
--- a/consult.el
+++ b/consult.el
@@ -1115,8 +1115,28 @@ MARKER is the cursor position."
 
 ;;;; Preview support
 
+(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)
+            ((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))))
+
 (defun consult--temporary-files ()
-  "Return a function to open files temporarily."
+  "Return a function to open files temporarily for preview."
   (let ((dir default-directory)
         (hook (make-symbol "consult--temporary-files"))
         (orig-buffers (buffer-list))
@@ -1144,31 +1164,12 @@ MARKER is the cursor position."
                       (apply #'window-state-put state))))))))
     (lambda (&optional name)
       (if name
-          (let ((default-directory dir)
-                (inhibit-message t)
-                (enable-dir-local-variables nil)
-                (enable-local-variables (and enable-local-variables :safe))
-                (non-essential t))
-            (or
+          (let ((default-directory dir))
              ;; get-file-buffer is only a small optimization here. It
              ;; may not find the actual buffer, for directories it
              ;; returns nil instead of returning the Dired buffer.
-             (get-file-buffer name)
-             ;; 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)
-                      (prog1 nil
-                        (message "File `%s' (%s) is too large for preview"
-                                 name (file-size-human-readable size)))
-                 (cl-letf* (((default-value 'delay-mode-hooks) t)
-                            ((default-value 'find-file-hook)
-                             (seq-filter (lambda (x)
-                                           (memq x 
consult-preview-allowed-hooks))
-                                         (default-value 'find-file-hook)))
-                            (buf (find-file-noselect
-                                  name 'nowarn
-                                  (> size consult-preview-raw-size))))
+             (or (get-file-buffer name)
+                 (when-let (buf (consult--find-file-temporarily name))
                    ;; Only add new buffer if not already in the list
                    (unless (or (memq buf temporary-buffers) (memq buf 
orig-buffers))
                      (add-hook 'window-selection-change-functions hook)
@@ -1178,7 +1179,7 @@ MARKER is the cursor position."
                      (while (> (length temporary-buffers) 
consult-preview-max-count)
                        (kill-buffer (car (last temporary-buffers)))
                        (setq temporary-buffers (nbutlast temporary-buffers))))
-                   buf)))))
+                   buf)))
         (remove-hook 'window-selection-change-functions hook)
         (mapc #'kill-buffer temporary-buffers)))))
 



reply via email to

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