From c403bb5e2f77aa1821345d3a76dabbad2c97e314 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 11 May 2025 00:40:59 -0400 Subject: [PATCH] feat(csharp): add treesit support --- modules/lang/csharp/config.el | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/modules/lang/csharp/config.el b/modules/lang/csharp/config.el index 38bac4879..d92844558 100644 --- a/modules/lang/csharp/config.el +++ b/modules/lang/csharp/config.el @@ -4,12 +4,12 @@ :hook (csharp-mode . rainbow-delimiters-mode) :config (set-formatter! 'csharpier '("csharpier" "format" "--write-stdout") - :modes '(csharp-mode)) - (set-electric! 'csharp-mode :chars '(?\n ?\})) - (set-rotate-patterns! 'csharp-mode + :modes '(csharp-mode csharp-ts-mode)) + (set-electric! '(csharp-mode csharp-ts-mode) :chars '(?\n ?\})) + (set-rotate-patterns! '(csharp-mode csharp-ts-mode) :symbols '(("public" "protected" "private") ("class" "struct"))) - (set-ligatures! 'csharp-mode + (set-ligatures! '(csharp-mode csharp-ts-mode) ;; Functional :lambda "() =>" ;; Types @@ -30,12 +30,19 @@ :return "return" :yield "yield") - (sp-local-pair 'csharp-mode "<" ">" + (sp-local-pair '(csharp-mode csharp-ts-mode) "<" ">" :when '(+csharp-sp-point-in-type-p) :post-handlers '(("| " "SPC"))) (when (modulep! +lsp) - (add-hook 'csharp-mode-local-vars-hook #'lsp! 'append)) + (add-hook 'csharp-mode-local-vars-hook #'lsp! 'append) + (add-hook 'csharp-ts-mode-local-vars-hook #'lsp! 'append)) + + (when (and (modulep! +tree-sitter) + (fboundp 'csharp-ts-mode)) ; 29.1+ only + (set-tree-sitter! 'csharp-mode 'csharp-ts-mode + '((c-sharp :url "https://github.com/tree-sitter/tree-sitter-c-sharp" + :rev "v0.23.1")))) (defadvice! +csharp-disable-clear-string-fences-a (fn &rest args) "This turns off `c-clear-string-fences' for `csharp-mode'. When @@ -46,24 +53,13 @@ or terminating simple string." (apply fn args)))) -(use-package! csharp-tree-sitter - :when (modulep! +tree-sitter) - :defer t - :init - (add-hook 'csharp-mode-local-vars-hook #'tree-sitter! 'append) - (when (fboundp #'csharp-tree-sitter-mode) - (add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-tree-sitter-mode)) - (when (modulep! +lsp) - (add-hook 'csharp-tree-sitter-mode-local-vars-hook #'lsp! 'append)))) - - ;; Unity shaders (use-package! shader-mode :when (modulep! +unity) :mode "\\.shader\\'" :config (def-project-mode! +csharp-unity-mode - :modes '(csharp-mode shader-mode) + :modes '(csharp-mode csharp-ts-mode shader-mode) :files (and "Assets" "Library/MonoManager.asset" "Library/ScriptMapper")))