From: Stefan Monnier <monnier@iro.umontreal.ca>
To: help-gnu-emacs@gnu.org
Subject: Re: Font-lock of comments using comment tokens, does it work?
Date: Thu, 04 Jun 2015 18:11:05 -0400 [thread overview]
Message-ID: <jwvwpzjw33q.fsf-monnier+gnu.emacs.help@gnu.org> (raw)
In-Reply-To: mailman.4276.1433416248.904.help-gnu-emacs@gnu.org
>> Also, as Emacs maintainer I have enough experience/knowledge to fix
>> most users's problems, but if I do that I'll just end up with more
>> users with new problems to fix. So instead I'm better off trying to
>> train them so they can fix their problems themselves and even help me
>> improve Emacs.
>>> I've tried a dozen different permutations of the regexp and none of
>>> them produces the desired result.
>> What have you tried? What/where were the undesired results?
> ("[a-zA-Z0-9_]\\(! \\) " (1 "_")))
IIUC you want all "!" that are surrounded by spaces to be treated as
comment starters. And you've marked "!" as a comment starter by default
(i.e. in the mode's syntax-table), so you need to mark all "!" which are
not surrounded by spaces as being not-comment-starters.
The above regexp does part of the work, but only does it for those "!"
which are preceded by a latin letter or a number and are followed by
a space. E.g. it will fail on those "!" which don't have a space afterwards.
> ("\\(!\\)[a-zA-Z0-9_]" (1 "_")))
This one will fail on those "!" which are followed with a letter that's
neither a space nor a latin letter nor a number. And it will fail on
those "!" which are followed by a space but are not preceded by a space.
To me, the translation into regexp of «all "!" which are not surrounded
by spaces» would look like "[^ ]![^ ]". Have you tried something like
that? Of course, it'll still probably require more tweaking because
I suspect that «all "!" which are not surrounded by spaces» is not
actually a precise description of all cases that matter. E.g. I suspect
that if the "!" is preceded by a newline (i.e. is at the beginning of
a line) it should still be considered a comment starter. Same thing if
it's preceded by a TAB. Also it's likely that " !! " would also start
a comment, so "followed by a space" is too strict as well. But then,
I don't know if " !!a" would be treated as starting a comment.
IOW, maybe you'll want something like "[^ \n\t]\\(!+\\)[^
\t\n]" instead.
One more thing: if "! as a normal char" is more common than "! as
a comment starter", it might be worthwhile to take the opposite approach
and define the syntax of "!" in the mode's syntax-table as being "_" and
then in syntax-propertize-function mark those "!" which start a comment
as having syntax "<".
Yet another thing: if you have trouble catching all cases with a single
regexp, you can use more rules, as in
(syntax-propertize-rules
("[a-zA-Z0-9_]\\(! \\) " (1 "_"))
("\\(!\\)[a-zA-Z0-9_]" (1 "_")))
Stefan
next prev parent reply other threads:[~2015-06-04 22:11 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.4238.1433357678.904.help-gnu-emacs@gnu.org>
2015-06-03 19:11 ` Font-lock of comments using comment tokens, does it work? Stefan Monnier
2015-06-03 23:37 ` Björn Lindqvist
[not found] ` <mailman.4244.1433374628.904.help-gnu-emacs@gnu.org>
2015-06-04 3:42 ` Stefan Monnier
2015-06-04 11:10 ` Björn Lindqvist
[not found] ` <mailman.4276.1433416248.904.help-gnu-emacs@gnu.org>
2015-06-04 22:11 ` Stefan Monnier [this message]
2015-06-05 3:29 ` Björn Lindqvist
2015-06-05 6:53 ` tomas
2015-06-05 19:37 ` Björn Lindqvist
2015-06-07 3:58 ` Björn Lindqvist
2015-06-07 11:34 ` tomas
2015-06-03 16:46 Björn Lindqvist
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=jwvwpzjw33q.fsf-monnier+gnu.emacs.help@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=help-gnu-emacs@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.