From: "Jostein Kjønigsen" <jostein@secure.kjonigsen.net>
To: Yuan Fu <casouri@gmail.com>, Theodor Thornhill <theo@thornhill.no>
Cc: 60376@debbugs.gnu.org, Eli Zaretskii <eliz@gnu.org>
Subject: bug#60376: 29.0.60; Standardize csharp-ts-mode's font-lock features
Date: Sun, 1 Jan 2023 19:14:02 +0100 [thread overview]
Message-ID: <32bfc790-73fa-27b1-5fd8-50181e66015d@secure.kjonigsen.net> (raw)
In-Reply-To: <8538939b-5639-b8c0-82cc-113930a95ab1@secure.kjonigsen.net>
[-- Attachment #1.1: Type: text/plain, Size: 1435 bytes --]
On 01.01.2023 18:24, Jostein Kjønigsen wrote:
> Disregard previous patch.
>
> Consider instead please the patch attached to this email.
>
> It does 3 things all in one:
>
> * moves function-call fontification to level 4 only (in its own feature)
>
> * cleans up long-standing issues with "messy" rules for
> function-invocations. Removes the needs for "overrides".
>
> * also fixes issue with fonctification of self/this-method invocations.
>
> Theo: Can you try this patch and see what you think?
>
> --
>
> Jostein
Disregard again (and sorry for the noise!)
I've now gone through several files, done quite a bit of testing myself,
and found another few issues needing to be solved:
* Inconsistent variable-name fontification (sometimes when used,
sometimes when declared, sometimes not when used, sometimes not when
declared)
* Variable declaration with explicit generic types
* new() expression fontification for generic types.
* Bleeding type-face into brackets for generic return-types in method
definitions
* Types when casting through as-expressions are not fontified at all.
* And more?
I've solved those and combined all this into this latest patch, which
also moves function-invocation into its own (level 4) feature.
This patch should be well beyond the "85%" which Eli has requested for
Emacs-29 :)
*Theo:* Could you give this a test-spin, and I promise to call it a day? :)
--
Jostein
[-- Attachment #1.2: Type: text/html, Size: 2209 bytes --]
[-- Attachment #2: 0001-lisp-progmodes-csharp-mode.el-adjust-function-call-f.patch --]
[-- Type: text/x-patch, Size: 6220 bytes --]
From 333602ff341b8a8add15ff96054cfc5cea0116cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jostein=20Kj=C3=B8nigsen?= <jostein@kjonigsen.net>
Date: Sun, 1 Jan 2023 17:27:06 +0100
Subject: [PATCH] lisp/progmodes/csharp-mode.el: adjust function-call
fontification
- ensure method-invocations are highlighted only on level 4
- ensure consistent fontification of variable declarations
(don't highlight usage of all variables)
- fix issues with highlighting types in new() expressions.
- fix issues with generic types in variable-declarations not using "var".
- use fewer, more general queries for function-invocations. simplify code.
---
lisp/progmodes/csharp-mode.el | 64 +++++++++++++++++++----------------
1 file changed, 35 insertions(+), 29 deletions(-)
diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el
index da64daf9848..473e8f49fd3 100644
--- a/lisp/progmodes/csharp-mode.el
+++ b/lisp/progmodes/csharp-mode.el
@@ -696,7 +696,7 @@ csharp-ts-mode--font-lock-settings
:feature 'expression
'((conditional_expression (identifier) @font-lock-variable-name-face)
(postfix_unary_expression (identifier)* @font-lock-variable-name-face)
- (assignment_expression (identifier) @font-lock-variable-name-face))
+ (initializer_expression (assignment_expression left: (identifier) @font-lock-variable-name-face)))
:language 'c-sharp
:feature 'bracket
@@ -764,8 +764,12 @@ csharp-ts-mode--font-lock-settings
(identifier) @font-lock-type-face)
(type_argument_list
(identifier) @font-lock-type-face)
- (generic_name
- (identifier) @font-lock-type-face)
+ (type_argument_list
+ (generic_name
+ (identifier) @font-lock-type-face))
+ (base_list
+ (generic_name
+ (identifier) @font-lock-type-face))
(array_type
(identifier) @font-lock-type-face)
(cast_expression (identifier) @font-lock-type-face)
@@ -773,7 +777,12 @@ csharp-ts-mode--font-lock-settings
(type_parameter_constraints_clause
target: (identifier) @font-lock-type-face)
(type_of_expression (identifier) @font-lock-type-face)
- (object_creation_expression (identifier) @font-lock-type-face))
+ (object_creation_expression
+ type: (identifier) @font-lock-type-face)
+ (object_creation_expression
+ type: (generic_name (identifier) @font-lock-type-face))
+ (as_expression right: (identifier) @font-lock-type-face)
+ (as_expression right: (generic_name (identifier) @font-lock-type-face)))
:language 'c-sharp
:feature 'definition
@@ -793,7 +802,6 @@ csharp-ts-mode--font-lock-settings
(record_declaration (identifier) @font-lock-type-face)
(namespace_declaration (identifier) @font-lock-type-face)
(base_list (identifier) @font-lock-type-face)
- (property_declaration (generic_name))
(property_declaration
type: (nullable_type) @font-lock-type-face
name: (identifier) @font-lock-variable-name-face)
@@ -807,29 +815,10 @@ csharp-ts-mode--font-lock-settings
(constructor_declaration name: (_) @font-lock-type-face)
- (method_declaration type: (_) @font-lock-type-face)
+ (method_declaration type: [(identifier) (void_keyword)] @font-lock-type-face)
+ (method_declaration type: (generic_name (identifier) @font-lock-type-face))
(method_declaration name: (_) @font-lock-function-name-face)
- (invocation_expression
- (member_access_expression
- (generic_name (identifier) @font-lock-function-name-face)))
- (invocation_expression
- (member_access_expression
- ((identifier) @font-lock-variable-name-face
- (identifier) @font-lock-function-name-face)))
- (invocation_expression
- (identifier) @font-lock-function-name-face)
- (invocation_expression
- (member_access_expression
- expression: (identifier) @font-lock-variable-name-face))
- (invocation_expression
- function: [(generic_name (identifier)) @font-lock-function-name-face
- (generic_name (type_argument_list
- ["<"] @font-lock-bracket-face
- (identifier) @font-lock-type-face
- [">"] @font-lock-bracket-face)
- )])
-
(catch_declaration
((identifier) @font-lock-type-face))
(catch_declaration
@@ -837,13 +826,30 @@ csharp-ts-mode--font-lock-settings
(identifier) @font-lock-variable-name-face))
(variable_declaration (identifier) @font-lock-type-face)
+ (variable_declaration (generic_name (identifier) @font-lock-type-face))
(variable_declarator (identifier) @font-lock-variable-name-face)
(parameter type: (identifier) @font-lock-type-face)
+ (parameter type: (generic_name (identifier) @font-lock-type-face))
(parameter name: (identifier) @font-lock-variable-name-face)
- (binary_expression (identifier) @font-lock-variable-name-face)
- (argument (identifier) @font-lock-variable-name-face))
+ (lambda_expression (identifier) @font-lock-variable-name-face)
+
+ (declaration_expression type: (identifier) @font-lock-type-face)
+ (declaration_expression name: (identifier) @font-lock-variable-name-face))
+
+ :language 'c-sharp
+ :feature 'function
+ '((invocation_expression
+ function: (member_access_expression
+ name: (identifier) @font-lock-function-name-face))
+ (invocation_expression
+ function: (identifier) @font-lock-function-name-face)
+ (invocation_expression
+ function: (member_access_expression
+ name: (generic_name (identifier) @font-lock-function-name-face)))
+ (invocation_expression
+ function: (generic_name (identifier) @font-lock-function-name-face)))
:language 'c-sharp
:feature 'escape-sequence
@@ -916,7 +922,7 @@ csharp-ts-mode
'(( comment definition)
( keyword string type)
( constant escape-sequence expression literal property)
- ( bracket delimiter error)))
+ ( function bracket delimiter error)))
;; Imenu.
(setq-local treesit-simple-imenu-settings
--
2.37.2
next prev parent reply other threads:[~2023-01-01 18:14 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-28 8:25 bug#60376: 29.0.60; Standardize csharp-ts-mode's font-lock features Yuan Fu
2022-12-29 19:55 ` Yuan Fu
2022-12-29 21:03 ` Jostein Kjønigsen
2022-12-30 8:21 ` Eli Zaretskii
2022-12-29 22:16 ` Yuan Fu
2022-12-30 8:19 ` Eli Zaretskii
2022-12-30 13:35 ` Jostein Kjønigsen
2022-12-30 14:15 ` Eli Zaretskii
2022-12-30 14:39 ` Jostein Kjønigsen
2022-12-30 15:39 ` Eli Zaretskii
2022-12-30 17:35 ` Jostein Kjønigsen
2022-12-30 19:30 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-31 9:53 ` Jostein Kjønigsen
2022-12-31 10:32 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-30 14:40 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-30 15:04 ` Jostein Kjønigsen
2022-12-31 22:21 ` Yuan Fu
2023-01-01 16:29 ` Jostein Kjønigsen
2023-01-01 17:24 ` Jostein Kjønigsen
2023-01-01 18:14 ` Jostein Kjønigsen [this message]
2023-01-01 18:41 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-02 0:12 ` Yuan Fu
2023-01-02 9:59 ` Jostein Kjønigsen
2023-01-03 5:43 ` Jostein Kjønigsen
2023-01-05 21:27 ` Jostein Kjønigsen
2023-01-03 6:51 ` Yuan Fu
2023-01-03 7:20 ` Theodor Thornhill via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-06 5:55 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=32bfc790-73fa-27b1-5fd8-50181e66015d@secure.kjonigsen.net \
--to=jostein@secure.kjonigsen.net \
--cc=60376@debbugs.gnu.org \
--cc=casouri@gmail.com \
--cc=eliz@gnu.org \
--cc=jostein@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 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.