diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2012-10-01 22:47:12 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2012-10-01 22:47:12 -0400 |
commit | d83ef9762efd4efe833c0c9687b057d6b62cdcb7 (patch) | |
tree | 0b2c507e086e8e1b833e706b12f691d69cd8f2fe /lisp/bookmark.el | |
parent | 64edc7770f7fe5d6912c5f950fb998ae255415d3 (diff) | |
download | emacs-d83ef9762efd4efe833c0c9687b057d6b62cdcb7.tar.gz |
* lisp/bookmark.el (bookmark-search-pattern): Remove var.
(bookmark-read-search-input): Remove function.
(bookmark-bmenu-search): Reimplement using a minibuffer.
Diffstat (limited to 'lisp/bookmark.el')
-rw-r--r-- | lisp/bookmark.el | 54 |
1 files changed, 16 insertions, 38 deletions
diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 861aa6e06dd..838e5a5ec00 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -2010,32 +2010,6 @@ To carry out the deletions that you've marked, use \\<bookmark-bmenu-mode-map>\\ ;;; Bookmark-bmenu search -;; Store keyboard input for incremental search. -(defvar bookmark-search-pattern) - -(defun bookmark-read-search-input () - "Read each keyboard input and add it to `bookmark-search-pattern'." - (let ((prompt (propertize "Pattern: " 'face 'minibuffer-prompt)) - ;; (inhibit-quit t) ; inhibit-quit is evil. Use it with extreme care! - (tmp-list ())) - (while - (let ((char (read-key (concat prompt bookmark-search-pattern)))) - (pcase char - ((or ?\e ?\r) nil) ; RET or ESC break the search loop. - (?\C-g (setq bookmark-quit-flag t) nil) - (?\d (pop tmp-list) t) ; Delete last char of pattern with DEL - (_ - (if (characterp char) - (push char tmp-list) - (setq unread-command-events - (nconc (mapcar 'identity - (this-single-command-raw-keys)) - unread-command-events)) - nil)))) - (setq bookmark-search-pattern - (apply 'string (reverse tmp-list)))))) - - (defun bookmark-bmenu-filter-alist-by-regexp (regexp) "Filter `bookmark-alist' with bookmarks matching REGEXP and rebuild list." (let ((bookmark-alist @@ -2050,19 +2024,23 @@ To carry out the deletions that you've marked, use \\<bookmark-bmenu-mode-map>\\ "Incremental search of bookmarks, hiding the non-matches as we go." (interactive) (let ((bmk (bookmark-bmenu-bookmark)) - (bookmark-search-pattern "") - (timer (run-with-idle-timer - bookmark-search-delay 'repeat - #'(lambda () - (bookmark-bmenu-filter-alist-by-regexp - bookmark-search-pattern))))) + (timer nil)) (unwind-protect - (bookmark-read-search-input) - (cancel-timer timer) - (message nil) - (when bookmark-quit-flag ; C-g hit restore menu list. - (bookmark-bmenu-list) (bookmark-bmenu-goto-bookmark bmk)) - (setq bookmark-quit-flag nil)))) + (minibuffer-with-setup-hook + (lambda () + (setq timer (run-with-idle-timer + bookmark-search-delay 'repeat + #'(lambda (buf) + (with-current-buffer buf + (bookmark-bmenu-filter-alist-by-regexp + (minibuffer-contents)))) + (current-buffer)))) + (read-string "Pattern: ") + (when timer (cancel-timer timer) (setq timer nil))) + (when timer ;; Signalled an error or a `quit'. + (cancel-timer timer) + (bookmark-bmenu-list) + (bookmark-bmenu-goto-bookmark bmk))))) (defun bookmark-bmenu-goto-bookmark (name) "Move point to bookmark with name NAME." |