[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/osm e6adbe7162 1/2: osm-search: Improve behavior with d
From: |
ELPA Syncer |
Subject: |
[elpa] externals/osm e6adbe7162 1/2: osm-search: Improve behavior with default completion |
Date: |
Sat, 14 Oct 2023 03:58:50 -0400 (EDT) |
branch: externals/osm
commit e6adbe7162e6eb870f036bb18a152846b7b26976
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
osm-search: Improve behavior with default completion
- Unbind SPC minibuffer-complete-word from search prompt completion
- Show location matches immediately
---
CHANGELOG.org | 1 +
osm.el | 47 +++++++++++++++++++++++++++++++++--------------
2 files changed, 34 insertions(+), 14 deletions(-)
diff --git a/CHANGELOG.org b/CHANGELOG.org
index fb27d41839..8ac25780c7 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -7,6 +7,7 @@
- Compatibility with =pixel-scroll-precision-mode=.
- Update list of servers.
- Add =osm-add-server= utility function with error checking.
+- =osm-search=: Improve UI if default completions buffer is used.
* Version 0.13 (2023-07-02)
diff --git a/osm.el b/osm.el
index fa89dde651..a1a76be4c8 100644
--- a/osm.el
+++ b/osm.el
@@ -1466,21 +1466,40 @@ When called interactively, call the function
`osm-home'."
"Globally search for NEEDLE and display the map.
If the prefix argument LUCKY is non-nil take the first result and jump there."
(interactive
- (list (completing-read "Location: "
- (osm--sorted-table osm--search-history)
- nil nil nil 'osm--search-history)
- current-prefix-arg))
+ (list
+ (minibuffer-with-setup-hook
+ (lambda ()
+ (when (and (eq completing-read-function #'completing-read-default)
+ (not (bound-and-true-p vertico-mode)))
+ ;; Override dreaded `minibuffer-complete-word' for default
+ ;; completion. When will this keybinding finally get removed from
+ ;; default completion?
+ (use-local-map (make-composed-keymap
+ (define-keymap "SPC" nil)
+ (current-local-map)))))
+ (completing-read "Location: "
+ (osm--sorted-table osm--search-history)
+ nil nil nil 'osm--search-history))
+ current-prefix-arg))
;; TODO add search bounded to current viewbox, bounded=1, viewbox=x1,y1,x2,y2
- (let* ((results (or (osm--search needle) (error "No results")))
- (selected (or
- (and (or lucky (not (cdr results))) (car results))
- (assoc
- (completing-read
- (format "Matches for '%s': " needle)
- (osm--sorted-table results)
- nil t)
- results)
- (error "No selection"))))
+ (let* ((results (or (osm--search needle) (error "No results for `%s'"
needle)))
+ (selected
+ (or
+ (and (or lucky (not (cdr results))) (car results))
+ (assoc
+ (minibuffer-with-setup-hook
+ (lambda ()
+ (when (and (eq completing-read-function
#'completing-read-default)
+ (not (bound-and-true-p vertico-mode))
+ (not (bound-and-true-p icomplete-mode)))
+ ;; Show matches immediately for default completion.
+ (minibuffer-completion-help)))
+ (completing-read
+ (format "Matches for '%s': " needle)
+ (osm--sorted-table results)
+ nil t))
+ results)
+ (error "No selection"))))
(osm--goto (cadr selected) (caddr selected)
(apply #'osm--boundingbox-to-zoom (cdddr selected))
nil 'osm-transient (car selected))))