Variable: java-ts-mode-map

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

Value


Documentation

Keymap for java-ts-mode.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/java-ts-mode.el.gz
;;;###autoload
(define-derived-mode java-ts-mode prog-mode "Java"
  "Major mode for editing Java, powered by tree-sitter."
  :group 'java
  :syntax-table java-ts-mode--syntax-table

  (unless (treesit-ensure-installed 'java)
    (error "Tree-sitter for Java isn't available"))

  (let ((primary-parser (treesit-parser-create 'java)))

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

    ;; Indent.
    (setq-local c-ts-common-indent-type-regexp-alist
                `((block . ,(rx (or "class_body"
                                    "array_initializer"
                                    "constructor_body"
                                    "annotation_type_body"
                                    "interface_body"
                                    "lambda_expression"
                                    "enum_body"
                                    "switch_block"
                                    "record_declaration_body"
                                    "block")))
                  (close-bracket . "}")
                  (if . "if_statement")
                  (else . ("if_statement" . "alternative"))
                  (for . "for_statement")
                  (while . "while_statement")
                  (do . "do_statement")))
    (setq-local c-ts-common-indent-offset 'java-ts-indent-offset)
    (setq-local treesit-simple-indent-rules java-ts-mode--indent-rules)
    (setq-local treesit-simple-indent-standalone-predicate
                #'java-ts-mode--standalone-predicate)
    (setq-local c-ts-common-list-indent-style 'simple)

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

    ;; Navigation.
    (setq-local treesit-defun-type-regexp
                (regexp-opt '("method_declaration"
                              "class_declaration"
                              "record_declaration"
                              "interface_declaration"
                              "enum_declaration"
                              "import_declaration"
                              "package_declaration"
                              "module_declaration"
                              "constructor_declaration")))
    (setq-local treesit-defun-name-function #'java-ts-mode--defun-name)

    (setq-local treesit-thing-settings
                `((java
                   (sexp (not (or (and named
                                       ,(rx bos (or "program"
                                                    "line_comment"
                                                    "block_comment")
                                            eos))
                                  (and anonymous
                                       ,(rx (or "{" "}" "[" "]"
                                                "(" ")" "<" ">"
                                                ","))))))
                   (list ,(rx bos (or "inferred_parameters"
                                      "parenthesized_expression"
                                      "argument_list"
                                      "type_arguments"
                                      "switch_block"
                                      "record_pattern_body"
                                      "block"
                                      "resource_specification"
                                      "annotation_argument_list"
                                      "element_value_array_initializer"
                                      "module_body"
                                      "enum_body"
                                      "type_parameters"
                                      "class_body"
                                      "constructor_body"
                                      "annotation_type_body"
                                      "interface_body"
                                      "array_initializer"
                                      "formal_parameters")
                              eos))
                   (sentence ,(rx (or "statement"
                                      "local_variable_declaration"
                                      "field_declaration"
                                      "module_declaration"
                                      "package_declaration"
                                      "import_declaration")))
                   (text ,(regexp-opt '("line_comment"
                                        "block_comment"
                                        "text_block"))))))

    ;; Font-lock.
    (setq-local treesit-font-lock-settings
                (java-ts-mode--font-lock-settings))

    ;; Inject doxygen parser for comment.
    (when (and java-ts-mode-enable-doxygen
               (treesit-ensure-installed 'doxygen))
      (setq-local treesit-primary-parser primary-parser)
      (setq-local treesit-font-lock-settings
                  (append treesit-font-lock-settings
                          c-ts-mode-doxygen-comment-font-lock-settings))
      (setq-local treesit-range-settings
                  (treesit-range-rules
                   :embed 'doxygen
                   :host 'java
                   :local t
                   `(((block_comment) @cap (:match "/\\*\\*" @cap)))))))

  (setq-local treesit-font-lock-feature-list java-ts-mode--feature-list)

  ;; Imenu.
  (setq-local treesit-simple-imenu-settings
              '(("Class" "\\`class_declaration\\'" nil nil)
                ("Interface" "\\`interface_declaration\\'" nil nil)
                ("Enum" "\\`record_declaration\\'" nil nil)
                ("Method" "\\`method_declaration\\'" nil nil)))
  ;; Outline minor mode
  (setq-local treesit-outline-predicate
              (rx bos (or "class_declaration"
                          "interface_declaration"
                          "method_declaration"
                          "constructor_declaration")
                  eos))

  (treesit-major-mode-setup))