From: Yuan Fu <casouri@gmail.com>
To: "Jostein Kjønigsen" <jostein@secure.kjonigsen.net>
Cc: jostein@kjonigsen.net, Theodor Thornhill <theo@thornhill.no>,
59897@debbugs.gnu.org
Subject: bug#59897: 29.0.60; csharp-ts-mode: variable-name fontified as method when invoking method with generic type-argument.
Date: Fri, 9 Dec 2022 13:05:04 -0800 [thread overview]
Message-ID: <3703C4B6-0BCF-4EFB-A996-F1B0D6896DD6@gmail.com> (raw)
In-Reply-To: <76edd79f-6da1-4c28-b20e-5eb4d9a819b2@app.fastmail.com>
Jostein Kjønigsen <jostein@secure.kjonigsen.net> writes:
> On 08.12.2022 11:12, Theodor Thornhill wrote:
>> Jostein Kjønigsen <jostein@secure.kjonigsen.net> writes:
>>
>>> When I use the new csharp-ts-mode, method fontification is usually accurate with only 1 exception which I have
>>> encountered so far:
>>>
>>> When calling methods on objects, and that method accepts a generic type-argument. You typically see this in
>>> Startup.cs-like files in ASP.Net Core projects:
>>>
>>> services.AddSomeExtensionWithoutTypeArguments();
>>> services.AddSomeExtensionWithTypeArguments<MyType>();
>>>
>>> In the above cases we see that fontification of "services" differs.
>>>
>>> For the first line, services is fontified using font-lock-variable-name-face (correct), but in the latter case services
>>> is fontified using font-lock-function-name-face (incorrect).
>>>
>>> In both cases I expected services to be fontified using font-lock-variable-name-face.
>>>
>> Can you test this patch, Jostein, and if you're happy, please install,
>> Yuan :-)
>
> I beat you by 3 minutes, but I'll be a gentleman and test none the less :D
>
> You test mine, and we can see which one we prefer?
>> BTW, I think the ruleset is getting pretty gnarly in csharp-mode, so
>> maybe we should consider slimming it down a little (without losing
>> granularity) for perf reasons down the line!
>>
>> Theo
>
> It's getting somewhat intricate, agreed. It's IMO not entirely obvious
> what the different rules are for or what cases they are meant to
> support.
We had a discussion on emacs-devel that aims to standardize and define
feature names, here is the list so far:
Basic tokens:
delimiter ,.; (delimit things)
operator == != || (produces a value)
bracket []{}()
misc-punctuation
constant true, false, null
number
keyword
comment (includes doc-comments)
string (includes chars and docstrings)
string-interpolation f"text {variable}"
escape-sequence "\n\t\\"
function every function identifier
variable every variable identifier
type every type identifier
property a.b <--- highlight b
key { a: b, c: d } <--- highlight a, c
error highlight parse error
Abstract features:
assignment: the LHS of an assignment (thing being assigned to), eg:
a = b <--- highlight a
a.b = c <--- highlight b
a[1] = d <--- highlight a
definition: the thing being defined, eg:
int a(int b) { <--- highlight a
return 0
}
int a; <-- highlight a
struct a { <--- highlight a
int b; <--- highlight b
}
>
> In that regard, I miss our old test-suite from github's csharp-mode.
> It was a nice safety-net when making changes like this.
A test suite is most welcome. I think we can even come up with a general
framework for testing fontification, indent, defun movement, imenu, etc.
To generate a test you would just need to open a file, verify everything
is expected, and run a command which records the current fontification
and indentation, etc, to a file. Then a test suite will just use that
file. I wonder if csharp-mode had something like this?
Yuan
next prev parent reply other threads:[~2022-12-09 21:05 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-08 9:29 bug#59897: 29.0.60; csharp-ts-mode: variable-name fontified as method when invoking method with generic type-argument Jostein Kjønigsen
[not found] ` <handler.59897.B.167049179324261.ack@debbugs.gnu.org>
2022-12-08 10:09 ` bug#59897: Acknowledgement (29.0.60; csharp-ts-mode: variable-name fontified as method when invoking method with generic type-argument.) Jostein Kjønigsen
2022-12-08 10:12 ` bug#59897: 29.0.60; csharp-ts-mode: variable-name fontified as method when invoking method with generic type-argument Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-08 10:52 ` Jostein Kjønigsen
2022-12-08 11:12 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-08 11:31 ` Jostein Kjønigsen
2022-12-09 20:57 ` Jostein Kjønigsen
2022-12-09 21:12 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-12 7:58 ` Jostein Kjønigsen
2022-12-12 22:19 ` Yuan Fu
2022-12-14 18:49 ` Jostein Kjønigsen
2022-12-14 19:43 ` Yuan Fu
2022-12-14 21:45 ` Jostein Kjønigsen
2022-12-14 22:34 ` Yuan Fu
2022-12-09 21:05 ` Yuan Fu [this message]
2022-12-09 21:11 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-09 21:07 ` Yuan Fu
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=3703C4B6-0BCF-4EFB-A996-F1B0D6896DD6@gmail.com \
--to=casouri@gmail.com \
--cc=59897@debbugs.gnu.org \
--cc=jostein@kjonigsen.net \
--cc=jostein@secure.kjonigsen.net \
--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).