Moved add-hook calls (for tree-sitter initialization) into their respective modes' config blocks, or nearby, to be consistent with how other, similar tools (like lsp!) are initialized, and does so at runtime, rather than at expansion/compile time, which eval-when! caused.
77 lines
2.4 KiB
EmacsLisp
77 lines
2.4 KiB
EmacsLisp
;;; lang/csharp/config.el -*- lexical-binding: t; -*-
|
|
|
|
(use-package! csharp-mode
|
|
:hook (csharp-mode . rainbow-delimiters-mode)
|
|
:config
|
|
(set-electric! 'csharp-mode :chars '(?\n ?\}))
|
|
(set-rotate-patterns! 'csharp-mode
|
|
:symbols '(("public" "protected" "private")
|
|
("class" "struct")))
|
|
(set-ligatures! 'csharp-mode
|
|
;; Functional
|
|
:lambda "() =>"
|
|
;; Types
|
|
:null "null"
|
|
:true "true"
|
|
:false "false"
|
|
:int "int"
|
|
:float "float"
|
|
:str "string"
|
|
:bool "bool"
|
|
:list "List"
|
|
;; Flow
|
|
:not "!"
|
|
:in "in"
|
|
:and "&&"
|
|
:or "||"
|
|
:for "for"
|
|
:return "return"
|
|
:yield "yield")
|
|
|
|
(sp-local-pair 'csharp-mode "<" ">"
|
|
:when '(+csharp-sp-point-in-type-p)
|
|
:post-handlers '(("| " "SPC")))
|
|
|
|
(when (featurep! +lsp)
|
|
(add-hook 'csharp-mode-local-vars-hook #'lsp! 'append))
|
|
|
|
(when (featurep! +tree-sitter)
|
|
(add-hook 'csharp-mode-local-vars-hook #'tree-sitter! 'append))
|
|
|
|
(defadvice! +csharp-disable-clear-string-fences-a (fn &rest args)
|
|
"This turns off `c-clear-string-fences' for `csharp-mode'. When
|
|
on for `csharp-mode' font lock breaks after an interpolated string
|
|
or terminating simple string."
|
|
:around #'csharp-disable-clear-string-fences
|
|
(unless (eq major-mode 'csharp-mode)
|
|
(apply fn args))))
|
|
|
|
|
|
;; Unity shaders
|
|
(use-package! shader-mode
|
|
:when (featurep! +unity)
|
|
:mode "\\.shader\\'"
|
|
:config
|
|
(def-project-mode! +csharp-unity-mode
|
|
:modes '(csharp-mode shader-mode)
|
|
:files (and "Assets" "Library/MonoManager.asset" "Library/ScriptMapper")))
|
|
|
|
|
|
(use-package! sharper
|
|
:when (featurep! +dotnet)
|
|
:general ("C-c d" #'sharper-main-transient)
|
|
:config
|
|
(map! (:map sharper--solution-management-mode-map
|
|
:nv "RET" #'sharper-transient-solution
|
|
:nv "gr" #'sharper--solution-management-refresh)
|
|
(:map sharper--project-references-mode-map
|
|
:nv "RET" #'sharper-transient-project-references
|
|
:nv "gr" #'sharper--project-references-refresh)
|
|
(:map sharper--project-packages-mode-map
|
|
:nv "RET" #'sharper-transient-project-packages
|
|
:nv "gr" #'sharper--project-packages-refresh)
|
|
(:map sharper--nuget-results-mode-map
|
|
:nv "RET" #'sharper--nuget-search-install)))
|
|
|
|
|
|
(use-package! sln-mode :mode "\\.sln\\'")
|