[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/csharp-mode c1489db 370/459: First small tree-sitter qu
From: |
ELPA Syncer |
Subject: |
[elpa] externals/csharp-mode c1489db 370/459: First small tree-sitter query |
Date: |
Sun, 22 Aug 2021 14:00:03 -0400 (EDT) |
branch: externals/csharp-mode
commit c1489db84c9c69d94f501535cd7794a92c112e7b
Author: Theodor Thornhill <theo@thornhill.no>
Commit: Theodor Thornhill <theo@thornhill.no>
First small tree-sitter query
---
csharp-mode.el | 874 +++++++++++++++++++++++++++++----------------------------
1 file changed, 440 insertions(+), 434 deletions(-)
diff --git a/csharp-mode.el b/csharp-mode.el
index fab8608..39b3eb8 100644
--- a/csharp-mode.el
+++ b/csharp-mode.el
@@ -26,13 +26,16 @@
;;; Code:
-(when (version< emacs-version "25.1")
- (require 'cl))
-(require 'cc-mode)
-(require 'cc-langs)
+;; (when (version< emacs-version "25.1")
+;; (require 'cl))
+;; (require 'cc-mode)
+;; (require 'cc-langs)
-(eval-when-compile
- (require 'cc-fonts))
+;; (eval-when-compile
+;; (require 'cc-fonts))
+
+(require 'tree-sitter)
+(require 'tree-sitter-hl)
(require 'compile)
@@ -64,315 +67,315 @@
"Regex matching identifiers after a using or namespace
declaration."))
-(eval-and-compile
- (c-add-language 'csharp-mode 'java-mode))
-
-(c-lang-defconst c-make-mode-syntax-table
- csharp `(lambda ()
- (let ((table (make-syntax-table)))
- (c-populate-syntax-table table)
- (modify-syntax-entry ?@ "_" table)
- table)))
-
-(c-lang-defconst c-identifier-syntax-modifications
- csharp (append '((?@ . "w"))
- (c-lang-const c-identifier-syntax-modifications)))
-
-(c-lang-defconst c-symbol-start
- csharp (concat "[" c-alpha "_@]"))
-
-(c-lang-defconst c-opt-type-suffix-key
- csharp (concat "\\(\\[" (c-lang-const c-simple-ws) "*\\]\\|\\?\\)"))
-
-(c-lang-defconst c-identifier-ops
- csharp '((left-assoc ".")))
-
-(c-lang-defconst c-overloadable-operators
- csharp '("+" "-" "*" "/" "%" "&" "|" "^" "<<" ">>" "=="
- "!=" ">" "<" ">=" "<="))
-
-(c-lang-defconst c-multiline-string-start-char
- csharp ?@)
+;; (eval-and-compile
+;; (c-add-language 'csharp-mode 'java-mode))
-(c-lang-defconst c-type-prefix-kwds
- csharp '("class" "interface" "struct"))
+;; (c-lang-defconst c-make-mode-syntax-table
+;; csharp `(lambda ()
+;; (let ((table (make-syntax-table)))
+;; (c-populate-syntax-table table)
+;; (modify-syntax-entry ?@ "_" table)
+;; table)))
-(c-lang-defconst c-class-decl-kwds
- csharp '("class" "interface" "struct"))
+;; (c-lang-defconst c-identifier-syntax-modifications
+;; csharp (append '((?@ . "w"))
+;; (c-lang-const c-identifier-syntax-modifications)))
-;;; Keyword lists
+;; (c-lang-defconst c-symbol-start
+;; csharp (concat "[" c-alpha "_@]"))
-(c-lang-defconst c-primitive-type-kwds
- csharp '("bool" "byte" "sbyte" "char" "decimal" "double" "float" "int" "uint"
- "long" "ulong" "short" "ushort" "void" "object" "string" "var"))
+;; (c-lang-defconst c-opt-type-suffix-key
+;; csharp (concat "\\(\\[" (c-lang-const c-simple-ws) "*\\]\\|\\?\\)"))
-(c-lang-defconst c-other-decl-kwds
- csharp nil)
+;; (c-lang-defconst c-identifier-ops
+;; csharp '((left-assoc ".")))
-(c-lang-defconst c-type-list-kwds
- csharp nil)
+;; (c-lang-defconst c-overloadable-operators
+;; csharp '("+" "-" "*" "/" "%" "&" "|" "^" "<<" ">>" "=="
+;; "!=" ">" "<" ">=" "<="))
-(c-lang-defconst c-other-block-decl-kwds
- csharp nil)
+;; (c-lang-defconst c-multiline-string-start-char
+;; csharp ?@)
-(c-lang-defconst c-return-kwds
- csharp '("return"))
+;; (c-lang-defconst c-type-prefix-kwds
+;; csharp '("class" "interface" "struct"))
-(c-lang-defconst c-typedef-kwds
- csharp nil)
+;; (c-lang-defconst c-class-decl-kwds
+;; csharp '("class" "interface" "struct"))
-(c-lang-defconst c-typeof-kwds
- csharp '("typeof" "is" "as"))
+;; ;;; Keyword lists
-(c-lang-defconst c-type-modifier-prefix-kwds
- csharp '("volatile"))
+;; (c-lang-defconst c-primitive-type-kwds
+;; csharp '("bool" "byte" "sbyte" "char" "decimal" "double" "float" "int"
"uint"
+;; "long" "ulong" "short" "ushort" "void" "object" "string" "var"))
-(c-lang-defconst c-type-modifier-kwds
- csharp '("readonly" "new"))
+;; (c-lang-defconst c-other-decl-kwds
+;; csharp nil)
-(c-lang-defconst c-brace-list-decl-kwds
- csharp '("enum" "new"))
+;; (c-lang-defconst c-type-list-kwds
+;; csharp nil)
-(c-lang-defconst c-recognize-post-brace-list-type-p
- csharp t)
+;; (c-lang-defconst c-other-block-decl-kwds
+;; csharp nil)
-(c-lang-defconst c-ref-list-kwds
- csharp nil)
+;; (c-lang-defconst c-return-kwds
+;; csharp '("return"))
-(c-lang-defconst c-using-kwds
- csharp '("using"))
+;; (c-lang-defconst c-typedef-kwds
+;; csharp nil)
-(c-lang-defconst c-equals-type-clause-kwds
- csharp '("using"))
+;; (c-lang-defconst c-typeof-kwds
+;; csharp '("typeof" "is" "as"))
-(defun csharp-at-vsemi-p (&optional pos)
- (if pos (goto-char pos))
- (save-excursion
- (beginning-of-line)
- (c-forward-syntactic-ws)
- (looking-at "using\\s *(")))
+;; (c-lang-defconst c-type-modifier-prefix-kwds
+;; csharp '("volatile"))
-(c-lang-defconst c-at-vsemi-p-fn
- csharp 'csharp-at-vsemi-p)
+;; (c-lang-defconst c-type-modifier-kwds
+;; csharp '("readonly" "new"))
-(defun csharp-vsemi-status-unknown () t)
+;; (c-lang-defconst c-brace-list-decl-kwds
+;; csharp '("enum" "new"))
-(c-lang-defconst c-vsemi-status-unknown-p-fn
- csharp 'csharp-vsemi-status-unknown-p)
+;; (c-lang-defconst c-recognize-post-brace-list-type-p
+;; csharp t)
+;; (c-lang-defconst c-ref-list-kwds
+;; csharp nil)
-(c-lang-defconst c-modifier-kwds
- csharp '("abstract" "default" "final" "native" "private" "protected"
- "public" "partial" "internal" "readonly" "static" "event" "transient"
- "volatile" "sealed" "ref" "out" "virtual" "implicit" "explicit"
- "fixed" "override" "params" "async" "await" "extern" "unsafe"
- "get" "set" "this" "const" "delegate"))
+;; (c-lang-defconst c-using-kwds
+;; csharp '("using"))
-(c-lang-defconst c-other-kwds
- csharp '("select" "from" "where" "join" "in" "on" "equals" "into"
- "orderby" "ascending" "descending" "group" "when"
- "let" "by" "namespace"))
+;; (c-lang-defconst c-equals-type-clause-kwds
+;; csharp '("using"))
-(c-lang-defconst c-colon-type-list-kwds
- csharp '("class" "struct" "interface"))
+;; (defun csharp-at-vsemi-p (&optional pos)
+;; (if pos (goto-char pos))
+;; (save-excursion
+;; (beginning-of-line)
+;; (c-forward-syntactic-ws)
+;; (looking-at "using\\s *(")))
-(c-lang-defconst c-block-stmt-1-kwds
- csharp '("do" "else" "finally" "try"))
+;; (c-lang-defconst c-at-vsemi-p-fn
+;; csharp 'csharp-at-vsemi-p)
-(c-lang-defconst c-block-stmt-1-2-kwds
- csharp '("try"))
+;; (defun csharp-vsemi-status-unknown () t)
-(c-lang-defconst c-block-stmt-2-kwds
- csharp '("for" "if" "switch" "while" "catch" "foreach" "fixed" "checked"
- "unchecked" "using" "lock"))
+;; (c-lang-defconst c-vsemi-status-unknown-p-fn
+;; csharp 'csharp-vsemi-status-unknown-p)
-(c-lang-defconst c-simple-stmt-kwds
- csharp '("break" "continue" "goto" "throw" "return" "yield"))
-(c-lang-defconst c-constant-kwds
- csharp '("true" "false" "null" "value"))
+;; (c-lang-defconst c-modifier-kwds
+;; csharp '("abstract" "default" "final" "native" "private" "protected"
+;; "public" "partial" "internal" "readonly" "static" "event" "transient"
+;; "volatile" "sealed" "ref" "out" "virtual" "implicit" "explicit"
+;; "fixed" "override" "params" "async" "await" "extern" "unsafe"
+;; "get" "set" "this" "const" "delegate"))
-(c-lang-defconst c-primary-expr-kwds
- csharp '("this" "base" "operator"))
+;; (c-lang-defconst c-other-kwds
+;; csharp '("select" "from" "where" "join" "in" "on" "equals" "into"
+;; "orderby" "ascending" "descending" "group" "when"
+;; "let" "by" "namespace"))
-(c-lang-defconst c-inexpr-class-kwds
- csharp nil)
+;; (c-lang-defconst c-colon-type-list-kwds
+;; csharp '("class" "struct" "interface"))
-(c-lang-defconst c-class-decl-kwds
- csharp '("class" "struct" "interface"))
+;; (c-lang-defconst c-block-stmt-1-kwds
+;; csharp '("do" "else" "finally" "try"))
-(c-lang-defconst c-std-abbrev-keywords
- csharp (append (c-lang-const c-std-abbrev-keywords) '("catch" "finally")))
+;; (c-lang-defconst c-block-stmt-1-2-kwds
+;; csharp '("try"))
-(c-lang-defconst c-decl-prefix-re
- csharp "\\([{}(;,<]+\\)")
+;; (c-lang-defconst c-block-stmt-2-kwds
+;; csharp '("for" "if" "switch" "while" "catch" "foreach" "fixed" "checked"
+;; "unchecked" "using" "lock"))
-(c-lang-defconst c-recognize-typeless-decls
- csharp t)
+;; (c-lang-defconst c-simple-stmt-kwds
+;; csharp '("break" "continue" "goto" "throw" "return" "yield"))
-(c-lang-defconst c-recognize-<>-arglists
- csharp t)
+;; (c-lang-defconst c-constant-kwds
+;; csharp '("true" "false" "null" "value"))
-(c-lang-defconst c-opt-cpp-prefix
- csharp "\\s *#\\s *")
+;; (c-lang-defconst c-primary-expr-kwds
+;; csharp '("this" "base" "operator"))
-(c-lang-defconst c-opt-cpp-macro-define
- csharp (if (c-lang-const c-opt-cpp-prefix)
- "define"))
-
-(c-lang-defconst c-cpp-message-directives
- csharp '("error" "warning" "region"))
-
-(c-lang-defconst c-cpp-expr-directives
- csharp '("if" "elif"))
-
-(c-lang-defconst c-other-op-syntax-tokens
- csharp (append '("#")
- (c-lang-const c-other-op-syntax-tokens)))
-
-(c-lang-defconst c-line-comment-starter
- csharp "//")
-
-(c-lang-defconst c-doc-comment-start-regexp
- csharp "///")
-
-(c-add-style "csharp"
- '("java"
- (c-basic-offset . 4)
- (c-comment-only-line-offset . (0 . 0))
- (c-offsets-alist . ((inline-open . 0)
- (arglist-intro . +)
- (arglist-close . 0)
- (inexpr-class . 0)
- (case-label . +)
- (cpp-macro .
c-lineup-dont-change)
- (substatement-open . 0)))))
-
-(eval-and-compile
- (unless (assoc 'csharp-mode c-default-style)
- (setq c-default-style
- (cons '(csharp-mode . "csharp")
- c-default-style))))
-
-(defun csharp--color-forwards (font-lock-face)
- (let (id-beginning)
- (goto-char (match-beginning 0))
- (forward-word)
- (while (and (not (or (eq (char-after) ?\;)
- (eq (char-after) ?\{)))
- (progn
- (forward-char)
- (c-forward-syntactic-ws)
- (setq id-beginning (point))
- (> (skip-chars-forward
- (c-lang-const c-symbol-chars))
- 0))
- (not (get-text-property (point) 'face)))
- (c-put-font-lock-face id-beginning (point) font-lock-face)
- (c-forward-syntactic-ws))))
-
-(c-lang-defconst c-basic-matchers-before
- csharp `(
- ;; Warning face on unclosed strings
- ,@(if (version< emacs-version "27.0")
- ;; Taken from 26.1 branch
- `(,(c-make-font-lock-search-function
- (concat ".\\(" c-string-limit-regexp "\\)")
- '((c-font-lock-invalid-string))))
- `(("\\s|" 0 font-lock-warning-face t nil)))
-
- ;; Invalid single quotes
- c-font-lock-invalid-single-quotes
-
- ;; Keyword constants
- ,@(when (c-lang-const c-constant-kwds)
- (let ((re (c-make-keywords-re nil (c-lang-const
c-constant-kwds))))
- `((eval . (list ,(concat "\\<\\(" re "\\)\\>")
- 1 c-constant-face-name)))))
-
- ;; Keywords except the primitive types.
- ,`(,(concat "\\<" (c-lang-const c-regular-keywords-regexp))
- 1 font-lock-keyword-face)
-
- ;; Chained identifiers in using/namespace statements
- ,`(,(c-make-font-lock-search-function
- csharp--regex-using-or-namespace
- `((csharp--color-forwards font-lock-variable-name-face)
- nil
- (goto-char (match-end 0)))))
-
-
- ;; Negation character
- (eval . (list "\\(!\\)[^=]" 1 c-negation-char-face-name))
-
- ;; Types after 'new'
- (eval . (list (concat "\\<new\\> *" csharp--regex-type-name-matcher)
- 1 font-lock-type-face))
-
- ;; Single identifier in attribute
- (eval . (list (concat "\\[" csharp--regex-type-name-matcher
"\\][^;]")
- 1 font-lock-variable-name-face t))
-
- ;; Function names
- (eval . (list "\\([A-Za-z0-9_]+\\)\\(<[a-zA-Z0-9, ]+>\\)?("
- 1 font-lock-function-name-face))
-
- ;; Nameof
- (eval . (list (concat "\\(\\<nameof\\>\\) *(")
- 1 font-lock-function-name-face))
-
- (eval . (list (concat "\\<nameof\\> *( *"
- csharp--regex-identifier-matcher
- " *) *")
- 1 font-lock-variable-name-face))
-
- ;; Catch statements with type only
- (eval . (list (concat "\\<catch\\> *( *"
- csharp--regex-type-name-matcher
- " *) *")
- 1 font-lock-type-face))
- ))
-
-(c-lang-defconst c-basic-matchers-after
- csharp (append
- ;; Merge with cc-mode defaults - enables us to add more later
- (c-lang-const c-basic-matchers-after)))
-
-(defcustom csharp-codedoc-tag-face 'c-doc-markup-face-name
- "Face to be used on the codedoc docstring tags.
-
-Should be one of the font lock faces, such as
-`font-lock-variable-name-face' and friends.
-
-Needs to be set before `csharp-mode' is loaded, because of
-compilation and evaluation time conflicts."
- :type 'symbol
- :group 'csharp)
+;; (c-lang-defconst c-inexpr-class-kwds
+;; csharp nil)
-(defcustom csharp-font-lock-extra-types
- (list csharp--regex-type-name)
- (c-make-font-lock-extra-types-blurb "C#" "csharp-mode" (concat))
- :type 'c-extra-types-widget
- :group 'c)
+;; (c-lang-defconst c-class-decl-kwds
+;; csharp '("class" "struct" "interface"))
-(defconst csharp-font-lock-keywords-1 (c-lang-const c-matchers-1 csharp)
- "Minimal font locking for C# mode.")
+;; (c-lang-defconst c-std-abbrev-keywords
+;; csharp (append (c-lang-const c-std-abbrev-keywords) '("catch" "finally")))
-(defconst csharp-font-lock-keywords-2 (c-lang-const c-matchers-2 csharp)
- "Fast normal font locking for C# mode.")
+;; (c-lang-defconst c-decl-prefix-re
+;; csharp "\\([{}(;,<]+\\)")
-(defconst csharp-font-lock-keywords-3 (c-lang-const c-matchers-3 csharp)
- "Accurate normal font locking for C# mode.")
+;; (c-lang-defconst c-recognize-typeless-decls
+;; csharp t)
-(defvar csharp-font-lock-keywords csharp-font-lock-keywords-3
- "Default expressions to highlight in C# mode.")
+;; (c-lang-defconst c-recognize-<>-arglists
+;; csharp t)
-(defun csharp-font-lock-keywords-2 ()
- (c-compose-keywords-list csharp-font-lock-keywords-2))
-(defun csharp-font-lock-keywords-3 ()
- (c-compose-keywords-list csharp-font-lock-keywords-3))
-(defun csharp-font-lock-keywords ()
- (c-compose-keywords-list csharp-font-lock-keywords))
+;; (c-lang-defconst c-opt-cpp-prefix
+;; csharp "\\s *#\\s *")
+
+;; (c-lang-defconst c-opt-cpp-macro-define
+;; csharp (if (c-lang-const c-opt-cpp-prefix)
+;; "define"))
+
+;; (c-lang-defconst c-cpp-message-directives
+;; csharp '("error" "warning" "region"))
+
+;; (c-lang-defconst c-cpp-expr-directives
+;; csharp '("if" "elif"))
+
+;; (c-lang-defconst c-other-op-syntax-tokens
+;; csharp (append '("#")
+;; (c-lang-const c-other-op-syntax-tokens)))
+
+;; (c-lang-defconst c-line-comment-starter
+;; csharp "//")
+
+;; (c-lang-defconst c-doc-comment-start-regexp
+;; csharp "///")
+
+;; (c-add-style "csharp"
+;; '("java"
+;; (c-basic-offset . 4)
+;; (c-comment-only-line-offset . (0 . 0))
+;; (c-offsets-alist . ((inline-open . 0)
+;; (arglist-intro . +)
+;; (arglist-close . 0)
+;; (inexpr-class . 0)
+;; (case-label . +)
+;; (cpp-macro .
c-lineup-dont-change)
+;; (substatement-open . 0)))))
+
+;; (eval-and-compile
+;; (unless (assoc 'csharp-mode c-default-style)
+;; (setq c-default-style
+;; (cons '(csharp-mode . "csharp")
+;; c-default-style))))
+
+;; (defun csharp--color-forwards (font-lock-face)
+;; (let (id-beginning)
+;; (goto-char (match-beginning 0))
+;; (forward-word)
+;; (while (and (not (or (eq (char-after) ?\;)
+;; (eq (char-after) ?\{)))
+;; (progn
+;; (forward-char)
+;; (c-forward-syntactic-ws)
+;; (setq id-beginning (point))
+;; (> (skip-chars-forward
+;; (c-lang-const c-symbol-chars))
+;; 0))
+;; (not (get-text-property (point) 'face)))
+;; (c-put-font-lock-face id-beginning (point) font-lock-face)
+;; (c-forward-syntactic-ws))))
+
+;; (c-lang-defconst c-basic-matchers-before
+;; csharp `(
+;; ;; Warning face on unclosed strings
+;; ,@(if (version< emacs-version "27.0")
+;; ;; Taken from 26.1 branch
+;; `(,(c-make-font-lock-search-function
+;; (concat ".\\(" c-string-limit-regexp "\\)")
+;; '((c-font-lock-invalid-string))))
+;; `(("\\s|" 0 font-lock-warning-face t nil)))
+
+;; ;; Invalid single quotes
+;; c-font-lock-invalid-single-quotes
+
+;; ;; Keyword constants
+;; ,@(when (c-lang-const c-constant-kwds)
+;; (let ((re (c-make-keywords-re nil (c-lang-const
c-constant-kwds))))
+;; `((eval . (list ,(concat "\\<\\(" re "\\)\\>")
+;; 1 c-constant-face-name)))))
+
+;; ;; Keywords except the primitive types.
+;; ,`(,(concat "\\<" (c-lang-const c-regular-keywords-regexp))
+;; 1 font-lock-keyword-face)
+
+;; ;; Chained identifiers in using/namespace statements
+;; ,`(,(c-make-font-lock-search-function
+;; csharp--regex-using-or-namespace
+;; `((csharp--color-forwards font-lock-variable-name-face)
+;; nil
+;; (goto-char (match-end 0)))))
+
+
+;; ;; Negation character
+;; (eval . (list "\\(!\\)[^=]" 1 c-negation-char-face-name))
+
+;; ;; Types after 'new'
+;; (eval . (list (concat "\\<new\\> *"
csharp--regex-type-name-matcher)
+;; 1 font-lock-type-face))
+
+;; ;; Single identifier in attribute
+;; (eval . (list (concat "\\[" csharp--regex-type-name-matcher
"\\][^;]")
+;; 1 font-lock-variable-name-face t))
+
+;; ;; Function names
+;; (eval . (list "\\([A-Za-z0-9_]+\\)\\(<[a-zA-Z0-9, ]+>\\)?("
+;; 1 font-lock-function-name-face))
+
+;; ;; Nameof
+;; (eval . (list (concat "\\(\\<nameof\\>\\) *(")
+;; 1 font-lock-function-name-face))
+
+;; (eval . (list (concat "\\<nameof\\> *( *"
+;; csharp--regex-identifier-matcher
+;; " *) *")
+;; 1 font-lock-variable-name-face))
+
+;; ;; Catch statements with type only
+;; (eval . (list (concat "\\<catch\\> *( *"
+;; csharp--regex-type-name-matcher
+;; " *) *")
+;; 1 font-lock-type-face))
+;; ))
+
+;; (c-lang-defconst c-basic-matchers-after
+;; csharp (append
+;; ;; Merge with cc-mode defaults - enables us to add more later
+;; (c-lang-const c-basic-matchers-after)))
+
+;; (defcustom csharp-codedoc-tag-face 'c-doc-markup-face-name
+;; "Face to be used on the codedoc docstring tags.
+
+;; Should be one of the font lock faces, such as
+;; `font-lock-variable-name-face' and friends.
+
+;; Needs to be set before `csharp-mode' is loaded, because of
+;; compilation and evaluation time conflicts."
+;; :type 'symbol
+;; :group 'csharp)
+
+;; (defcustom csharp-font-lock-extra-types
+;; (list csharp--regex-type-name)
+;; (c-make-font-lock-extra-types-blurb "C#" "csharp-mode" (concat))
+;; :type 'c-extra-types-widget
+;; :group 'c)
+
+;; (defconst csharp-font-lock-keywords-1 (c-lang-const c-matchers-1 csharp)
+;; "Minimal font locking for C# mode.")
+
+;; (defconst csharp-font-lock-keywords-2 (c-lang-const c-matchers-2 csharp)
+;; "Fast normal font locking for C# mode.")
+
+;; (defconst csharp-font-lock-keywords-3 (c-lang-const c-matchers-3 csharp)
+;; "Accurate normal font locking for C# mode.")
+
+;; (defvar csharp-font-lock-keywords csharp-font-lock-keywords-3
+;; "Default expressions to highlight in C# mode.")
+
+;; (defun csharp-font-lock-keywords-2 ()
+;; (c-compose-keywords-list csharp-font-lock-keywords-2))
+;; (defun csharp-font-lock-keywords-3 ()
+;; (c-compose-keywords-list csharp-font-lock-keywords-3))
+;; (defun csharp-font-lock-keywords ()
+;; (c-compose-keywords-list csharp-font-lock-keywords))
;;; Compilation support
;; When invoked by MSBuild, csc’s errors look like this:
@@ -489,168 +492,168 @@ compilation and evaluation time conflicts."
;;; Doc comments
-(defconst codedoc-font-lock-doc-comments
- ;; Most of this is taken from the javadoc example, however, we don't use the
- ;; '@foo' syntax, so I removed that. Supports the XML tags only
- `((,(concat "</?\\sw" ; XML tags.
- "\\("
- (concat "\\sw\\|\\s \\|[=\n\r*.:]\\|"
- "\"[^\"]*\"\\|'[^']*'")
- "\\)*/?>")
- 0 ,csharp-codedoc-tag-face prepend nil)
- ;; ("\\([a-zA-Z0-9_]+\\)=" 0 font-lock-variable-name-face prepend nil)
- ;; ("\".*\"" 0 font-lock-string-face prepend nil)
- ("&\\(\\sw\\|[.:]\\)+;" ; XML entities.
- 0 ,csharp-codedoc-tag-face prepend nil)))
-
-(defconst codedoc-font-lock-keywords
- `((,(lambda (limit)
- (c-font-lock-doc-comments "///" limit
- codedoc-font-lock-doc-comments)))))
+;; (defconst codedoc-font-lock-doc-comments
+;; ;; Most of this is taken from the javadoc example, however, we don't use
the
+;; ;; '@foo' syntax, so I removed that. Supports the XML tags only
+;; `((,(concat "</?\\sw" ; XML tags.
+;; "\\("
+;; (concat "\\sw\\|\\s \\|[=\n\r*.:]\\|"
+;; "\"[^\"]*\"\\|'[^']*'")
+;; "\\)*/?>")
+;; 0 ,csharp-codedoc-tag-face prepend nil)
+;; ;; ("\\([a-zA-Z0-9_]+\\)=" 0 font-lock-variable-name-face prepend nil)
+;; ;; ("\".*\"" 0 font-lock-string-face prepend nil)
+;; ("&\\(\\sw\\|[.:]\\)+;" ; XML entities.
+;; 0 ,csharp-codedoc-tag-face prepend nil)))
+
+;; (defconst codedoc-font-lock-keywords
+;; `((,(lambda (limit)
+;; (c-font-lock-doc-comments "///" limit
+;; codedoc-font-lock-doc-comments)))))
;;; End of doc comments
;;; Adding syntax constructs
-(advice-add 'c-looking-at-inexpr-block
- :around 'csharp-looking-at-inexpr-block)
-
-(defun csharp-looking-at-inexpr-block (orig-fun &rest args)
- (let ((res (csharp-at-lambda-header)))
- (if res
- res
- (apply orig-fun args))))
-
-(defun csharp-at-lambda-header ()
- (save-excursion
- (c-backward-syntactic-ws)
- (unless (bobp)
- (backward-char)
- (c-safe (goto-char (scan-sexps (point) -1)))
- (when (or (looking-at "([[:alnum:][:space:]_,]*)[ \t\n]*=>[ \t\n]*{")
- (looking-at "[[:alnum:]_]+[ \t\n]*=>[ \t\n]*{"))
- ;; If we are at a C# lambda header
- (cons 'inexpr (point))))))
-
-(advice-add 'c-guess-basic-syntax
- :around 'csharp-guess-basic-syntax)
-
-(defun csharp-guess-basic-syntax (orig-fun &rest args)
- (cond
- (;; Attributes
- (save-excursion
- (goto-char (c-point 'iopl))
- (and
- (eq (char-after) ?\[)
- (save-excursion
- (c-go-list-forward)
- (and (eq (char-before) ?\])
- (not (eq (char-after) ?\;))))))
- `((annotation-top-cont ,(c-point 'iopl))))
-
- ((and
- ;; Heuristics to find object initializers
- (save-excursion
- ;; Next non-whitespace character should be '{'
- (goto-char (c-point 'boi))
- (eq (char-after) ?{))
- (save-excursion
- ;; 'new' should be part of the line
- (goto-char (c-point 'iopl))
- (looking-at ".*\\s *new\\s *.*"))
- ;; Line should not already be terminated
- (save-excursion
- (goto-char (c-point 'eopl))
- (or (not (eq (char-before) ?\;))
- (not (eq (char-before) ?\{)))))
- (if (save-excursion
- ;; if we have a hanging brace on line before
- (goto-char (c-point 'eopl))
- (eq (char-before) ?\{))
- `((brace-list-intro ,(c-point 'iopl)))
- `((block-open) (statement ,(c-point 'iopl)))))
- (t
- (apply orig-fun args))))
-
-;;; End of new syntax constructs
-
-
-
-;;; Fix for strings on version 27.1
-
-(when (version= emacs-version "27.1")
- ;; See:
- ;; https://github.com/josteink/csharp-mode/issues/175
- ;; https://github.com/josteink/csharp-mode/issues/151
- ;; for the full story.
- (defun c-pps-to-string-delim (end)
- (let* ((start (point))
- (no-st-s `(0 nil nil ?\" nil nil 0 nil ,start nil nil))
- (st-s `(0 nil nil t nil nil 0 nil ,start nil nil))
- no-st-pos st-pos
- )
- (parse-partial-sexp start end nil nil no-st-s 'syntax-table)
- (setq no-st-pos (point))
- (goto-char start)
- (while (progn
- (parse-partial-sexp (point) end nil nil st-s 'syntax-table)
- (unless (bobp)
- (c-clear-syn-tab (1- (point))))
- (setq st-pos (point))
- (and (< (point) end)
- (not (eq (char-before) ?\")))))
- (goto-char (min no-st-pos st-pos))
- nil))
-
- (defun c-multiline-string-check-final-quote ()
- (let (pos-ll pos-lt)
- (save-excursion
- (goto-char (point-max))
- (skip-chars-backward "^\"")
- (while
- (and
- (not (bobp))
- (cond
- ((progn
- (setq pos-ll (c-literal-limits)
- pos-lt (c-literal-type pos-ll))
- (memq pos-lt '(c c++)))
- ;; In a comment.
- (goto-char (car pos-ll)))
- ((save-excursion
- (backward-char) ; over "
- (c-is-escaped (point)))
- ;; At an escaped string.
- (backward-char)
- t)
- (t
- ;; At a significant "
- (c-clear-syn-tab (1- (point)))
- (setq pos-ll (c-literal-limits)
- pos-lt (c-literal-type pos-ll))
- nil)))
- (skip-chars-backward "^\""))
- (cond
- ((bobp))
- ((eq pos-lt 'string)
- (c-put-syn-tab (1- (point)) '(15)))
- (t nil))))))
-
-;;; End of fix for strings on version 27.1
-
-
-
-(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)))
+;; (advice-add 'c-looking-at-inexpr-block
+;; :around 'csharp-looking-at-inexpr-block)
+
+;; (defun csharp-looking-at-inexpr-block (orig-fun &rest args)
+;; (let ((res (csharp-at-lambda-header)))
+;; (if res
+;; res
+;; (apply orig-fun args))))
+
+;; (defun csharp-at-lambda-header ()
+;; (save-excursion
+;; (c-backward-syntactic-ws)
+;; (unless (bobp)
+;; (backward-char)
+;; (c-safe (goto-char (scan-sexps (point) -1)))
+;; (when (or (looking-at "([[:alnum:][:space:]_,]*)[ \t\n]*=>[ \t\n]*{")
+;; (looking-at "[[:alnum:]_]+[ \t\n]*=>[ \t\n]*{"))
+;; ;; If we are at a C# lambda header
+;; (cons 'inexpr (point))))))
+
+;; (advice-add 'c-guess-basic-syntax
+;; :around 'csharp-guess-basic-syntax)
+
+;; (defun csharp-guess-basic-syntax (orig-fun &rest args)
+;; (cond
+;; (;; Attributes
+;; (save-excursion
+;; (goto-char (c-point 'iopl))
+;; (and
+;; (eq (char-after) ?\[)
+;; (save-excursion
+;; (c-go-list-forward)
+;; (and (eq (char-before) ?\])
+;; (not (eq (char-after) ?\;))))))
+;; `((annotation-top-cont ,(c-point 'iopl))))
+
+;; ((and
+;; ;; Heuristics to find object initializers
+;; (save-excursion
+;; ;; Next non-whitespace character should be '{'
+;; (goto-char (c-point 'boi))
+;; (eq (char-after) ?{))
+;; (save-excursion
+;; ;; 'new' should be part of the line
+;; (goto-char (c-point 'iopl))
+;; (looking-at ".*\\s *new\\s *.*"))
+;; ;; Line should not already be terminated
+;; (save-excursion
+;; (goto-char (c-point 'eopl))
+;; (or (not (eq (char-before) ?\;))
+;; (not (eq (char-before) ?\{)))))
+;; (if (save-excursion
+;; ;; if we have a hanging brace on line before
+;; (goto-char (c-point 'eopl))
+;; (eq (char-before) ?\{))
+;; `((brace-list-intro ,(c-point 'iopl)))
+;; `((block-open) (statement ,(c-point 'iopl)))))
+;; (t
+;; (apply orig-fun args))))
+
+;; ;;; End of new syntax constructs
+
+
+
+;; ;;; Fix for strings on version 27.1
+
+;; (when (version= emacs-version "27.1")
+;; ;; See:
+;; ;; https://github.com/josteink/csharp-mode/issues/175
+;; ;; https://github.com/josteink/csharp-mode/issues/151
+;; ;; for the full story.
+;; (defun c-pps-to-string-delim (end)
+;; (let* ((start (point))
+;; (no-st-s `(0 nil nil ?\" nil nil 0 nil ,start nil nil))
+;; (st-s `(0 nil nil t nil nil 0 nil ,start nil nil))
+;; no-st-pos st-pos
+;; )
+;; (parse-partial-sexp start end nil nil no-st-s 'syntax-table)
+;; (setq no-st-pos (point))
+;; (goto-char start)
+;; (while (progn
+;; (parse-partial-sexp (point) end nil nil st-s 'syntax-table)
+;; (unless (bobp)
+;; (c-clear-syn-tab (1- (point))))
+;; (setq st-pos (point))
+;; (and (< (point) end)
+;; (not (eq (char-before) ?\")))))
+;; (goto-char (min no-st-pos st-pos))
+;; nil))
+
+;; (defun c-multiline-string-check-final-quote ()
+;; (let (pos-ll pos-lt)
+;; (save-excursion
+;; (goto-char (point-max))
+;; (skip-chars-backward "^\"")
+;; (while
+;; (and
+;; (not (bobp))
+;; (cond
+;; ((progn
+;; (setq pos-ll (c-literal-limits)
+;; pos-lt (c-literal-type pos-ll))
+;; (memq pos-lt '(c c++)))
+;; ;; In a comment.
+;; (goto-char (car pos-ll)))
+;; ((save-excursion
+;; (backward-char) ; over "
+;; (c-is-escaped (point)))
+;; ;; At an escaped string.
+;; (backward-char)
+;; t)
+;; (t
+;; ;; At a significant "
+;; (c-clear-syn-tab (1- (point)))
+;; (setq pos-ll (c-literal-limits)
+;; pos-lt (c-literal-type pos-ll))
+;; nil)))
+;; (skip-chars-backward "^\""))
+;; (cond
+;; ((bobp))
+;; ((eq pos-lt 'string)
+;; (c-put-syn-tab (1- (point)) '(15)))
+;; (t nil))))))
+
+;; ;;; End of fix for strings on version 27.1
+
+
+
+;; (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)))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-mode))
@@ -668,13 +671,16 @@ compilation and evaluation time conflicts."
Key bindings:
\\{csharp-mode-map}"
- :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)
+ (setq tree-sitter-hl-default-patterns
+ [["public"] @keyword])
+ (tree-sitter-hl-mode))
(provide 'csharp-mode)
- [elpa] externals/csharp-mode 6988939 448/459: Tweak mode to not require tree-sitter packages, (continued)
- [elpa] externals/csharp-mode 6988939 448/459: Tweak mode to not require tree-sitter packages, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 33e3042 446/459: Change ci setup to purcell/nix-emacs-ci (#236), ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 093f0f2 447/459: Add static as keyword in csharp-tree-sitter, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 96563d1 451/459: Add back in wrongly removed backtick, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 5f127e2 455/459: Add small notice about elpa in readme, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 2595b90 449/459: Revert "Tweak mode to not require tree-sitter packages", ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 166a5fb 340/459: Revert "Handle "nameof" entirely in c-basic-matchers-after.", ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 1e7bf8a 358/459: Update build.yml, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode a685c7f 359/459: Update build.yml, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode e2541a4 362/459: Update README.org, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode c1489db 370/459: First small tree-sitter query,
ELPA Syncer <=
- [elpa] externals/csharp-mode 2bf76fd 378/459: Fix csharp-mode initialization without forked tree-sitter, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 7e7353a 133/459: Imenu fixes: methods with comments, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 1de5644 227/459: using: Don't mess up alnums in indentifier-fontification., ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 8d43a70 229/459: Fix fontification of using-statements., ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 4da4c39 231/459: Fix fontification of namespaces to match using-statement rules., ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 5e47b77 260/459: Fix error handling multiline compiler-directives., ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 20efdc8 262/459: Add support for highlighting function-invocation., ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode d365498 307/459: Merge pull request #170 from josteink/compiler-fontifications, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 72c1912 314/459: Name change of codedoc functions, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode ecc3f38 317/459: Add annotation-top-cont as a new syntax construct, ELPA Syncer, 2021/08/22