branch: externals/osm commit 86610105769729eda4c2609b4b724903bcdabb88 Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
osm-mode: Bail out with an error if requirements are missing --- osm.el | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/osm.el b/osm.el index 5daabf0374..299408197c 100644 --- a/osm.el +++ b/osm.el @@ -6,7 +6,7 @@ ;; Maintainer: Daniel Mendler <m...@daniel-mendler.de> ;; Created: 2022 ;; Version: 0.7 -;; Package-Requires: ((emacs "27.1") (compat "28.1")) +;; Package-Requires: ((emacs "27.1")) ;; Homepage: https://github.com/minad/osm ;; This file is part of GNU Emacs. @@ -41,7 +41,6 @@ ;;; Code: -(require 'compat) (require 'bookmark) (require 'dom) (eval-when-compile @@ -747,19 +746,27 @@ Should be at least 7 days according to the server usage policies." (* 60 60 24 osm-max-age)) (delete-file file))))))) +(defun osm--check-libraries () + "Check that Emacs is compiled with the necessary libraries." + (let (req) + (unless (display-graphic-p) + (push "graphical display" req)) + (dolist (type '(svg jpeg png)) + (unless (image-type-available-p type) + (push (format "%s support" type) req))) + (unless (libxml-available-p) + (push "libxml" req)) + ;; json-available-p is not available on Emacs 27 + (unless (ignore-errors (equal [] (json-parse-string "[]"))) + (push "libjansson" req)) + (when req + (error "Osm: Please compile Emacs with the required libraries, %s needed to proceed" + (string-join req ", "))))) + (define-derived-mode osm-mode special-mode "Osm" "OpenStreetMap viewer mode." :interactive nil - (unless (display-graphic-p) - (warn "osm: Graphical display is required")) - (dolist (type '(svg jpeg png)) - (unless (image-type-available-p type) - (warn "osm: Support for %s images is missing" type))) - (unless (libxml-available-p) - (warn "osm: libxml is not available")) - ;; json-available-p is not available on Emacs 27 - (unless (ignore-errors (equal [] (json-parse-string "[]"))) - (warn "osm: libjansson is not available")) + (osm--check-libraries) (setq-local osm-server osm-server line-spacing nil cursor-type nil