diff --git a/Cargo.lock b/Cargo.lock index 5182cf770c..5e4cfb4cfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5315,6 +5315,7 @@ dependencies = [ "tree-sitter-hcl", "tree-sitter-heex", "tree-sitter-html", + "tree-sitter-jsdoc", "tree-sitter-json 0.20.0", "tree-sitter-lua", "tree-sitter-markdown", @@ -10534,6 +10535,15 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-jsdoc" +version = "0.20.0" +source = "git+https://github.com/tree-sitter/tree-sitter-jsdoc#6a6cf9e7341af32d8e2b2e24a37fbfebefc3dc55" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-json" version = "0.19.0" diff --git a/Cargo.toml b/Cargo.toml index 1e4c2bcd55..2d9d075ba1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -296,6 +296,7 @@ tree-sitter-hcl = { git = "https://github.com/MichaHoffmann/tree-sitter-hcl", re rustc-demangle = "0.1.23" tree-sitter-heex = { git = "https://github.com/phoenixframework/tree-sitter-heex", rev = "2e1348c3cf2c9323e87c2744796cf3f3868aa82a" } tree-sitter-html = "0.19.0" +tree-sitter-jsdoc = { git = "https://github.com/tree-sitter/tree-sitter-jsdoc", ref = "6a6cf9e7341af32d8e2b2e24a37fbfebefc3dc55" } tree-sitter-json = { git = "https://github.com/tree-sitter/tree-sitter-json", rev = "40a81c01a40ac48744e0c8ccabbaba1920441199" } tree-sitter-lua = "0.0.14" tree-sitter-markdown = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "330ecab87a3e3a7211ac69bbadc19eabecdb1cca" } diff --git a/crates/languages/Cargo.toml b/crates/languages/Cargo.toml index 8b8891bc9a..32a987b07e 100644 --- a/crates/languages/Cargo.toml +++ b/crates/languages/Cargo.toml @@ -58,6 +58,7 @@ tree-sitter-haskell.workspace = true tree-sitter-hcl.workspace = true tree-sitter-heex.workspace = true tree-sitter-html.workspace = true +tree-sitter-jsdoc.workspace = true tree-sitter-json.workspace = true tree-sitter-lua.workspace = true tree-sitter-markdown.workspace = true diff --git a/crates/languages/src/javascript/injections.scm b/crates/languages/src/javascript/injections.scm new file mode 100644 index 0000000000..c83e501775 --- /dev/null +++ b/crates/languages/src/javascript/injections.scm @@ -0,0 +1,2 @@ +((comment) @content + (#set! "language" "jsdoc")) diff --git a/crates/languages/src/jsdoc/brackets.scm b/crates/languages/src/jsdoc/brackets.scm new file mode 100644 index 0000000000..24453c9da9 --- /dev/null +++ b/crates/languages/src/jsdoc/brackets.scm @@ -0,0 +1,2 @@ +("[" @open "]" @close) +("{" @open "}" @close) \ No newline at end of file diff --git a/crates/languages/src/jsdoc/config.toml b/crates/languages/src/jsdoc/config.toml new file mode 100644 index 0000000000..444e657a38 --- /dev/null +++ b/crates/languages/src/jsdoc/config.toml @@ -0,0 +1,7 @@ +name = "JSDoc" +grammar = "jsdoc" +autoclose_before = "]}" +brackets = [ + { start = "{", end = "}", close = true, newline = false }, + { start = "[", end = "]", close = true, newline = false }, +] diff --git a/crates/languages/src/jsdoc/highlights.scm b/crates/languages/src/jsdoc/highlights.scm new file mode 100644 index 0000000000..4b4266c9fd --- /dev/null +++ b/crates/languages/src/jsdoc/highlights.scm @@ -0,0 +1,2 @@ +(tag_name) @keyword +(type) @type diff --git a/crates/languages/src/lib.rs b/crates/languages/src/lib.rs index 07c298e057..c7b7527ef0 100644 --- a/crates/languages/src/lib.rs +++ b/crates/languages/src/lib.rs @@ -90,6 +90,7 @@ pub fn init( ("hcl", tree_sitter_hcl::language()), ("heex", tree_sitter_heex::language()), ("html", tree_sitter_html::language()), + ("jsdoc", tree_sitter_jsdoc::language()), ("json", tree_sitter_json::language()), ("lua", tree_sitter_lua::language()), ("markdown", tree_sitter_markdown::language()), @@ -258,6 +259,7 @@ pub fn init( Arc::new(tailwind::TailwindLspAdapter::new(node_runtime.clone())), ] ); + language!("jsdoc", vec![Arc::new(deno::DenoLspAdapter::new())]); } false => { language!( @@ -283,6 +285,12 @@ pub fn init( Arc::new(tailwind::TailwindLspAdapter::new(node_runtime.clone())), ] ); + language!( + "jsdoc", + vec![Arc::new(typescript::TypeScriptLspAdapter::new( + node_runtime.clone(), + ))] + ); } } diff --git a/crates/languages/src/tsx/injections.scm b/crates/languages/src/tsx/injections.scm new file mode 100644 index 0000000000..c83e501775 --- /dev/null +++ b/crates/languages/src/tsx/injections.scm @@ -0,0 +1,2 @@ +((comment) @content + (#set! "language" "jsdoc")) diff --git a/crates/languages/src/typescript/injections.scm b/crates/languages/src/typescript/injections.scm new file mode 100644 index 0000000000..c83e501775 --- /dev/null +++ b/crates/languages/src/typescript/injections.scm @@ -0,0 +1,2 @@ +((comment) @content + (#set! "language" "jsdoc"))