diff --git a/Cargo.lock b/Cargo.lock index 9dabdb7a..2d0ebcf3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2180,19 +2180,24 @@ dependencies = [ "tree-sitter-cpp", "tree-sitter-elixir", "tree-sitter-elm", + "tree-sitter-glimmer", "tree-sitter-go", "tree-sitter-haskell", + "tree-sitter-haxe", + "tree-sitter-hcl", "tree-sitter-highlight", "tree-sitter-html", "tree-sitter-java", "tree-sitter-javascript", "tree-sitter-json", "tree-sitter-md", + "tree-sitter-ocaml", "tree-sitter-php", "tree-sitter-python", "tree-sitter-ql", "tree-sitter-ruby", "tree-sitter-rust", + "tree-sitter-scss", "tree-sitter-swift", "tree-sitter-toml", "tree-sitter-typescript", @@ -4582,6 +4587,15 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-glimmer" +version = "0.0.1" +source = "git+https://github.com/VixieTSQ/tree-sitter-glimmer#726c956eafa1ddc1d453292716c1e6a3ee7a33c4" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-go" version = "0.19.1" @@ -4601,6 +4615,24 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-haxe" +version = "0.0.1" +source = "git+https://github.com/VixieTSQ/tree-sitter-haxe#a3e23bc0f84a53371eb5d86229782ec6c21d3729" +dependencies = [ + "cc", + "tree-sitter", +] + +[[package]] +name = "tree-sitter-hcl" +version = "0.0.1" +source = "git+https://github.com/VixieTSQ/tree-sitter-hcl#fee8bab54172f972121d4e51f7de131d24922fa9" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-highlight" version = "0.20.1" @@ -4660,6 +4692,15 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-ocaml" +version = "0.20.0" +source = "git+https://github.com/tree-sitter/tree-sitter-ocaml#cc26b1ef111100f26a137bcbcd39fd4e35be9a59" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-php" version = "0.19.1" @@ -4707,6 +4748,15 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-scss" +version = "0.0.1" +source = "git+https://github.com/VixieTSQ/tree-sitter-scss?branch=patch-1#3aac3391ede5098edbf4cc8a9f6d0cfdfe28e5dc" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-swift" version = "0.3.0" diff --git a/lapce-core/Cargo.toml b/lapce-core/Cargo.toml index 436f138e..1178c4f2 100644 --- a/lapce-core/Cargo.toml +++ b/lapce-core/Cargo.toml @@ -34,6 +34,11 @@ tree-sitter-elm = { version = "5.6.0", optional = true } tree-sitter-swift = { version = "0.3.0", optional = true } tree-sitter-ql = { git = "https://github.com/tree-sitter/tree-sitter-ql", version = "0.19.0", optional = true } tree-sitter-haskell = { git = "https://github.com/tree-sitter/tree-sitter-haskell", version = "0.14.0", optional = true } +tree-sitter-ocaml = { git = "https://github.com/tree-sitter/tree-sitter-ocaml", version = "0.20.0", optional = true } +tree-sitter-glimmer = { git = "https://github.com/VixieTSQ/tree-sitter-glimmer", version = "0.0.1", optional = true } +tree-sitter-haxe = { git = "https://github.com/VixieTSQ/tree-sitter-haxe", version = "0.0.1", optional = true } +tree-sitter-hcl = { git = "https://github.com/VixieTSQ/tree-sitter-hcl", version = "0.0.1", optional = true } +tree-sitter-scss = { git = "https://github.com/VixieTSQ/tree-sitter-scss", version = "0.0.1", branch = "patch-1", 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" } @@ -62,3 +67,8 @@ lang-elm = ["dep:tree-sitter-elm"] lang-swift = ["dep:tree-sitter-swift"] lang-ql = ["dep:tree-sitter-ql"] lang-haskell = ["dep:tree-sitter-haskell"] +lang-ocaml = ["dep:tree-sitter-ocaml"] +lang-glimmer = ["dep:tree-sitter-glimmer"] +lang-haxe = ["dep:tree-sitter-haxe"] +lang-hcl = ["dep:tree-sitter-hcl"] +lang-scss = ["dep:tree-sitter-scss"] \ No newline at end of file diff --git a/lapce-core/src/language.rs b/lapce-core/src/language.rs index b3b80eb5..ed67cba8 100644 --- a/lapce-core/src/language.rs +++ b/lapce-core/src/language.rs @@ -138,6 +138,18 @@ pub enum LapceLanguage { QL, #[cfg(feature = "lang-haskell")] Haskell, + #[cfg(feature = "lang-glimmer")] + Glimmer, + #[cfg(feature = "lang-haxe")] + Haxe, + #[cfg(feature = "lang-hcl")] + HCL, + #[cfg(feature = "lang-ocaml")] + OCaml, + #[cfg(feature = "lang-ocaml")] + OCamlInterface, + #[cfg(feature = "lang-scss")] + SCSS, } // NOTE: Elements in the array must be in the same order as the enum variants of @@ -376,6 +388,66 @@ pub enum LapceLanguage { code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), extensions: &["hs"], }, + #[cfg(feature = "lang-glimmer")] + SyntaxProperties { + id: LapceLanguage::Glimmer, + language: tree_sitter_glimmer::language, + highlight: tree_sitter_glimmer::HIGHLIGHTS_QUERY, + comment: "{{!", + indent: " ", + code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), + extensions: &["hbs"], + }, + #[cfg(feature = "lang-haxe")] + SyntaxProperties { + id: LapceLanguage::Haxe, + language: tree_sitter_haxe::language, + highlight: tree_sitter_haxe::HIGHLIGHTS_QUERY, + comment: "//", + indent: " ", + code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), + extensions: &["hx"], + }, + #[cfg(feature = "lang-hcl")] + SyntaxProperties { + id: LapceLanguage::HCL, + language: tree_sitter_hcl::language, + highlight: tree_sitter_hcl::HIGHLIGHTS_QUERY, + comment: "//", + indent: " ", + code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), + extensions: &["hcl"], + }, + #[cfg(feature = "lang-ocaml")] + SyntaxProperties { + id: LapceLanguage::OCaml, + language: tree_sitter_ocaml::language_ocaml, + highlight: tree_sitter_ocaml::HIGHLIGHTS_QUERY, + comment: "(*", + indent: " ", + code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), + extensions: &["ml"], + }, + #[cfg(feature = "lang-ocaml")] + SyntaxProperties { + id: LapceLanguage::OCaml, + language: tree_sitter_ocaml::language_ocaml_interface, + highlight: tree_sitter_ocaml::HIGHLIGHTS_QUERY, + comment: "(*", + indent: " ", + code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), + extensions: &["mli"], + }, + #[cfg(feature = "lang-scss")] + SyntaxProperties { + id: LapceLanguage::SCSS, + language: tree_sitter_scss::language, + highlight: tree_sitter_scss::HIGHLIGHTS_QUERY, + comment: "//", + indent: " ", + code_lens: (DEFAULT_CODE_LENS_LIST, DEFAULT_CODE_LENS_IGNORE_LIST), + extensions: &["scss"], + }, ]; impl LapceLanguage { @@ -614,4 +686,25 @@ fn test_ql_lang() { fn test_haskell_lang() { assert_language(LapceLanguage::Haskell, &["hs"]); } + #[cfg(feature = "lang-glimmer")] + fn test_glimmer_lang() { + assert_language(LapceLanguage::Glimmer, &["hbs"]); + } + #[cfg(feature = "lang-haxe")] + fn test_haxe_lang() { + assert_language(LapceLanguage::Haxe, &["hx"]); + } + #[cfg(feature = "lang-hcl")] + fn test_hcl_lang() { + assert_language(LapceLanguage::HCL, &["hcl"]); + } + #[cfg(feature = "lang-ocaml")] + fn test_ocaml_lang() { + assert_language(LapceLanguage::OCaml, &["ml"]); + assert_language(LapceLanguage::OCamlInterface, &["mli"]); + } + #[cfg(feature = "lang-scss")] + fn test_scss_lang() { + assert_language(LapceLanguage::SCSS, &["scss"]); + } } diff --git a/lapce-ui/Cargo.toml b/lapce-ui/Cargo.toml index 35c6aa32..966c16a7 100644 --- a/lapce-ui/Cargo.toml +++ b/lapce-ui/Cargo.toml @@ -81,7 +81,13 @@ all-languages = [ "lang-swift", "lang-ql", "lang-haskell", + "lang-ocaml", + "lang-glimmer", + "lang-haxe", + "lang-hcl", + "lang-scss" ] + lang-rust = ["lapce-core/lang-rust"] lang-go = ["lapce-core/lang-go"] lang-javascript= ["lapce-core/lang-javascript"] @@ -100,4 +106,9 @@ lang-java = ["lapce-core/lang-java"] lang-elm = ["lapce-core/lang-elm"] lang-swift = ["lapce-core/lang-swift"] lang-ql = ["lapce-core/lang-ql"] -lang-haskell = ["lapce-core/lang-haskell"] \ No newline at end of file +lang-haskell = ["lapce-core/lang-haskell"] +lang-ocaml = ["lapce-core/lang-ocaml"] +lang-glimmer = ["lapce-core/lang-glimmer"] +lang-haxe = ["lapce-core/lang-haxe"] +lang-hcl = ["lapce-core/lang-hcl"] +lang-scss = ["lapce-core/lang-scss"] \ No newline at end of file