[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/el-search 806bfc4 157/332: Add new command `el-search-t
From: |
Stefan Monnier |
Subject: |
[elpa] externals/el-search 806bfc4 157/332: Add new command `el-search-this-sexp' |
Date: |
Tue, 1 Dec 2020 15:48:34 -0500 (EST) |
branch: externals/el-search
commit 806bfc488642ebeb648928f6e4f444f793b59bdc
Author: Michael Heerdegen <michael_heerdegen@web.de>
Commit: Michael Heerdegen <michael_heerdegen@web.de>
Add new command `el-search-this-sexp'
---
el-search.el | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/el-search.el b/el-search.el
index a024212..b6d1021 100644
--- a/el-search.el
+++ b/el-search.el
@@ -89,6 +89,10 @@
;; Resume the last search from the position of the last visited
;; match, or (with prefix arg) prompt for an old search to resume.
;;
+;; C-H (el-search-this-sexp)
+;; Grab the symbol or sexp under point and initiate an el-search
+;; for other occurrences.
+;;
;;
;; These bindings may not work in a console (if you have a good idea
;; for nice alternative bindings please mail me).
@@ -1303,6 +1307,7 @@ that contain a file named \".nosearch\" are excluded as
well."
(define-key emacs-lisp-mode-map [(control ?S)] #'el-search-pattern)
(define-key emacs-lisp-mode-map [(control ?R)] #'el-search-pattern-backwards)
(define-key emacs-lisp-mode-map [(control ?%)] #'el-search-query-replace)
+ (define-key emacs-lisp-mode-map [(control ?H)] #'el-search-this-sexp) ;H
like in "highlight" or "here"
(define-key global-map [(control ?J)]
#'el-search-jump-to-search-head)
(define-key global-map [(control ?A)] #'el-search-from-beginning)
(define-key global-map [(control ?D)] #'el-search-skip-directory)
@@ -2030,6 +2035,40 @@ With prefix arg, restart the current search."
(define-obsolete-function-alias 'el-search-previous-match
'el-search-pattern-backwards)
+(defun el-search-this-sexp (sexp)
+ "Prepare to el-search the `sexp-at-point'.
+
+Grab the `sexp-at-point' SEXP and prepare to el-search the
+current buffer for other matches of 'SEXP.
+
+Use the normal search commands to seize the search."
+ (interactive (list (if (not (derived-mode-p 'emacs-lisp-mode))
+ (user-error "Current buffer not in `emacs-lisp-mode'")
+ (let ((symbol-at-point-text (thing-at-point 'symbol))
+ symbol-at-point)
+ (if (and symbol-at-point-text
+ ;; That should ideally be always true but
isn't
+ (condition-case nil
+ (symbolp (setq symbol-at-point (read
symbol-at-point-text)))
+ (invalid-read-syntax nil)))
+ symbol-at-point
+ (if (thing-at-point 'sexp)
+ (sexp-at-point)
+ (user-error "No sexp at point")))))))
+ (let ((printed-sexp (el-search--pp-to-string sexp)))
+ (el-search--pushnew-to-history (concat "'" printed-sexp)
'el-search-pattern-history)
+ (el-search-setup-search-1
+ `',sexp
+ (let ((current-buffer (current-buffer)))
+ (lambda () (stream (list current-buffer))))
+ 'from-here)
+ (el-search--next-buffer el-search--current-search)
+ (setq this-command 'el-search-pattern
+ el-search--success t)
+ (el-search-hl-other-matches (el-search--current-matcher))
+ (add-hook 'post-command-hook #'el-search-hl-post-command-fun t t)
+ (el-search--message-no-log "%s" printed-sexp)))
+
;;;; El-Occur
- [elpa] externals/el-search 51a539a 158/332: Implement multi-buffer query-replace, (continued)
- [elpa] externals/el-search 51a539a 158/332: Implement multi-buffer query-replace, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 56d9f20 165/332: Add some useful commands for *El Occur* buffers, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 40217c0 174/332: Fix replacing matches with nil, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 1bfe7c0 110/332: Simplify `el-search--transform-nontrivial-lpat', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 6ff7aa4 116/332: Work around Emacs bug#24542, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 817c902 123/332: Document change-revision transformer function; make a defcustom, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2d6aad6 132/332: Explicitly `error' when trying to jump to invalid search head, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 8875d2a 137/332: Avoid infinite recursion in circular programs, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search f02e86f 142/332: New command `el-search-from-beginning', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 4b6a363 138/332: Improve handling of reader errors in el-search-atom-list, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 806bfc4 157/332: Add new command `el-search-this-sexp',
Stefan Monnier <=
- [elpa] externals/el-search c66d1da 160/332: Make the el-search-object struct contain an alist of properties, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 4a6c3e2 162/332: Some details, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search d412688 199/332: Update copyrights of some packages, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search cf465e0 203/332: * el-search/el-search.el: Add two more autoload cookies, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 42c776a 207/332: * el-search/el-search.el: Tweak el-search-jump-to-search-head, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search ce97e9d 108/332: el-search: bump version to 0.2.2, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search e5bd647 214/332: * el-search/el-search.el: Work around Emacs Bug#29857, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search d995af1 166/332: Don't let el-search-pattern resume a paused search, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search ceb23fc 169/332: More multi query-replace related improvements, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 1aded2b 172/332: Make amount of context around occur matches adjustable, Stefan Monnier, 2020/12/01