summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elisp/geiser-image.el38
-rw-r--r--elisp/geiser-repl.el3
2 files changed, 21 insertions, 20 deletions
diff --git a/elisp/geiser-image.el b/elisp/geiser-image.el
index 1d8a03a..3e2a666 100644
--- a/elisp/geiser-image.el
+++ b/elisp/geiser-image.el
@@ -1,6 +1,6 @@
;; geiser-image.el -- support for image display
-;; Copyright (c) 2012 Jose Antonio Ortega Ruiz
+;; Copyright (c) 2012, 2015 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -14,6 +14,7 @@
(require 'geiser-custom)
(require 'geiser-base)
+(require 'geiser-impl)
;;; Customization:
@@ -34,34 +35,35 @@
:group 'geiser-image)
(geiser-custom--defcustom geiser-image-cache-dir nil
- ;; Currently, this variable is updated, if needed, by racket during
- ;; initialization. If/when we add image support for other
- ;; implementations, we'll have to work with implementation-specific
- ;; caches.
- "Directory where generated images are stored. If nil, the
-system wide tmp dir will be used."
+ "Default directory where generated images are stored.
+
+If nil,the system wide tmp dir will be used."
:type 'path
:group 'geiser-image)
(geiser-custom--defface image-button
'button geiser-image "image buttons in terminal buffers")
+(geiser-impl--define-caller geiser-image--cache-dir image-cache-dir ()
+ "Directory where generated images are stored. If this function
+returns nil, no images are generated.")
+
(defun geiser-image--list-cache ()
"List all the images in the image cache."
- (and geiser-image-cache-dir
- (file-directory-p geiser-image-cache-dir)
- (let ((files (directory-files-and-attributes
- geiser-image-cache-dir t "geiser-img-[0-9]*.png")))
- (mapcar 'car
- (sort files (lambda (a b)
- (< (float-time (nth 6 a))
- (float-time (nth 6 b)))))))))
+ (let ((cdir (geiser-image--cache-dir nil)))
+ (and cdir
+ (file-directory-p cdir)
+ (let ((files (directory-files-and-attributes cdir t
+ "geiser-img-[0-9]*.png")))
+ (mapcar 'car (sort files (lambda (a b)
+ (< (float-time (nth 6 a))
+ (float-time (nth 6 b))))))))))
(defun geiser-image--clean-cache ()
"Clean all except for the last `geiser-image-cache-keep-last'
-images in `geiser-image-cache-dir'."
+images in `geiser-image--cache-dir'."
(interactive)
(dolist (f (butlast (geiser-image--list-cache) geiser-image-cache-keep-last))
(delete-file f)))
@@ -101,9 +103,7 @@ images in `geiser-image-cache-dir'."
(if (and inline-images-p (display-images-p))
(insert-image (create-image file) "[image]")
(geiser-image--insert-button file)
- (when auto-p (geiser-image--display file)))
- (setq geiser-image-cache-dir (file-name-directory file))
- (geiser-image--clean-cache)))))
+ (when auto-p (geiser-image--display file)))))))
seen))
(defun geiser-view-last-image (n)
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
index 9ecbd25..c5c0490 100644
--- a/elisp/geiser-repl.el
+++ b/elisp/geiser-repl.el
@@ -1,6 +1,6 @@
;;; geiser-repl.el --- Geiser's REPL
-;; Copyright (C) 2009, 2010, 2011, 2012, 2013 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2015 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -440,6 +440,7 @@ module command as a string")
(setq geiser-eval--default-connection-function 'geiser-repl--connection)
(defun geiser-repl--prepare-send ()
+ (geiser-image--clean-cache)
(geiser-autodoc--inhibit-autodoc)
(geiser-con--connection-deactivate geiser-repl--connection))