diff --git a/Cargo.lock b/Cargo.lock index f2946170..872d79e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2179,6 +2179,7 @@ dependencies = [ "tree-sitter-c", "tree-sitter-cpp", "tree-sitter-elixir", + "tree-sitter-elm", "tree-sitter-go", "tree-sitter-highlight", "tree-sitter-html", @@ -4567,6 +4568,16 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-elm" +version = "5.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d4c28acbbdb8a0d72a5eb181e05d29f664e6631c3182f1e3d9974ae900addf3" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-go" version = "0.19.1" diff --git a/lapce-core/Cargo.toml b/lapce-core/Cargo.toml index 543a6c2d..b8e2f836 100644 --- a/lapce-core/Cargo.toml +++ b/lapce-core/Cargo.toml @@ -30,6 +30,7 @@ tree-sitter-json = { version = "0.19.0", optional = true } tree-sitter-md = { git = "https://github.com/MDeiml/tree-sitter-markdown.git", version = "0.0.1", optional = true } tree-sitter-html = { version = "0.19.0", optional = true } tree-sitter-java = { git = "https://github.com/tree-sitter/tree-sitter-java.git", version = "0.20.0", optional = true } +tree-sitter-elm = { version = "5.6.0", optional = true } lsp-types = { version = "0.89.2", features = ["proposed"] } xi-rope = { git = "https://github.com/lapce/xi-editor", features = ["serde"] } lapce-rpc = { path = "../lapce-rpc" } @@ -54,3 +55,4 @@ lang-json = ["dep:tree-sitter-json"] lang-md = ["dep:tree-sitter-md"] lang-html = ["dep:tree-sitter-html"] lang-java = ["dep:tree-sitter-java"] +lang-elm = ["dep:tree-sitter-elm"] diff --git a/lapce-core/src/language.rs b/lapce-core/src/language.rs index 4727f1d2..d39714c1 100644 --- a/lapce-core/src/language.rs +++ b/lapce-core/src/language.rs @@ -130,6 +130,8 @@ pub enum LapceLanguage { Html, #[cfg(feature = "lang-java")] Java, + #[cfg(feature = "lang-elm")] + Elm, } // NOTE: Elements in the array must be in the same order as the enum variants of @@ -328,6 +330,16 @@ pub enum LapceLanguage { code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), extensions: &["java"], }, + #[cfg(feature = "lang-elm")] + SyntaxProperties { + id: LapceLanguage::Elm, + language: tree_sitter_elm::language, + highlight: tree_sitter_elm::HIGHLIGHTS_QUERY, + comment: "#", + indent: " ", + code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), + extensions: &["elm"], + }, ]; impl LapceLanguage { @@ -546,4 +558,9 @@ fn test_html_lang() { fn test_java_lang() { assert_language(LapceLanguage::Java, &["java"]); } + #[test] + #[cfg(feature = "lang-elm")] + fn test_elm_lang() { + assert_language(LapceLanguage::Elm, &["elm"]); + } } diff --git a/lapce-ui/Cargo.toml b/lapce-ui/Cargo.toml index 8882fe3a..135dd06d 100644 --- a/lapce-ui/Cargo.toml +++ b/lapce-ui/Cargo.toml @@ -73,7 +73,8 @@ all-languages = [ "lang-json", "lang-md", "lang-html", - "lang-java" + "lang-java", + "lang-elm" ] lang-rust = ["lapce-core/lang-rust"] lang-go = ["lapce-core/lang-go"] @@ -90,3 +91,4 @@ lang-json= ["lapce-core/lang-json"] lang-md = ["lapce-core/lang-md"] lang-html = ["lapce-core/lang-html"] lang-java = ["lapce-core/lang-java"] +lang-elm = ["lapce-core/lang-elm"] \ No newline at end of file