Package: emacs;
Reported by: charles <at> aurox.ch (Charles A. Roelli)
Date: Sat, 17 Feb 2018 16:17:01 UTC
Severity: wishlist
Found in version 27.0.50
Done: charles <at> aurox.ch (Charles A. Roelli)
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 30503 in the body.
You can then email your comments to 30503 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Sat, 17 Feb 2018 16:17:02 GMT) Full text and rfc822 format available.charles <at> aurox.ch (Charles A. Roelli)
:bug-gnu-emacs <at> gnu.org
.
(Sat, 17 Feb 2018 16:17:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: charles <at> aurox.ch (Charles A. Roelli) To: bug-gnu-emacs <at> gnu.org Subject: 27.0.50; allow hiding M-x grep command line Date: Sat, 17 Feb 2018 17:25:20 +0100
The first thing you see after M-x grep is a 1382-character line like this: find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*/MCVS -o -path \*/.src -o -path \*/.svn -o -path \*/.git -o -path \*/.hg -o -path \*/.bzr -o -path \*/_MTN -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o \! -type d \( -name .\#\* -o -name \*.o -o -name \*\~ -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o -name \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o -type f \( -iname \* -o -iname .\[\!.\]\* -o -iname ..\?\* \) -exec grep --color -nH --null -e Emacs \{\} + Could we provide an option to hide the barrage of ignored directories and files? It might also be worth adding a text button or keybinding to toggle their visibility interactively.
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Sat, 17 Feb 2018 17:07:02 GMT) Full text and rfc822 format available.Message #8 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: charles <at> aurox.ch (Charles A. Roelli) Cc: 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Sat, 17 Feb 2018 19:06:42 +0200
> Date: Sat, 17 Feb 2018 17:25:20 +0100 > From: charles <at> aurox.ch (Charles A. Roelli) > > The first thing you see after M-x grep is a 1382-character line like > this: You mean "M-x rgrep", right?
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Sat, 17 Feb 2018 19:05:01 GMT) Full text and rfc822 format available.Message #11 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: charles <at> aurox.ch (Charles A. Roelli) To: Eli Zaretskii <eliz <at> gnu.org> Cc: 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Sat, 17 Feb 2018 20:13:34 +0100
retitle 30503 allow hiding M-x rgrep/lgrep/zrgrep command line -- > You mean "M-x rgrep", right? Yes (mea culpa), and in principle "lgrep" and "zrgrep" too.
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Tue, 20 Feb 2018 21:37:03 GMT) Full text and rfc822 format available.Message #14 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: charles <at> aurox.ch (Charles A. Roelli) Cc: 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Tue, 20 Feb 2018 22:54:34 +0200
[Message part 1 (text/plain, inline)]
retitle 30503 allow hiding M-x rgrep/lgrep/zrgrep command line thanks > The first thing you see after M-x grep is a 1382-character line like > this: > > find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path > \*/MCVS -o -path \*/.src -o -path \*/.svn -o -path \*/.git -o -path > \*/.hg -o -path \*/.bzr -o -path \*/_MTN -o -path \*/_darcs -o -path > \*/\{arch\} \) -prune -o \! -type d \( -name .\#\* -o -name \*.o -o -name > \*\~ -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o -name > \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name > \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name > \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name > \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name > \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name > \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name > \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name > \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name > \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o -name > \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o > -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name > \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name > \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name > \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o -type > f \( -iname \* -o -iname .\[\!.\]\* -o -iname ..\?\* \) -exec > grep --color -nH --null -e Emacs \{\} + > > Could we provide an option to hide the barrage of ignored directories > and files? It might also be worth adding a text button or keybinding > to toggle their visibility interactively. Yes, this is a real problem. Even though I set truncate-lines to t, often there is a need to see grep switches at the end of the command line. So there is a patch to hide uninteresting parts under a button like is used to hide part of output by elisp-last-sexp-toggle-display. It supports rgrep, lgrep and zrgrep.
[grep-hide.patch (text/x-diff, inline)]
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 14e251e..34a9b2f 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -452,7 +452,13 @@ grep-mode-font-lock-keywords ;; "filename=linenumber=" for lines with function names in "git grep -p". ("^.+?\\([-=\0]\\)[0-9]+\\([-=]\\).*\n" (0 grep-context-face) (1 (if (eq (char-after (match-beginning 1)) ?\0) - `(face nil display ,(match-string 2)))))) + `(face nil display ,(match-string 2))))) + ;; Hide excessive part of the command from rgrep + ("^find \\(\\. -type d .*\\\\)\\)" + (1 (rgrep-command-hide))) + ;; Hide excessive part of the command from lgrep + ("^grep \\( *--exclude.*--exclude[^ ]+\\)" + (1 (rgrep-command-hide)))) "Additional things to highlight in grep output. This gets tacked on the end of the generated expressions.") @@ -1166,6 +1173,32 @@ rgrep-default-command (shell-quote-argument ")") " -prune -o "))))) +(defun rgrep-command-hide () + (let ((map (make-sparse-keymap))) + (define-key map [down-mouse-2] 'mouse-set-point) + (define-key map [mouse-2] 'rgrep-command-show) + (define-key map "\C-m" 'rgrep-command-show) + `(face nil display "[...]" mouse-face highlight + help-echo "RET, mouse-2: toggle truncated command" + keymap ,map))) + +(defun rgrep-command-show () + (interactive) + (when (get-text-property (point) 'display) + (let ((beg (or (previous-single-property-change + (min (point-max) (1+ (point))) 'display) + (point))) + (end (or (next-single-property-change + (point) 'display) + (point))) + (inhibit-modification-hooks t) + (inhibit-read-only t) + (buffer-undo-list t) + (modified (buffer-modified-p))) + (remove-list-of-text-properties + beg end '(display help-echo mouse-face help-echo keymap)) + (set-buffer-modified-p modified)))) + ;;;###autoload (defun zrgrep (regexp &optional files dir confirm template) "Recursively grep for REGEXP in gzipped FILES in tree rooted at DIR.
Juri Linkov <juri <at> linkov.net>
to control <at> debbugs.gnu.org
.
(Tue, 20 Feb 2018 21:37:04 GMT) Full text and rfc822 format available.bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Wed, 21 Feb 2018 03:45:03 GMT) Full text and rfc822 format available.Message #19 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Juri Linkov <juri <at> linkov.net> Cc: 30503 <at> debbugs.gnu.org, charles <at> aurox.ch Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Wed, 21 Feb 2018 05:44:44 +0200
> From: Juri Linkov <juri <at> linkov.net> > Date: Tue, 20 Feb 2018 22:54:34 +0200 > Cc: 30503 <at> debbugs.gnu.org > > > Could we provide an option to hide the barrage of ignored directories > > and files? It might also be worth adding a text button or keybinding > > to toggle their visibility interactively. > > Yes, this is a real problem. Even though I set truncate-lines to t, > often there is a need to see grep switches at the end of the > command line. So there is a patch to hide uninteresting parts > under a button like is used to hide part of output by > elisp-last-sexp-toggle-display. It supports rgrep, lgrep and zrgrep. Thanks, but where's the option to hide the long list? It looks like this patch changes the behavior unconditionally, and makes it strikingly different from the previous behavior. In any case, this needs to be documented in NEWS and the manual, I think.
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Wed, 21 Feb 2018 20:22:02 GMT) Full text and rfc822 format available.Message #22 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: charles <at> aurox.ch (Charles A. Roelli) To: Juri Linkov <juri <at> linkov.net> Cc: 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Wed, 21 Feb 2018 21:30:40 +0100
> From: Juri Linkov <juri <at> linkov.net> > Organization: LINKOV.NET > Date: Tue, 20 Feb 2018 22:54:34 +0200 > > retitle 30503 allow hiding M-x rgrep/lgrep/zrgrep command line > thanks > > > The first thing you see after M-x grep is a 1382-character line like > > this: > > > > find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path > > \*/MCVS -o -path \*/.src -o -path \*/.svn -o -path \*/.git -o -path > > \*/.hg -o -path \*/.bzr -o -path \*/_MTN -o -path \*/_darcs -o -path > > \*/\{arch\} \) -prune -o \! -type d \( -name .\#\* -o -name \*.o -o -name > > \*\~ -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o -name > > \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name > > \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name > > \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name > > \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name > > \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name > > \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name > > \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name > > \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name > > \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o -name > > \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o > > -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name > > \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name > > \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name > > \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o -type > > f \( -iname \* -o -iname .\[\!.\]\* -o -iname ..\?\* \) -exec > > grep --color -nH --null -e Emacs \{\} + > > > > Could we provide an option to hide the barrage of ignored directories > > and files? It might also be worth adding a text button or keybinding > > to toggle their visibility interactively. > > Yes, this is a real problem. Even though I set truncate-lines to t, > often there is a need to see grep switches at the end of the > command line. So there is a patch to hide uninteresting parts > under a button like is used to hide part of output by > elisp-last-sexp-toggle-display. It supports rgrep, lgrep and zrgrep. > > > diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el > index 14e251e..34a9b2f 100644 > --- a/lisp/progmodes/grep.el > +++ b/lisp/progmodes/grep.el > @@ -452,7 +452,13 @@ grep-mode-font-lock-keywords > ;; "filename=linenumber=" for lines with function names in "git grep -p". > ("^.+?\\([-=\0]\\)[0-9]+\\([-=]\\).*\n" (0 grep-context-face) > (1 (if (eq (char-after (match-beginning 1)) ?\0) > - `(face nil display ,(match-string 2)))))) > + `(face nil display ,(match-string 2))))) > + ;; Hide excessive part of the command from rgrep > + ("^find \\(\\. -type d .*\\\\)\\)" > + (1 (rgrep-command-hide))) > + ;; Hide excessive part of the command from lgrep > + ("^grep \\( *--exclude.*--exclude[^ ]+\\)" > + (1 (rgrep-command-hide)))) > "Additional things to highlight in grep output. > This gets tacked on the end of the generated expressions.") > > @@ -1166,6 +1173,32 @@ rgrep-default-command > (shell-quote-argument ")") > " -prune -o "))))) > > +(defun rgrep-command-hide () > + (let ((map (make-sparse-keymap))) > + (define-key map [down-mouse-2] 'mouse-set-point) > + (define-key map [mouse-2] 'rgrep-command-show) > + (define-key map "\C-m" 'rgrep-command-show) > + `(face nil display "[...]" mouse-face highlight > + help-echo "RET, mouse-2: toggle truncated command" > + keymap ,map))) > + > +(defun rgrep-command-show () > + (interactive) > + (when (get-text-property (point) 'display) > + (let ((beg (or (previous-single-property-change > + (min (point-max) (1+ (point))) 'display) > + (point))) > + (end (or (next-single-property-change > + (point) 'display) > + (point))) > + (inhibit-modification-hooks t) > + (inhibit-read-only t) > + (buffer-undo-list t) > + (modified (buffer-modified-p))) > + (remove-list-of-text-properties > + beg end '(display help-echo mouse-face help-echo keymap)) > + (set-buffer-modified-p modified)))) > + > ;;;###autoload > (defun zrgrep (regexp &optional files dir confirm template) > "Recursively grep for REGEXP in gzipped FILES in tree rooted at DIR. Thanks, this is a great start. I iterated on your patch, with a few changes: - Change naming to start with `grep' instead of `rgrep' (the position of the functions may still have to change within the file). - Use `with-silent-modifications'. - Provide a toggling command for hiding/showing the shortened command. What still remains to be added is the doc, a possible keybinding/menu item, and a customization variable that determines whether the hiding is done immediately for every rgrep/lgrep/rzgrep buffer. And I think there's some room for error in my change to the beg/end let-bindings in grep-toggle-shortened-command (e.g. if beg ends up being nil), so I'll fix that eventually as well. diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 14e251e..6699787 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -452,7 +452,13 @@ grep-mode-font-lock-keywords ;; "filename=linenumber=" for lines with function names in "git grep -p". ("^.+?\\([-=\0]\\)[0-9]+\\([-=]\\).*\n" (0 grep-context-face) (1 (if (eq (char-after (match-beginning 1)) ?\0) - `(face nil display ,(match-string 2)))))) + `(face nil display ,(match-string 2))))) + ;; Hide excessive part of the command from rgrep + ("^find \\(\\. -type d .*\\\\)\\)" + (1 (grep-shortened-command-properties))) + ;; Hide excessive part of the command from lgrep + ("^grep \\( *--exclude.*--exclude[^ ]+\\)" + (1 (grep-shortened-command-properties)))) "Additional things to highlight in grep output. This gets tacked on the end of the generated expressions.") @@ -1166,6 +1172,30 @@ rgrep-default-command (shell-quote-argument ")") " -prune -o "))))) +(defun grep-shortened-command-properties () + "Return a list of text properties applied to verbose command arguments." + (let ((map (make-sparse-keymap))) + (define-key map [down-mouse-2] 'mouse-set-point) + (define-key map [mouse-2] 'grep-toggle-shortened-command) + (define-key map "\C-m" 'grep-toggle-shortened-command) + `(face nil display "[...]" mouse-face highlight + help-echo "RET, mouse-2: toggle shortened command" + keymap ,map + shortened-command t))) + +(defun grep-toggle-shortened-command () + "Toggle the display of a shortened command in `grep-mode' buffers." + (interactive) + (with-silent-modifications + (let* ((beg (next-single-property-change + (point-min) 'shortened-command)) + (end (next-single-property-change + beg 'shortened-command))) + (if (get-text-property beg 'display) + (remove-list-of-text-properties + beg end '(display help-echo mouse-face help-echo keymap)) + (add-text-properties beg end (grep-shortened-command-properties)))))) + ;;;###autoload (defun zrgrep (regexp &optional files dir confirm template) "Recursively grep for REGEXP in gzipped FILES in tree rooted at DIR.
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Wed, 21 Feb 2018 20:32:02 GMT) Full text and rfc822 format available.Message #25 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 30503 <at> debbugs.gnu.org, charles <at> aurox.ch Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Wed, 21 Feb 2018 22:20:55 +0200
[Message part 1 (text/plain, inline)]
>> > Could we provide an option to hide the barrage of ignored directories >> > and files? It might also be worth adding a text button or keybinding >> > to toggle their visibility interactively. >> >> Yes, this is a real problem. Even though I set truncate-lines to t, >> often there is a need to see grep switches at the end of the >> command line. So there is a patch to hide uninteresting parts >> under a button like is used to hide part of output by >> elisp-last-sexp-toggle-display. It supports rgrep, lgrep and zrgrep. > > Thanks, but where's the option to hide the long list? It looks like > this patch changes the behavior unconditionally, and makes it > strikingly different from the previous behavior. Like there is the option eval-expression-print-length to disable hiding of long output from eval-last-sexp, we could add a similar option here as well. > In any case, this needs to be documented in NEWS and the manual, I > think. Changes to NEWS are added in this patch without “---” to not forget to document it in the manual before the release of Emacs 27.1.
[grep-hide.2.patch (text/x-diff, inline)]
diff --git a/etc/NEWS b/etc/NEWS index 71569c9..0ba369e7 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -158,6 +158,13 @@ by default. ** Gamegrid +** grep + +*** rgrep, lgrep and zrgrep now hide part of the command line +that contains a list of ignored directories and files. +Clicking on the button with ellipsis unhides the truncated part. +This truncation can be disabled by the new option 'rgrep-command-hide'. + ** ERT +++ diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 14e251e..d249c51 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -433,6 +433,26 @@ grep-mode-line-matches help-echo "Number of matches so far") "]")) +(defcustom rgrep-command-hide t + "If non-nil, hide part of rgrep/lgrep/zrgrep command line. +The hidden part contains a list of ignored directories and files. +Clicking on the button-like ellipsis unhides the abbreviated part +and reveals the entire command line." + :type 'boolean + :version "27.1" + :group 'grep) + +(defvar rgrep-command-hide-properties + (let ((ellipsis (if (char-displayable-p ?…) "[…]" "[...]")) + (map (make-sparse-keymap))) + (define-key map [down-mouse-2] 'mouse-set-point) + (define-key map [mouse-2] 'rgrep-command-show) + (define-key map "\C-m" 'rgrep-command-show) + `(face nil display ,ellipsis mouse-face highlight + help-echo "RET, mouse-2: show unabbreviated command" + keymap ,map)) + "Properties of button-like ellipsis on part of rgrep command line.") + (defvar grep-mode-font-lock-keywords '(;; Command output lines. (": \\(.+\\): \\(?:Permission denied\\|No such \\(?:file or directory\\|device or address\\)\\)$" @@ -452,7 +472,13 @@ grep-mode-font-lock-keywords ;; "filename=linenumber=" for lines with function names in "git grep -p". ("^.+?\\([-=\0]\\)[0-9]+\\([-=]\\).*\n" (0 grep-context-face) (1 (if (eq (char-after (match-beginning 1)) ?\0) - `(face nil display ,(match-string 2)))))) + `(face nil display ,(match-string 2))))) + ;; Hide excessive part of rgrep command + ("^find \\(\\. -type d .*\\\\)\\)" + (1 (when rgrep-command-hide rgrep-command-hide-properties))) + ;; Hide excessive part of lgrep command + ("^grep \\( *--exclude.*--exclude[^ ]+\\)" + (1 (when rgrep-command-hide rgrep-command-hide-properties)))) "Additional things to highlight in grep output. This gets tacked on the end of the generated expressions.") @@ -1166,6 +1192,24 @@ rgrep-default-command (shell-quote-argument ")") " -prune -o "))))) +(defun rgrep-command-show () + "Show the hidden part of rgrep/lgrep/zrgrep command line." + (interactive) + (when (get-text-property (point) 'display) + (let ((beg (or (previous-single-property-change + (min (point-max) (1+ (point))) 'display) + (point))) + (end (or (next-single-property-change + (point) 'display) + (point))) + (inhibit-modification-hooks t) + (inhibit-read-only t) + (buffer-undo-list t) + (modified (buffer-modified-p))) + (remove-list-of-text-properties + beg end '(display help-echo mouse-face help-echo keymap)) + (set-buffer-modified-p modified)))) + ;;;###autoload (defun zrgrep (regexp &optional files dir confirm template) "Recursively grep for REGEXP in gzipped FILES in tree rooted at DIR.
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Thu, 22 Feb 2018 07:44:02 GMT) Full text and rfc822 format available.Message #28 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Juri Linkov <juri <at> linkov.net> Cc: 30503 <at> debbugs.gnu.org, charles <at> aurox.ch Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Thu, 22 Feb 2018 09:43:14 +0200
> From: Juri Linkov <juri <at> linkov.net> > Cc: charles <at> aurox.ch, 30503 <at> debbugs.gnu.org > Date: Wed, 21 Feb 2018 22:20:55 +0200 > > > In any case, this needs to be documented in NEWS and the manual, I > > think. > > Changes to NEWS are added in this patch without “---” to not forget > to document it in the manual before the release of Emacs 27.1. Thanks, but I'd prefer that we update the manual as part of this changeset. Leaving manuals outdated tends to create a very large job to be done before a pretest can be released, which I find to be sub-optimal. It also prevents users who track the development from finding possible mistakes in the manual, because they don't have enough time to d that before an official release. Would you like to make the corrections in the manual as well?
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Thu, 22 Feb 2018 21:53:02 GMT) Full text and rfc822 format available.Message #31 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 30503 <at> debbugs.gnu.org, charles <at> aurox.ch Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Thu, 22 Feb 2018 23:51:57 +0200
>> > In any case, this needs to be documented in NEWS and the manual, I >> > think. >> >> Changes to NEWS are added in this patch without “---” to not forget >> to document it in the manual before the release of Emacs 27.1. > > Thanks, but I'd prefer that we update the manual as part of this > changeset. Leaving manuals outdated tends to create a very large job > to be done before a pretest can be released, which I find to be > sub-optimal. It also prevents users who track the development from > finding possible mistakes in the manual, because they don't have > enough time to d that before an official release. > > Would you like to make the corrections in the manual as well? Pushed to master together with the corrections in the manual. Charles, please update your patch from master, you have many good improvements in your previous patch.
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Fri, 23 Feb 2018 06:57:01 GMT) Full text and rfc822 format available.Message #34 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Juri Linkov <juri <at> linkov.net> Cc: 30503 <at> debbugs.gnu.org, charles <at> aurox.ch Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Fri, 23 Feb 2018 08:55:43 +0200
> From: Juri Linkov <juri <at> linkov.net> > Cc: charles <at> aurox.ch, 30503 <at> debbugs.gnu.org > Date: Thu, 22 Feb 2018 23:51:57 +0200 > > > Thanks, but I'd prefer that we update the manual as part of this > > changeset. Leaving manuals outdated tends to create a very large job > > to be done before a pretest can be released, which I find to be > > sub-optimal. It also prevents users who track the development from > > finding possible mistakes in the manual, because they don't have > > enough time to d that before an official release. > > > > Would you like to make the corrections in the manual as well? > > Pushed to master together with the corrections in the manual. Thanks.
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Sun, 25 Feb 2018 19:41:02 GMT) Full text and rfc822 format available.Message #37 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: charles <at> aurox.ch (Charles A. Roelli) To: Juri Linkov <juri <at> linkov.net> Cc: eliz <at> gnu.org, 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Sun, 25 Feb 2018 20:50:47 +0100
> From: Juri Linkov <juri <at> linkov.net> > Cc: charles <at> aurox.ch, 30503 <at> debbugs.gnu.org > Organization: LINKOV.NET > Date: Thu, 22 Feb 2018 23:51:57 +0200 > > >> > In any case, this needs to be documented in NEWS and the manual, I > >> > think. > >> > >> Changes to NEWS are added in this patch without “---” to not forget > >> to document it in the manual before the release of Emacs 27.1. > > > > Thanks, but I'd prefer that we update the manual as part of this > > changeset. Leaving manuals outdated tends to create a very large job > > to be done before a pretest can be released, which I find to be > > sub-optimal. It also prevents users who track the development from > > finding possible mistakes in the manual, because they don't have > > enough time to d that before an official release. > > > > Would you like to make the corrections in the manual as well? > > Pushed to master together with the corrections in the manual. > > Charles, please update your patch from master, you have many > good improvements in your previous patch. Thanks for adding this feature. Here's the change that implements a toggling command. diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 8e2fdf1..eee6329 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -435,13 +435,16 @@ Grep Searching by various version control systems. @vindex grep-find-hide +@findex grep-find-toggle-abbreviation By default, the shell commands constructed for @code{lgrep}, @code{rgrep}, and @code{zgrep} are abbreviated for display by concealing the part that contains a long list of files and directories to ignore. You can reveal the concealed part by clicking on the -button with ellipsis, which represents them. To disable this -abbreviation of the shell commands, customize the option -@code{grep-find-hide} to a @code{nil} value. +button with ellipsis, which represents them. You can also +interactively toggle viewing the concealed part by typing @kbd{M-x +grep-find-toggle-abbreviation}. To disable this abbreviation of the +shell commands, customize the option @code{grep-find-hide} to a +@code{nil} value. @node Flymake @section Finding Syntax Errors On The Fly diff --git a/etc/NEWS b/etc/NEWS index 596adf8..166b419 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -203,6 +203,8 @@ by default. that contains a list of ignored directories and files. Clicking on the button with ellipsis unhides the truncated part. This truncation can be disabled by the new option 'grep-find-hide'. +The new command 'grep-find-toggle-abbreviation' toggles the hiding +interactively. ** ERT diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 9b2c6f1..67139b4 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -437,7 +437,9 @@ grep-find-hide "If non-nil, hide part of rgrep/lgrep/zrgrep command line. The hidden part contains a list of ignored directories and files. Clicking on the button-like ellipsis unhides the abbreviated part -and reveals the entire command line." +and reveals the entire command line. The visibility of the +abbreviated part can also be toggled with +`grep-find-toggle-abbreviation'." :type 'boolean :version "27.1" :group 'grep) @@ -446,11 +448,11 @@ grep-find-hide-properties (let ((ellipsis (if (char-displayable-p ?…) "[…]" "[...]")) (map (make-sparse-keymap))) (define-key map [down-mouse-2] 'mouse-set-point) - (define-key map [mouse-2] 'grep-find-show) - (define-key map "\C-m" 'grep-find-show) + (define-key map [mouse-2] 'grep-find-toggle-abbreviation) + (define-key map "\C-m" 'grep-find-toggle-abbreviation) `(face nil display ,ellipsis mouse-face highlight help-echo "RET, mouse-2: show unabbreviated command" - keymap ,map)) + keymap ,map abbreviated-command t)) "Properties of button-like ellipsis on part of rgrep command line.") (defvar grep-mode-font-lock-keywords @@ -476,10 +478,12 @@ grep-mode-font-lock-keywords `(face nil display ,(match-string 2))))) ;; Hide excessive part of rgrep command ("^find \\(\\. -type d .*\\\\)\\)" - (1 (when grep-find-hide grep-find-hide-properties))) + (1 (if grep-find-hide grep-find-hide-properties + '(face nil abbreviated-command t)))) ;; Hide excessive part of lgrep command ("^grep \\( *--exclude.*--exclude[^ ]+\\)" - (1 (when grep-find-hide grep-find-hide-properties)))) + (1 (if grep-find-hide grep-find-hide-properties + '(face nil abbreviated-command t))))) "Additional things to highlight in grep output. This gets tacked on the end of the generated expressions.") @@ -1195,23 +1199,19 @@ rgrep-default-command (shell-quote-argument ")") " -prune -o "))))) -(defun grep-find-show () - "Show the hidden part of rgrep/lgrep/zrgrep command line." +(defun grep-find-toggle-abbreviation () + "Toggle showing the hidden part of rgrep/lgrep/zrgrep command line." (interactive) - (when (get-text-property (point) 'display) - (let ((beg (or (previous-single-property-change - (min (point-max) (1+ (point))) 'display) - (point))) - (end (or (next-single-property-change - (point) 'display) - (point))) - (inhibit-modification-hooks t) - (inhibit-read-only t) - (buffer-undo-list t) - (modified (buffer-modified-p))) - (remove-list-of-text-properties - beg end '(display help-echo mouse-face help-echo keymap)) - (set-buffer-modified-p modified)))) + (with-silent-modifications + (let* ((beg (next-single-property-change (point-min) 'abbreviated-command)) + (end (when beg + (next-single-property-change beg 'abbreviated-command)))) + (if end + (if (get-text-property beg 'display) + (remove-list-of-text-properties + beg end '(display help-echo mouse-face help-echo keymap)) + (add-text-properties beg end grep-find-hide-properties)) + (user-error "No abbreviated part to hide/show"))))) ;;;###autoload (defun zrgrep (regexp &optional files dir confirm template)
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Tue, 27 Feb 2018 21:40:03 GMT) Full text and rfc822 format available.Message #40 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: charles <at> aurox.ch (Charles A. Roelli) Cc: eliz <at> gnu.org, 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Tue, 27 Feb 2018 23:06:35 +0200
> Thanks for adding this feature. Here's the change that implements a > toggling command. Thanks. I have only one comment about the naming: since we will now have grep-find-toggle-abbreviation, how about renaming for symmetry grep-find-hide to e.g. grep-find-hide-abbreviation, and grep-find-hide-properties to e.g. grep-find-hide-abbreviation-props? Or maybe better to have the same prefix for all functions/variables of this feature? grep-find-abbreviation-toggle grep-find-abbreviation-hide grep-find-abbreviation-hide-props
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Sun, 04 Mar 2018 16:01:02 GMT) Full text and rfc822 format available.Message #43 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: charles <at> aurox.ch (Charles A. Roelli) To: Juri Linkov <juri <at> linkov.net> Cc: eliz <at> gnu.org, 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Sun, 04 Mar 2018 17:11:07 +0100
> From: Juri Linkov <juri <at> linkov.net> > Cc: eliz <at> gnu.org, 30503 <at> debbugs.gnu.org > Date: Tue, 27 Feb 2018 23:06:35 +0200 > > > Thanks for adding this feature. Here's the change that implements a > > toggling command. > > Thanks. I have only one comment about the naming: since we will now have > grep-find-toggle-abbreviation, how about renaming for symmetry > grep-find-hide to e.g. grep-find-hide-abbreviation, and > grep-find-hide-properties to e.g. grep-find-hide-abbreviation-props? > > Or maybe better to have the same prefix for all functions/variables > of this feature? > > grep-find-abbreviation-toggle > grep-find-abbreviation-hide > grep-find-abbreviation-hide-props I've gone for: grep-find-abbreviate (defcustom) grep-find-abbreviate-properties (defvar) grep-find-toggle-abbreviation (command) (Most "toggle" commands seem not to end with that word, so I've followed this convention.) The patch follows: diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 0697e1b..e1c3cea 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -434,14 +434,17 @@ Grep Searching @kbd{M-x rgrep}. The default value includes the data directories used by various version control systems. -@vindex grep-find-hide +@vindex grep-find-abbreviate +@findex grep-find-toggle-abbreviation By default, the shell commands constructed for @code{lgrep}, @code{rgrep}, and @code{zgrep} are abbreviated for display by concealing the part that contains a long list of files and directories to ignore. You can reveal the concealed part by clicking on the -button with ellipsis, which represents them. To disable this -abbreviation of the shell commands, customize the option -@code{grep-find-hide} to a @code{nil} value. +button with ellipsis, which represents them. You can also +interactively toggle viewing the concealed part by typing @kbd{M-x +grep-find-toggle-abbreviation}. To disable this abbreviation of the +shell commands, customize the option @code{grep-find-abbreviate} to a +@code{nil} value. @node Flymake @section Finding Syntax Errors On The Fly diff --git a/etc/NEWS b/etc/NEWS index 08c7e7e..24064f8 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -209,8 +209,10 @@ by default. *** rgrep, lgrep and zrgrep now hide part of the command line that contains a list of ignored directories and files. -Clicking on the button with ellipsis unhides the truncated part. -This truncation can be disabled by the new option 'grep-find-hide'. +Clicking on the button with ellipsis unhides it. +The abbreviation can be disabled by the new option +'grep-find-abbreviate'. The new command +'grep-find-toggle-abbreviation' toggles it interactively. ** ERT diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 9b2c6f1..f7c90ba 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -433,24 +433,26 @@ grep-mode-line-matches help-echo "Number of matches so far") "]")) -(defcustom grep-find-hide t +(defcustom grep-find-abbreviate t "If non-nil, hide part of rgrep/lgrep/zrgrep command line. The hidden part contains a list of ignored directories and files. Clicking on the button-like ellipsis unhides the abbreviated part -and reveals the entire command line." +and reveals the entire command line. The visibility of the +abbreviated part can also be toggled with +`grep-find-toggle-abbreviation'." :type 'boolean :version "27.1" :group 'grep) -(defvar grep-find-hide-properties +(defvar grep-find-abbreviate-properties (let ((ellipsis (if (char-displayable-p ?…) "[…]" "[...]")) (map (make-sparse-keymap))) (define-key map [down-mouse-2] 'mouse-set-point) - (define-key map [mouse-2] 'grep-find-show) - (define-key map "\C-m" 'grep-find-show) + (define-key map [mouse-2] 'grep-find-toggle-abbreviation) + (define-key map "\C-m" 'grep-find-toggle-abbreviation) `(face nil display ,ellipsis mouse-face highlight help-echo "RET, mouse-2: show unabbreviated command" - keymap ,map)) + keymap ,map abbreviated-command t)) "Properties of button-like ellipsis on part of rgrep command line.") (defvar grep-mode-font-lock-keywords @@ -476,10 +478,12 @@ grep-mode-font-lock-keywords `(face nil display ,(match-string 2))))) ;; Hide excessive part of rgrep command ("^find \\(\\. -type d .*\\\\)\\)" - (1 (when grep-find-hide grep-find-hide-properties))) + (1 (if grep-find-abbreviate grep-find-abbreviate-properties + '(face nil abbreviated-command t)))) ;; Hide excessive part of lgrep command ("^grep \\( *--exclude.*--exclude[^ ]+\\)" - (1 (when grep-find-hide grep-find-hide-properties)))) + (1 (if grep-find-abbreviate grep-find-abbreviate-properties + '(face nil abbreviated-command t))))) "Additional things to highlight in grep output. This gets tacked on the end of the generated expressions.") @@ -1195,23 +1199,19 @@ rgrep-default-command (shell-quote-argument ")") " -prune -o "))))) -(defun grep-find-show () - "Show the hidden part of rgrep/lgrep/zrgrep command line." +(defun grep-find-toggle-abbreviation () + "Toggle showing the hidden part of rgrep/lgrep/zrgrep command line." (interactive) - (when (get-text-property (point) 'display) - (let ((beg (or (previous-single-property-change - (min (point-max) (1+ (point))) 'display) - (point))) - (end (or (next-single-property-change - (point) 'display) - (point))) - (inhibit-modification-hooks t) - (inhibit-read-only t) - (buffer-undo-list t) - (modified (buffer-modified-p))) - (remove-list-of-text-properties - beg end '(display help-echo mouse-face help-echo keymap)) - (set-buffer-modified-p modified)))) + (with-silent-modifications + (let* ((beg (next-single-property-change (point-min) 'abbreviated-command)) + (end (when beg + (next-single-property-change beg 'abbreviated-command)))) + (if end + (if (get-text-property beg 'display) + (remove-list-of-text-properties + beg end '(display help-echo mouse-face help-echo keymap)) + (add-text-properties beg end grep-find-abbreviate-properties)) + (user-error "No abbreviated part to hide/show"))))) ;;;###autoload (defun zrgrep (regexp &optional files dir confirm template)
bug-gnu-emacs <at> gnu.org
:bug#30503
; Package emacs
.
(Sun, 11 Mar 2018 13:49:02 GMT) Full text and rfc822 format available.Message #46 received at 30503 <at> debbugs.gnu.org (full text, mbox):
From: charles <at> aurox.ch (Charles A. Roelli) To: juri <at> linkov.net Cc: eliz <at> gnu.org, 30503 <at> debbugs.gnu.org Subject: Re: bug#30503: 27.0.50; allow hiding M-x grep command line Date: Sun, 11 Mar 2018 15:00:13 +0100
> Date: Sun, 04 Mar 2018 17:11:07 +0100 > From: charles <at> aurox.ch (Charles A. Roelli) > > > > Thanks for adding this feature. Here's the change that implements a > > > toggling command. > > > > Thanks. I have only one comment about the naming: since we will now have > > grep-find-toggle-abbreviation, how about renaming for symmetry > > grep-find-hide to e.g. grep-find-hide-abbreviation, and > > grep-find-hide-properties to e.g. grep-find-hide-abbreviation-props? > > > > Or maybe better to have the same prefix for all functions/variables > > of this feature? > > > > grep-find-abbreviation-toggle > > grep-find-abbreviation-hide > > grep-find-abbreviation-hide-props > > I've gone for: > > grep-find-abbreviate (defcustom) > grep-find-abbreviate-properties (defvar) > grep-find-toggle-abbreviation (command) > > (Most "toggle" commands seem not to end with that word, so I've > followed this convention.) > > The patch follows: > > diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi > index 0697e1b..e1c3cea 100644 > --- a/doc/emacs/building.texi > +++ b/doc/emacs/building.texi > @@ -434,14 +434,17 @@ Grep Searching > @kbd{M-x rgrep}. The default value includes the data directories used > by various version control systems. > > -@vindex grep-find-hide > +@vindex grep-find-abbreviate > +@findex grep-find-toggle-abbreviation > By default, the shell commands constructed for @code{lgrep}, > @code{rgrep}, and @code{zgrep} are abbreviated for display by > concealing the part that contains a long list of files and directories > to ignore. You can reveal the concealed part by clicking on the > -button with ellipsis, which represents them. To disable this > -abbreviation of the shell commands, customize the option > -@code{grep-find-hide} to a @code{nil} value. > +button with ellipsis, which represents them. You can also > +interactively toggle viewing the concealed part by typing @kbd{M-x > +grep-find-toggle-abbreviation}. To disable this abbreviation of the > +shell commands, customize the option @code{grep-find-abbreviate} to a > +@code{nil} value. > > @node Flymake > @section Finding Syntax Errors On The Fly > diff --git a/etc/NEWS b/etc/NEWS > index 08c7e7e..24064f8 100644 > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -209,8 +209,10 @@ by default. > > *** rgrep, lgrep and zrgrep now hide part of the command line > that contains a list of ignored directories and files. > -Clicking on the button with ellipsis unhides the truncated part. > -This truncation can be disabled by the new option 'grep-find-hide'. > +Clicking on the button with ellipsis unhides it. > +The abbreviation can be disabled by the new option > +'grep-find-abbreviate'. The new command > +'grep-find-toggle-abbreviation' toggles it interactively. > > ** ERT > > diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el > index 9b2c6f1..f7c90ba 100644 > --- a/lisp/progmodes/grep.el > +++ b/lisp/progmodes/grep.el > @@ -433,24 +433,26 @@ grep-mode-line-matches > help-echo "Number of matches so far") > "]")) > > -(defcustom grep-find-hide t > +(defcustom grep-find-abbreviate t > "If non-nil, hide part of rgrep/lgrep/zrgrep command line. > The hidden part contains a list of ignored directories and files. > Clicking on the button-like ellipsis unhides the abbreviated part > -and reveals the entire command line." > +and reveals the entire command line. The visibility of the > +abbreviated part can also be toggled with > +`grep-find-toggle-abbreviation'." > :type 'boolean > :version "27.1" > :group 'grep) > > -(defvar grep-find-hide-properties > +(defvar grep-find-abbreviate-properties > (let ((ellipsis (if (char-displayable-p ?…) "[…]" "[...]")) > (map (make-sparse-keymap))) > (define-key map [down-mouse-2] 'mouse-set-point) > - (define-key map [mouse-2] 'grep-find-show) > - (define-key map "\C-m" 'grep-find-show) > + (define-key map [mouse-2] 'grep-find-toggle-abbreviation) > + (define-key map "\C-m" 'grep-find-toggle-abbreviation) > `(face nil display ,ellipsis mouse-face highlight > help-echo "RET, mouse-2: show unabbreviated command" > - keymap ,map)) > + keymap ,map abbreviated-command t)) > "Properties of button-like ellipsis on part of rgrep command line.") > > (defvar grep-mode-font-lock-keywords > @@ -476,10 +478,12 @@ grep-mode-font-lock-keywords > `(face nil display ,(match-string 2))))) > ;; Hide excessive part of rgrep command > ("^find \\(\\. -type d .*\\\\)\\)" > - (1 (when grep-find-hide grep-find-hide-properties))) > + (1 (if grep-find-abbreviate grep-find-abbreviate-properties > + '(face nil abbreviated-command t)))) > ;; Hide excessive part of lgrep command > ("^grep \\( *--exclude.*--exclude[^ ]+\\)" > - (1 (when grep-find-hide grep-find-hide-properties)))) > + (1 (if grep-find-abbreviate grep-find-abbreviate-properties > + '(face nil abbreviated-command t))))) > "Additional things to highlight in grep output. > This gets tacked on the end of the generated expressions.") > > @@ -1195,23 +1199,19 @@ rgrep-default-command > (shell-quote-argument ")") > " -prune -o "))))) > > -(defun grep-find-show () > - "Show the hidden part of rgrep/lgrep/zrgrep command line." > +(defun grep-find-toggle-abbreviation () > + "Toggle showing the hidden part of rgrep/lgrep/zrgrep command line." > (interactive) > - (when (get-text-property (point) 'display) > - (let ((beg (or (previous-single-property-change > - (min (point-max) (1+ (point))) 'display) > - (point))) > - (end (or (next-single-property-change > - (point) 'display) > - (point))) > - (inhibit-modification-hooks t) > - (inhibit-read-only t) > - (buffer-undo-list t) > - (modified (buffer-modified-p))) > - (remove-list-of-text-properties > - beg end '(display help-echo mouse-face help-echo keymap)) > - (set-buffer-modified-p modified)))) > + (with-silent-modifications > + (let* ((beg (next-single-property-change (point-min) 'abbreviated-command)) > + (end (when beg > + (next-single-property-change beg 'abbreviated-command)))) > + (if end > + (if (get-text-property beg 'display) > + (remove-list-of-text-properties > + beg end '(display help-echo mouse-face help-echo keymap)) > + (add-text-properties beg end grep-find-abbreviate-properties)) > + (user-error "No abbreviated part to hide/show"))))) > > ;;;###autoload > (defun zrgrep (regexp &optional files dir confirm template) I've pushed this change, along with a modification to add a menu-bar item, and am closing the bug.
charles <at> aurox.ch (Charles A. Roelli)
to control <at> debbugs.gnu.org
.
(Sun, 11 Mar 2018 13:51:02 GMT) Full text and rfc822 format available.Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Mon, 09 Apr 2018 11:24:04 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.