[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/csharp-mode 4651004 391/459: Hassle with the defcustoms
From: |
ELPA Syncer |
Subject: |
[elpa] externals/csharp-mode 4651004 391/459: Hassle with the defcustoms |
Date: |
Sun, 22 Aug 2021 14:00:08 -0400 (EDT) |
branch: externals/csharp-mode
commit 4651004aa410e7fe063e0225d3233996bc984fe3
Author: Theodor Thornhill <theo@thornhill.no>
Commit: Theodor Thornhill <theo@thornhill.no>
Hassle with the defcustoms
Easier to debug without them, also more indentation and highlights
---
csharp-mode.el | 392 ++++++++++++++++++++++++++-------------------------------
1 file changed, 175 insertions(+), 217 deletions(-)
diff --git a/csharp-mode.el b/csharp-mode.el
index dee37e3..4a7f88b 100644
--- a/csharp-mode.el
+++ b/csharp-mode.el
@@ -167,219 +167,6 @@
:type 'hook
:group 'csharp)
-(defcustom csharp-mode-keyword
- '(["using" "namespace" "class" "if" "else" "throw" "new" "for"
- "return" "await" "struct" "enum" "switch" "case"
- "default" "typeof" "try" "catch" "finally" "break"
- "foreach" "in" "yield" "get" "set" "interface"
- ] @keyword)
- "Patterns for keywords in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-various-construct
- '((comment) @comment
- (modifier) @keyword
- (this_expression) @keyword)
- "Patterns for various constructs."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-literal
- '([(real_literal) (integer_literal)] @number
- (null_literal) @constant
- (boolean_literal) @constant
- (character_literal) @string)
- "Patterns for literals in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-linq
- '((from_clause (identifier) @variable) @keyword
- (group_clause)
- (order_by_clause)
- (select_clause)
- (query_continuation (identifier) @variable) @keyword)
- "Patterns for linq queries in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-string
- '((interpolation (identifier) (interpolation_format_clause) @variable)
- (interpolation (identifier)* @variable)
- [(string_literal) (verbatim_string_literal)
(interpolated_string_expression)] @string)
- "Patterns for strings in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-enum
- '((enum_member_declaration (identifier) @variable)
- (enum_declaration (identifier) @type))
- "Patterns for enums in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-struct
- '((struct_declaration (identifier) @type))
- "Patterns for structs in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-namespace
- '((namespace_declaration
- name: (identifier) @type))
- "Patterns for namespaces in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-class
- '((base_list (identifier) @type)
- (property_declaration
- type: (identifier) @type
- name: (identifier) @variable)
- (class_declaration
- name: (identifier) @type)
- (constructor_declaration (identifier) @type))
- "Patterns for classes in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-interface
- '((interface_declaration
- name: (identifier) @type))
- "Patterns for interfaces in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-method
- '((method_declaration (identifier) @type (identifier) @function)
- (method_declaration (nullable_type) @type (identifier) @function)
- (method_declaration (void_keyword) @type (identifier) @function)
- (method_declaration (generic_name) (identifier) @function))
- "Patterns for methods in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-parameter
- '((parameter
- type: (identifier) @type
- name: (identifier) @variable)
- (parameter (identifier) @variable))
- "Patterns for parameters in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-array
- '((array_rank_specifier (identifier) @variable)
- (array_type (identifier) @type)
- (array_creation_expression))
- "Patterns for arrays in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-attribute
- '((attribute (identifier) @variable (attribute_argument_list))
- (attribute (identifier) @variable))
- "Patterns for attributes in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-object-init
- '((anonymous_object_creation_expression)
- (object_creation_expression (identifier) @type)
- (initializer_expression (identifier) @variable))
- "Patterns for object initialization in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-variable
- '((variable_declaration (identifier) @type)
- (variable_declarator (identifier) @variable))
- "Patterns for variables in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-type
- '((type_parameter
- (identifier) @type)
- (type_argument_list
- (identifier) @type)
- (generic_name
- (identifier) @type)
- (implicit_type) @type
- (predefined_type) @type
- (nullable_type) @type)
- "Patterns for types in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-expression
- '((binary_expression (identifier) @variable (identifier) @variable)
- (binary_expression (identifier)* @variable)
- (conditional_expression (identifier) @variable)
- (prefix_unary_expression (identifier)* @variable)
- (postfix_unary_expression (identifier)* @variable)
- (type_of_expression (identifier) @variable)
- (assignment_expression (identifier) @variable)
- (cast_expression (identifier) @type))
- "Patterns for expressions in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-preprocessor
- '((preprocessor_directive) @constant
- (preprocessor_call (identifier) @string))
- "Patterns for preprocessors in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-loop
- '((for_each_statement (identifier) @type (identifier) @variable (identifier)
@variable))
- "Patterns for loop constructs in csharp-mode."
- :type 'list
- :group 'csharp)
-
-(defcustom csharp-mode-default-patterns
- (apply #'vector
- (append csharp-mode-various-construct
- csharp-mode-literal
- csharp-mode-keyword
- csharp-mode-linq
- csharp-mode-string
- csharp-mode-enum
- csharp-mode-struct
- csharp-mode-namespace
- csharp-mode-class
- csharp-mode-interface
- csharp-mode-method
- csharp-mode-parameter
- csharp-mode-array
- csharp-mode-attribute
- csharp-mode-object-init
- csharp-mode-variable
- csharp-mode-type
- csharp-mode-expression
- csharp-mode-preprocessor
- csharp-mode-loop
- '((qualified_name (identifier) @type)
- (using_directive (identifier)* @type)
- (await_expression (identifier)* @function)
- (invocation_expression (identifier) @function)
- (element_access_expression (identifier) @variable)
- (conditional_access_expression (identifier) @variable)
- (member_binding_expression (identifier) @variable)
- (member_access_expression (identifier) @function)
- (name_colon (identifier)* @variable)
- (name_equals (identifier) @type)
- (field_declaration)
- (argument (identifier) @variable)
- ;; switch statement
- (switch_statement (identifier) @variable)
- )))
- "Default patterns for syntactic constructs in csharp-mode."
- :type 'list
- :group 'csharp)
-
;;;###autoload
(define-derived-mode csharp-mode prog-mode "C#"
"Major mode for editing Csharp code.
@@ -396,6 +183,7 @@ Key bindings:
(namespace_declaration
using_statement
class_declaration
+ struct_declaration
method_declaration
object_creation_expression
array_creation_expression
@@ -403,7 +191,8 @@ Key bindings:
local_function_statement
enum_declaration
for_each_statement
- if_statement))
+ if_statement
+ try_statement))
(indent-body . ;; if parent node is one of these and current node is
in middle → indent
())
@@ -417,15 +206,184 @@ Key bindings:
(multi-line-text . ;; if node is one of these, then don't modify the
indent
;; this is basically a peaceful way out by saying
"this looks like something
;; that cannot be indented using AST, so best I
leave it as-is"
- ())
+ (comment preprocessor_call label_name))
(outdent . ;; these nodes always outdent (1 shift in opposite
direction)
("}"))
)
)
(when (boundp 'electric-indent-inhibit)
(setq electric-indent-inhibit t))
- (setq-local indent-line-function #'tree-sitter-indent-line)
- (setq-local tree-sitter-hl-default-patterns csharp-mode-default-patterns)
+ (setq-local indent-line-function #'tree-sitter-indent-line-and-debug)
+
+ ;; 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
+ [ ;; Various constructs
+ (comment) @comment
+ (modifier) @keyword
+ (this_expression) @keyword
+
+ ;; Literals
+ [(real_literal) (integer_literal)] @number
+ (null_literal) @constant
+ (boolean_literal) @constant
+ (character_literal) @string
+
+ ;; Keywords
+ ["using" "namespace" "class" "if" "else" "throw" "new" "for"
+ "return" "await" "struct" "enum" "switch" "case"
+ "default" "typeof" "try" "catch" "finally" "break"
+ "foreach" "in" "yield" "get" "set" "when" "as" "out"
+ "is" "while" "continue" "this" "ref" "goto"
+ ] @keyword
+
+ ;; Linq
+ (from_clause (identifier) @variable) @keyword
+ (group_clause)
+ (order_by_clause)
+ (select_clause)
+ (query_continuation (identifier) @variable) @keyword
+
+ ;; String
+ (interpolation (identifier) (interpolation_format_clause)
@variable)
+ (interpolation (identifier)* @variable)
+ [(string_literal) (verbatim_string_literal)
(interpolated_string_expression)] @string
+
+ ;; Enum
+ (enum_member_declaration (identifier) @variable)
+ (enum_declaration (identifier) @type)
+
+ ;; Struct
+ (struct_declaration (identifier) @type)
+
+ ;; Namespace
+ (namespace_declaration
+ name: (identifier) @type)
+
+ ;; Class
+ (base_list (identifier) @type)
+ (property_declaration
+ type: (nullable_type) @type
+ name: (identifier) @variable)
+ (property_declaration
+ type: (predefined_type) @type
+ name: (identifier) @variable)
+ (property_declaration
+ type: (identifier) @type
+ name: (identifier) @variable)
+ (class_declaration
+ name: (identifier) @type)
+ (constructor_declaration (identifier) @type)
+
+ ;; Method
+ (method_declaration (identifier) @type (identifier) @function)
+ (method_declaration (predefined_type) @type (identifier)
@function)
+ (method_declaration (nullable_type) @type (identifier)
@function)
+ (method_declaration (void_keyword) @type (identifier) @function)
+ (method_declaration (generic_name) (identifier) @function)
+
+ ;; Function
+ (local_function_statement (identifier) @type (identifier)
@function)
+ (local_function_statement (predefined_type) @type (identifier)
@function)
+ (local_function_statement (nullable_type) @type (identifier)
@function)
+ (local_function_statement (void_keyword) @type (identifier)
@function)
+ (local_function_statement (generic_name) (identifier) @function)
+
+ ;; Parameter
+ (parameter
+ type: (identifier) @type
+ name: (identifier) @variable)
+ (parameter (identifier) @variable)
+
+ ;; Array
+ (array_rank_specifier (identifier) @variable)
+ (array_type (identifier) @type)
+ (array_creation_expression)
+
+ ;; Attribute
+ (attribute (identifier) @variable (attribute_argument_list))
+ (attribute (identifier) @variable)
+
+ ;; Object init
+ (anonymous_object_creation_expression)
+ (object_creation_expression (identifier) @type)
+ (initializer_expression (identifier) @variable)
+
+ ;; Variable
+ (variable_declaration (identifier) @type)
+ (variable_declarator (identifier) @variable)
+
+ ;; Equals value
+ (equals_value_clause (identifier) @variable)
+
+ ;; Return
+ (return_statement (identifier) @variable)
+ (yield_statement (identifier) @variable)
+
+ ;; Type
+ (type_parameter
+ (identifier) @type)
+ (type_argument_list
+ (identifier) @type)
+ (generic_name
+ (identifier) @type)
+ (implicit_type) @type
+ (predefined_type) @type
+ (nullable_type) @type
+ ["operator"] @type
+
+ ;; Exprs
+ (binary_expression (identifier) @variable (identifier)
@variable)
+ (binary_expression (identifier)* @variable)
+ (conditional_expression (identifier) @variable)
+ (prefix_unary_expression (identifier)* @variable)
+ (postfix_unary_expression (identifier)* @variable)
+ (type_of_expression (identifier) @variable)
+ (assignment_expression (identifier) @variable)
+ (cast_expression (identifier) @type)
+
+ ;; Preprocessor
+ (preprocessor_directive) @constant
+ (preprocessor_call (identifier) @string)
+
+ ;; Loop
+ (for_each_statement (identifier) @type (identifier) @variable)
+ (for_each_statement (implicit_type) @type (identifier)
@variable)
+ (for_each_statement (predefined_type) @type (identifier)
@variable)
+
+ ;; Exception
+ (catch_declaration (identifier) @type (identifier) @variable)
+ (catch_declaration (identifier) @type)
+
+ ;; Switch
+ (switch_statement (identifier) @variable)
+ (switch_expression (identifier) @variable)
+
+ ;; If
+ (if_statement (identifier) @variable)
+
+ ;; Declaration expression
+ (declaration_expression (implicit_type) (identifier) @variable)
+
+ ;; Arrow expression
+ (arrow_expression_clause (identifier) @variable)
+
+ ;; Other
+ (label_name) @variable
+ (qualified_name (identifier) @type)
+ (using_directive (identifier)* @type)
+ (await_expression (identifier)* @function)
+ (invocation_expression (identifier) @function)
+ (element_access_expression (identifier) @variable)
+ (conditional_access_expression (identifier) @variable)
+ (member_binding_expression (identifier) @variable)
+ (member_access_expression (identifier) @function)
+ (name_colon (identifier)* @variable)
+ (name_equals (identifier) @type)
+ (field_declaration)
+ (argument (identifier) @variable)
+ ])
;; Comments
(setq-local comment-start "// ")
(setq-local comment-end "")
- [elpa] externals/csharp-mode 9a9c92a 374/459: Many, many more things, (continued)
- [elpa] externals/csharp-mode 9a9c92a 374/459: Many, many more things, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 658adb2 376/459: Add support for namespace-declarations., ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 11d92b9 379/459: Various fixes, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 58928af 383/459: Indent object creation expression, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode a90b875 384/459: Add yield and object init indentation rules, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode eb3e9de 385/459: Almost functional indentation, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 512c858 386/459: Start extracting defcustoms, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode f94e5a7 387/459: More extracting, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 323a028 388/459: More cleaning, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 84a5daa 389/459: Should not need to autoload c_sharp, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 4651004 391/459: Hassle with the defcustoms,
ELPA Syncer <=
- [elpa] externals/csharp-mode 5ac7484 392/459: Add back better support for interfaces, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 4eef364 394/459: Absorb tree-sitter-indent, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 8fdeedf 397/459: Indentation tweaking, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 3d0b60c 399/459: Add a little documentation, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 0de2bbc 400/459: Fix byte compilation errors, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 5730c99 401/459: Split functionality to two files, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 4eeccbd 402/459: Remove newly added tests, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 1e37eaf 407/459: Add dependency to tree-sitter-indent, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 00a3cd4 410/459: Add new url to csharp-tree-sitter.el, ELPA Syncer, 2021/08/22
- [elpa] externals/csharp-mode 91d5161 414/459: Minor fix after version 0.11.0 (#209), ELPA Syncer, 2021/08/22