branch: externals/osm
commit 24d369d9c01a0ad97a27d5b9b7c2f3cb799b9d23
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
Configurable cache cleaning
---
osm.el | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/osm.el b/osm.el
index ff552647e6..df44d9c753 100644
--- a/osm.el
+++ b/osm.el
@@ -73,6 +73,11 @@
"Tile cache directory."
:type 'string)
+(defcustom osm-tile-max-age (* 60 60 24 14)
+ "Maximum tile age.
+Should be at least 7 days according to the server usage policies."
+ :type '(choice (const nil) integer))
+
(defconst osm--placeholder1
`(image :type xbm :width 256 :height 256 :background nil
:data ,(make-bool-vector (* 256 256) nil)))
@@ -80,6 +85,7 @@
(defvar osm--search-history nil)
+(defvar osm--clean-cache 0)
(defvar-local osm--url-index 0)
(defvar-local osm--queue nil)
(defvar-local osm--active nil)
@@ -289,22 +295,29 @@
map)
"Keymap used by `osm-mode'.")
-(define-derived-mode osm-mode special-mode "Osm"
- "Open Street Map mode."
- :interactive nil
- (let ((cache (osm--tile-cache)))
- (unless (file-exists-p cache)
- (make-directory cache t))
+(defun osm--clean-cache ()
+ "Clean tile cache."
+ (when (and (integerp osm-tile-max-age)
+ (> (- (float-time) osm--clean-cache) osm-tile-max-age))
+ (setq osm--clean-cache (float-time))
(run-with-idle-timer
30 nil
(lambda ()
- (dolist (file (directory-files cache 'full "\\.png\\'" 'nosort))
+ (dolist (file (directory-files-recursively osm-tile-cache "\\.png\\'"
nil))
(when (> (float-time
(time-since
(file-attribute-modification-time
(file-attributes file))))
- (* 60 60 24 7))
- (delete-file file))))))
+ osm-tile-max-age)
+ (delete-file file)))))))
+
+(define-derived-mode osm-mode special-mode "Osm"
+ "Open Street Map mode."
+ :interactive nil
+ (let ((cache (osm--tile-cache)))
+ (unless (file-exists-p cache)
+ (make-directory cache t)))
+ (osm--clean-cache)
(setq-local line-spacing nil
cursor-type nil
left-fringe-width 1