mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-05 13:00:08 -04:00
feat(javadoc): add parser and queries (#7749)
Previously java was configured to use doxygen parser for documentation comments, but javadocs are not doxygen. Inline tags have a different syntax, block tags are not recognized, and doxygen creates a lot of errors during highlighting. Add parser for javadoc comments, with queries for highlights and injections.
This commit is contained in:
parent
20a7e40203
commit
652da0b40f
6 changed files with 132 additions and 11 deletions
|
|
@ -380,6 +380,9 @@
|
|||
"java": {
|
||||
"revision": "a7db5227ec40fcfe94489559d8c9bc7c8181e25a"
|
||||
},
|
||||
"javadoc": {
|
||||
"revision": "8089a905454cbb7eac4ba6ec5495338169c60a56"
|
||||
},
|
||||
"javascript": {
|
||||
"revision": "6fbef40512dcd9f0a61ce03a4c9ae7597b36ab5c"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1127,6 +1127,14 @@ list.java = {
|
|||
maintainers = { "@p00f" },
|
||||
}
|
||||
|
||||
list.javadoc = {
|
||||
install_info = {
|
||||
url = "https://github.com/rmuir/tree-sitter-javadoc",
|
||||
files = { "src/parser.c", "src/scanner.c" },
|
||||
},
|
||||
maintainers = { "@rmuir" },
|
||||
}
|
||||
|
||||
list.javascript = {
|
||||
install_info = {
|
||||
url = "https://github.com/tree-sitter/tree-sitter-javascript",
|
||||
|
|
|
|||
|
|
@ -5,20 +5,13 @@
|
|||
(#set! injection.language "comment"))
|
||||
|
||||
((block_comment) @injection.content
|
||||
(#lua-match? @injection.content "/[*][!<*][^a-zA-Z]")
|
||||
(#set! injection.language "doxygen"))
|
||||
(#lua-match? @injection.content "/[*][*][%s]")
|
||||
(#set! injection.language "javadoc"))
|
||||
|
||||
; markdown-style javadocs: https://openjdk.org/jeps/467
|
||||
; markdown-style javadocs https://openjdk.org/jeps/467
|
||||
((line_comment) @injection.content
|
||||
(#lua-match? @injection.content "^///%s")
|
||||
(#offset! @injection.content 0 4 0 0)
|
||||
(#set! injection.language "markdown_inline"))
|
||||
|
||||
; markdown-style javadocs: https://openjdk.org/jeps/467
|
||||
((line_comment) @injection.content
|
||||
(#lua-match? @injection.content "^///%s+[@]")
|
||||
(#offset! @injection.content 0 4 0 0)
|
||||
(#set! injection.language "doxygen"))
|
||||
(#set! injection.language "javadoc"))
|
||||
|
||||
((method_invocation
|
||||
name: (identifier) @_method
|
||||
|
|
|
|||
86
queries/javadoc/highlights.scm
Normal file
86
queries/javadoc/highlights.scm
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
[
|
||||
(tag_name)
|
||||
"include"
|
||||
"exclude"
|
||||
] @nospell @keyword
|
||||
|
||||
(identifier) @nospell @variable
|
||||
|
||||
(fragment) @nospell @variable.member
|
||||
|
||||
(parameter
|
||||
name: (identifier) @variable.parameter)
|
||||
|
||||
(param_tag
|
||||
parameter_name: (identifier) @variable.parameter)
|
||||
|
||||
[
|
||||
(boolean_type)
|
||||
(integral_type)
|
||||
(floating_point_type)
|
||||
] @nospell @type.builtin
|
||||
|
||||
(module
|
||||
(identifier) @module)
|
||||
|
||||
(type
|
||||
(identifier) @type)
|
||||
|
||||
(type_parameter
|
||||
(identifier) @type)
|
||||
|
||||
(method
|
||||
(identifier) @function)
|
||||
|
||||
(member
|
||||
(identifier) @variable.member)
|
||||
|
||||
[
|
||||
(string_literal)
|
||||
(indexword)
|
||||
] @nospell @string
|
||||
|
||||
[
|
||||
(bare_format_string)
|
||||
(literal_format_string)
|
||||
] @nospell @string.special
|
||||
|
||||
(url) @nospell @markup.link.url
|
||||
|
||||
(attribute
|
||||
name: (identifier) @nospell @property)
|
||||
|
||||
(system_property) @nospell @property
|
||||
|
||||
(unsigned_integer) @number
|
||||
|
||||
(code) @nospell @markup.raw
|
||||
|
||||
[
|
||||
"="
|
||||
":"
|
||||
] @operator
|
||||
|
||||
[
|
||||
"/"
|
||||
"."
|
||||
","
|
||||
"..."
|
||||
"#"
|
||||
"##"
|
||||
] @punctuation.delimiter
|
||||
|
||||
[
|
||||
"{"
|
||||
"}"
|
||||
"("
|
||||
")"
|
||||
"["
|
||||
"]"
|
||||
] @punctuation.bracket
|
||||
|
||||
(param_tag
|
||||
[
|
||||
"<"
|
||||
">"
|
||||
] @punctuation.bracket)
|
||||
1
queries/javadoc/indents.scm
Normal file
1
queries/javadoc/indents.scm
Normal file
|
|
@ -0,0 +1 @@
|
|||
(document) @indent.auto
|
||||
30
queries/javadoc/injections.scm
Normal file
30
queries/javadoc/injections.scm
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
; @value tags without double-quotes
|
||||
((bare_format_string) @injection.content
|
||||
(#set! injection.language "printf"))
|
||||
|
||||
; @value tags with double quotes
|
||||
((literal_format_string) @injection.content
|
||||
(#offset! @injection.content 0 1 0 -1)
|
||||
(#set! injection.language "printf"))
|
||||
|
||||
; injected code snippets
|
||||
((snippet_tag
|
||||
(attributes
|
||||
(attribute
|
||||
name: (identifier) @_attribute_key
|
||||
value: (attribute_value
|
||||
[
|
||||
(identifier) @injection.language
|
||||
(string_literal
|
||||
(quoted_value) @injection.language)
|
||||
])))
|
||||
body: (description) @injection.content)
|
||||
(#eq? @_attribute_key "lang"))
|
||||
|
||||
; html content
|
||||
((description) @injection.content
|
||||
(#set! injection.language "html"))
|
||||
|
||||
; markdown content
|
||||
((markdown_description) @injection.content
|
||||
(#set! injection.language "markdown_inline"))
|
||||
Loading…
Add table
Add a link
Reference in a new issue