help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Introducing face in comments for various modes


From: Christopher Dimech
Subject: Re: Introducing face in comments for various modes
Date: Tue, 13 Dec 2022 11:24:50 +0100

> Sent: Tuesday, December 13, 2022 at 10:05 PM
> From: "Thibaut Verron" <thibaut.verron@gmail.com>
> To: "Heime" <heimeborgia@protonmail.com>
> Cc: "Jean Louis" <bugs@gnu.support>, help-gnu-emacs@gnu.org
> Subject: Re: Introducing face in comments for various modes
>
> On 13/12/2022 10:46, Heime wrote:
> > ------- Original Message -------
> > On Tuesday, December 13th, 2022 at 9:35 AM, Thibaut Verron 
> > <thibaut.verron@gmail.com> wrote:
> >
> >
> >> On 13/12/2022 09:30, Heime wrote:
> >>
> >>> ------- Original Message -------
> >>> On Tuesday, December 13th, 2022 at 8:04 AM, Heime 
> >>> heimeborgia@protonmail.com wrote:
> >>>
> >>>> ------- Original Message -------
> >>>> On Tuesday, December 13th, 2022 at 7:52 AM, Jean Louis bugs@gnu.support 
> >>>> wrote:
> >>>>
> >>>>> Heime, I like the idea of highlighting comments, though I do it this
> >>>>> way to specify (syntax comment-start) as that works for multiple
> >>>>> modes.
> >>>>>
> >>>>> ; one
> >>>>> ;; two
> >>>>> ;;; three
> >>>>> ;;;; and more
> >>>>>
> >>>>> ;;; Highlighting comments
> >>>>>
> >>>>> (setq rcd-regexp-comment (rx line-start
> >>>>> (one-or-more (syntax comment-start))
> >>>>> (one-or-more space)
> >>>>> (group (one-or-more not-newline))
> >>>>> line-end))
> >>>>>
> >>>>> ;; (highlight-regexp regexp nil 1)
> >>>>> ;; (unhighlight-regexp regexp)
> >>>>>
> >>>>> Jean
> >>>>> I would like to introduce (syntax comment-start) in place
> >>>>> of ";;" in "^;;\s+\\[.+\\].*$".
> >>
> >> It's not something you can "introduce" in your regexp, it only makes
> >> sense within the context of a regexp built with rx:
> >> https://www.gnu.org/software/emacs/manual/html_node/elisp/Rx-Notation.html
> >>
> >> Rewriting your regexp as an rx regexp would not be too difficult if you
> >> want to go that route, Jean's example is a good template.
> >>
> >> Otherwise, as an approximation of that feature, you could built your
> >> regex string using the value of the variable comment-start ( ";" in
> >> emacs-lisp-mode) instead of hardcoding ;; .
> > How can one specify two comment characters next to each other?
> 
> Using the variable, the same way you would normally do for a regexp, by 
> putting \{2\} after the matched regexp.
> 
> E.g.
> 
> ELISP> (format "\\(%s\\)\\{2\\}" comment-start)
> "\\(;\\)\\{2\\}"
> 
> (don't trust me for the number of escape characters)
> 
> But I don't think it's really what you want: for example, in a mode 
> where comment-start is "# " (e.g. org or python), this will match "# # " 
> but not "##".

It is unfortunate that org and python demand a space after #
 
> Using the syntax table is better here, as the character # alone has the 
> syntax of a comment-start.
> 
> I had forgotten about the simplest option, that is the regexp equivalent 
> of the rx syntax: \s< in a regexp will match exactly a character with 
> the syntax of a comment-start.
> 
> So: "\s<\{2\}" should be exactly what you want (at least in languages 
> where comments start with a single character).
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]