diff --git a/Cargo.lock b/Cargo.lock index 511d03966..35d4247c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2696,6 +2696,7 @@ dependencies = [ "tree-sitter-haskell", "tree-sitter-java", "tree-sitter-javascript", + "tree-sitter-julia", "tree-sitter-kotlin-ng", "tree-sitter-lua", "tree-sitter-nix", @@ -5833,6 +5834,16 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-julia" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4144731a178812ee867619b1e98b3b91e54c1652304b26e5ebe3175b701de323" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "tree-sitter-kotlin-ng" version = "1.1.0" diff --git a/harper-comments/Cargo.toml b/harper-comments/Cargo.toml index 92105e22a..234c425d8 100644 --- a/harper-comments/Cargo.toml +++ b/harper-comments/Cargo.toml @@ -35,6 +35,7 @@ tree-sitter-toml-ng = "0.7.0" tree-sitter-typescript = "0.23.2" harper-tree-sitter-dart = "0.0.5" tree-sitter-clojure = "0.1.0" +tree-sitter-julia = "0.23.1" [dev-dependencies] paste = "1.0.15" diff --git a/harper-comments/src/comment_parser.rs b/harper-comments/src/comment_parser.rs index a414c2f6a..0eaf96ff0 100644 --- a/harper-comments/src/comment_parser.rs +++ b/harper-comments/src/comment_parser.rs @@ -34,6 +34,7 @@ impl CommentParser { "java" => tree_sitter_java::LANGUAGE, "javascript" => tree_sitter_javascript::LANGUAGE, "javascriptreact" => tree_sitter_typescript::LANGUAGE_TSX, + "julia" => tree_sitter_julia::LANGUAGE, "kotlin" => tree_sitter_kotlin_ng::LANGUAGE, "lua" => tree_sitter_lua::LANGUAGE, "nix" => tree_sitter_nix::LANGUAGE, @@ -92,6 +93,7 @@ impl CommentParser { "java" => "java", "js" => "javascript", "jsx" => "javascriptreact", + "jl" => "julia", "kt" | "kts" => "kotlin", "lua" => "lua", "nix" => "nix", diff --git a/harper-comments/tests/language_support.rs b/harper-comments/tests/language_support.rs index 3a87d23ca..b875174d2 100644 --- a/harper-comments/tests/language_support.rs +++ b/harper-comments/tests/language_support.rs @@ -62,6 +62,7 @@ create_test!(ignore_shebang_4.sh, 1); create_test!(common.mill, 1); create_test!(basic_kotlin.kt, 0); create_test!(basic.clj, 12); +create_test!(julia.jl, 11); // Checks that some comments are masked out create_test!(ignore_comments.rs, 1); diff --git a/harper-comments/tests/language_support_sources/julia.jl b/harper-comments/tests/language_support_sources/julia.jl new file mode 100644 index 000000000..5c403fb5f --- /dev/null +++ b/harper-comments/tests/language_support_sources/julia.jl @@ -0,0 +1,31 @@ +""" + test(x::Number, y::String, z...) + +This is a doctring for function `test`. `x test y test z test...` calls this function with +several arguments, like `*(x, y, z...)`. + +# Arguments +- `x::Number`: a number +- `y::String`: a string +- `z::Vector`: a vector + +# Examples +```jldoctest +julia> a = [1 2; 3 4] +2×2 Matrix{Int64}: + 1 2 + 3 4 +``` +""" +function test(x::Number, y::String, z::Vector ...) + somethig = 1 # This is a inline comment with too mistakes. + return somethig +end + +"Here's a one-line docstring weeth weerd spelleeng." +x = 2 + +@doc raw""" +This is is annother wei too document zjierb. +""" +f(x) = x diff --git a/packages/vscode-plugin/package.json b/packages/vscode-plugin/package.json index 933c2a1d5..4aec712a7 100644 --- a/packages/vscode-plugin/package.json +++ b/packages/vscode-plugin/package.json @@ -46,6 +46,7 @@ "onLanguage:javascript", "onLanguage:javascriptreact", "onLanguage:jj-commit", + "onLanguage:julia", "onLanguage:kotlin", "onLanguage:literate haskell", "onLanguage:lua", diff --git a/packages/web/src/routes/docs/integrations/language-server/+page.md b/packages/web/src/routes/docs/integrations/language-server/+page.md index 4dfc48865..8c1ccaa1c 100644 --- a/packages/web/src/routes/docs/integrations/language-server/+page.md +++ b/packages/web/src/routes/docs/integrations/language-server/+page.md @@ -284,6 +284,7 @@ These configs are under the `markdown` key: | JavaScript | `javascript` | ✅ | | JavaScript React | `javascriptreact` | ✅ | | Jujutsu Description | `jj-commit`/`jjdescription` | | +| Julia | `julia` | ✅ | | Kotlin | `kotlin` | ✅ | | Literate Haskell | `lhaskell`/`literate haskell` | | | Lua | `lua` | ✅ |