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

    Use different pins for files and routes
---
 osm.el | 57 ++++++++++++++++++++++++++++++---------------------------
 1 file changed, 30 insertions(+), 27 deletions(-)

diff --git a/osm.el b/osm.el
index ba9ed48aa1..c9e9212cd3 100644
--- a/osm.el
+++ b/osm.el
@@ -186,7 +186,8 @@ the domain name and the :user to the string \"apikey\"."
     (osm-bookmark . "#f80")
     (osm-home . "#80f")
     (osm-track . "#00e")
-    (osm-file . "#88f"))
+    (osm-file . "#88f")
+    (osm-route . "#f8f"))
   "Colors of pins."
   :type '(alist :key-type symbol :value-type string))
 
@@ -395,8 +396,8 @@ Should be at least 7 days according to the server usage 
policies."
 (defvar osm--tile-age 0
   "Tile age, incremented on every update.")
 
-(defvar osm--files nil
-  "Global list of loaded tracks.")
+(defvar osm--datasets nil
+  "Global list of loaded data sets.")
 
 (defvar osm--track nil
   "List of track coordinates.")
@@ -980,14 +981,14 @@ Local per buffer since the overlays depend on the zoom 
level.")
            if (eq (bookmark-prop-get bm 'handler) #'osm-bookmark-jump) do
            (pcase-let ((`(,lat ,lon ,zoom) (bookmark-prop-get bm 
'coordinates)))
              (funcall fun 'osm-bookmark lat lon zoom (car bm))))
-  (dolist (file osm--files)
-    (when-let ((start (caaadr file)))
-      (funcall fun 'osm-file (car start) (cdr start) 10
-               (propertize (car file) 'osm-file (car file))))
-    (cl-loop for (lat lon name) in (cddr file) do
-             (funcall fun 'osm-file lat lon 15
-                      (propertize (format "%s [%s]" name (car file))
-                                  'osm-file (car file)))))
+  (cl-loop for (dname id segs waypoints) in osm--datasets do
+    (when-let ((start (caar segs)))
+      (funcall fun id (car start) (cdr start) 10
+               (propertize dname 'osm-dataset dname)))
+    (cl-loop for (lat lon name) in waypoints do
+             (funcall fun id lat lon 15
+                      (propertize (format "%s [%s]" name dname)
+                                  'osm-dataset dname))))
   (cl-loop for (lat lon name) in osm--track do
            (funcall fun 'osm-track lat lon 15 name)))
 
@@ -1070,9 +1071,8 @@ Local per buffer since the overlays depend on the zoom 
level.")
     (let ((pins (make-hash-table :test #'equal))
           (tracks (make-hash-table :test #'equal)))
       (osm--each-pin (apply-partially #'osm--add-pin pins))
-      (dolist (file osm--files)
-        (dolist (seg (cadr file))
-          (osm--add-track tracks seg)))
+      (cl-loop for (_dname _id segs _waypoints) in osm--datasets do
+               (dolist (seg segs) (osm--add-track tracks seg)))
       (osm--add-track tracks osm--track)
       (setq osm--overlays (list osm--zoom pins tracks))))
   (let ((pins (gethash (cons x y) (cadr osm--overlays)))
@@ -1140,7 +1140,7 @@ xmlns='http://www.w3.org/2000/svg' 
xmlns:xlink='http://www.w3.org/1999/xlink'>
               (let ((ext (intern (file-name-extension file))))
                 (if (eq ext 'jpg) 'jpeg ext)))))))
 
-(defun osm--get-tile (x y)
+(defun osm--get-ti-le (x y)
   "Get tile at X/Y."
   (pcase osm--pin
     ((and `(,lat ,lon ,_id ,name)
@@ -1639,8 +1639,9 @@ When called interactively, call the function `osm-home'."
       ('nil nil)
       ('osm-bookmark (osm-bookmark-delete name))
       ('osm-track (osm--track-delete))
-      ('osm-file (setq osm--pin nil)
-                 (osm-hide (get-text-property 0 'osm-file name)))
+      ((or 'osm-file 'osm-route)
+       (setq osm--pin nil)
+       (osm-hide (get-text-property 0 'osm-dataset name)))
       (_ (setq osm--pin nil) (osm--update)))))
 
 (defun osm-rename ()
@@ -1798,10 +1799,11 @@ See `osm-search-server' and `osm-search-language' for 
customization."
          (coords (or (alist-get 'coordinates (alist-get 'geometry route))
                      (error "No route available")))
          (waypoints (alist-get 'waypoints data)))
-    (osm--add-file
+    (osm--add-dataset
      (format "%s ⟶ %s (%s, %skm, %s)" from-name to-name by
              (round (alist-get 'distance route) 1000)
              (seconds-to-string (alist-get 'duration route)))
+     'osm-route
      (list (mapcar (lambda (x) (cons (cadr x) (car x))) coords))
      (mapcar (lambda (x)
                (let ((l (alist-get 'location x)))
@@ -1820,8 +1822,9 @@ See `osm-search-server' and `osm-search-language' for 
customization."
       (setq dom (dom-child-by-tag dom 'gpx)))
     (unless (and dom (eq 'gpx (dom-tag dom)))
       (error "Not a GPX file"))
-    (osm--add-file
+    (osm--add-dataset
      (abbreviate-file-name file)
+     'osm-file
      (cl-loop
       for trk in (dom-children dom)
       if (eq (dom-tag trk) 'trk) nconc
@@ -1841,22 +1844,22 @@ See `osm-search-server' and `osm-search-language' for 
customization."
             (with-no-warnings
               (dom-text (dom-child-by-tag pt 'name))))))))
 
-(defun osm--add-file (name track waypoints)
-  "Add file with NAME consisting of TRACK and WAYPOINTS."
+(defun osm--add-dataset (name id track waypoints)
+  "Add dataset with NAME and ID consisting of TRACK and WAYPOINTS."
   (let* ((bb (osm--bb-from-track track waypoints))
          (center (osm--bb-center bb)))
-    (setf (alist-get name osm--files nil nil #'equal)
-          (cons track waypoints))
+    (setf (alist-get name osm--datasets nil nil #'equal)
+          (list id track waypoints))
     (osm--revert)
     (osm--goto (car center) (cdr center) (osm--bb-to-zoom bb) nil nil nil)))
 
 (defun osm-hide (name)
-  "Hide file with NAME in Osm buffers."
+  "Hide dataset with NAME."
   (interactive (list (completing-read "Hide: "
-                                      (or osm--files
-                                          (error "No files shown"))
+                                      (or osm--datasets
+                                          (error "No datasets shown"))
                                       nil t nil 'file-name-history)))
-  (cl-callf2 assoc-delete-all name osm--files)
+  (cl-callf2 assoc-delete-all name osm--datasets)
   (osm--revert))
 
 (defun osm--server-annotation (cand)

Reply via email to