Subject: Re: bug#64275: 30.0.50; [PATCH] Improve sigil font-lock match for elixir-ts-mode

From: Wilhelm Kirschbaum <[email-masked]>
Date: Sat, 21 Oct 2023 09:39:38 +0200

> >>>
> >>> I'm not sure what you meant by the last sentence, sorry. What
> >>> do
> >>> you
> >>> think about the below?
> >>>
> >>>   (sigil (sigil_name) @elixir-ts-font-sigil-name-face)
> >>>   @font-lock-string-face)
> >>
> >> Sorry for the late reply.  I believe the following patch is
> >> more
> >> appropriate as it will apply the sigil font to the entire
> >> sigil, but
> >> also respect the regex face.  We can add string specific
> >> matches
> >> later,
> >> but happy just to simplify what we have and fix apply
> >> appropriate
> >> font
> >> to previously unmatched sigils.
> >>
> >> [2. text/x-patch;
> >> 0001-Simplify-sigil-font-lock-match-for-elixir-ts-mode.patch]...
> >
> > Actually, the above patch breaks the embedded HEEx sigils'
> > font. We
> > have to exclude it when doing a general match.  Attached works
> > with ~H
> > sigils as well.  Please ignore the previous patch and install
> > this
> > one.
> >
> > [2. text/x-patch;
> > 0001-Simplify-sigil-font-lock-match-for-elixir-ts-mode(1).patch]...
>
>
> Sorry :(. I am finding more edge cases.  Maybe let me test it this
> properly this week before we make any changes.
>

I tested this patch for a while now and it looks like the best approach
for handling regex sigils, but with an appropriate fallback.

If this can be installed, it will be appreciated.
From ae432650261e60e2b045c46add2a8827e9965ce4 Mon Sep 17 00:00:00 2001
From: Wilhelm H Kirschbaum <[email-masked]>
Date: Sat, 7 Oct 2023 10:37:49 +0200
Subject: [PATCH] Simplify sigil font-lock match for elixir-ts-mode

There is no need to match on specific sigils, except for regex.

* lisp/progmodes/elixir-ts-mode.el
(elixir-ts--font-lock-settings): Update sigil match.
---
 lisp/progmodes/elixir-ts-mode.el | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lisp/progmodes/elixir-ts-mode.el b/lisp/progmodes/elixir-ts-mode.el
index 2ddce3de105..05edb4159a1 100644
--- a/lisp/progmodes/elixir-ts-mode.el
+++ b/lisp/progmodes/elixir-ts-mode.el
@@ -469,12 +469,11 @@ elixir-ts--font-lock-settings
    :override t
    `((sigil
       (sigil_name) @elixir-ts-font-sigil-name-face
-      (:match "^[sSwWpPUD]$" @elixir-ts-font-sigil-name-face))
+      (:match "^[^HF]$" @elixir-ts-font-sigil-name-face))
      @font-lock-string-face
      (sigil
-      "~" @font-lock-string-face
-      (sigil_name) @elixir-ts-font-sigil-name-face
-      (:match "^[rR]$" @elixir-ts-font-sigil-name-face))
+      (sigil_name) @font-lock-regexp-face
+      (:match "^[rR]$" @font-lock-regexp-face))
      @font-lock-regexp-face
      (sigil
       "~" @font-lock-string-face
-- 
2.42.0