feat(csharp): add treesit support

This commit is contained in:
Henrik Lissner
2025-05-11 00:40:59 -04:00
parent 46b87362f7
commit c403bb5e2f

View File

@ -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")))