From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jostein =?UTF-8?Q?Kj=C3=B8nigsen?= Newsgroups: gmane.emacs.bugs Subject: bug#59909: 29.0.60; csharp-ts-mode does not fontify escape sequences nor highlight syntax errors Date: Thu, 8 Dec 2022 20:40:39 +0100 Message-ID: <45eb0099-712f-5eb3-0f98-235038863bf7@secure.kjonigsen.net> Reply-To: jostein@kjonigsen.net Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------36DavsYjBeV9DRbKmcF4SF0t" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10857"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 To: 59909@debbugs.gnu.org, casouri@gmail.com, theo@thornhill.no Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Dec 08 20:41:26 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p3Mlo-0002Ye-SF for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 08 Dec 2022 20:41:25 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p3MlT-0006Uk-SI; Thu, 08 Dec 2022 14:41:03 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3MlS-0006UF-HB for bug-gnu-emacs@gnu.org; Thu, 08 Dec 2022 14:41:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p3MlS-0003NG-92 for bug-gnu-emacs@gnu.org; Thu, 08 Dec 2022 14:41:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p3MlR-0002sg-MU for bug-gnu-emacs@gnu.org; Thu, 08 Dec 2022 14:41:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jostein =?UTF-8?Q?Kj=C3=B8nigsen?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Dec 2022 19:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 59909 X-GNU-PR-Package: emacs X-Debbugs-Original-To: "bug-gnu-emacs@gnu.org" , Yuan Fu , Theodor Thornhill Original-Received: via spool by submit@debbugs.gnu.org id=B.167052845311059 (code B ref -1); Thu, 08 Dec 2022 19:41:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 8 Dec 2022 19:40:53 +0000 Original-Received: from localhost ([127.0.0.1]:58717 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3MlI-0002sJ-16 for submit@debbugs.gnu.org; Thu, 08 Dec 2022 14:40:53 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:50564) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3MlF-0002sD-HU for submit@debbugs.gnu.org; Thu, 08 Dec 2022 14:40:51 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3MlF-0006Pg-5V for bug-gnu-emacs@gnu.org; Thu, 08 Dec 2022 14:40:49 -0500 Original-Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3MlB-0003Lt-0A for bug-gnu-emacs@gnu.org; Thu, 08 Dec 2022 14:40:48 -0500 Original-Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 95DFF3200935; Thu, 8 Dec 2022 14:40:42 -0500 (EST) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Thu, 08 Dec 2022 14:40:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= secure.kjonigsen.net; h=cc:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:reply-to:sender :subject:subject:to:to; s=fm1; t=1670528442; x=1670614842; bh=Jm /BGjn9+k0kpR2fy2eAFT71drmC+a4B2asa9tHnynQ=; b=hO/Awgl1Lr5JSq+vX/ 33RvmPqVuAKk/UnjzB+QDLrqMsL+4tVlQTwcsC7ZTXkIwUOaLcR2K3iQiVJ3ORNy i1KjxvnyijoWgvt8ADXSo2rki/g7qkEjEfYz/wkk1tguqVuon9I+B/42U8LeYglv lGjHvTxV/JqVvlr0480ABq0nkrPjlpaUmeMplwXzE6WiB7UOHcp3NoI601mkrBlh 0Ro81q7qazqBX7p6cDP+cFtQA6hLsZKqS+N6djSJHoF5I1r9ZWZdYlp+BnGfkEXy sljhUn/hsICZCY8s/4x7BgPOUsNfG5lB7/g11jLA/LdIMKot6LpH0RN4l34bvqRT CsNg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1670528442; x=1670614842; bh=Jm/BGjn9+k0kpR2fy2eAFT71drmC+a4B2as a9tHnynQ=; b=mMpZ/ua2LnbskU0MQsd+f6fJxtPqPFnvZ1ZkztCR6S96btd0rEa F/7zQqOPNfY9kedsodxTKT2P98fyuhzTdOP3VOlyBDv936uArhub8JXW+SE/N4sJ IqTwasc/cnN+2Lh6ddm/qiBWqSEde6UdqOFhbepJ5QaO1vEqH4LpKNoY7Q28HlqT rdfBzb+wjzblgOLtHG8arYqfJiBKbBKpH9Sb5d5RPWP7BQdw3svARliQNFJwSooj 2bp1r/+c92+AwXf7gEULZvfMR/gBgQgr0rD/zrvC5LFPj6jHtddnIUsHvni2fF5J 34AQhPiG9AdjVrtcUz0jIh/hPqKN41wT4+A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvddtgddufedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfghrvffhufesmhdtreertdefjeenucfhrhhomheplfhoshhtvghi nhcumfhjpphnihhgshgvnhcuoehjohhsthgvihhnsehsvggtuhhrvgdrkhhjohhnihhgsh gvnhdrnhgvtheqnecuggftrfgrthhtvghrnhephedtffelgfegtdeggfduvdehveegudej veevteetvedttedtfeehtdfhtdduvdevnecuffhomhgrihhnpehkjhhnihhgshgvnhdrnh honecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepjhho shhtvghinhesshgvtghurhgvrdhkjhhonhhighhsvghnrdhnvght X-ME-Proxy: Feedback-ID: ib2f84088:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 8 Dec 2022 14:40:41 -0500 (EST) Content-Language: nb-NO Received-SPF: pass client-ip=64.147.123.21; envelope-from=jostein@secure.kjonigsen.net; helo=wout5-smtp.messagingengine.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:250332 Archived-At: This is a multi-part message in MIME format. --------------36DavsYjBeV9DRbKmcF4SF0t Content-Type: multipart/alternative; boundary="------------0xBXPwDtzKvx9EfxN6onJiNF" --------------0xBXPwDtzKvx9EfxN6onJiNF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Consider the following C# code: public class Test {     public const string Foo = "test \t escape";     fdsfd } When activating csharp-ts-mode, the escape sequence on line 3 is not fontified, and the syntax error on line 4 is not highlighted. json-ts-mode does this, which is cool and I think csharp-ts-mode should have it too. Attached is a patch which makes csharp-ts-mode support these fontification rules. -- Jostein In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version  3.24.34, cairo version 1.16.0) of 2022-12-08 built on ThinkPad-T14s Repository revision: de5f5021bea73b759e76816f5a6dfb41d6050ffa Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12201003 System Description: Ubuntu 22.10 Configured using:  'configure --with-json --with-tree-sitter' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings:   value of $LC_MONETARY: nb_NO.UTF-8   value of $LC_NUMERIC: nb_NO.UTF-8   value of $LC_TIME: nb_NO.UTF-8   value of $LANG: en_US.UTF-8   locale-coding-system: utf-8-unix Major mode: C# Minor modes in effect:   global-git-commit-mode: t   magit-auto-revert-mode: t   lsp-diagnostics-mode: t   lsp-headerline-breadcrumb-mode: t   lsp-modeline-workspace-status-mode: t   lsp-modeline-diagnostics-mode: t   lsp-modeline-code-actions-mode: t   electric-pair-mode: t   lsp-completion-mode: t   editorconfig-mode: t   flycheck-mode: t   which-function-mode: t   nlinum-mode: t   company-mode: t   global-ede-mode: t   dap-tooltip-mode: t   dap-ui-many-windows-mode: t   dap-ui-controls-mode: t   dap-ui-mode: t   treemacs-filewatch-mode: t   treemacs-follow-mode: t   treemacs-git-mode: t   treemacs-fringe-indicator-mode: t   lsp-lens-mode: t   dap-auto-configure-mode: t   dap-mode: t   global-undo-tree-mode: t   undo-tree-mode: t   doom-modeline-mode: t   projectile-mode: t   ido-yes-or-no-mode: t   helm-mode: t   helm-minibuffer-history-mode: t   helm--remap-mouse-mode: t   async-bytecomp-package-mode: t   delete-selection-mode: t   global-auto-revert-mode: t   server-mode: t   shell-dirtrack-mode: t   global-hl-line-mode: t   lsp-managed-mode: t   lsp-mode: t   yas-global-mode: t   yas-minor-mode: t   tooltip-mode: t   global-eldoc-mode: t   eldoc-mode: t   show-paren-mode: t   electric-indent-mode: t   mouse-wheel-mode: t   menu-bar-mode: t   file-name-shadow-mode: t   global-font-lock-mode: t   font-lock-mode: t   blink-cursor-mode: t   column-number-mode: t   line-number-mode: t   transient-mark-mode: t   auto-composition-mode: t   auto-encryption-mode: t   auto-compression-mode: t   hs-minor-mode: t Load-path shadows: /home/jostein/.emacs.d/elpa/transient-20221127.2242/transient hides /home/jostein/build/emacs/lisp/transient /home/jostein/.emacs.d/elpa/eglot-20221020.1010/eglot hides /home/jostein/build/emacs/lisp/progmodes/eglot Features: (shadow sort mail-extr emacsbug magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode git-commit log-edit message sendmail yank-media rfc822 mml mml-sec epa mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader pcvs-util magit-core magit-autorevert magit-margin magit-transient magit-process with-editor magit-mode transient magit-git magit-base magit-section crm compat-27 compat-26 derived help-fns radix-tree cl-print misearch multi-isearch face-remap semantic/lex-spp ede/emacs semantic/db semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local bug-reference executable flyspell ispell mule-util disp-table lsp-diagnostics lsp-headerline lsp-icons lsp-modeline helm-command helm-elisp helm-eval edebug debug backtrace helm-info view vc-git diff-mode vc-dispatcher elec-pair csharp-mode treesit cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs winner ffap tramp-archive tramp-gvfs tramp-cache warnings time-stamp zeroconf dbus add-log lsp-zig lsp-steep lsp-svelte lsp-sqls lsp-ruby-syntax-tree lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-volar lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v lsp-typeprof lsp-ttcn3 lsp-toml lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-remark lsp-racket lsp-r lsp-purescript lsp-pylsp lsp-pyls lsp-php lsp-pls lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-magik lsp-nix lsp-nim lsp-nginx lsp-mint lsp-marksman lsp-markdown lsp-lua lsp-kotlin lsp-json lsp-javascript lsp-idris lsp-haxe lsp-groovy lsp-hack lsp-graphql lsp-gleam lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang lsp-emmet lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure lsp-semantic-tokens lsp-clangd lsp-beancount lsp-bash lsp-astro lsp-ansible lsp-angular lsp-ada lsp-actionscript ido-completing-read+ memoize minibuf-eldef elisp-slime-nav paredit editorconfig editorconfig-core editorconfig-core-handle editorconfig-fnmatch flycheck highlight-symbol which-func nlinum linum company-oddmuse company-keywords company-etags etags fileloop generator company-gtags company-dabbrev-code company-dabbrev company-files company-clang company-capf company-cmake company-semantic company-template company-bbdb company-web-html company-web company-css web-completion-data company hideshow eww url-queue shr pixel-fill kinsoku url-file svg mm-url gnus nnheader gnus-util mail-utils range mm-util mail-prsvr ede/speedbar ede/files ede ede/detect ede/base ede/auto ede/source eieio-base eieio-speedbar speedbar ezimage dframe eieio-custom cedet dap-mouse dap-ui lsp-treemacs lsp-treemacs-generic lsp-treemacs-themes treemacs-treelib treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-interface treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-scope pulse treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils pfuture treemacs-logging treemacs-customization treemacs-macros gdb-mi bindat gud bui bui-list bui-info bui-entry bui-core bui-history bui-button bui-utils lsp-lens dap-gdb-lldb dap-netcore dap-node dap-utils dom xml dap-pwsh lsp-pwsh dap-python dap-mode dap-tasks dap-launch lsp-docker yaml posframe dap-overlays undo-tree diff queue doom-modeline doom-modeline-segments doom-modeline-env doom-modeline-core all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons shrink-path compat compat-macs projectile lisp-mnt grep ibuf-ext ibuffer ibuffer-loaddefs helm-imenu ob-plantuml org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar cal-loaddefs org-version org-compat org-macs ido-yes-or-no ido helm-mode helm-misc helm-files image-dired image-dired-tags image-dired-external image-dired-util xdg image-mode dired dired-loaddefs exif tramp tramp-loaddefs trampver tramp-integration cus-edit pp cus-load files-x tramp-compat parse-time iso8601 time-date ls-lisp helm-buffers helm-occur helm-tags helm-locate helm-grep helm-regexp format-spec helm-utils helm-help helm-types helm helm-global-bindings helm-easymenu edmacro kmacro helm-core easy-mmode async-bytecomp helm-source helm-multi-match helm-lib async helm-config delsel cl-extra autorevert server powershell advice shell pcomplete hl-line lsp-mode lsp-protocol yasnippet help-mode xref project tree-widget wid-edit spinner pcase network-stream puny nsm markdown-mode color thingatpt noutline outline icons lv inline imenu ht filenotify f f-shortdoc shortdoc s ewoc epg rfc6068 epg-config dash dracula-theme compile-eslint rx compile text-property-search comint ansi-osc ansi-color ring cl finder-inf git-timemachine-autoloads helm-projectile-autoloads expand-region-autoloads all-the-icons-autoloads dracula-theme-autoloads eglot-autoloads multiple-cursors-autoloads tree-sitter-langs-autoloads projectile-autoloads nlinum-autoloads doom-modeline-autoloads rust-mode-autoloads editorconfig-autoloads helm-autoloads helm-core-autoloads async-autoloads assess-autoloads m-buffer-autoloads cargo-autoloads package-lint-autoloads flycheck-autoloads company-autoloads magit-autoloads magit-section-autoloads web-mode-autoloads paredit-autoloads helpful-autoloads elisp-refs-autoloads js2-mode-autoloads yaml-mode-autoloads powershell-autoloads dap-mode-autoloads lsp-docker-autoloads yaml-autoloads lsp-treemacs-autoloads treemacs-autoloads posframe-autoloads hydra-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads lsp-mode-autoloads markdown-mode-autoloads ht-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads compat-autoloads pcache-autoloads f-autoloads popup-autoloads s-autoloads info dash-autoloads macrostep-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 653528 50986)  (symbols 48 56100 0)  (strings 32 207770 6006)  (string-bytes 1 6562765)  (vectors 16 119588)  (vector-slots 8 2228903 93130)  (floats 8 1003 1039)  (intervals 56 6843 3017)  (buffers 992 34)) -- Vennlig hilsen *Jostein Kjønigsen* jostein@kjonigsen.net 🍵 jostein@gmail.com https://jostein.kjønigsen.no --------------0xBXPwDtzKvx9EfxN6onJiNF Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


Consider the following C# code:

public class Test
{
    public const string Foo = "test \t escape";
    fdsfd
}

When activating csharp-ts-mode, the escape sequence on line 3 is not fontified, and the syntax error on line 4 is not highlighted.

json-ts-mode does this, which is cool and I think csharp-ts-mode should have it too.

Attached is a patch which makes csharp-ts-mode support these fontification rules.

--
Jostein


In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.16.0) of 2022-12-08 built on ThinkPad-T14s
Repository revision: de5f5021bea73b759e76816f5a6dfb41d6050ffa
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12201003
System Description: Ubuntu 22.10

Configured using:
 'configure --with-json --with-tree-sitter'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: nb_NO.UTF-8
  value of $LC_NUMERIC: nb_NO.UTF-8
  value of $LC_TIME: nb_NO.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: C#

Minor modes in effect:
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  lsp-diagnostics-mode: t
  lsp-headerline-breadcrumb-mode: t
  lsp-modeline-workspace-status-mode: t
  lsp-modeline-diagnostics-mode: t
  lsp-modeline-code-actions-mode: t
  electric-pair-mode: t
  lsp-completion-mode: t
  editorconfig-mode: t
  flycheck-mode: t
  which-function-mode: t
  nlinum-mode: t
  company-mode: t
  global-ede-mode: t
  dap-tooltip-mode: t
  dap-ui-many-windows-mode: t
  dap-ui-controls-mode: t
  dap-ui-mode: t
  treemacs-filewatch-mode: t
  treemacs-follow-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  lsp-lens-mode: t
  dap-auto-configure-mode: t
  dap-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  doom-modeline-mode: t
  projectile-mode: t
  ido-yes-or-no-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  delete-selection-mode: t
  global-auto-revert-mode: t
  server-mode: t
  shell-dirtrack-mode: t
  global-hl-line-mode: t
  lsp-managed-mode: t
  lsp-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  hs-minor-mode: t

Load-path shadows:
/home/jostein/.emacs.d/elpa/transient-20221127.2242/transient hides /home/jostein/build/emacs/lisp/transient
/home/jostein/.emacs.d/elpa/eglot-20221020.1010/eglot hides /home/jostein/build/emacs/lisp/progmodes/eglot

Features:
(shadow sort mail-extr emacsbug magit-submodule magit-obsolete
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit magit-repos
magit-apply magit-wip magit-log magit-diff smerge-mode git-commit
log-edit message sendmail yank-media rfc822 mml mml-sec epa mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev gmm-utils mailheader pcvs-util magit-core magit-autorevert
magit-margin magit-transient magit-process with-editor magit-mode
transient magit-git magit-base magit-section crm compat-27 compat-26
derived help-fns radix-tree cl-print misearch multi-isearch face-remap
semantic/lex-spp ede/emacs semantic/db semantic/util-modes semantic/util
semantic semantic/tag semantic/lex semantic/fw mode-local bug-reference
executable flyspell ispell mule-util disp-table lsp-diagnostics
lsp-headerline lsp-icons lsp-modeline helm-command helm-elisp helm-eval
edebug debug backtrace helm-info view vc-git diff-mode vc-dispatcher
elec-pair csharp-mode treesit cc-langs cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs winner
ffap tramp-archive tramp-gvfs tramp-cache warnings time-stamp zeroconf
dbus add-log lsp-zig lsp-steep lsp-svelte lsp-sqls lsp-ruby-syntax-tree
lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-volar lsp-vetur lsp-html
lsp-verilog lsp-vala lsp-v lsp-typeprof lsp-ttcn3 lsp-toml lsp-terraform
lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-remark lsp-racket
lsp-r lsp-purescript lsp-pylsp lsp-pyls lsp-php lsp-pls
lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-magik lsp-nix
lsp-nim lsp-nginx lsp-mint lsp-marksman lsp-markdown lsp-lua lsp-kotlin
lsp-json lsp-javascript lsp-idris lsp-haxe lsp-groovy lsp-hack
lsp-graphql lsp-gleam lsp-go lsp-completion lsp-gdscript lsp-fsharp
lsp-fortran lsp-eslint lsp-erlang lsp-emmet lsp-elixir lsp-elm
lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp gnutls lsp-crystal
lsp-cmake lsp-clojure lsp-semantic-tokens lsp-clangd lsp-beancount
lsp-bash lsp-astro lsp-ansible lsp-angular lsp-ada lsp-actionscript
ido-completing-read+ memoize minibuf-eldef elisp-slime-nav paredit
editorconfig editorconfig-core editorconfig-core-handle
editorconfig-fnmatch flycheck highlight-symbol which-func nlinum linum
company-oddmuse company-keywords company-etags etags fileloop generator
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic
company-template company-bbdb company-web-html company-web company-css
web-completion-data company hideshow eww url-queue shr pixel-fill
kinsoku url-file svg mm-url gnus nnheader gnus-util mail-utils range
mm-util mail-prsvr ede/speedbar ede/files ede ede/detect ede/base
ede/auto ede/source eieio-base eieio-speedbar speedbar ezimage dframe
eieio-custom cedet dap-mouse dap-ui lsp-treemacs lsp-treemacs-generic
lsp-treemacs-themes treemacs-treelib treemacs treemacs-header-line
treemacs-compatibility treemacs-mode treemacs-interface
treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode
treemacs-rendering treemacs-annotations treemacs-async
treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-fringe-indicator treemacs-scope pulse treemacs-faces
treemacs-icons treemacs-themes treemacs-core-utils pfuture
treemacs-logging treemacs-customization treemacs-macros gdb-mi bindat
gud bui bui-list bui-info bui-entry bui-core bui-history bui-button
bui-utils lsp-lens dap-gdb-lldb dap-netcore dap-node dap-utils dom xml
dap-pwsh lsp-pwsh dap-python dap-mode dap-tasks dap-launch lsp-docker
yaml posframe dap-overlays undo-tree diff queue doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core
all-the-icons all-the-icons-faces data-material data-weathericons
data-octicons data-fileicons data-faicons data-alltheicons shrink-path
compat compat-macs projectile lisp-mnt grep ibuf-ext ibuffer
ibuffer-loaddefs helm-imenu ob-plantuml org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-src ob-comint org-pcomplete org-list
org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval
org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs
find-func cal-menu calendar cal-loaddefs org-version org-compat org-macs
ido-yes-or-no ido helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util xdg image-mode
dired dired-loaddefs exif tramp tramp-loaddefs trampver
tramp-integration cus-edit pp cus-load files-x tramp-compat parse-time
iso8601 time-date ls-lisp helm-buffers helm-occur helm-tags helm-locate
helm-grep helm-regexp format-spec helm-utils helm-help helm-types helm
helm-global-bindings helm-easymenu edmacro kmacro helm-core easy-mmode
async-bytecomp helm-source helm-multi-match helm-lib async helm-config
delsel cl-extra autorevert server powershell advice shell pcomplete
hl-line lsp-mode lsp-protocol yasnippet help-mode xref project
tree-widget wid-edit spinner pcase network-stream puny nsm markdown-mode
color thingatpt noutline outline icons lv inline imenu ht filenotify f
f-shortdoc shortdoc s ewoc epg rfc6068 epg-config dash dracula-theme
compile-eslint rx compile text-property-search comint ansi-osc
ansi-color ring cl finder-inf git-timemachine-autoloads
helm-projectile-autoloads expand-region-autoloads
all-the-icons-autoloads dracula-theme-autoloads eglot-autoloads
multiple-cursors-autoloads tree-sitter-langs-autoloads
projectile-autoloads nlinum-autoloads doom-modeline-autoloads
rust-mode-autoloads editorconfig-autoloads helm-autoloads
helm-core-autoloads async-autoloads assess-autoloads m-buffer-autoloads
cargo-autoloads package-lint-autoloads flycheck-autoloads
company-autoloads magit-autoloads magit-section-autoloads
web-mode-autoloads paredit-autoloads helpful-autoloads
elisp-refs-autoloads js2-mode-autoloads yaml-mode-autoloads
powershell-autoloads dap-mode-autoloads lsp-docker-autoloads
yaml-autoloads lsp-treemacs-autoloads treemacs-autoloads
posframe-autoloads hydra-autoloads pfuture-autoloads
ace-window-autoloads avy-autoloads lsp-mode-autoloads
markdown-mode-autoloads ht-autoloads git-commit-autoloads
with-editor-autoloads transient-autoloads compat-autoloads
pcache-autoloads f-autoloads popup-autoloads s-autoloads info
dash-autoloads macrostep-autoloads package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty
make-network-process emacs)

Memory information:
((conses 16 653528 50986)
 (symbols 48 56100 0)
 (strings 32 207770 6006)
 (string-bytes 1 6562765)
 (vectors 16 119588)
 (vector-slots 8 2228903 93130)
 (floats 8 1003 1039)
 (intervals 56 6843 3017)
 (buffers 992 34))

--------------0xBXPwDtzKvx9EfxN6onJiNF-- --------------36DavsYjBeV9DRbKmcF4SF0t Content-Type: text/x-patch; charset=UTF-8; name="0002-lisp-progmodes-csharp-mode.el-Improve-fontification-.patch" Content-Disposition: attachment; filename*0="0002-lisp-progmodes-csharp-mode.el-Improve-fontification-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzN2YzMDM4ZDc5MWMxZTUyYjkyZmJiYWY4MjIxMDkyYWU4YTJmMjg0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm9zdGVpbj0yMEtqPUMzPUI4bmln c2VuPz0gPGpvc3RlaW5Aa2pvbmlnc2VuLm5ldD4KRGF0ZTogVGh1LCA4IERlYyAyMDIyIDIw OjM2OjQ5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIGxpc3AvcHJvZ21vZGVzL2NzaGFy cC1tb2RlLmVsOiBJbXByb3ZlIGZvbnRpZmljYXRpb24gaW4KIGNzaGFycC10cy1tb2RlCgot IGZvbnRpdHkgZXNjYXBlIHNlcXVlbmNlcwotIGhpZ2hsaWdodCBzeW50YXggZXJyb3JzCi0t LQogbGlzcC9wcm9nbW9kZXMvY3NoYXJwLW1vZGUuZWwgfCAxMCArKysrKysrKy0tCiAxIGZp bGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2xpc3AvcHJvZ21vZGVzL2NzaGFycC1tb2RlLmVsIGIvbGlzcC9wcm9nbW9kZXMvY3No YXJwLW1vZGUuZWwKaW5kZXggODJlM2JjMGQ1NDEuLjhjNzYyODRlMTA4IDEwMDY0NAotLS0g YS9saXNwL3Byb2dtb2Rlcy9jc2hhcnAtbW9kZS5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9j c2hhcnAtbW9kZS5lbApAQCAtODE4LDcgKzgxOCwxMyBAQCBjc2hhcnAtdHMtbW9kZS0tZm9u dC1sb2NrLXNldHRpbmdzCiAKICAgIDpsYW5ndWFnZSAnYy1zaGFycAogICAgOmZlYXR1cmUg J2RlbGltaXRlcgotICAgJygoWyIsIiAiOiIgIjsiXSkgQGZvbnQtbG9jay1kZWxpbWl0ZXIt ZmFjZSkpKQorICAgJygoWyIsIiAiOiIgIjsiXSkgQGZvbnQtbG9jay1kZWxpbWl0ZXItZmFj ZSkKKworICAgOmxhbmd1YWdlICdjLXNoYXJwCisgICA6ZmVhdHVyZSAnZXNjYXBlLXNlcXVl bmNlCisgICA6b3ZlcnJpZGUgdAorICAgJygoZXNjYXBlX3NlcXVlbmNlKSBAZm9udC1sb2Nr LWVzY2FwZS1mYWNlCisgICAgIChFUlJPUikgQGZvbnQtbG9jay13YXJuaW5nLWZhY2UpKSkK IAogOzs7IyMjYXV0b2xvYWQKIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxc LmNzXFwnIiAuIGNzaGFycC1tb2RlKSkKQEAgLTkyNiw3ICs5MzIsNyBAQCBjc2hhcnAtdHMt bW9kZQogICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncyBjc2hhcnAt dHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQogICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZv bnQtbG9jay1mZWF0dXJlLWxpc3QKICAgICAgICAgICAgICAgJygoIGNvbW1lbnQgZGVmaW5p dGlvbikKLSAgICAgICAgICAgICAgICAoIGtleXdvcmQgc3RyaW5nIHR5cGUpCisgICAgICAg ICAgICAgICAgKCBrZXl3b3JkIHN0cmluZyBlc2NhcGUtc2VxdWVuY2UgdHlwZSkKICAgICAg ICAgICAgICAgICAoIGF0dHJpYnV0ZSBjb25zdGFudCBleHByZXNzaW9uIGxpdGVyYWwpCiAg ICAgICAgICAgICAgICAgKCBicmFja2V0IGRlbGltaXRlcikpKQogCi0tIAoyLjM3LjIKCg== --------------36DavsYjBeV9DRbKmcF4SF0t--