Cargo.lock 🔗
@@ -17088,13 +17088,6 @@ dependencies = [
"uuid",
]
-[[package]]
-name = "zed_lua"
-version = "0.1.1"
-dependencies = [
- "zed_extension_api 0.1.0",
-]
-
[[package]]
name = "zed_proto"
version = "0.2.1"
Marshall Bowers created
This PR extracts the Lua extension to the
[zed-extensions/lua](https://github.com/zed-extensions/lua) repository.
Release Notes:
- N/A
Cargo.lock | 7
Cargo.toml | 1
docs/src/languages/lua.md | 2
extensions/lua/Cargo.toml | 16 --
extensions/lua/LICENSE-APACHE | 1
extensions/lua/extension.toml | 15 -
extensions/lua/languages/lua/brackets.scm | 3
extensions/lua/languages/lua/config.toml | 13 -
extensions/lua/languages/lua/embedding.scm | 10 -
extensions/lua/languages/lua/highlights.scm | 148 -------------------
extensions/lua/languages/lua/indents.scm | 10 -
extensions/lua/languages/lua/outline.scm | 3
extensions/lua/languages/lua/textobjects.scm | 7
extensions/lua/src/lua.rs | 170 ----------------------
14 files changed, 1 insertion(+), 405 deletions(-)
@@ -17088,13 +17088,6 @@ dependencies = [
"uuid",
]
-[[package]]
-name = "zed_lua"
-version = "0.1.1"
-dependencies = [
- "zed_extension_api 0.1.0",
-]
-
[[package]]
name = "zed_proto"
version = "0.2.1"
@@ -173,7 +173,6 @@ members = [
"extensions/glsl",
"extensions/haskell",
"extensions/html",
- "extensions/lua",
"extensions/perplexity",
"extensions/proto",
"extensions/purescript",
@@ -1,6 +1,6 @@
# Lua
-Lua support is available through the [Lua extension](https://github.com/zed-industries/zed/tree/main/extensions/lua).
+Lua support is available through the [Lua extension](https://github.com/zed-extensions/lua).
- Tree-sitter: [tree-sitter-grammars/tree-sitter-lua](https://github.com/tree-sitter-grammars/tree-sitter-lua)
- Language server: [LuaLS/lua-language-server](https://github.com/LuaLS/lua-language-server)
@@ -1,16 +0,0 @@
-[package]
-name = "zed_lua"
-version = "0.1.1"
-edition.workspace = true
-publish.workspace = true
-license = "Apache-2.0"
-
-[lints]
-workspace = true
-
-[lib]
-path = "src/lua.rs"
-crate-type = ["cdylib"]
-
-[dependencies]
-zed_extension_api = "0.1.0"
@@ -1 +0,0 @@
-../../LICENSE-APACHE
@@ -1,15 +0,0 @@
-id = "lua"
-name = "Lua"
-description = "Lua support."
-version = "0.1.1"
-schema_version = 1
-authors = ["Max Brunsfeld <max@zed.dev>"]
-repository = "https://github.com/zed-industries/zed"
-
-[language_servers.lua-language-server]
-name = "LuaLS"
-language = "Lua"
-
-[grammars.lua]
-repository = "https://github.com/tree-sitter-grammars/tree-sitter-lua"
-commit = "a24dab177e58c9c6832f96b9a73102a0cfbced4a"
@@ -1,3 +0,0 @@
-("[" @open "]" @close)
-("{" @open "}" @close)
-("(" @open ")" @close)
@@ -1,13 +0,0 @@
-name = "Lua"
-grammar = "lua"
-path_suffixes = ["lua"]
-line_comments = ["-- "]
-autoclose_before = ";:.,=}])>"
-brackets = [
- { start = "{", end = "}", close = true, newline = true },
- { start = "[", end = "]", close = true, newline = true },
- { start = "(", end = ")", close = true, newline = true },
- { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
- { start = "'", end = "'", close = true, newline = false, not_in = ["string"] },
-]
-collapsed_placeholder = "--[ ... ]--"
@@ -1,10 +0,0 @@
-(
- (comment)* @context
- .
- (function_declaration
- "function" @name
- name: (_) @name
- (comment)* @collapse
- body: (block) @collapse
- ) @item
-)
@@ -1,148 +0,0 @@
-;; Keywords
-
-[
- "do"
- "else"
- "elseif"
- "end"
- "for"
- "function"
- "goto"
- "if"
- "in"
- "local"
- "repeat"
- "return"
- "then"
- "until"
- "while"
- (break_statement)
-] @keyword
-
-;; Operators
-
-[
- "and"
- "not"
- "or"
-] @keyword.operator
-
-[
- "+"
- "-"
- "*"
- "/"
- "%"
- "^"
- "#"
- "=="
- "~="
- "<="
- ">="
- "<"
- ">"
- "="
- "&"
- "~"
- "|"
- "<<"
- ">>"
- "//"
- ".."
-] @operator
-
-;; Punctuations
-
-[
- ";"
- ":"
- ","
- "."
-] @punctuation.delimiter
-
-;; Brackets
-
-[
- "("
- ")"
- "["
- "]"
- "{"
- "}"
-] @punctuation.bracket
-
-;; Variables
-
-(identifier) @variable
-
-((identifier) @variable.special
- (#eq? @variable.special "self"))
-
-(variable_list
- attribute: (attribute
- (["<" ">"] @punctuation.bracket
- (identifier) @attribute)))
-
-;; Constants
-
-((identifier) @constant
- (#match? @constant "^[A-Z][A-Z_0-9]*$"))
-
-(vararg_expression) @constant
-
-(nil) @constant.builtin
-
-[
- (false)
- (true)
-] @boolean
-
-;; Tables
-
-(field name: (identifier) @property)
-
-(dot_index_expression field: (identifier) @property)
-
-(table_constructor
-[
- "{"
- "}"
-] @constructor)
-
-;; Functions
-
-(parameters (identifier) @parameter)
-
-(function_call
- name: [
- (identifier) @function
- (dot_index_expression field: (identifier) @function)
- ])
-
-(function_declaration
- name: [
- (identifier) @function.definition
- (dot_index_expression field: (identifier) @function.definition)
- ])
-
-(method_index_expression method: (identifier) @function.method)
-
-(function_call
- (identifier) @function.builtin
- (#any-of? @function.builtin
- ;; built-in functions in Lua 5.1
- "assert" "collectgarbage" "dofile" "error" "getfenv" "getmetatable" "ipairs"
- "load" "loadfile" "loadstring" "module" "next" "pairs" "pcall" "print"
- "rawequal" "rawget" "rawset" "require" "select" "setfenv" "setmetatable"
- "tonumber" "tostring" "type" "unpack" "xpcall"))
-
-;; Others
-
-(comment) @comment
-
-(hash_bang_line) @preproc
-
-(number) @number
-
-(string) @string
-(escape_sequence) @string.escape
@@ -1,10 +0,0 @@
-(if_statement "end" @end) @indent
-(do_statement "end" @end) @indent
-(while_statement "end" @end) @indent
-(for_statement "end" @end) @indent
-(repeat_statement "until" @end) @indent
-(function_declaration "end" @end) @indent
-
-(_ "[" "]" @end) @indent
-(_ "{" "}" @end) @indent
-(_ "(" ")" @end) @indent
@@ -1,3 +0,0 @@
-(function_declaration
- "function" @context
- name: (_) @name) @item
@@ -1,7 +0,0 @@
-(function_definition
- body: (_) @function.inside) @function.around
-
-(function_declaration
- body: (_) @function.inside) @function.around
-
-(comment)+ @comment.around
@@ -1,170 +0,0 @@
-use std::fs;
-use zed::lsp::CompletionKind;
-use zed::{CodeLabel, CodeLabelSpan, LanguageServerId};
-use zed_extension_api::{self as zed, Result};
-
-struct LuaExtension {
- cached_binary_path: Option<String>,
-}
-
-impl LuaExtension {
- fn language_server_binary_path(
- &mut self,
- language_server_id: &LanguageServerId,
- worktree: &zed::Worktree,
- ) -> Result<String> {
- if let Some(path) = worktree.which("lua-language-server") {
- return Ok(path);
- }
-
- if let Some(path) = &self.cached_binary_path {
- if fs::metadata(path).map_or(false, |stat| stat.is_file()) {
- return Ok(path.clone());
- }
- }
-
- zed::set_language_server_installation_status(
- language_server_id,
- &zed::LanguageServerInstallationStatus::CheckingForUpdate,
- );
- let release = zed::latest_github_release(
- "LuaLS/lua-language-server",
- zed::GithubReleaseOptions {
- require_assets: true,
- pre_release: false,
- },
- )?;
-
- let (platform, arch) = zed::current_platform();
- let asset_name = format!(
- "lua-language-server-{version}-{os}-{arch}.{extension}",
- version = release.version,
- os = match platform {
- zed::Os::Mac => "darwin",
- zed::Os::Linux => "linux",
- zed::Os::Windows => "win32",
- },
- arch = match arch {
- zed::Architecture::Aarch64 => "arm64",
- zed::Architecture::X8664 => "x64",
- zed::Architecture::X86 => return Err("unsupported platform x86".into()),
- },
- extension = match platform {
- zed::Os::Mac | zed::Os::Linux => "tar.gz",
- zed::Os::Windows => "zip",
- },
- );
-
- let asset = release
- .assets
- .iter()
- .find(|asset| asset.name == asset_name)
- .ok_or_else(|| format!("no asset found matching {:?}", asset_name))?;
-
- let version_dir = format!("lua-language-server-{}", release.version);
- let binary_path = format!(
- "{version_dir}/bin/lua-language-server{extension}",
- extension = match platform {
- zed::Os::Mac | zed::Os::Linux => "",
- zed::Os::Windows => ".exe",
- },
- );
-
- if !fs::metadata(&binary_path).map_or(false, |stat| stat.is_file()) {
- zed::set_language_server_installation_status(
- language_server_id,
- &zed::LanguageServerInstallationStatus::Downloading,
- );
-
- zed::download_file(
- &asset.download_url,
- &version_dir,
- match platform {
- zed::Os::Mac | zed::Os::Linux => zed::DownloadedFileType::GzipTar,
- zed::Os::Windows => zed::DownloadedFileType::Zip,
- },
- )
- .map_err(|e| format!("failed to download file: {e}"))?;
-
- let entries =
- fs::read_dir(".").map_err(|e| format!("failed to list working directory {e}"))?;
- for entry in entries {
- let entry = entry.map_err(|e| format!("failed to load directory entry {e}"))?;
- if entry.file_name().to_str() != Some(&version_dir) {
- fs::remove_dir_all(entry.path()).ok();
- }
- }
- }
-
- self.cached_binary_path = Some(binary_path.clone());
- Ok(binary_path)
- }
-}
-
-impl zed::Extension for LuaExtension {
- fn new() -> Self {
- Self {
- cached_binary_path: None,
- }
- }
-
- fn language_server_command(
- &mut self,
- language_server_id: &LanguageServerId,
- worktree: &zed::Worktree,
- ) -> Result<zed::Command> {
- Ok(zed::Command {
- command: self.language_server_binary_path(language_server_id, worktree)?,
- args: Default::default(),
- env: Default::default(),
- })
- }
-
- fn label_for_completion(
- &self,
- _language_server_id: &LanguageServerId,
- completion: zed::lsp::Completion,
- ) -> Option<CodeLabel> {
- match completion.kind? {
- CompletionKind::Method | CompletionKind::Function => {
- let name_len = completion.label.find('(').unwrap_or(completion.label.len());
- Some(CodeLabel {
- spans: vec![CodeLabelSpan::code_range(0..completion.label.len())],
- filter_range: (0..name_len).into(),
- code: completion.label,
- })
- }
- CompletionKind::Field => Some(CodeLabel {
- spans: vec![CodeLabelSpan::literal(
- completion.label.clone(),
- Some("property".into()),
- )],
- filter_range: (0..completion.label.len()).into(),
- code: Default::default(),
- }),
- _ => None,
- }
- }
-
- fn label_for_symbol(
- &self,
- _language_server_id: &LanguageServerId,
- symbol: zed::lsp::Symbol,
- ) -> Option<CodeLabel> {
- let prefix = "let a = ";
- let suffix = match symbol.kind {
- zed::lsp::SymbolKind::Method => "()",
- _ => "",
- };
- let code = format!("{prefix}{}{suffix}", symbol.name);
- Some(CodeLabel {
- spans: vec![CodeLabelSpan::code_range(
- prefix.len()..code.len() - suffix.len(),
- )],
- filter_range: (0..symbol.name.len()).into(),
- code,
- })
- }
-}
-
-zed::register_extension!(LuaExtension);