branch: externals/osm
commit 6746d108a1a7dd4e9a7b7048b45fb52155fcc62a
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>

    Improve error handling
---
 osm.el | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/osm.el b/osm.el
index bfb81c74b2..d51d6a6cb5 100644
--- a/osm.el
+++ b/osm.el
@@ -608,8 +608,19 @@ Should be at least 7 days according to the server usage 
policies."
               mwheel-scroll-left-function #'osm--zoom-out-wheel
               mwheel-scroll-right-function #'osm--zoom-in-wheel
               bookmark-make-record-function #'osm--make-bookmark)
+  (add-hook 'change-major-mode-hook #'osm--barf-unsupported nil 'local)
+  (add-hook 'write-contents-functions #'osm--barf-unsupported nil 'local)
   (add-hook 'window-size-change-functions #'osm--resize nil 'local))
 
+(defun osm--barf-unsupported ()
+  "Barf for unsupported operation."
+  (error "Operation is not supported"))
+
+(defun osm--barf-unless-osm ()
+  "Barf if not an `osm-mode' buffer."
+  (unless (eq major-mode #'osm-mode)
+    (error "Not an osm-mode buffer")))
+
 (defun osm--pin-inside-p (x y p q)
   "Return non-nil if pin P/Q is inside tile X/Y."
   (setq x (* x 256) y (* y 256))
@@ -872,8 +883,7 @@ xmlns='http://www.w3.org/2000/svg' 
xmlns:xlink='http://www.w3.org/1999/xlink'>
 
 (defun osm--update ()
   "Update map display."
-  (unless (eq major-mode #'osm-mode)
-    (error "Not an osm-mode buffer"))
+  (osm--barf-unless-osm)
   (rename-buffer (osm--buffer-name) 'unique)
   (osm--update-sizes)
   (osm--update-header)
@@ -1084,8 +1094,7 @@ xmlns='http://www.w3.org/2000/svg' 
xmlns:xlink='http://www.w3.org/1999/xlink'>
 (defun osm-bookmark-set ()
   "Create osm bookmark."
   (interactive)
-  (unless (eq major-mode #'osm-mode)
-    (error "Not an osm-mode buffer"))
+  (osm--barf-unless-osm)
   (unwind-protect
       (pcase-let* ((`(,lat ,lon ,desc) (osm--location-data 
'osm-selected-bookmark "Bookmark"))
                    (def (osm--bookmark-name desc))

Reply via email to