unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* regexp-quote missing escapes in grouping constructs - Bug?
@ 2008-06-12 23:39 St/n_P/rm/n
  2008-06-13  6:17 ` Miles Bader
  2008-06-13  6:20 ` Herbert Euler
  0 siblings, 2 replies; 6+ messages in thread
From: St/n_P/rm/n @ 2008-06-12 23:39 UTC (permalink / raw)
  To: emacs-devel

(regexp-quote "[0-9]\{2,4\}\(-\|/\)[0-9]?+\(-\|/\)[0-9]\{2,4\}")

---> "\\[0-9]{2,4}(-|/)\\[0-9]\\?\\+(-|/)\\[0-9]{2,4}"

Am I misunderstanding something?
Shouldn't passing that string to regexp-quote give back something more
like this:

---> "[0-9]\\{2,4\\}\\(-\\|/\\)[0-9]?+(-\\|/)[0-9]\\{2,4\\}"

or *flinches at the thought*

---> "[0-9]\\\\{2,4\\\\}\\\\(-\\\\|/\\\\)[0-9]?+(-\\\\|/)[0-9]\\\\{2,4\\\\}"

-
Its possible that I am misunderstanding the function, and  I'd rather
not file this as a bug report b/c I am using a Lennart's recent W32
patched...

GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600)
of 2008-05-12 on LENNART-69DE564 (patched)


However, currently building a derived mode and the regexp-opt and
-quote are kinda required, esp. as there doesn't seem to be a clean
way to  avoid passing everything around through multiple instances of
defconst defvar defcustom etc. just to "cache" keyword regexes for
font-lock

---
I find the following two most relevant to the matter at hand.

case a)
We get the requisite lisp reader 4x \\\\ for the group construct , but
the function not only misses the interior alternative escape but omits
it e.g.

(regexp-quote "\\(123\|567\\)")
---> "\\\\(123|567\\\\)"

case b)
In contrast, when we give him enough the double escape "\\" inside the
group he DOES catch the the escape and gives us  4x the \

(regexp-quote "\\(123\\|567\\)")
--->  "\\\\(123\\\\|567\\\\)"

---
This doesn't seem like consistent behavior esp. as regexp-quote is
feeding regexp-opt elsewhere.
---

These others examples do not strike me as edge cases when
'manually-optimizing' a regex for font-locks:

(regexp-quote "\(123\|567\)")
--->  "(123|567)"

(regexp-quote `(,"\(123\|567\)")
--->  ("(123|567)")

(regexp-quote '("\(123|567\)")
--->  ("(123|567)")

(regexp-quote "(123|567)")
---> "(123|567)"

(regexp-quote '"(123|567)")
---> "(123|567)"

---
again, maybe I am missing something but my head hurts... despite
having really come to appreciate emacs regexps :)




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

end of thread, other threads:[~2008-06-14  4:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-12 23:39 regexp-quote missing escapes in grouping constructs - Bug? St/n_P/rm/n
2008-06-13  6:17 ` Miles Bader
2008-06-13 17:36   ` MON KEY
2008-06-13 22:21     ` Stefan Monnier
2008-06-14  4:16     ` tomas
2008-06-13  6:20 ` Herbert Euler

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).