branch: externals/osm
commit aaa458da26e5bec86240e7d8c51dc5a819ee20b9
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
Rename osm-server to osm-default-server
---
CHANGELOG.org | 1 +
osm.el | 109 ++++++++++++++++++++++++++++++----------------------------
2 files changed, 57 insertions(+), 53 deletions(-)
diff --git a/CHANGELOG.org b/CHANGELOG.org
index 826e21eced..d532cdc9aa 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -6,6 +6,7 @@
- Improve Google Map link handling.
- New customizable =osm-default-zoom=.
+- Rename customizable =osm-server= to =osm-default-server=.
* Version 2.1 (2026-01-09)
diff --git a/osm.el b/osm.el
index 2c852c8077..156707d189 100644
--- a/osm.el
+++ b/osm.el
@@ -197,6 +197,10 @@ apikey. The apikey will be retrieved via
`auth-source-search' with the
"Default zoom level."
:type 'natnum)
+(defcustom osm-default-server 'default
+ "Default tile server."
+ :type 'symbol)
+
(defcustom osm-home
(let ((lat (bound-and-true-p calendar-latitude))
(lon (bound-and-true-p calendar-longitude)))
@@ -217,10 +221,6 @@ apikey. The apikey will be retrieved via
`auth-source-search' with the
"Scroll step in pixel."
:type 'natnum)
-(defcustom osm-server 'default
- "Tile server name."
- :type 'symbol)
-
(defcustom osm-tile-border nil
"Set to t to display thin tile borders.
For debugging set the value to `debug', such that a border is
@@ -424,6 +424,9 @@ Should be at least 7 days according to the server usage
policies."
(defvar-local osm--ny 0
"Number of tiles in y direction.")
+(defvar-local osm--server nil
+ "Server of the map.")
+
(defvar-local osm--zoom nil
"Zoom level of the map.")
@@ -461,10 +464,15 @@ Local per buffer since the overlays depend on the zoom
level.")
`[,(plist-get plist :name)
(osm-server ',(car server))
:style toggle
- :selected (eq osm-server ',(car server))]
+ :selected (eq osm--server ',(car server))]
menu)))
(easy-menu-create-menu "Server" (nreverse menu))))
+(defsubst osm--server-get (prop &optional server)
+ "Return server property PROP for SERVER."
+ (or (plist-get (alist-get (or server osm--server) osm-server-list) prop)
+ (plist-get osm-server-defaults prop)))
+
(defsubst osm--lon-to-normalized-x (lon)
"Convert LON to normalized x coordinate."
(/ (+ lon 180.0) 360.0))
@@ -479,9 +487,9 @@ Local per buffer since the overlays depend on the zoom
level.")
(pcase-let ((`(,min-lat ,max-lat ,min-lon ,max-lon) bb)
(w (/ (frame-pixel-width) 256))
(h (/ (frame-pixel-height) 256)))
- (max (osm--server-property :min-zoom)
+ (max (osm--server-get :min-zoom)
(min
- (osm--server-property :max-zoom)
+ (osm--server-get :max-zoom)
(min (logb (/ w (abs (- (osm--lon-to-normalized-x min-lon)
(osm--lon-to-normalized-x max-lon)))))
(logb (/ h (abs (- (osm--lat-to-normalized-y min-lat)
@@ -541,15 +549,10 @@ Local per buffer since the overlays depend on the zoom
level.")
"Return latitude in pixel of top left corner."
(- (osm--y) osm--wy))
-(defun osm--server-property (prop &optional server)
- "Return server property PROP for SERVER."
- (or (plist-get (alist-get (or server osm-server) osm-server-list) prop)
- (plist-get osm-server-defaults prop)))
-
(defun osm--tile-url (x y zoom)
"Return tile url for coordinate X, Y and ZOOM."
- (let ((url (osm--server-property :url))
- (key (osm--server-property :key)))
+ (let ((url (osm--server-get :url))
+ (key (osm--server-get :key)))
(when (and (string-search "%k" url) (not key))
(require 'auth-source)
(declare-function auth-source-search "auth-source")
@@ -564,7 +567,7 @@ Local per buffer since the overlays depend on the zoom
level.")
(unless key
(warn "No auth source secret found for apikey@%s" host)
(setq key ""))
- (setf (plist-get (alist-get osm-server osm-server-list) :key) key)))
+ (setf (plist-get (alist-get osm--server osm-server-list) :key) key)))
(format-spec
url `((?z . ,zoom) (?x . ,x) (?y . ,y)
(?k . ,(if (functionp key) (funcall key) key))))))
@@ -573,18 +576,18 @@ Local per buffer since the overlays depend on the zoom
level.")
"Return tile file name for coordinate X, Y and ZOOM."
(file-name-concat
(expand-file-name osm-tile-directory)
- (symbol-name osm-server)
+ (symbol-name osm--server)
(format "%d-%d-%d.%s"
zoom x y
- (or (osm--server-property :ext)
+ (or (osm--server-get :ext)
(file-name-extension
(url-file-nondirectory
- (osm--server-property :url)))))))
+ (osm--server-get :url)))))))
(defun osm--enqueue-download (x y)
"Enqueue tile X/Y for download."
(when (let ((n (expt 2 osm--zoom))) (and (>= x 0) (>= y 0) (< x n) (< y n)))
- (let ((job (list osm-server osm--zoom x y)))
+ (let ((job (list osm--server osm--zoom x y)))
(unless (or (member job osm--download-queue) (member job
osm--download-active))
(setq osm--download-queue (nconc osm--download-queue (list job)))))))
@@ -603,7 +606,7 @@ Local per buffer since the overlays depend on the zoom
level.")
(when (equal status "200")
(ignore-errors (rename-file file (string-remove-suffix ".tmp" file) t))
(osm--each
- (when (and (= osm--zoom zoom) (eq osm-server server))
+ (when (and (= osm--zoom zoom) (eq osm--server server))
(osm--display-tile x y (osm--get-tile x y)))))
(cl-callf2 delete (list server zoom x y) osm--download-active)
(delete-file file)))
@@ -612,8 +615,8 @@ Local per buffer since the overlays depend on the zoom
level.")
(defun osm--download-command ()
"Build download command."
(let* ((count 0)
- (batch (osm--server-property :download-batch))
- (parallel (osm--server-property :max-connections))
+ (batch (osm--server-get :download-batch))
+ (parallel (osm--server-get :max-connections))
args jobs job)
(while (and (< count batch)
(setq job (nth (* count parallel) osm--download-queue)))
@@ -634,13 +637,13 @@ Local per buffer since the overlays depend on the zoom
level.")
(defun osm--download ()
"Download next tiles from the queue."
- (when (and (< (length (alist-get osm-server osm--download-processes))
- (osm--server-property :max-connections))
+ (when (and (< (length (alist-get osm--server osm--download-processes))
+ (osm--server-get :max-connections))
osm--download-queue)
(pcase-let ((`(,command . ,jobs) (osm--download-command))
(dir (file-name-concat (expand-file-name osm-tile-directory)
- (symbol-name osm-server)))
- (server osm-server))
+ (symbol-name osm--server)))
+ (server osm--server))
(make-directory dir t)
(push
(make-process
@@ -689,14 +692,14 @@ Local per buffer since the overlays depend on the zoom
level.")
(defun osm--zoom-in-wheel (_n)
"Zoom in with the mouse wheel."
(pcase-let ((`(,x . ,y) (posn-x-y (event-start last-input-event))))
- (when (< osm--zoom (osm--server-property :max-zoom))
+ (when (< osm--zoom (osm--server-get :max-zoom))
(osm--move (/ (- x osm--wx) 2) (/ (- y osm--wy) 2))
(osm-zoom-in))))
(defun osm--zoom-out-wheel (_n)
"Zoom out with the mouse wheel."
(pcase-let ((`(,x . ,y) (posn-x-y (event-start last-input-event))))
- (when (> osm--zoom (osm--server-property :min-zoom))
+ (when (> osm--zoom (osm--server-get :min-zoom))
(osm--move (- osm--wx x) (- osm--wy y))
(osm-zoom-out))))
@@ -793,8 +796,8 @@ Local per buffer since the overlays depend on the zoom
level.")
"Zoom N times into the map."
(interactive "p" osm-mode)
(osm--barf-unless-osm)
- (setq osm--zoom (max (osm--server-property :min-zoom)
- (min (osm--server-property :max-zoom)
+ (setq osm--zoom (max (osm--server-get :min-zoom)
+ (min (osm--server-get :max-zoom)
(+ osm--zoom (or n 1)))))
(osm--update))
@@ -900,7 +903,7 @@ Local per buffer since the overlays depend on the zoom
level.")
"OpenStreetMap viewer mode."
:interactive nil :abbrev-table nil :syntax-table nil
(osm--check-libraries)
- (setq-local osm-server osm-server
+ (setq-local osm--server osm-default-server
line-spacing nil
cursor-type nil
cursor-in-non-selected-windows nil
@@ -1141,7 +1144,7 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
(osm--lat-to-y lat osm--zoom)
lat lon 'osm-selected name)))
(_
- (let* ((key `(,osm-server ,osm--zoom ,x . ,y))
+ (let* ((key `(,osm--server ,osm--zoom ,x . ,y))
(tile (and osm--tile-cache (gethash key osm--tile-cache))))
(if tile
(progn (setcar tile osm--tile-age) (cdr tile))
@@ -1209,7 +1212,7 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
(defun osm--update-header ()
"Update header line."
(let* ((meter-per-pixel (/ (* 156543.03 (cos (/ osm--lat (/ 180.0
float-pi)))) (expt 2 osm--zoom)))
- (server (osm--server-property :name))
+ (server (osm--server-get :name))
(meter 1) (idx 0)
(factor '(2 2.5 2))
(sep #(" " 0 1 (display (space :width (1))))))
@@ -1272,7 +1275,7 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
(defun osm--update-copyright ()
"Update copyright info."
- (let ((copyright (and osm-copyright (osm--server-property :copyright))))
+ (let ((copyright (and osm-copyright (osm--server-get :copyright))))
(if (not copyright)
(when (eq 'osm-copyright (car-safe tab-line-format))
(kill-local-variable 'tab-line-format))
@@ -1352,7 +1355,7 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
`(,name
(location . ,(osm--location-name lat lon loc 6))
(coordinates ,lat ,lon ,osm--zoom)
- (server . ,osm-server)
+ (server . ,osm--server)
(handler . ,#'osm-bookmark-jump)))
(defun osm--org-link-props ()
@@ -1361,15 +1364,15 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
(name (osm--location-name lat lon loc 2)))
(list :type "geo"
:description
- (if (eq osm-server (default-value 'osm-server))
- (string-remove-suffix (concat " " (osm--server-property :name))
+ (if (eq osm--server osm-default-server)
+ (string-remove-suffix (concat " " (osm--server-get :name))
name)
name)
:link
(format "geo:%.6f,%.6f;z=%s%s"
lat lon osm--zoom
- (if (eq osm-server (default-value 'osm-server)) ""
- (format ";s=%s" osm-server))))))
+ (if (eq osm--server osm-default-server) ""
+ (format ";s=%s" osm--server))))))
(defun osm--rename-buffer ()
"Rename current buffer."
@@ -1383,7 +1386,7 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
The coordinates are formatted with precision PREC."
(format (format "%%s%%.%df° %%.%df° Z%%s %%s" prec prec)
(if loc (concat loc ", ") "")
- lat lon osm--zoom (osm--server-property :name)))
+ lat lon osm--zoom (osm--server-get :name)))
(defun osm--bookmark-name (lat lon loc)
"Return bookmark name for LAT/LON/LOC."
@@ -1393,8 +1396,8 @@ The coordinates are formatted with precision PREC."
"Go to LAT/LON/ZOOM, change SERVER.
Optionally place pin with ID and NAME."
;; Server not found
- (when (and server (not (assq server osm-server-list))) (setq server nil))
- (let ((def-server (or server osm-server))
+ (unless (assq server osm-server-list) (setq server nil))
+ (let ((def-server (or server osm-default-server))
(def-lat (or lat (car osm-home)))
(def-lon (or lon (cadr osm-home)))
(def-zoom (or zoom (if (and lat lon) osm-default-zoom (caddr
osm-home)))))
@@ -1405,7 +1408,7 @@ Optionally place pin with ID and NAME."
(cl-loop
for buf in (buffer-list) thereis
(and (equal (buffer-local-value 'major-mode buf) #'osm-mode)
- (equal (buffer-local-value 'osm-server buf) def-server)
+ (equal (buffer-local-value 'osm--server buf) def-server)
(equal (buffer-local-value 'osm--zoom buf) def-zoom)
(equal (buffer-local-value 'osm--lat buf) def-lat)
(equal (buffer-local-value 'osm--lon buf) def-lon)
@@ -1413,9 +1416,9 @@ Optionally place pin with ID and NAME."
(generate-new-buffer "*osm*"))
(unless (eq major-mode #'osm-mode)
(osm-mode))
- (when (and server (not (eq osm-server server)))
- (setq-local osm-server server
- osm--download-queue nil))
+ (when (and server (not (eq osm--server server)))
+ (setq osm--server server
+ osm--download-queue nil))
(when (or (not (and osm--lon osm--lat)) lat)
(setq osm--lat def-lat
osm--lon def-lon
@@ -1906,7 +1909,7 @@ See `osm-search-server' and `osm-search-language' for
customization."
(defun osm--server-annotation (cand)
"Annotation for server CAND."
- (when-let* ((copyright (osm--server-property :copyright (get-text-property 0
'osm--server cand)))
+ (when-let* ((copyright (osm--server-get :copyright (get-text-property 0
'osm--server cand)))
(str
(replace-regexp-in-string
"{\\(.*?\\)|.*?}"
@@ -1920,7 +1923,7 @@ See `osm-search-server' and `osm-search-language' for
customization."
"Group function for server CAND with candidate TRANSFORM."
(if transform
cand
- (osm--server-property :group (get-text-property 0 'osm--server cand))))
+ (osm--server-get :group (get-text-property 0 'osm--server cand))))
;;;###autoload
(defun osm-server (server)
@@ -1950,8 +1953,8 @@ See `osm-search-server' and `osm-search-language' for
customization."
(group-function . ,#'osm--server-group)))
nil t nil 'osm--server-history
(format fmt
- (osm--server-property :name)
- (or (osm--server-property :description) "")))))
+ (osm--server-get :name)
+ (or (osm--server-get :description) "")))))
(list
(get-text-property 0 'osm--server
(or (car (member selected servers))
@@ -1964,15 +1967,15 @@ If prefix ARG is given, store URL as Elisp expression."
(interactive "P" osm-mode)
(osm--barf-unless-osm)
(pcase-let* ((`(,lat ,lon ,loc) (osm--fetch-location-data "New Link"))
- (server (and (not (eq osm-server (default-value 'osm-server)))
osm-server))
+ (server (and (not (eq osm--server osm-default-server))
osm--server))
(url (if arg
(format "(osm %.6f %.6f %s%s%s)"
lat lon osm--zoom
- (if server (format " '%s" osm-server) "")
+ (if server (format " '%s" server) "")
(if loc (format " %S" loc) ""))
(format "geo:%.6f,%.6f;z=%s%s%s"
lat lon osm--zoom
- (if server (format ";s=%s" osm-server) "")
+ (if server (format ";s=%s" server) "")
(if loc (format " (%s)" loc) "")))))
(kill-new url)
(message "Saved in the kill ring: %s" url)))