Variable: csharp-ts-mode-map

csharp-ts-mode-map is a variable defined in csharp-mode.el.gz.

Value


Documentation

Keymap for csharp-ts-mode.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/csharp-mode.el.gz
;;;###autoload
(define-derived-mode csharp-ts-mode prog-mode "C#"
  "Major mode for editing C# code."
  :syntax-table (csharp--make-mode-syntax-table)

  (unless (treesit-ensure-installed 'c-sharp)
    (error "Tree-sitter for C# isn't available"))

  ;; Tree-sitter.
  (setq treesit-primary-parser (treesit-parser-create 'c-sharp))

  ;; Comments.
  (c-ts-common-comment-setup)

  (setq-local treesit-thing-settings
              `((c-sharp
                 (list
                  ,(rx bos (or "global_attribute"
                               "attribute_argument_list"
                               "attribute_list"
                               "enum_member_declaration_list"
                               "type_parameter_list"
                               "declaration_list"
                               "accessor_list"
                               "bracketed_parameter_list"
                               "parameter_list"
                               "argument_list"
                               "tuple_pattern"
                               "block"
                               "bracketed_argument_list"
                               "type_argument_list"
                               "array_rank_specifier"
                               "function_pointer_type"
                               "tuple_type"
                               "_for_statement_conditions"
                               "switch_body"
                               "catch_declaration"
                               "catch_filter_clause"
                               "parenthesized_pattern"
                               "list_pattern"
                               "positional_pattern_clause"
                               "property_pattern_clause"
                               "parenthesized_variable_designation"
                               "_switch_expression_body"
                               "interpolated_string_expression"
                               "interpolation"
                               "parenthesized_expression"
                               "_parenthesized_lvalue_expression"
                               "anonymous_object_creation_expression"
                               "initializer_expression"
                               "_with_body"
                               "tuple_expression"
                               "preproc_parenthesized_expression")
                       eos))
                 (sentence
                  ,(rx bos (or "extern_alias_directive"
                               "using_directive"
                               "file_scoped_namespace_declaration"
                               "enum_declaration"
                               "delegate_declaration"
                               "_declaration_list_body"
                               "field_declaration"
                               "event_declaration"
                               "event_field_declaration"
                               "indexer_declaration"
                               "property_declaration"
                               "_function_body"
                               "break_statement"
                               "continue_statement"
                               "do_statement"
                               "empty_statement"
                               "expression_statement"
                               "return_statement"
                               "yield_statement"
                               "throw_statement"
                               "goto_statement"
                               "local_declaration_statement")
                       eos))
                 (text
                  ,(regexp-opt '("comment"
                                 "verbatim_string-literal"
                                 "interpolated_verbatim_string-text"))))))

  ;; Indent.
  (setq-local treesit-simple-indent-rules csharp-ts-mode--indent-rules)

  ;; Electric
  (setq-local electric-indent-chars
              (append "{}():;," electric-indent-chars))

  ;; Navigation.
  (setq-local treesit-defun-type-regexp "declaration")
  (setq-local treesit-defun-name-function #'csharp-ts-mode--defun-name)

  ;; Font-lock.
  (setq-local treesit-font-lock-settings (csharp-ts-mode--font-lock-settings))
  (setq-local treesit-font-lock-feature-list
              '(( comment definition)
                ( keyword string type directives)
                ( constant escape-sequence expression literal attribute)
                ( function bracket delimiter error)))

  ;; Imenu.
  (setq-local treesit-simple-imenu-settings
              '(("Class" "\\`class_declaration\\'" nil nil)
                ("Interface" "\\`interface_declaration\\'" nil nil)
                ("Enum" "\\`enum_declaration\\'" nil nil)
                ("Record" "\\`record_declaration\\'" nil nil)
                ("Struct" "\\`struct_declaration\\'" nil nil)
                ("Method" "\\`method_declaration\\'" nil nil)))

  ;; Outline minor mode.
  (setq-local treesit-outline-predicate
              (rx bos (or "namespace_declaration"
                          "class_declaration"
                          "interface_declaration"
                          "enum_declaration"
                          "record_declaration"
                          "struct_declaration"
                          "method_declaration"
                          "local_function_statement")
                  eos))

  (treesit-major-mode-setup))