emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/csharp-mode 53fa8f1 404/459: Use dedicated major mode f


From: ELPA Syncer
Subject: [elpa] externals/csharp-mode 53fa8f1 404/459: Use dedicated major mode for tree-sitter
Date: Sun, 22 Aug 2021 14:00:10 -0400 (EDT)

branch: externals/csharp-mode
commit 53fa8f11996d1db7d446d603acdb6abde49a22da
Author: Theodor Thornhill <theo@thornhill.no>
Commit: Theodor Thornhill <theo@thornhill.no>

    Use dedicated major mode for tree-sitter
---
 README.org            |  9 +++++++--
 csharp-mode.el        | 55 ++++++++++++++-------------------------------------
 csharp-tree-sitter.el | 27 ++++++++++++++++++++++++-
 3 files changed, 48 insertions(+), 43 deletions(-)

diff --git a/README.org b/README.org
index 1c673ff..4e82552 100644
--- a/README.org
+++ b/README.org
@@ -26,8 +26,13 @@ You can enable experimental tree sitter support for 
indentation and highlighting
   (use-package tree-sitter-langs)
 
   (use-package csharp-mode
-    :init
-    (setq csharp-mode-enable-tree-sitter t))
+    :straight
+    (csharp-mode :type git
+                 :host github
+                 :repo "emacs-csharp/csharp-mode"
+                 :branch "tree-sitter")
+    :config
+    (add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-tree-sitter-mode)))
 #+end_src
 If you are using this, clearly state so if you find any issues.
 
diff --git a/csharp-mode.el b/csharp-mode.el
index 93f1226..fab8608 100644
--- a/csharp-mode.el
+++ b/csharp-mode.el
@@ -40,13 +40,6 @@
   "Major mode for editing C# code."
   :group 'prog-mode)
 
-(defcustom csharp-mode-enable-tree-sitter nil
-  "Use tree sitter for font locking and indentation."
-  :type 'boolean)
-
-(defvar csharp-mode-tree-sitter-patterns)
-(defun csharp-mode-indent-line ())
-
 (eval-and-compile
   (defconst csharp--regex-identifier
     "[A-Za-z][A-Za-z0-9_]*"
@@ -646,16 +639,15 @@ compilation and evaluation time conflicts."
 ;;; End of fix for strings on version 27.1
 
 
-(eval-and-compile
-  (unless csharp-mode-enable-tree-sitter
-    (defvar csharp-mode-syntax-table
-      (funcall (c-lang-const c-make-mode-syntax-table csharp))
-      "Syntax table used in csharp-mode buffers.")
 
-    (defvar csharp-mode-map
-      (let ((map (c-make-inherited-keymap)))
-        map)
-      "Keymap used in csharp-mode buffers.")))
+(defvar csharp-mode-syntax-table
+  (funcall (c-lang-const c-make-mode-syntax-table csharp))
+  "Syntax table used in csharp-mode buffers.")
+
+(defvar csharp-mode-map
+  (let ((map (c-make-inherited-keymap)))
+    map)
+  "Keymap used in csharp-mode buffers.")
 
 (easy-menu-define csharp-mode-menu csharp-mode-map "C# Mode Commands"
   (cons "C#" (c-lang-const c-mode-menu csharp)))
@@ -676,30 +668,13 @@ compilation and evaluation time conflicts."
 
 Key bindings:
 \\{csharp-mode-map}"
-  :group 'csharp
-
-  (if csharp-mode-enable-tree-sitter
-      (progn
-        (require 'csharp-tree-sitter)
-        (setq-local indent-line-function #'csharp-mode-indent-line)
-
-        ;; https://github.com/ubolonton/emacs-tree-sitter/issues/84
-        (unless font-lock-defaults
-          (setq font-lock-defaults '(nil)))
-        (setq-local tree-sitter-hl-default-patterns 
csharp-mode-tree-sitter-patterns)
-        ;; Comments
-        (setq-local comment-start "// ")
-        (setq-local comment-end "")
-
-        (tree-sitter-hl-mode))
-    (progn
-      :after-hook (c-update-modeline)
-      (c-initialize-cc-mode t)
-      (c-init-language-vars csharp-mode)
-      (c-common-init 'csharp-mode)
-      (easy-menu-add csharp-mode-menu)
-      (setq-local c-doc-comment-style '((csharp-mode . codedoc)))
-      (c-run-mode-hooks 'c-mode-common-hook 'csharp-mode-hook))))
+  :after-hook (c-update-modeline)
+  (c-initialize-cc-mode t)
+  (c-init-language-vars csharp-mode)
+  (c-common-init 'csharp-mode)
+  (easy-menu-add csharp-mode-menu)
+  (setq-local c-doc-comment-style '((csharp-mode . codedoc)))
+  (c-run-mode-hooks 'c-mode-common-hook 'csharp-mode-hook))
 
 (provide 'csharp-mode)
 
diff --git a/csharp-tree-sitter.el b/csharp-tree-sitter.el
index 354003a..88db003 100644
--- a/csharp-tree-sitter.el
+++ b/csharp-tree-sitter.el
@@ -629,7 +629,32 @@ See `csharp-mode-indent-line'.  ORIGINAL-COLUMN is 
forwarded to
              (tsc-node-type indenting-node)
              tree-sitter-tree-before)))
 
-;;; End of tree-sitter
+
+;;;###autoload
+(define-derived-mode csharp-tree-sitter-mode prog-mode "C#"
+  "Major mode for editing Csharp code.
+
+Key bindings:
+\\{csharp-mode-map}"
+  :group 'csharp
+
+  (setq csharp-mode-syntax-table nil)
+  (setq csharp-mode-map nil)
+  (require 'csharp-tree-sitter)
+  (setq-local indent-line-function #'csharp-mode-indent-line)
+
+  ;; https://github.com/ubolonton/emacs-tree-sitter/issues/84
+  (unless font-lock-defaults
+    (setq font-lock-defaults '(nil)))
+  (setq-local tree-sitter-hl-default-patterns csharp-mode-tree-sitter-patterns)
+  ;; Comments
+  (setq-local comment-start "// ")
+  (setq-local comment-end "")
+
+  (tree-sitter-hl-mode))
+
+;;;###autoload
+(add-to-list 'tree-sitter-major-mode-language-alist '(csharp-tree-sitter-mode 
. c-sharp))
 
 (provide 'csharp-tree-sitter)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]