all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Re: regexp does not work as documented
@ 2008-05-06  4:20 Chong Yidong
  2008-05-06 11:35 ` Bruno Haible
  2008-05-06 15:00 ` David Koppelman
  0 siblings, 2 replies; 51+ messages in thread
From: Chong Yidong @ 2008-05-06  4:20 UTC (permalink / raw)
  To: emacs-devel; +Cc: koppel, 192, Bruno Haible

> $ emacs fr.po
> M-x highlight-regexp
>
> Regexp to highlight (enter this with Ctrl-Q Ctrl-J for each of the two
> newlines):
>
> ^msgstr\(\[[0-9]\]\)?.*
> \(".*
> \)*
>
> Highlight using face: hi-yellow
>
> Then move around in the buffer and look which lines are highlighted.
> In the first match already, only 5 out of 11 lines are highlighted.

I believe this bug arises because highlight-regexp uses font-lock to
highlight the regular expression, and the font-lock engine is
intentionally limiting the region to search for the multi-line regular
expression.

OTOH, I don't see what we can do about this problem.  Maybe we could add
a note to the docstring of highlight-regexp saying that multi-line
regular expressions are problematic?  Does anyone have a suggestion?


BTW, here is a simplified recipe, for those who didn't download the
attached file:

1. Copy the following text, between the "---...----" lines, into a
   buffer

------------------
# Messages français pour GNU gettext.
# Copyright © 2006 Free Software Foundation, Inc.
# François Pinard <pinard@iro.umontreal.ca>, 1996.
#
#
msgid ""
msgstr ""
"Project-Id-Version: GNU gettext-tools 0.16.2-pre5\n"
"Report-Msgid-Bugs-To: bug-gnu-gettext@gnu.org\n"
"POT-Creation-Date: 2007-11-02 03:23+0100\n"
"PO-Revision-Date: 2007-10-27 13:35+0200\n"
"Last-Translator: Christophe Combelles <ccomb@free.fr>\n"
"Language-Team: French <traduc@traduc.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
------------------

2. M-: (highlight-regexp "^m.*\n\\(\".*\n\\)+") RET

Note that the last two lines remain unhighlighted.




^ permalink raw reply	[flat|nested] 51+ messages in thread
* regexp does not work as documented
@ 2008-05-06  1:30 Bruno Haible
  2008-05-06 14:15 ` Johan Bockgård
  0 siblings, 1 reply; 51+ messages in thread
From: Bruno Haible @ 2008-05-06  1:30 UTC (permalink / raw)
  To: bug-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 2640 bytes --]

The regular expression (as an Emacs string)
  "^msgstr\\(\\[[0-9]\\]\\)?.*\n\\(\".*\n\\)*"
is supposed to search for a line starting with "msgstr" and an optional
digit inside brackets, followed by as many lines starting with a double-quote
as possible. The Emacs documentation says:

  "The matcher processes a `*' construct by matching, immediately, as
   many repetitions as can be found."

This is apparently not the case with the above regexp.

----------------------------------------------------------------------------

To reproduce:

$ emacs fr.po                or   $ emacs -nw fr.po
Leave the cursor at the beginning of the file.
M-x highlight-regexp
Regexp to highlight (enter this with Ctrl-Q Ctrl-J for each of the two
newlines):

^msgstr\(\[[0-9]\]\)?.*
\(".*
\)*

Highlight using face: hi-yellow

Then move around in the buffer and look which lines are highlighted.

In the first match already, only 5 out of 11 lines are highlighted. Then,
line 300 (in emacs 22) or line 335 (in emacs 21) are not highlighted either.


The attached screenshots were produced with emacs-22.2.1
(on i686-pc-linux-gnu) and with emacs-21.2.1 (on powerpc-apple-darwin7.9.0).

----------------------------------------------------------------------------

In GNU Emacs 22.2.1 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2008-05-01 on linuix
Windowing system distributor `The XFree86 Project, Inc', version 11.0.40300001
configured using `configure  '--prefix=/packages/gnu''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: POSIX
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: de_DE.UTF-8
  locale-coding-system: utf-8
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  tool-bar-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  unify-8859-on-encoding-mode: t
  utf-translate-cjk-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent input:
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <menu-bar> <help-menu> <send-emacs-bug-report>

Recent messages:
("emacs")
Loading cl-indent...done
Loading derived...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Loading emacsbug...
Loading regexp-opt...done
Loading emacsbug...done

PS: Where is the bug tracker? I don't see it at https://savannah.gnu.org/projects/emacs

[-- Attachment #2: emacs21-1.png --]
[-- Type: image/png, Size: 18408 bytes --]

[-- Attachment #3: emacs22-2.png --]
[-- Type: image/png, Size: 19671 bytes --]

[-- Attachment #4: emacs21-2.png --]
[-- Type: image/png, Size: 20154 bytes --]

[-- Attachment #5: emacs22-1.png --]
[-- Type: image/png, Size: 18243 bytes --]

[-- Attachment #6: fr.po.gz --]
[-- Type: application/x-gzip, Size: 44518 bytes --]

^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2008-05-12 17:04 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-06  4:20 regexp does not work as documented Chong Yidong
2008-05-06 11:35 ` Bruno Haible
2008-05-06 12:12   ` martin rudalics
2008-05-10 19:18     ` bug#192: " David Koppelman
2008-05-10 19:18     ` David Koppelman
2008-05-10 20:13       ` bug#192: " David Koppelman
2008-05-10 20:13       ` David Koppelman
2008-05-11  7:40         ` bug#192: " martin rudalics
2008-05-11  7:40         ` martin rudalics
2008-05-11 14:27           ` Chong Yidong
2008-05-11 15:36             ` David Koppelman
2008-05-11 18:44               ` Stefan Monnier
2008-05-11 19:09                 ` David Koppelman
2008-05-12  1:28                   ` bug#192: " Stefan Monnier
2008-05-12  1:28                   ` Stefan Monnier
2008-05-12 15:03                     ` bug#192: " David Koppelman
2008-05-12 15:03                     ` David Koppelman
2008-05-12 16:29                       ` bug#192: " Stefan Monnier
2008-05-12 16:29                       ` Stefan Monnier
2008-05-12 17:04                         ` bug#192: " David Koppelman
2008-05-12 17:04                         ` David Koppelman
2008-05-11 19:09                 ` bug#192: " David Koppelman
2008-05-11 18:44               ` Stefan Monnier
2008-05-11 15:36             ` David Koppelman
2008-05-11 18:44             ` Stefan Monnier
2008-05-11 20:03               ` Thomas Lord
2008-05-12  1:43                 ` Stefan Monnier
2008-05-12  3:30                   ` Thomas Lord
2008-05-12 13:43                     ` Stefan Monnier
2008-05-12 15:55                       ` Thomas Lord
2008-05-12 16:18                         ` bug#192: " tomas
2008-05-12 16:18                         ` tomas
2008-05-12 15:55                       ` bug#192: " Thomas Lord
2008-05-12 13:43                     ` Stefan Monnier
2008-05-12  3:30                   ` Thomas Lord
2008-05-12  1:43                 ` Stefan Monnier
2008-05-11 20:03               ` Thomas Lord
2008-05-11 18:44             ` Stefan Monnier
2008-05-11 14:27           ` Chong Yidong
2008-05-06 15:35   ` Stefan Monnier
2008-05-06 21:29     ` Bruno Haible
2008-05-10 20:04     ` bug#192: " Bruno Haible
2008-05-10 20:04     ` Bruno Haible
2008-05-06 15:00 ` David Koppelman
2008-05-06 21:35   ` Bruno Haible
2008-05-07  1:04     ` Stefan Monnier
2008-05-07  1:08     ` Auto-discovery of multi-line font-lock regexps Stefan Monnier
2008-05-07  3:46       ` Chong Yidong
2008-05-07  4:21         ` Stefan Monnier
  -- strict thread matches above, loose matches on Subject: below --
2008-05-06  1:30 regexp does not work as documented Bruno Haible
2008-05-06 14:15 ` Johan Bockgård

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.