* GREP_OPTIONS again
@ 2004-09-17 4:51 Stefan
2004-09-17 14:00 ` Miles Bader
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Stefan @ 2004-09-17 4:51 UTC (permalink / raw)
I just bumped into a bad side-effect of the GREP_OPTIONS thingy:
I grepped for MM and then isearched for `MM (', knowing full well there had
to be a match but it didn't find anything.
The problem was the invisible annotations added by grep because of
the --color. I guess we should just remove them rather than make
them invisible.
The patch below is actually untested (for some reason my grep doesn't want
to add those annotations any more right now),
Stefan
--- orig/lisp/progmodes/grep.el
+++ mod/lisp/progmodes/grep.el
@@ -1,7 +1,7 @@
;;; grep.el --- run compiler as inferior of Emacs, parse error messages
-;; Copyright (C) 1985, 86, 87, 93, 94, 95, 96, 97, 98, 1999, 2001, 02, 2004
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+;; 2001, 2002, 2004 Free Software Foundation, Inc.
;; Author: Roland McGrath <roland@gnu.org>
;; Maintainer: FSF
@@ -258,15 +258,17 @@
.
(lambda () (- (match-end 5) (match-end 3) 8)))
nil nil
- (4 (list 'face nil 'invisible t 'intangible t))
- (5 (list 'face compilation-column-face))
- (6 (list 'face nil 'invisible t 'intangible t))
+ ;; Delete annotations with `replace-match' because it updates
+ ;; the match-data, whereas `delete-region' would render it obsolete.
+ (5 (progn (replace-match "" t t nil 6)
+ (replace-match "" t t nil 4)
+ (list 'face font-lock-function-name-face)))
;; highlight other matches on the same line
("\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\)"
nil nil
- (1 (list 'face nil 'invisible t 'intangible t))
- (2 (list 'face compilation-column-face) t)
- (3 (list 'face nil 'invisible t 'intangible t))))
+ (2 (progn (replace-match "" t t nil 3)
+ (replace-match "" t t nil 1)
+ (list 'face font-lock-function-name-face)))))
("^Binary file \\(.+\\) matches$" 1 nil nil 1))
"Regexp used to match grep hits. See `compilation-error-regexp-alist'.")
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: GREP_OPTIONS again
2004-09-17 4:51 GREP_OPTIONS again Stefan
@ 2004-09-17 14:00 ` Miles Bader
2004-09-17 23:23 ` Richard Stallman
2004-10-02 23:45 ` Juri Linkov
2 siblings, 0 replies; 4+ messages in thread
From: Miles Bader @ 2004-09-17 14:00 UTC (permalink / raw)
Cc: emacs-devel
On Fri, Sep 17, 2004 at 12:51:09AM -0400, Stefan wrote:
> I just bumped into a bad side-effect of the GREP_OPTIONS thingy:
> I grepped for MM and then isearched for `MM (', knowing full well there had
> to be a match but it didn't find anything.
How's this GREP_OPTIONS thing supposed to work anyway? I noticed that my
*grep* buffer's recently have all kinds of extraneous crap in them, which
seems to be escape sequences, so grep is apparently trying to highlight
things, and emacs isn't groking it.
[I think it's pretty moronic that grep has colors turned on by default in the
first place, but that's a flame for a different mailing list.]
-Miles
--
Run away! Run away!
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: GREP_OPTIONS again
2004-09-17 4:51 GREP_OPTIONS again Stefan
2004-09-17 14:00 ` Miles Bader
@ 2004-09-17 23:23 ` Richard Stallman
2004-10-02 23:45 ` Juri Linkov
2 siblings, 0 replies; 4+ messages in thread
From: Richard Stallman @ 2004-09-17 23:23 UTC (permalink / raw)
Cc: emacs-devel
The problem was the invisible annotations added by grep because of
the --color. I guess we should just remove them rather than make
them invisible.
I agree.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: GREP_OPTIONS again
2004-09-17 4:51 GREP_OPTIONS again Stefan
2004-09-17 14:00 ` Miles Bader
2004-09-17 23:23 ` Richard Stallman
@ 2004-10-02 23:45 ` Juri Linkov
2 siblings, 0 replies; 4+ messages in thread
From: Juri Linkov @ 2004-10-02 23:45 UTC (permalink / raw)
Cc: emacs-devel
Stefan <monnier@iro.umontreal.ca> writes:
> I just bumped into a bad side-effect of the GREP_OPTIONS thingy:
> I grepped for MM and then isearched for `MM (', knowing full well there had
> to be a match but it didn't find anything.
>
> The problem was the invisible annotations added by grep because of
> the --color. I guess we should just remove them rather than make
> them invisible.
>
> The patch below is actually untested (for some reason my grep doesn't want
> to add those annotations any more right now),
This patch doesn't work correctly: it fontified the text 8 positions
to the right (the length of deleted annotations) from the actual match.
Either font-lock should be improved to cope with deleted matches
or maybe its existing capabilities already allow to do that.
I tried to use the PRE-MATCH-FORM parameter. Basically it works for
the first match on a line, but I don't see how to use it for other
matches on the same line - the current implementation doesn't allow that:
("^\\(.+?\\)[:(]+\\([0-9]+\\)\\([:)]\\).*?\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\)"
1 2
((lambda ()
(setq compilation-error-screen-columns nil)
(- (match-beginning 5) (match-end 3)))
.
(lambda () (- (match-end 5) (match-end 3))))
nil nil
;; Delete annotations with `replace-match' because it updates
;; the match-data, whereas `delete-region' would render it obsolete.
(5 (list 'face compilation-column-face))
((lambda (p)) ; faked `MATCHER'
(progn
(replace-match "" t t nil 6)
(replace-match "" t t nil 4)))
;; highlight other matches on the same line
("\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\)"
nil nil
(2 (list 'face compilation-column-face))
;; ???
;; ((lambda (p)) ; facked `MATCHER'
;; (progn
;; (replace-match "" t t nil 3)
;; (replace-match "" t t nil 1)))
))
BTW, the documentation for font-lock is more complete in the docstring
of `font-lock-keywords' than in the Emacs Lisp Reference Manual.
Perhaps, it should be updated.
--
Juri Linkov
http://www.jurta.org/emacs/
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-10-02 23:45 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-17 4:51 GREP_OPTIONS again Stefan
2004-09-17 14:00 ` Miles Bader
2004-09-17 23:23 ` Richard Stallman
2004-10-02 23:45 ` Juri Linkov
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).