From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Dima Kogan Newsgroups: gmane.emacs.bugs Subject: bug#18241: 24.4.50; [PATCH] I can now highlight-lines-matching-regexp from isearch Date: Sun, 30 Jun 2019 11:08:16 -0700 Message-ID: <87blyfvtdb.fsf@secretsauce.net> References: <87sil4uhlw.fsf@secretsauce.net> <87a7e55l3b.fsf@shorty.i-did-not-set--mail-host-address--so-tickle-me> <87d0ixaawv.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="43251"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: mu4e 1.0; emacs 27.0.50 Cc: 18241@debbugs.gnu.org, Lars Ingebrigtsen To: Juri Linkov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jun 30 20:09:19 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hheGL-000B0j-HJ for geb-bug-gnu-emacs@m.gmane.org; Sun, 30 Jun 2019 20:09:18 +0200 Original-Received: from localhost ([::1]:45922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hheGD-0005Sz-PC for geb-bug-gnu-emacs@m.gmane.org; Sun, 30 Jun 2019 14:09:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36127) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hheG8-0005Sg-6U for bug-gnu-emacs@gnu.org; Sun, 30 Jun 2019 14:09:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hheG6-0005Xv-OY for bug-gnu-emacs@gnu.org; Sun, 30 Jun 2019 14:09:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:33720) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hheG6-0005Xd-Gb for bug-gnu-emacs@gnu.org; Sun, 30 Jun 2019 14:09:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hheG6-0005jD-8C for bug-gnu-emacs@gnu.org; Sun, 30 Jun 2019 14:09:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dima Kogan Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 30 Jun 2019 18:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18241 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 18241-submit@debbugs.gnu.org id=B18241.156191810921979 (code B ref 18241); Sun, 30 Jun 2019 18:09:02 +0000 Original-Received: (at 18241) by debbugs.gnu.org; 30 Jun 2019 18:08:29 +0000 Original-Received: from localhost ([127.0.0.1]:47264 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hheFY-0005iQ-OY for submit@debbugs.gnu.org; Sun, 30 Jun 2019 14:08:29 -0400 Original-Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:44421) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hheFW-0005iE-VO for 18241@debbugs.gnu.org; Sun, 30 Jun 2019 14:08:27 -0400 Original-Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 0EB243A6; Sun, 30 Jun 2019 14:08:20 -0400 (EDT) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Sun, 30 Jun 2019 14:08:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=secretsauce.net; h=references:from:to:cc:subject:in-reply-to:date:message-id :mime-version:content-type; s=fm3; bh=54GpjeMXRiVzE21nt56WPgayUs uKDmFy8fir8YRRiVs=; b=2Gwa7XbWB6u6Zs0iP4yW5nnW+0gBqI72btYnO11wHr L9vFinloxo+mLEgwUf++CxzjA0hYqzZ4khDD5viKmEmyDE6vOXTAGLiOno08Rod2 8CqbrW+hLoSj4Cwlla1GnyJyFQazk7lxiUmCqQeiJwb7JS1CS1bbm2BausHqSA3r 9/5vSWLgAV+kko5w0pn7BQ7EjEzLO082V9O64Bu5L4zcWGy2//6bBrEk6eqCWQrG aRDjBiCp/5UJCym+2coMqTGFeC6UQhVBypiXL83F27eTymXVJ71rbynacBxCUyz6 3m8BDCf7InYwa+2H5uWDIvUPdj3ZSgjJy54N4iufvaTw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=54Gpje MXRiVzE21nt56WPgayUsuKDmFy8fir8YRRiVs=; b=rKPEUG3kEFqc7W+u4fyz5M h8bfnJatxMx8BqX8CI7gTyOxUZpiIsUNCgbZz4ozJljzjnIeZlXuao2otcpgCJnG hId0WsUhRNYAze7Wo52jsRcRZl21dbk/rBOB3YVMKet61ktL6DJ3bNAhcDahyfM2 gcWXHcc6L/uVJVMjpg/rxfdvwmiH6xDrc9D/lsFL5Ub2KUWTB+ZKJe3W9llNgF10 u5/8MYIHkggFSZEnAksDiHPwBBsspgbkB2FjWuS1XJ0syu8D5mFmS3ofNI8NOEGt TjOt0T/G29R2oHgCPYU5J04CFXGX0POv+nQB8SQ+ivjoOrvExA/ggXYI0UR9CZuQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduvddrvdeggdduvdduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepfhgfhffvufgjfffkgggtsehmtderredtredtnecuhfhrohhmpeffihhmrgcu mfhoghgrnhcuoeguihhmrgesshgvtghrvghtshgruhgtvgdrnhgvtheqnecukfhppedutd ejrddvuddtrddvudefrddvgeefnecurfgrrhgrmhepmhgrihhlfhhrohhmpeguihhmrges shgvtghrvghtshgruhgtvgdrnhgvthenucevlhhushhtvghrufhiiigvpedt X-ME-Proxy: Original-Received: from scrawny (107-210-213-243.lightspeed.irvnca.sbcglobal.net [107.210.213.243]) by mail.messagingengine.com (Postfix) with ESMTPA id B7CE380062; Sun, 30 Jun 2019 14:08:19 -0400 (EDT) Original-Received: from dima by scrawny with local (Exim 4.91) (envelope-from ) id 1hheFM-0003h6-Ck; Sun, 30 Jun 2019 11:08:16 -0700 In-reply-to: <87d0ixaawv.fsf@mail.linkov.net> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:161905 Archived-At: --=-=-= Content-Type: text/plain Juri Linkov writes: > It's already possible to do this by typing in isearch: > > M-s h l > M-n M-n M-n RET > > because the third default value of hi-lock commands is > the last isearch string. > > Its only difference is that it quits isearch, but I wonder > is it really useful to keep isearch active after running > this hi-lock command? I guess this is true, but that requires 5 extra keystrokes and extra knowledge: I didn't know about this default, and it didn't even work until I updated my 2-month-old emacs Given that 'M-s h r' is handled specially in isearch already, it only makes sense that 'M-s h l' would be too. And there's no down side to supporting this at all. I'm attaching a new patch. It does away with the weird macro thing I was doing (don't know why I was doing that), and adds notes in the NEWS and the documentation. Thanks. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-ability-to-highlight-lines-matching-regexp-direc.patch >From 7267753901e5a5b61c78c982661d1bb3f92a596e Mon Sep 17 00:00:00 2001 From: Dima Kogan Date: Sun, 30 Jun 2019 10:37:53 -0700 Subject: [PATCH] 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-internal): New internal function * etc/NEWS (Search and Replace): Mention this change. * doc/emacs/search.texi: Added this binding to the documentation --- doc/emacs/search.texi | 10 ++++++++++ etc/NEWS | 3 +++ lisp/isearch.el | 26 +++++++++++++++++++++++--- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index c61578bab76..e7cbd3bef82 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -461,6 +461,16 @@ Special Isearch 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 + Similarly, you can exit the search while highlighting whole lines +containing matches of the last search string. To this end, type +@kbd{M-s h l} (@code{isearch-highlight-lines-matching-regexp}), which +will run @code{highlight-lines-matching-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}). + @cindex incremental search, help on special keys @kindex C-h C-h @r{(Incremental Search)} @findex isearch-help-map diff --git a/etc/NEWS b/etc/NEWS index abbece374a4..72b30373587 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1111,6 +1111,9 @@ highlight in one iteration while processing the full buffer. 'isearch-yank-symbol-or-char'. 'isearch-del-char' is now bound to 'C-M-d'. +'M-s h l' invokes highlight-lines-matching-regexp directly using the +search string, similar to what 'M-s h r' was doing already. + +++ *** New variable 'isearch-yank-on-move' provides options 't' and 'shift' to extend the search string by yanking text that ends at the new diff --git a/lisp/isearch.el b/lisp/isearch.el index f150a3bba4b..e54fdb74783 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -753,6 +753,7 @@ isearch-mode-map (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 @@ isearch-forward 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. @@ -2339,12 +2343,11 @@ isearch-occur (declare-function hi-lock-read-face-name "hi-lock" ()) -(defun isearch-highlight-regexp () +(defun isearch--highlight-regexp-or-lines-internal (hi-lock-func) "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) (let ( ;; Set `isearch-recursive-edit' to nil to prevent calling ;; `exit-recursive-edit' in `isearch-done' that terminates @@ -2373,9 +2376,26 @@ isearch-highlight-regexp (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 () + "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) + (isearch--highlight-regexp-or-lines-internal 'hi-lock-face-buffer)) + +(defun isearch-highlight-lines-matching-regexp () + "Run `highlight-lines-matching-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) + (isearch--highlight-regexp-or-lines-internal 'hi-lock-line-face-buffer)) + (defun isearch-delete-char () "Undo last input item during a search. -- 2.20.0.rc2 --=-=-=--