[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/osm df844cd56b 30/77: Add osm-rename command
From: |
ELPA Syncer |
Subject: |
[elpa] externals/osm df844cd56b 30/77: Add osm-rename command |
Date: |
Mon, 7 Mar 2022 08:58:05 -0500 (EST) |
branch: externals/osm
commit df844cd56b130243b9f434f1fa8d77a57550c6ad
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Add osm-rename command
---
README.org | 3 ++-
ol-osm.el | 9 +++++----
osm.el | 62 ++++++++++++++++++++++++++++++++++++++++----------------------
3 files changed, 47 insertions(+), 27 deletions(-)
diff --git a/README.org b/README.org
index 2975cea138..0202dfa198 100644
--- a/README.org
+++ b/README.org
@@ -25,7 +25,7 @@
* Commands and Key Bindings
-Commands:
+Top-level commands:
- =osm-home=: Open new map at home coordinates
- =osm-search=: Search and jump to location
- =osm-goto=: Go to coordinates
@@ -39,6 +39,7 @@ Key bindings:
- ~h~: =osm-home=
- ~s~: =osm-search=
- ~S~: =osm-server=
+- ~n~: =osm-rename=
- ~b~: =bookmark-set=
- ~B~: =bookmark-jump=
- ~q~: =quit-window=
diff --git a/ol-osm.el b/ol-osm.el
index 17b1bdaba4..4234b84518 100644
--- a/ol-osm.el
+++ b/ol-osm.el
@@ -53,10 +53,11 @@
(pcase-let ((`(,lat ,lon ,zoom ,server ,desc) (osm--link-data)))
(org-link-store-props
:type "osm"
- :description (and desc (format "%s %.2f° %.2f°" desc lat lon))
- :link (format "osm:%s%s,%s,%s"
- (if server (format "%s:" server) "")
- lat lon zoom)))))
+ :description desc
+ :link (format
+ "osm:%s%s,%s,%s"
+ (if server (format "%s:" server) "")
+ lat lon zoom)))))
(provide 'ol-osm)
;;; ol-osm.el ends here
diff --git a/osm.el b/osm.el
index 601267b82c..371eb5ca2d 100644
--- a/osm.el
+++ b/osm.el
@@ -144,6 +144,7 @@ Should be at least 7 days according to the server usage
policies."
(define-key map "S" #'osm-server)
(define-key map "b" #'bookmark-set)
(define-key map "B" #'bookmark-jump)
+ (define-key map "n" #'osm-rename)
(define-key map [remap scroll-down-command] #'osm-down)
(define-key map [remap scroll-up-command] #'osm-up)
(define-key map "\d" nil)
@@ -545,20 +546,26 @@ We need two distinct images which are not `eq' for the
display properties.")
#'< osm--queue))
(osm--download))))
-(declare-function bookmark-make-record-default "boomark")
+(defvar bookmark-current-bookmark)
(defun osm--make-bookmark ()
"Make OSM bookmark."
- `(,(osm--bookmark-name)
- ,@(bookmark-make-record-default t)
+ (setq bookmark-current-bookmark nil) ;; Reset bookmark to use new name
+ `(,(osm--buffer-description)
(coordinate ,(osm--lat) ,(osm--lon) ,osm--zoom)
(server . ,osm-server)
(buffer . ,(buffer-name))
(handler . ,#'osm-bookmark-jump)))
-(defun osm--buffer-name ()
+(defun osm--default-buffer-name ()
"Return default buffer name."
(format "*osm: %s*" (osm--server-property :name)))
+(defun osm--default-buffer-name-p ()
+ "Return non-nil if the buffer has a default name."
+ (string-match-p
+ (format "\\`%s\\(?:<[0-9]+>\\)?\\'" (regexp-quote
(osm--default-buffer-name)))
+ (buffer-name)))
+
(cl-defun osm--setup (&key at server buffer)
"Setup BUFFER with SERVER at coordinates AT."
;; Server not found
@@ -569,11 +576,8 @@ We need two distinct images which are not `eq' for the
display properties.")
(generate-new-buffer
(or buffer
(let ((osm-server (or server osm-server)))
- (osm--buffer-name)))))
- (let ((auto-rename
- (string-match-p
- (format "\\`%s\\(?:<[0-9]+>\\)?\\'" (regexp-quote
(osm--buffer-name)))
- (buffer-name))))
+ (osm--default-buffer-name)))))
+ (let ((auto-rename (osm--default-buffer-name-p)))
(unless (derived-mode-p #'osm-mode)
(osm-mode))
(when (and server (not (eq osm-server server)))
@@ -581,7 +585,7 @@ We need two distinct images which are not `eq' for the
display properties.")
osm--active nil
osm--queue nil))
(when auto-rename
- (setq buffer (or buffer (osm--buffer-name)))
+ (setq buffer (or buffer (osm--default-buffer-name)))
(unless (equal buffer (buffer-name))
(rename-buffer buffer 'unique)))
(when (or (not (and osm--x osm--y)) at)
@@ -605,26 +609,29 @@ We need two distinct images which are not `eq' for the
display properties.")
;;;###autoload
(defun osm-bookmark-jump (bm)
"Jump to OSM bookmark BM."
- (osm--setup
- :at (alist-get 'coordinate bm)
- :server (alist-get 'server bm)
- :buffer (alist-get 'buffer bm)))
-
-(defun osm--bookmark-name ()
- "Return bookmark name for current map."
- (format "OSM: %s%.2f° %.2f°"
- (concat (osm--description) " ")
- (osm--lat)
- (osm--lon)))
+ (set-buffer (osm--setup
+ :at (alist-get 'coordinate bm)
+ :server (alist-get 'server bm)
+ :buffer (alist-get 'buffer bm))))
(defun osm--link-data ()
"Return link data."
(list (osm--lat) (osm--lon) osm--zoom
(and (not (eq osm-server (default-value 'osm-server))) osm-server)
- (osm--description)))
+ (osm--buffer-description)))
+
+(defun osm--buffer-description ()
+ "Return buffer description."
+ (if (osm--default-buffer-name-p)
+ (format "osm: %s %.2f° %.2f°"
+ (osm--server-property :name) (osm--lat) (osm--lon))
+ (replace-regexp-in-string
+ "\\`\\*\\|\\*\\(?:<[0-9]+>\\)?\\'"
+ "" (buffer-name))))
(defun osm--description ()
"Return descriptive string for current map."
+ (message "Fetching location name...")
(alist-get
'display_name
(json-parse-string
@@ -637,6 +644,17 @@ We need two distinct images which are not `eq' for the
display properties.")
:array-type 'list
:object-type 'alist)))
+;;;###autoload
+(defun osm-rename ()
+ "Rename buffer, use name of current location."
+ (interactive)
+ (when-let (desc (osm--description))
+ (rename-buffer
+ (format "*osm: %s %.2f° %.2f° %s*" desc
+ (osm--lat) (osm--lon)
+ (osm--server-property :name))
+ 'unique)))
+
;;;###autoload
(defun osm-search ()
"Search for location and display the map."
- [elpa] externals/osm a6335090e9 33/77: Handle multiple windows, (continued)
- [elpa] externals/osm a6335090e9 33/77: Handle multiple windows, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 2fbf12f0ef 46/77: seq is not needed, ELPA Syncer, 2022/03/07
- [elpa] externals/osm c2c7dff887 22/77: Compact server configuration, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 7ce1d26c88 67/77: Extract osm--make-tile, ELPA Syncer, 2022/03/07
- [elpa] externals/osm ff8ff68b4d 65/77: Check if bookmarks are present, ELPA Syncer, 2022/03/07
- [elpa] externals/osm cb191d426f 76/77: Version 0.2, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 8e8e4583f5 74/77: More robust mouse dragging, ELPA Syncer, 2022/03/07
- [elpa] externals/osm d776cdb343 42/77: Fix melpa issues (See https://github.com/melpa/melpa/pull/7936), ELPA Syncer, 2022/03/07
- [elpa] externals/osm 5b82b32201 28/77: Add server descriptions, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 832bce78f8 72/77: Implement proper map dragging with the mouse, ELPA Syncer, 2022/03/07
- [elpa] externals/osm df844cd56b 30/77: Add osm-rename command,
ELPA Syncer <=
- [elpa] externals/osm 458257fa1f 19/77: Improve tile loading, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 699aae27b1 20/77: Rename osm-new to osm-home, ELPA Syncer, 2022/03/07
- [elpa] externals/osm d830691585 61/77: README: Remove wishlist, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 25621bb80e 41/77: curl add --fail argument, ELPA Syncer, 2022/03/07
- [elpa] externals/osm b300e42d9f 68/77: Add transient pin, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 28d3305bef 32/77: Improve handling of generated names, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 833793ed6c 77/77: Use grid placeholder, ELPA Syncer, 2022/03/07
- [elpa] externals/osm adc8156a70 37/77: README: Add more examples, ELPA Syncer, 2022/03/07
- [elpa] externals/osm 7ac6f60b90 39/77: README update, ELPA Syncer, 2022/03/07
- [elpa] externals/osm ff5c089087 52/77: Update completion predicates, ELPA Syncer, 2022/03/07