branch: master commit 84a51ab69fd4aa73069f6f46adab8f79043681c1 Author: Michael Heerdegen <michael_heerde...@web.de> Commit: Michael Heerdegen <michael_heerde...@web.de>
Allow to save the current el-search to a register * el-search/el-search.el (el-search-to-register) (el-search-clone-to-register): New commands. (register-val-jump-to, register-val-describe): Implement methods for `el-search-object' values. --- packages/el-search/NEWS | 6 ++++++ packages/el-search/el-search.el | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/packages/el-search/NEWS b/packages/el-search/NEWS index 7548e1d..ffa4047 100644 --- a/packages/el-search/NEWS +++ b/packages/el-search/NEWS @@ -1,6 +1,12 @@ Some of the user visible news were: +Version: 1.5.2 + + The new command `el-search-to-register' allows to save the current + search (including its state) to a register and later make that + search current again with `jump-to-register' (C-x r j). + Version: 1.5.1 The new command `el-search-ibuffer-marked-buffers' el-searches the diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el index c519446..a560672 100644 --- a/packages/el-search/el-search.el +++ b/packages/el-search/el-search.el @@ -7,7 +7,7 @@ ;; Created: 29 Jul 2015 ;; Keywords: lisp ;; Compatibility: GNU Emacs 25 -;; Version: 1.5.1 +;; Version: 1.5.2 ;; Package-Requires: ((emacs "25") (stream "2.2.4") (cl-print "1.0")) @@ -119,6 +119,11 @@ ;; Grab the symbol or sexp under point and initiate an el-search ;; for other occurrences. ;; +;; M-x el-search-to-register +;; Save the current search to an Emacs register. Use C-x r j +;; (`jump-to-register') to make that search current and jump to +;; the latest position. +;; ;; ;; The setup you'll need for your init file is trivial: just define ;; the key bindings you want to use (all important commands are @@ -2982,6 +2987,32 @@ related user options." (lambda (search) (setf (alist-get 'description (el-search-object-properties search)) "el-search-ibuffer-marked-files")))) +;;;; Register usage + +(defun el-search-to-register (register &optional el-search-object) + "Prompt for a register and save the EL-SEARCH-OBJECT to it. +In an interactive call or when EL-SEARCH-OBJECT is nil, the +current search is used." + (interactive (list (register-read-with-preview "Save current search to register: "))) + (set-register register (or el-search-object el-search--current-search))) + +(defun el-search-clone-to-register (register &optional el-search-object) + "Prompt for a register and save a clone of the EL-SEARCH-OBJECT to it. +In an interactive call or when EL-SEARCH-OBJECT is nil, the +current search is used. + +This is similar to `el-search-to-register' but what is saved is a +clone with an individual state." + (interactive (list (register-read-with-preview "Save clone of current search to register: "))) + (set-register register (copy-el-search-object (or el-search-object el-search--current-search)))) + +(cl-defmethod register-val-jump-to ((val el-search-object) _arg) + (el-search-jump-to-search-head val)) + +(cl-defmethod register-val-describe ((val el-search-object) _verbose) ;VERBOSE is only used by C-x r v + (let ((print-circle nil)) ;bug#30070 + (cl-prin1 val))) + ;;;; Query-replace