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