From dbfd5ef1fa1ba682229cc9bdd3778ad8963bdf60 Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Sun, 28 Apr 2019 21:30:43 +0200 Subject: [PATCH] Optional image caching, viewing checks for GUI. --- elpher.el | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/elpher.el b/elpher.el index b97d19e..a55b659 100644 --- a/elpher.el +++ b/elpher.el @@ -130,6 +130,10 @@ Otherwise, use the system browser via the BROWSE-URL function." :type '(boolean)) +(defcustom elpher-cache-images nil + "If non-nil, cache images in memory in the same way as other content." + :type '(boolean)) + ;;; Model ;; @@ -328,7 +332,7 @@ content and cursor position fields of the node." (defun elpher-get-selector (address after) "Retrieve selector specified by ADDRESS, then execute AFTER. -The result is stored as a string in the variable elpher-selector-string." +The result is stored as a string in the variable ‘elpher-selector-string’." (setq elpher-selector-string "") (make-network-process :name "elpher-process" @@ -452,22 +456,25 @@ The result is stored as a string in the variable elpher-selector-string." (insert-image content)) (setq cursor-type nil) (elpher-restore-pos)) - (progn - (elpher-with-clean-buffer - (insert "LOADING IMAGE...")) - (elpher-get-selector address - (lambda (proc event) - (unless (string-prefix-p "deleted" event) - (let ((image (create-image - (encode-coding-string elpher-selector-string - 'no-conversion) - nil t))) - (elpher-with-clean-buffer - (insert-image image)) - (setq cursor-type nil) - (elpher-restore-pos) - (elpher-set-node-content elpher-current-node - image))))))))) + (if (display-images-p) + (progn + (elpher-with-clean-buffer + (insert "LOADING IMAGE...")) + (elpher-get-selector address + (lambda (proc event) + (unless (string-prefix-p "deleted" event) + (let ((image (create-image + (encode-coding-string elpher-selector-string + 'no-conversion) + nil t))) + (elpher-with-clean-buffer + (insert-image image)) + (setq cursor-type nil) + (elpher-restore-pos) + (if elpher-cache-images + (elpher-set-node-content elpher-current-node + image))))))) + (elpher-get-node-download))))) ;; Search retrieval @@ -622,8 +629,8 @@ The result is stored as a string in the variable elpher-selector-string." (if button (let ((node (button-get button 'elpher-node))) (if node - (elpher-visit-node (button-get button 'elpher-node) - #'elpher-get-node-download) + (elpher-visit-node (button-get button 'elpher-node + #'elpher-get-node-download)) (message "Can only download gopher links, not general URLs."))) (message "No link selected.")))) -- 2.20.1