emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/osm 81cfa86e99: Support address search links


From: ELPA Syncer
Subject: [elpa] externals/osm 81cfa86e99: Support address search links
Date: Sun, 20 Mar 2022 16:57:50 -0400 (EDT)

branch: externals/osm
commit 81cfa86e99d1945b2a35a01231e8c0076a73cfa6
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Support address search links
---
 README.org |  2 ++
 osm-ol.el  | 23 ++++++++++++-----------
 osm.el     | 22 ++++++++++++++--------
 3 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/README.org b/README.org
index 700b0a9234..a07ce3f5c6 100644
--- a/README.org
+++ b/README.org
@@ -76,6 +76,7 @@ buffers in Emacs. Furthermore you can open Org links in 
arbitary buffers with
 - [[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]]
+- Address link: <osm:Tour Eiffel, Av. Gustave Eiffel, Paris>
 
 **** Elisp link examples
 
@@ -89,6 +90,7 @@ Elisp s-expressions they can be easily manipulated 
programatically.
   (osm 55.686875 12.569733 12 cyclosm "København, Københavns Kommune, Region 
Hovedstaden, 1357, Danmark")
   (osm 40.729568 -73.979187 12 stamen-watercolor "New York County, New York, 
United States")
   (osm 27.961656 86.892242 13 opentopomap "Khumjung, Khumbupasanglahmu, 
सोलुखुम्बु, Province #1, Nepal")
+  (osm "Tour Eiffel, Av. Gustave Eiffel, Paris") ;; Address link
 #+end_src
 
 * Commands and Key Bindings
diff --git a/osm-ol.el b/osm-ol.el
index 6309a25027..3b406ad592 100644
--- a/osm-ol.el
+++ b/osm-ol.el
@@ -27,6 +27,7 @@
 
 ;; Only load osm on demand
 (autoload 'osm--goto "osm")
+(autoload 'osm-search "osm")
 (declare-function osm--org-link-data "osm")
 
 (org-link-set-parameters
@@ -37,17 +38,17 @@
 (defun osm-ol-open (link _)
   "Open osm LINK."
   (save-match-data
-    (unless (string-match
-             "\\`\\(?:\\([^:]+\\):\\)?\\([^,]+\\),\\([^,]+\\),\\([^,]+\\)\\'"
-             link)
-      (error "Invalid osm 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")))
+    (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"))
+     (t (osm-search link)))))
 
 (defun osm-ol-store ()
   "Store osm link."
diff --git a/osm.el b/osm.el
index 9192a43bb6..98aa259b52 100644
--- a/osm.el
+++ b/osm.el
@@ -1217,14 +1217,20 @@ Optionally place transient pin with ID and HELP."
   nil)
 
 ;;;###autoload
-(defmacro osm (lat lon zoom &optional server comment)
-  "Go to LAT/LON/ZOOM.
-Optionally specify a SERVER and a COMMENT."
-  (ignore comment)
-  (when (stringp server) (setq server nil)) ;; Ignore comment
-  `(progn
-     (osm--goto ,lat ,lon ,zoom ,(and server (symbolp server) `',server) 
'osm-link "Elisp Link")
-     '(osm ,lat ,lon ,zoom ,@(and server (symbolp server) (list server)))))
+(defmacro osm (&rest link)
+  "Go to LINK."
+  (pcase link
+    (`(,lat ,lon ,zoom . ,server)
+     (setq server (car server))
+     (unless (and server (symbolp server)) (setq server nil)) ;; Ignore comment
+     `(progn
+       (osm--goto ,lat ,lon ,zoom ',server 'osm-link "Elisp Link")
+       '(osm ,lat ,lon ,zoom ,@(and server (list server)))))
+    ((and `(,search) (guard (stringp search)))
+     `(progn
+        (osm-search ,search)
+        '(osm ,search)))
+    (_ (error "Invalid osm link"))))
 
 ;;;###autoload
 (defun osm-bookmark-jump (bm)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]