[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/osm 8cb218725d 4/6: Various improvements
From: |
ELPA Syncer |
Subject: |
[elpa] externals/osm 8cb218725d 4/6: Various improvements |
Date: |
Thu, 21 Dec 2023 18:58:17 -0500 (EST) |
branch: externals/osm
commit 8cb218725d142058611ba2fa34df478c3f4925fb
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Various improvements
- osm-bookmark-delete: Add confirmation
- osm-pin-delete, osm-pin-click: Generic pin manipulation
- Support selecting the osm-home pin
---
CHANGELOG.org | 4 +++-
osm.el | 50 ++++++++++++++++++++++++++++++--------------------
2 files changed, 33 insertions(+), 21 deletions(-)
diff --git a/CHANGELOG.org b/CHANGELOG.org
index 336b64eba0..cd8a527751 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -6,9 +6,11 @@
- ~osm--purge-tile-cache~: Delete empty tile cache directories.
- ~osm-search~: Add message when contacting the server.
-- ~osm-delete~: New command to delete track or bookmark pins.
+- ~osm-pin-delete~: New command to delete track or bookmark pins.
+- ~osm-pin-click~: New command to select pin.
- ~osm-bookmark-click~: Unified command, replacing ~osm-bookmark-select-click~
and
~osm-bookmark-set-click~.
+- ~osm-bookmark-delete~: Add confirmation.
- Rename ~osm-transient-click~ to ~osm-click~.
- Add distance measurement for manual track. Press ~S-<mouse-1>~
(~osm-track-click~)
to place the pins of the track.
diff --git a/osm.el b/osm.el
index 3820b80b6c..dff3388619 100644
--- a/osm.el
+++ b/osm.el
@@ -173,6 +173,7 @@ the domain name and the :user to the string \"apikey\"."
(defcustom osm-pin-colors
'((osm-selected-bookmark . "#e20")
+ (osm-selected-home . "#e20")
(osm-selected-poi . "#e20")
(osm-selected-track . "#e20")
(osm-bookmark . "#f80")
@@ -262,17 +263,20 @@ Should be at least 7 days according to the server usage
policies."
(defvar-keymap osm-mode-map
:doc "Keymap used by `osm-mode'."
:parent (make-composed-keymap osm-prefix-map special-mode-map)
- "<osm-home>" #'ignore
"<osm-link>" #'ignore
"<osm-transient>" #'ignore
"<osm-selected-bookmark>" #'ignore
"<osm-selected-poi>" #'ignore
+ "<osm-selected-home>" #'ignore
"<osm-bookmark> <mouse-1>" #'osm-bookmark-click
"<osm-bookmark> <mouse-2>" #'osm-bookmark-click
"<osm-bookmark> <mouse-3>" #'osm-bookmark-click
- "<osm-poi> <mouse-1>" #'osm-poi-click
- "<osm-poi> <mouse-2>" #'osm-poi-click
- "<osm-poi> <mouse-3>" #'osm-poi-click
+ "<osm-home> <mouse-1>" #'osm-pin-click
+ "<osm-home> <mouse-2>" #'osm-pin-click
+ "<osm-home> <mouse-3>" #'osm-pin-click
+ "<osm-poi> <mouse-1>" #'osm-pin-click
+ "<osm-poi> <mouse-2>" #'osm-pin-click
+ "<osm-poi> <mouse-3>" #'osm-pin-click
"<osm-track> <mouse-1>" #'osm-track-click
"<osm-track> <mouse-2>" #'osm-track-click
"<osm-track> <mouse-3>" #'osm-track-click
@@ -305,9 +309,9 @@ Should be at least 7 days according to the server usage
policies."
"M-<left>" #'osm-left-left
"M-<right>" #'osm-right-right
"n" #'osm-bookmark-rename
- "d" #'osm-delete
- "DEL" #'osm-delete
- "<deletechar>" #'osm-delete
+ "d" #'osm-pin-delete
+ "DEL" #'osm-pin-delete
+ "<deletechar>" #'osm-pin-delete
"c" #'osm-center
"o" #'clone-buffer
"u" #'osm-save-url
@@ -674,10 +678,12 @@ Should be at least 7 days according to the server usage
policies."
(defun osm-track-click (event)
"Put or select a track pin at location of the click EVENT."
(interactive "@e")
- (if-let (pin (osm--pin-at 'osm-track event))
+ (if-let (pin (osm--pin-at event 'osm-track))
(progn
(osm--put-transient-pin 'osm-selected-track (car pin) (cadr pin)
(cdddr pin))
(osm--update))
+ (when (and (not osm--track) osm--transient-pin)
+ (push (cons (car osm--transient-pin) (cadr osm--transient-pin))
osm--track))
(osm--put-transient-pin-event event 'osm-selected-track
(format "(%s)" (1+ (length osm--track))))
(push (cons (car osm--transient-pin) (cadr osm--transient-pin)) osm--track)
@@ -706,7 +712,7 @@ Should be at least 7 days according to the server usage
policies."
(defun osm-bookmark-click (event)
"Create or select bookmark at position of click EVENT."
(interactive "@e")
- (if-let (pin (osm--pin-at 'osm-bookmark event))
+ (if-let (pin (osm--pin-at event 'osm-bookmark))
(progn
(osm--put-transient-pin 'osm-selected-bookmark (car pin) (cadr pin)
(cdddr pin))
(osm--update))
@@ -719,7 +725,7 @@ Should be at least 7 days according to the server usage
policies."
(osm--put-transient-pin-event event 'osm-link "New Org Link")
(call-interactively 'org-store-link))
-(defun osm--pin-at (type event)
+(defun osm--pin-at (event &optional type)
"Get pin of TYPE at EVENT."
(let* ((xy (posn-x-y (event-start event)))
(x (+ (osm--x0) (car xy)))
@@ -728,17 +734,20 @@ Should be at least 7 days according to the server usage
policies."
found)
(dolist (pin (car (osm--get-overlays (/ x 256) (/ y 256))))
(pcase-let ((`(,p ,q ,_lat ,_lon ,id . ,_) pin))
- (when (eq type id)
+ (when (or (not type) (eq type id))
(let ((d (+ (* (- p x) (- p x)) (* (- q y) (- q y)))))
(when (and (>= q y) (< q (+ y 50)) (>= p (- x 20)) (< p (+ x 20))
(< d min))
(setq min d found pin))))))
(cddr found)))
-(defun osm-poi-click (event)
- "Select point of interest at position of click EVENT."
+(defun osm-pin-click (event)
+ "Select pin at position of click EVENT."
(interactive "@e")
- (when-let (pin (osm--pin-at 'osm-poi event))
- (osm--put-transient-pin 'osm-selected-poi (car pin) (cadr pin) (cdddr pin))
+ (when-let (pin (osm--pin-at event))
+ (osm--put-transient-pin
+ (intern (concat "osm-selected-"
+ (substring (symbol-name (caddr pin)) 4)))
+ (car pin) (cadr pin) (cdddr pin))
(osm--update)))
(defun osm-zoom-in (&optional n)
@@ -1432,9 +1441,10 @@ When called interactively, call the function `osm-home'."
(defun osm-bookmark-delete (bm)
"Delete osm bookmark BM."
(interactive (list (osm--bookmark-read)))
- (bookmark-delete bm)
- (setq osm--transient-pin nil)
- (osm--revert))
+ (when (y-or-n-p (format "Delete bookmark `%s'? " bm))
+ (bookmark-delete bm)
+ (setq osm--transient-pin nil)
+ (osm--revert)))
;;;###autoload
(defun osm-bookmark-rename (old-name)
@@ -1498,7 +1508,7 @@ When called interactively, call the function `osm-home'."
osm-search-server osm-search-language
(min 18 (max 3 osm--zoom)) lat lon)))))))
-(defun osm-delete ()
+(defun osm-pin-delete ()
"Delete selected pin (bookmark or way point)."
(interactive)
(pcase (caddr osm--transient-pin)
@@ -1766,7 +1776,7 @@ The properties are checked as keyword arguments. See
#'osm-save-url))
(put sym 'command-modes '(osm-mode)))
(dolist (sym (list #'osm-mouse-drag #'osm-click #'osm-org-link-click
- #'osm-poi-click #'osm-bookmark-click #'osm-track-click))
+ #'osm-pin-click #'osm-bookmark-click #'osm-track-click))
(put sym 'completion-predicate #'ignore))
(provide 'osm)
- [elpa] externals/osm updated (7af7a049bc -> f91272da50), ELPA Syncer, 2023/12/21
- [elpa] externals/osm 77acc8dd83 2/6: Update README, ELPA Syncer, 2023/12/21
- [elpa] externals/osm 6e9f9909b7 5/6: README: Document distance measurement, ELPA Syncer, 2023/12/21
- [elpa] externals/osm f91272da50 6/6: osm-track-style: Thinner line, ELPA Syncer, 2023/12/21
- [elpa] externals/osm 6cf40b5d17 1/6: Add distance measurement, ELPA Syncer, 2023/12/21
- [elpa] externals/osm 8cb218725d 4/6: Various improvements,
ELPA Syncer <=
- [elpa] externals/osm 7af8e74cda 3/6: Update README, ELPA Syncer, 2023/12/21