branch: externals/osm
commit 9fa61e4b127f74d345c5261058d5d83eca0c207f
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    osm-ol: Switch org link convention to geo uri scheme (RFC 5870)
---
 README.org | 12 ++++++------
 osm-ol.el  | 24 ++++++++++++------------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/README.org b/README.org
index c66715bd65..d4a7987b09 100644
--- a/README.org
+++ b/README.org
@@ -76,15 +76,15 @@ created at point with the mouse, see 
~osm-bookmark-set-click~ and
 **** Org link examples
 
 Click on a link or press ~RET~ to jump to the location. These links work in Org
-buffers in Emacs. Furthermore you can open Org links in arbitary buffers with
+buffers in Emacs. Furthermore you can open Org links in arbitrary buffers with
 ~org-open-at-point-global~. I recommend binding this command to a key, e.g., 
~C-c o~.
 
 #+begin_example
-  [[osm:opentopomap:41.869560826994544,12.45849609375,6][Italia, 41.87° 12.46° 
OpenTopoMap]]
-  [[osm:51.48950698022105,-0.144195556640625,11][London, England, 51.49° 
-0.14°]]
-  [[osm:cyclosm:55.686875255964424,12.569732666015625,12][København, Danmark, 
55.69° 12.57° CyclOSM]]
-  [[osm:stamen-watercolor:40.72956780913898,-73.97918701171875,12][New York, 
United States, 40.73° -73.98° Stamen Watercolor]]
-  [[osm:opentopomap:27.961656050984658,86.89224243164062,13][Mount Everest, 
27.96° 86.89° OpenTopoMap]]
+  [[osm:41.869560826994544,12.45849609375;z=6;s=opentopomap][Italia, 41.87° 
12.46° OpenTopoMap]]
+  [[osm:51.48950698022105,-0.144195556640625;z=11][London, England, 51.49° 
-0.14°]]
+  [[osm:55.686875255964424,12.569732666015625;z=12;s=cyclosm][København, 
Danmark, 55.69° 12.57° CyclOSM]]
+  [[osm:40.72956780913898,-73.97918701171875;z=12;s=stamen-watercolor][New 
York, United States, 40.73° -73.98° Stamen Watercolor]]
+  [[osm:27.961656050984658,86.89224243164062;z=13;s=opentopomap][Mount 
Everest, 27.96° 86.89° OpenTopoMap]]
   <osm:Tour Eiffel, Av. Gustave Eiffel, Paris> (Address link)
 #+end_example
 
diff --git a/osm-ol.el b/osm-ol.el
index 1c456ded97..1c531c9d09 100644
--- a/osm-ol.el
+++ b/osm-ol.el
@@ -40,14 +40,16 @@
   (save-match-data
     (cond
      ((string-match
-       "\\`\\(?:\\([^:]+\\):\\)?\\([0-9.-]+\\),\\([0-9.-]+\\),\\([0-9]+\\)\\'" 
link)
-      (osm--goto
-       (string-to-number (match-string 2 link))
-       (string-to-number (match-string 3 link))
-       (string-to-number (match-string 4 link))
-       (and (match-end 1) (intern (match-string 1 link)))
-       'osm-link
-       "Org Link"))
+       "\\`\\([0-9.-]+\\),\\([0-9.-]+\\)\\(?:,[0-9.-]+\\)?\\(;.+\\'\\|\\'\\)" 
link)
+      (let* ((lat (string-to-number (match-string 1 link)))
+             (lon (string-to-number (match-string 2 link)))
+             (args (url-parse-args (match-string 3 link) ""))
+             (zoom (cdr (assoc "z" args)))
+             (server (cdr (assoc "s" args))))
+        (osm--goto lat lon
+                   (and zoom (string-to-number zoom))
+                   (and server (intern-soft server))
+                   'osm-link "Org Link")))
      (t (osm-search link)))))
 
 (defun osm-ol-store ()
@@ -57,10 +59,8 @@
       (org-link-store-props
        :type "osm"
        :description desc
-       :link (format
-              "osm:%s%.6f,%.6f,%s"
-              (if server (format "%s:" server) "")
-              lat lon zoom)))))
+       :link (format "osm:%.6f,%.6f;z=%s%s"
+                     lat lon zoom (if server (format ";s=%s" server) ""))))))
 
 (provide 'osm-ol)
 ;;; osm-ol.el ends here

Reply via email to