Change summary
crates/zed/src/languages.rs | 5 +++++
crates/zed/src/languages/go.rs | 9 +++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
Detailed changes
@@ -28,6 +28,11 @@ pub fn build_language_registry(login_shell_env_loaded: Task<()>) -> LanguageRegi
tree_sitter_cpp::language(),
Some(Arc::new(c::CLspAdapter) as Arc<dyn LspAdapter>),
),
+ (
+ "go",
+ tree_sitter_go::language(),
+ Some(Arc::new(go::GoLspAdapter) as Arc<dyn LspAdapter>),
+ ),
(
"json",
tree_sitter_json::language(),
@@ -26,6 +26,10 @@ impl super::LspAdapter for GoLspAdapter {
LanguageServerName("gopls".into())
}
+ fn server_args(&self) -> &[&str] {
+ &["-mode=stdio"]
+ }
+
fn fetch_latest_server_version(
&self,
http: Arc<dyn HttpClient>,
@@ -99,8 +103,9 @@ impl super::LspAdapter for GoLspAdapter {
let version_stdout = str::from_utf8(&version_output.stdout)
.map_err(|_| anyhow!("gopls version produced invalid utf8"))?;
let version = GOPLS_VERSION_REGEX
- .shortest_match(version_stdout)
- .ok_or_else(|| anyhow!("failed to parse gopls version output"))?;
+ .find(version_stdout)
+ .ok_or_else(|| anyhow!("failed to parse gopls version output"))?
+ .as_str();
let binary_path = container_dir.join(&format!("gopls_{version}"));
fs::rename(&installed_binary_path, &binary_path).await?;