emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 8abe170 1/3: Add ability to highlight-lines-matchin


From: Eli Zaretskii
Subject: [Emacs-diffs] master 8abe170 1/3: Add ability to highlight-lines-matching-regexp directly from Isearch
Date: Sat, 13 Jul 2019 03:21:50 -0400 (EDT)

branch: master
commit 8abe1704528d852157d1e8547841cab8e46db1ac
Author: Dima Kogan <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Add ability to highlight-lines-matching-regexp directly from Isearch
    
    * lisp/isearch.el: Implement the new functionality.
    (isearch-highlight-lines-matching-regexp): New function bound
    to 'M-s h l' in isearch.
    (isearch--highlight-regexp-or-lines): New internal function.
    
    * etc/NEWS (Search and Replace): Mention this change.
    
    * doc/emacs/search.texi (Special Isearch): Document 'M-s h l'.
    (Bug#18241)
---
 doc/emacs/search.texi | 17 ++++++++++-------
 etc/NEWS              |  6 ++++++
 lisp/isearch.el       | 32 +++++++++++++++++++++++++-------
 3 files changed, 41 insertions(+), 14 deletions(-)

diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index c61578b..b47d51a 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -453,13 +453,16 @@ key sequence if you want to use it (@pxref{Rebinding}).
 
 @kindex M-s h r @r{(Incremental Search)}
 @findex isearch-highlight-regexp
-  You can exit the search while leaving the matches for the last
-search string highlighted on display.  To this end, type @kbd{M-s h r}
-(@code{isearch-highlight-regexp}), which will run
-@code{highlight-regexp} (@pxref{Highlight Interactively}) passing
-it the regexp derived from the last search string and prompting you
-for the face to use for highlighting.  To remove the highlighting,
-type @kbd{M-s h u} (@code{unhighlight-regexp}).
+@kindex M-s h l @r{(Incremental Search)}
+@findex isearch-highlight-lines-matching-regexp
+  You can exit the search while leaving the matches highlighted by
+typing @kbd{M-s h r} (@code{isearch-highlight-regexp}).  This runs
+@code{highlight-regexp} (@pxref{Highlight Interactively}), passing it
+the regexp derived from the search string and prompting you for the face
+to use for highlighting.  To highlight @emph{whole lines} containing
+matches (rather than @emph{just} the matches), type @kbd{M-s h l}
+(@code{isearch-highlight-lines-matching-regexp}).  In either case, to
+remove the highlighting, type @kbd{M-s h u} (@code{unhighlight-regexp}).
 
 @cindex incremental search, help on special keys
 @kindex C-h C-h @r{(Incremental Search)}
diff --git a/etc/NEWS b/etc/NEWS
index 10470df..e04760a 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1123,6 +1123,12 @@ highlight in one iteration while processing the full 
buffer.
 'C-M-d'.
 
 +++
+'M-s h l' invokes highlight-lines-matching-regexp using the search
+string to highlight lines matching the search string. This is similar
+to the existing binding 'M-s h r' (highlight-regexp) that highlights
+JUST the search string.
+
++++
 *** New variable 'isearch-yank-on-move' provides options 't' and 'shift'
 to extend the search string by yanking text that ends at the new
 position after moving point in the current buffer.  'shift' extends
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 94c30eb..e0f3f05 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -753,6 +753,7 @@ This is like `describe-bindings', but displays only Isearch 
keys."
     (define-key map [?\C-\M-%] 'isearch-query-replace-regexp)
     (define-key map "\M-so" 'isearch-occur)
     (define-key map "\M-shr" 'isearch-highlight-regexp)
+    (define-key map "\M-shl" 'isearch-highlight-lines-matching-regexp)
 
     ;; The key translations defined in the C-x 8 prefix should add
     ;; characters to the search string.  See iso-transl.el.
@@ -1039,6 +1040,9 @@ Type \\[isearch-occur] to run `occur' that shows\
  the last search string.
 Type \\[isearch-highlight-regexp] to run `highlight-regexp'\
  that highlights the last search string.
+Type \\[isearch-highlight-lines-matching-regexp] to run
+ `highlight-lines-matching-regexp'\ that highlights lines
+ matching the last search string.
 
 Type \\[isearch-describe-bindings] to display all Isearch key bindings.
 Type \\[isearch-describe-key] to display documentation of Isearch key.
@@ -2343,12 +2347,12 @@ characters in that string."
 
 (declare-function hi-lock-read-face-name "hi-lock" ())
 
-(defun isearch-highlight-regexp ()
-  "Run `highlight-regexp' with regexp from the current search string.
-It exits Isearch mode and calls `hi-lock-face-buffer' with its regexp
-argument from the last search regexp or a quoted search string,
-and reads its face argument using `hi-lock-read-face-name'."
-  (interactive)
+(defun isearch--highlight-regexp-or-lines (hi-lock-func)
+  "Run HI-LOCK-FUNC to exit isearch, leaving the matches highlighted.
+This is the internal function used by `isearch-highlight-regexp'
+and `isearch-highlight-lines-matching-regexp' to invoke
+HI-LOCK-FUNC (either `highlight-regexp' or
+`highlight-lines-matching-regexp' respectively)."
   (let (
        ;; Set `isearch-recursive-edit' to nil to prevent calling
        ;; `exit-recursive-edit' in `isearch-done' that terminates
@@ -2377,9 +2381,23 @@ and reads its face argument using 
`hi-lock-read-face-name'."
                              (regexp-quote s))))
                        isearch-string ""))
                      (t (regexp-quote isearch-string)))))
-    (hi-lock-face-buffer regexp (hi-lock-read-face-name)))
+    (funcall hi-lock-func regexp (hi-lock-read-face-name)))
   (and isearch-recursive-edit (exit-recursive-edit)))
 
+(defun isearch-highlight-regexp ()
+  "Exit Isearch mode, and call `highlight-regexp' with its regexp
+argument from the last search, and the face from
+`hi-lock-read-face-name'."
+  (interactive)
+  (isearch--highlight-regexp-or-lines 'highlight-regexp))
+
+(defun isearch-highlight-lines-matching-regexp ()
+  "Exit Isearch mode, and call `highlight-lines-matching-regexp'
+with its regexp argument from the last search, and the face from
+`hi-lock-read-face-name'."
+  (interactive)
+  (isearch--highlight-regexp-or-lines 'highlight-lines-matching-regexp))
+
 
 (defun isearch-delete-char ()
   "Undo last input item during a search.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]