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

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

[elpa] externals/consult 776351b5ab 2/3: consult--find-file-temporarily:


From: ELPA Syncer
Subject: [elpa] externals/consult 776351b5ab 2/3: consult--find-file-temporarily: Do not preview so-long files
Date: Sun, 10 Apr 2022 10:57:24 -0400 (EDT)

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

    consult--find-file-temporarily: Do not preview so-long files
---
 consult.el | 49 ++++++++++++++++++++++++++++---------------------
 1 file changed, 28 insertions(+), 21 deletions(-)

diff --git a/consult.el b/consult.el
index a8144929a6..7d8dee2f95 100644
--- a/consult.el
+++ b/consult.el
@@ -1129,31 +1129,38 @@ ORIG is the original function, HOOKS the arguments."
 
 (defun consult--find-file-temporarily (name)
   "Open file NAME temporarily for preview."
-  (let ((vars (delq nil
-                    (mapcar (pcase-lambda (`(,k . ,v))
+  (setq name (abbreviate-file-name (expand-file-name 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)
+        (let* ((vars (delq nil
+                           (mapcar
+                            (pcase-lambda (`(,k . ,v))
                               (if (boundp k)
                                   (list k v (default-value k) (symbol-value k))
                                 (message "consult-preview-variables: The 
variable `%s' is not bound" k)
                                 nil))
-                            consult-preview-variables))))
-    ;; 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)
-          (unwind-protect
-              (progn
-                (advice-add #'run-hooks :around 
#'consult--filter-find-file-hook)
-                (pcase-dolist (`(,k ,v . ,_) vars)
-                  (set-default k v)
-                  (set k v))
-                (find-file-noselect name 'nowarn (> size 
consult-preview-raw-size)))
-            (advice-remove #'run-hooks #'consult--filter-find-file-hook)
-            (pcase-dolist (`(,k ,_ ,d ,v) vars)
-              (set-default k d)
-              (set k v)))
-        (message "File `%s' (%s) is too large for preview"
-                 name (file-size-human-readable size))
-        nil))))
+                            consult-preview-variables)))
+               (buf (unwind-protect
+                        (progn
+                          (advice-add #'run-hooks :around 
#'consult--filter-find-file-hook)
+                          (pcase-dolist (`(,k ,v . ,_) vars)
+                            (set-default k v)
+                            (set k v))
+                          (find-file-noselect name 'nowarn (> size 
consult-preview-raw-size)))
+                      (advice-remove #'run-hooks 
#'consult--filter-find-file-hook)
+                      (pcase-dolist (`(,k ,_ ,d ,v) vars)
+                        (set-default k d)
+                        (set k v)))))
+          (if (not (buffer-local-value 'so-long-detected-p buf))
+              buf
+            (kill-buffer buf)
+            (message "File `%s' has long lines, not previewed" name)
+            nil))
+      (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 for preview."



reply via email to

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