From: Dima Kogan <dima@secretsauce.net>
To: emacs-devel@gnu.org
Subject: Embedded modifiers in the regex engine
Date: Wed, 24 Feb 2016 17:32:01 -0800 [thread overview]
Message-ID: <87ziupinhq.fsf@secretsauce.net> (raw)
Hi.
I've been thinking of ways to make some fancier aspects of isearch and
hi-lock work better, specifically, the way we handle the different
modes: case-fold, char-fold, lax-whitespace, etc.
The relevant bugs I filed recently:
http://debbugs.gnu.org/22541
http://debbugs.gnu.org/22520
http://debbugs.gnu.org/22479
In short, different parts of emacs (isearch, isearch history, hi-lock,
etc) treat these modes inconsistently, which results in unexpected
behavior.
The best solution I can think of to clean this up is also the most
intrusive: adding support for pcre-style embedded modifiers to
activate/deactivate the modes.
So for instance "\\(?i\\)asdf" would be interpreted as a case-folding
regex regardless of the value of case-fold-search. I think this would be
a great thing to have in general, but for the specific issues in the
bugs above, it'd make things simpler and more correct.
As an example, currently hi-lock generates a complicated-looking regex
to emulate char-folding and case-folding. If we supported the modifiers,
this change would simply be a prepend of "\\(?i\\)" or whatever other
modes we want. This is simple and expected to be bug-free on the hi-lock
level. Bugs such as hi-lock not supporting char-fold and case-fold at
the same time would not happen.
Clearly this is a big change to a core component, so I want to talk
about it first. I looked at our regex implementation, and it looks
possible to add this. But I've seen talk of merging our regex
implementation with the glibc one, so the merge should clearly happen
first.
Also I don't want to touch this without a test suite for our regex
engine. So that would need to happen beforehand as well.
Again, I think this feature would be useful even beyond the context of
these bugs. Thanks for the input.
dima
next reply other threads:[~2016-02-25 1:32 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-25 1:32 Dima Kogan [this message]
2016-02-25 6:11 ` Embedded modifiers in the regex engine John Wiegley
2016-02-25 21:05 ` Stefan Monnier
2016-02-25 16:15 ` Eli Zaretskii
2016-02-26 7:19 ` Dima Kogan
2016-02-26 9:08 ` Eli Zaretskii
2016-02-28 1:50 ` Dima Kogan
2016-02-28 16:00 ` Eli Zaretskii
2016-02-29 13:30 ` Richard Stallman
2016-03-01 0:49 ` Aurélien Aptel
2016-03-01 16:55 ` Richard Stallman
2016-03-09 0:34 ` Dima Kogan
2016-03-28 0:23 ` Dima Kogan
2016-03-28 15:28 ` Eli Zaretskii
2016-03-28 18:05 ` Dima Kogan
2016-03-28 18:24 ` Eli Zaretskii
2016-03-29 21:23 ` Dima Kogan
2016-03-31 16:28 ` Eli Zaretskii
2016-04-23 4:17 ` Dima Kogan
2016-04-23 7:48 ` Eli Zaretskii
2016-04-24 7:34 ` Dima Kogan
2016-03-28 16:09 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ziupinhq.fsf@secretsauce.net \
--to=dima@secretsauce.net \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.