From 880a729f4861ed9b01c83c960a0528fd15899f71 Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 10 Nov 2024 11:55:55 -0500 Subject: [PATCH] add cmake, dockerfile, php, toml and yaml tree-sitter support --- Cargo.lock | 51 ++++++++++++++++++++++++++++++++ crates/llm-ls/Cargo.toml | 5 ++++ crates/llm-ls/src/document.rs | 15 ++++++++++ crates/llm-ls/src/language_id.rs | 14 +++++++++ 4 files changed, 85 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index aa296ae..6cb9e7e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1003,7 +1003,9 @@ dependencies = [ "tree-sitter-bash", "tree-sitter-c", "tree-sitter-c-sharp", + "tree-sitter-cmake", "tree-sitter-cpp", + "tree-sitter-dockerfile", "tree-sitter-elixir", "tree-sitter-erlang", "tree-sitter-go", @@ -1013,13 +1015,16 @@ dependencies = [ "tree-sitter-json", "tree-sitter-lua", "tree-sitter-md", + "tree-sitter-php", "tree-sitter-python", "tree-sitter-r", "tree-sitter-ruby", "tree-sitter-rust", "tree-sitter-scala", "tree-sitter-swift", + "tree-sitter-toml", "tree-sitter-typescript", + "tree-sitter-yaml", "uuid", ] @@ -2379,6 +2384,15 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-cmake" +version = "0.5.0" +source = "git+https://code.blarg.ca/gered/tree-sitter-cmake.git?branch=tree-sitter-language#2a50b3b0ce318f11489dc8ec95ef165a84a262bf" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "tree-sitter-cpp" version = "0.23.1" @@ -2389,6 +2403,15 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-dockerfile" +version = "0.2.0" +source = "git+https://code.blarg.ca/gered/tree-sitter-dockerfile.git?branch=tree-sitter-language#ca73f2e024e2d6d92ddd785f7275ab2c6b6666eb" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "tree-sitter-elixir" version = "0.3.1" @@ -2485,6 +2508,16 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-php" +version = "0.23.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9e1c3e04e8aca119bebc6d26ea06b961e91c57c54d389531a62db2e8c79036" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "tree-sitter-python" version = "0.23.2" @@ -2545,6 +2578,15 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-toml" +version = "0.20.0" +source = "git+https://code.blarg.ca/gered/tree-sitter-toml.git?branch=tree-sitter-language#0975ccfb7d7c567cbf21d24bf198ff9515af371e" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "tree-sitter-typescript" version = "0.23.0" @@ -2555,6 +2597,15 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-yaml" +version = "0.6.1" +source = "git+https://code.blarg.ca/gered/tree-sitter-yaml.git?branch=tree-sitter-language#9ffe10a1b805e9ddcb926e7b0602ea7fc1b7f1e0" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "try-lock" version = "0.2.4" diff --git a/crates/llm-ls/Cargo.toml b/crates/llm-ls/Cargo.toml index 3be2f5f..cf21ff4 100644 --- a/crates/llm-ls/Cargo.toml +++ b/crates/llm-ls/Cargo.toml @@ -36,8 +36,10 @@ tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } tree-sitter = "0.24.3" tree-sitter-bash = "0.23.1" tree-sitter-c = "0.23.1" +tree-sitter-cmake = { git = "https://code.blarg.ca/gered/tree-sitter-cmake.git", branch = "tree-sitter-language" } tree-sitter-cpp = "0.23.1" tree-sitter-c-sharp = "0.23.0" +tree-sitter-dockerfile = { git = "https://code.blarg.ca/gered/tree-sitter-dockerfile.git", branch = "tree-sitter-language" } tree-sitter-elixir = "0.3.1" tree-sitter-erlang = "0.9.0" tree-sitter-go = "0.23.1" @@ -47,13 +49,16 @@ tree-sitter-javascript = "0.23.0" tree-sitter-json = "0.24.1" tree-sitter-lua = "0.2.0" tree-sitter-md = "0.3.2" +tree-sitter-php = "0.23.5" tree-sitter-python = "0.23.2" tree-sitter-r = "1.1.0" tree-sitter-ruby = "0.23.0" tree-sitter-rust = "0.23.0" tree-sitter-scala = "0.23.2" tree-sitter-swift = "0.6.0" +tree-sitter-toml = { git = "https://code.blarg.ca/gered/tree-sitter-toml.git", branch = "tree-sitter-language" } tree-sitter-typescript = "0.23.0" +tree-sitter-yaml = { git = "https://code.blarg.ca/gered/tree-sitter-yaml.git", branch = "tree-sitter-language" } [dependencies.uuid] version = "1.4" diff --git a/crates/llm-ls/src/document.rs b/crates/llm-ls/src/document.rs index e1236f0..5b72817 100644 --- a/crates/llm-ls/src/document.rs +++ b/crates/llm-ls/src/document.rs @@ -13,12 +13,18 @@ fn get_parser(language_id: LanguageId) -> Result { LanguageId::C => { Some(tree_sitter_c::LANGUAGE) } + LanguageId::Cmake => { + Some(tree_sitter_cmake::LANGUAGE) + } LanguageId::Cpp => { Some(tree_sitter_cpp::LANGUAGE) } LanguageId::CSharp => { Some(tree_sitter_c_sharp::LANGUAGE) } + LanguageId::Dockerfile => { + Some(tree_sitter_dockerfile::LANGUAGE) + } LanguageId::Elixir => { Some(tree_sitter_elixir::LANGUAGE) } @@ -46,6 +52,9 @@ fn get_parser(language_id: LanguageId) -> Result { LanguageId::Markdown => { Some(tree_sitter_md::LANGUAGE) } + LanguageId::Php => { + Some(tree_sitter_php::LANGUAGE_PHP) + } LanguageId::Python => { Some(tree_sitter_python::LANGUAGE) } @@ -64,12 +73,18 @@ fn get_parser(language_id: LanguageId) -> Result { LanguageId::Swift => { Some(tree_sitter_swift::LANGUAGE) } + LanguageId::Toml => { + Some(tree_sitter_toml::LANGUAGE) + } LanguageId::TypeScript => { Some(tree_sitter_typescript::LANGUAGE_TYPESCRIPT) } LanguageId::TypeScriptReact => { Some(tree_sitter_typescript::LANGUAGE_TSX) } + LanguageId::Yaml => { + Some(tree_sitter_yaml::LANGUAGE) + } LanguageId::Unknown => None, }; if let Some(language) = language { diff --git a/crates/llm-ls/src/language_id.rs b/crates/llm-ls/src/language_id.rs index b1c2822..ba12016 100644 --- a/crates/llm-ls/src/language_id.rs +++ b/crates/llm-ls/src/language_id.rs @@ -5,8 +5,10 @@ use std::fmt; pub(crate) enum LanguageId { Bash, C, + Cmake, Cpp, CSharp, + Dockerfile, Elixir, Erlang, Go, @@ -17,14 +19,17 @@ pub(crate) enum LanguageId { Json, Lua, Markdown, + Php, Python, R, Ruby, Rust, Scala, Swift, + Toml, TypeScript, TypeScriptReact, + Yaml, Unknown, } @@ -33,8 +38,10 @@ impl fmt::Display for LanguageId { match self { Self::Bash => write!(f, "shellscript"), Self::C => write!(f, "c"), + Self::Cmake => write!(f, "cmake"), Self::Cpp => write!(f, "cpp"), Self::CSharp => write!(f, "csharp"), + Self::Dockerfile => write!(f, "dockerfile"), Self::Elixir => write!(f, "elixir"), Self::Erlang => write!(f, "erlang"), Self::Go => write!(f, "go"), @@ -45,14 +52,17 @@ impl fmt::Display for LanguageId { Self::Json => write!(f, "json"), Self::Lua => write!(f, "lua"), Self::Markdown => write!(f, "markdown"), + Self::Php => write!(f, "php"), Self::Python => write!(f, "python"), Self::R => write!(f, "r"), Self::Ruby => write!(f, "ruby"), Self::Rust => write!(f, "rust"), Self::Scala => write!(f, "scala"), Self::Swift => write!(f, "swift"), + Self::Toml => write!(f, "toml"), Self::TypeScript => write!(f, "typescript"), Self::TypeScriptReact => write!(f, "typescriptreact"), + Self::Yaml => write!(f, "yaml"), Self::Unknown => write!(f, "unknown"), } } @@ -62,8 +72,10 @@ impl From<&str> for LanguageId { fn from(value: &str) -> Self { match value { "c" => Self::C, + "cmake" => Self::Cmake, "cpp" => Self::Cpp, "csharp" => Self::CSharp, + "dockerfile" => Self::Dockerfile, "elixir" => Self::Elixir, "erlang" => Self::Erlang, "go" => Self::Go, @@ -81,8 +93,10 @@ impl From<&str> for LanguageId { "scala" => Self::Scala, "shellscript" => Self::Bash, "swift" => Self::Swift, + "toml" => Self::Toml, "typescript" => Self::TypeScript, "typescriptreact" => Self::TypeScriptReact, + "yaml" => Self::Yaml, _ => Self::Unknown, } }