From: Randy Taylor <dev@rjt.dev>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: casouri@gmail.com, 61655@debbugs.gnu.org,
Theodor Thornhill <theo@thornhill.no>,
Eli Zaretskii <eliz@gnu.org>,
jacob.fai@gmail.com
Subject: bug#61655: [Tree sitter] [Feature Request] font-lock function calls, definitions, separately
Date: Sat, 25 Feb 2023 03:59:46 +0000 [thread overview]
Message-ID: <PRxAJSYBiWcFRlw0KQ_PSNXxsx3bNKcMM7osaWm0jvabUvmYYx15Le4MlEpGRpmtofLb2c_jBR-KzaSp6c1WsDO9b_et9ucFRGzZ0tMGUrY=@rjt.dev> (raw)
In-Reply-To: <b034acd2-2af8-0157-8749-de8dff8d7355@yandex.ru>
On Friday, February 24th, 2023 at 21:28, Dmitry Gutov <dgutov@yandex.ru> wrote:
> Hi Randy,
>
> Thanks for the reply.
>
> On 25/02/2023 03:06, Randy Taylor wrote:
>
> > > Here's the patch which adds the faces and their uses in all ts modes.
> > >
> > > Comments welcome from all the interested parties. The patch is mostly
> > > straightforward, but there are some changes added as well, where it was
> > > needed to differentiate between declarations and references.
> > >
> > > The important question here, I think, is whether we want to split
> > > font-lock-property-faces in two, like I did here.
> > >
> > > By analogy with the other faces, I think it's going to be useful to
> > > differentiate between property definitions and property references. Not
> > > many of the languages modes used font-lock-property-face for
> > > property/attribute definitions, but some did.
> >
> > I'm not sure about the naming of font-lock-variable-ref-face. It's confusing for languages that support actual references like C++ and Rust.
>
>
> But even there "variable reference" is probably a suitable term for any
> occurrence of a variable other than its definition. While the references
> you're talking about are "value references".
It is a suitable term, but there is a confusing overlap, at least to me. In C++ parlance, for example, they are referred to as reference variables. I wasn't really getting down to the semantics of it, just when I see something like:
void quack(int& thing)
^^^^^
obj_t& thing2 = otherthing;
^^^^^^
Those are the things I would expect font-lock-variable-ref-face to highlight if I was just going off of the name, and I would expect many others to think the same.
>
> > Maybe the opposite direction is better: font-lock-variable-def-face (or something similar) for definitions (or whatnot), and font-lock-variable-name-face to refer to uses (same goes for property). Or font-lock-variable-use-face. I don't know, naming is hard :).
>
>
> I, uh, pushed the change before I noticed your email. ^^;
>
> But perhaps we could refine, if there is enough support.
>
> Indeed, I was slightly uneasy about the -ref- names, if only because
> they might seem a little cryptic. Using the name -def-face is something
> I thought about too, but it sounded a bit like the name of a macro.
>
> A bigger problem, though, is that existing themes customize
> font-lock-variable-name-face. So we'd have to create inheritance the
> other way around (for the themes to continue working unchanged). Or we'd
> have to create face alias and use a yet different name for "variable
> references" (or "uses", or whatever we'd call them).
>
> Inheritance "the other way around" would break the usage scenario 1
> below for users of existing themes. Or at least make it more difficult.
I don't have any better ideas than font-lock-{property,variable}-use-face, so I guess we can see if anyone else has any opinions on the matter.
>
> > Personally, I don't really see the value in differentiating these for variables. I can understand it a little more for properties. But I guess it doesn't hurt to add if folks want it.
>
>
> I see two potential uses:
>
> 1. Customize treesit-font-lock-level to 4 but
> font-lock-variable-ref-face to copy 'default' (or close to it), to skip
> variable reference highlighting or make it less noticeable.
Wouldn't they just remove the variable feature if they want that?
>
> 2. Pattern matching or comparably complex syntax which at a first glance
> may look like variable reference, but actually creates new bindings (or
> vice versa, creates new binding when one wanted to refer to an existing
> value).
>
> Emphasizing the difference can help people, beginners especially [in a
> particular language].
>
No doubt there are uses, I just don't really see them actually getting much use in practice. But maybe I'm wrong :).
next prev parent reply other threads:[~2023-02-25 3:59 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-20 15:54 bug#61655: [Tree sitter] [Feature Request] font-lock function calls, definitions, separately Jacob Faibussowitsch
2023-02-20 17:03 ` Eli Zaretskii
2023-02-20 20:24 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-02-20 20:45 ` Jacob Faibussowitsch
2023-02-21 8:28 ` Yuan Fu
2023-02-21 9:55 ` Dmitry Gutov
2023-02-21 15:31 ` Jacob Faibussowitsch
2023-02-21 23:24 ` Dmitry Gutov
2023-02-22 18:07 ` Jacob Faibussowitsch
2023-02-22 21:39 ` Dmitry Gutov
2023-02-22 20:45 ` Yuan Fu
2023-02-22 21:38 ` Dmitry Gutov
2023-02-23 18:15 ` Eli Zaretskii
2023-02-24 2:31 ` Dmitry Gutov
2023-02-24 7:56 ` Eli Zaretskii
2023-02-24 11:31 ` Dmitry Gutov
2023-02-24 11:44 ` Eli Zaretskii
2023-02-24 14:24 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-02-25 1:06 ` Randy Taylor
2023-02-25 2:28 ` Dmitry Gutov
2023-02-25 3:59 ` Randy Taylor [this message]
2023-02-25 13:05 ` Dmitry Gutov
2023-02-28 2:09 ` Dmitry Gutov
2023-02-25 8:05 ` Eli Zaretskii
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='PRxAJSYBiWcFRlw0KQ_PSNXxsx3bNKcMM7osaWm0jvabUvmYYx15Le4MlEpGRpmtofLb2c_jBR-KzaSp6c1WsDO9b_et9ucFRGzZ0tMGUrY=@rjt.dev' \
--to=dev@rjt.dev \
--cc=61655@debbugs.gnu.org \
--cc=casouri@gmail.com \
--cc=dgutov@yandex.ru \
--cc=eliz@gnu.org \
--cc=jacob.fai@gmail.com \
--cc=theo@thornhill.no \
/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 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).