Compare commits

...

6 Commits

Author SHA1 Message Date
Joseph T. Lyons
121bd97cb1 v0.176.x stable 2025-03-03 12:42:43 -05:00
gcp-cherry-pick-bot[bot]
2433e99d05 Reset buffer language on buffer search redeploy (cherry-pick #25797) (#25798)
Cherry-picked Reset buffer language on buffer search redeploy (#25797)

Closes https://github.com/zed-industries/zed/issues/25792

Release Notes:

- Fixed search input regex highlight not going away after redeploy

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2025-02-28 10:28:59 +02:00
Zed Bot
c75c2276b0 Bump to 0.176.1 for @maxdeviant 2025-02-27 16:45:00 +00:00
gcp-cherry-pick-bot[bot]
3659466f5b lsp: Use available workspace folders in initialize params (cherry-pick #25753) (#25757)
Cherry-picked lsp: Use available workspace folders in initialize params
(#25753)

Closes https://github.com/zed-industries/zed/issues/25743
Closes https://github.com/biomejs/biome-zed/issues/73

Release Notes:

- Fixed issues with launching Svelte/Biome language servers

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
2025-02-27 11:41:59 -05:00
gcp-cherry-pick-bot[bot]
a82d7aa2a9 vim: Fix search submit panic (cherry-pick #25673) (#25717)
Cherry-picked vim: Fix search submit panic (#25673)

In file search submit action, handle unwrap when there are no prior
selection.

Release Notes:

- vim: Fixed a panic when submitting a search.

---------

Co-authored-by: Anthony Eid <anthony@zed.dev>

Co-authored-by: smit <0xtimsb@gmail.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
2025-02-26 20:50:42 -05:00
Joseph T. Lyons
977e051983 v0.176.x preview 2025-02-26 12:52:09 -05:00
10 changed files with 44 additions and 24 deletions

2
Cargo.lock generated
View File

@@ -16732,7 +16732,7 @@ dependencies = [
[[package]]
name = "zed"
version = "0.176.0"
version = "0.176.1"
dependencies = [
"activity_indicator",
"anyhow",

View File

@@ -475,6 +475,7 @@ impl Copilot {
binary,
root_path,
None,
Default::default(),
cx.clone(),
)?;

View File

@@ -5,7 +5,7 @@ use futures::StreamExt;
use gpui::{App, AsyncApp, Task};
use http_client::github::latest_github_release;
pub use language::*;
use lsp::{InitializeParams, LanguageServerBinary, LanguageServerName};
use lsp::{LanguageServerBinary, LanguageServerName};
use project::Fs;
use regex::Regex;
use serde_json::json;
@@ -373,14 +373,6 @@ impl super::LspAdapter for GoLspAdapter {
filter_range,
})
}
fn prepare_initialize_params(
&self,
mut original: InitializeParams,
) -> Result<InitializeParams> {
#[allow(deprecated)]
let _ = original.root_uri.take();
Ok(original)
}
}
fn parse_version_output(output: &Output) -> Result<&str> {

View File

@@ -329,6 +329,7 @@ impl lsp_types::notification::Notification for ServerStatus {
impl LanguageServer {
/// Starts a language server process.
#[allow(clippy::too_many_arguments)]
pub fn new(
stderr_capture: Arc<Mutex<Option<String>>>,
server_id: LanguageServerId,
@@ -336,6 +337,7 @@ impl LanguageServer {
binary: LanguageServerBinary,
root_path: &Path,
code_action_kinds: Option<Vec<CodeActionKind>>,
workspace_folders: Arc<Mutex<BTreeSet<Url>>>,
cx: AsyncApp,
) -> Result<Self> {
let working_dir = if root_path.is_dir() {
@@ -383,6 +385,7 @@ impl LanguageServer {
code_action_kinds,
binary,
root_uri,
workspace_folders,
cx,
move |notification| {
log::info!(
@@ -409,6 +412,7 @@ impl LanguageServer {
code_action_kinds: Option<Vec<CodeActionKind>>,
binary: LanguageServerBinary,
root_uri: Url,
workspace_folders: Arc<Mutex<BTreeSet<Url>>>,
cx: AsyncApp,
on_unhandled_notification: F,
) -> Self
@@ -491,7 +495,7 @@ impl LanguageServer {
io_tasks: Mutex::new(Some((input_task, output_task))),
output_done_rx: Mutex::new(Some(output_done_rx)),
server: Arc::new(Mutex::new(server)),
workspace_folders: Default::default(),
workspace_folders,
root_uri,
}
}
@@ -617,6 +621,16 @@ impl LanguageServer {
}
pub fn default_initialize_params(&self, cx: &App) -> InitializeParams {
let workspace_folders = self
.workspace_folders
.lock()
.iter()
.cloned()
.map(|uri| WorkspaceFolder {
name: Default::default(),
uri,
})
.collect::<Vec<_>>();
#[allow(deprecated)]
InitializeParams {
process_id: None,
@@ -791,7 +805,7 @@ impl LanguageServer {
}),
},
trace: None,
workspace_folders: Some(vec![]),
workspace_folders: Some(workspace_folders),
client_info: release_channel::ReleaseChannel::try_global(cx).map(|release_channel| {
ClientInfo {
name: release_channel.display_name().to_string(),
@@ -1260,24 +1274,27 @@ impl LanguageServer {
}
pub fn set_workspace_folders(&self, folders: BTreeSet<Url>) {
let mut workspace_folders = self.workspace_folders.lock();
let old_workspace_folders = std::mem::take(&mut *workspace_folders);
let added: Vec<_> = folders
.iter()
.difference(&old_workspace_folders)
.map(|uri| WorkspaceFolder {
uri: uri.clone(),
name: String::default(),
})
.collect();
let removed: Vec<_> = std::mem::replace(&mut *workspace_folders, folders)
.into_iter()
let removed: Vec<_> = old_workspace_folders
.difference(&folders)
.map(|uri| WorkspaceFolder {
uri: uri.clone(),
name: String::default(),
})
.collect();
let should_notify = !added.is_empty() || !removed.is_empty();
if should_notify {
*workspace_folders = folders;
drop(workspace_folders);
let params = DidChangeWorkspaceFoldersParams {
event: WorkspaceFoldersChangeEvent { added, removed },
};
@@ -1392,6 +1409,7 @@ impl FakeLanguageServer {
let server_name = LanguageServerName(name.clone().into());
let process_name = Arc::from(name.as_str());
let root = Self::root_path();
let workspace_folders: Arc<Mutex<BTreeSet<Url>>> = Default::default();
let mut server = LanguageServer::new_internal(
server_id,
server_name.clone(),
@@ -1403,6 +1421,7 @@ impl FakeLanguageServer {
None,
binary.clone(),
root,
workspace_folders.clone(),
cx.clone(),
|_| {},
);
@@ -1421,6 +1440,7 @@ impl FakeLanguageServer {
None,
binary,
Self::root_path(),
workspace_folders,
cx.clone(),
move |msg| {
notifications_tx

View File

@@ -279,6 +279,7 @@ impl Prettier {
server_binary,
&prettier_dir,
None,
Default::default(),
cx.clone(),
)
.context("prettier server creation")?;

View File

@@ -206,14 +206,14 @@ impl LocalLspStore {
);
let binary = self.get_language_server_binary(adapter.clone(), delegate.clone(), true, cx);
let pending_workspace_folders: Arc<Mutex<BTreeSet<Url>>> = Default::default();
let pending_server = cx.spawn({
let adapter = adapter.clone();
let server_name = adapter.name.clone();
let stderr_capture = stderr_capture.clone();
#[cfg(any(test, feature = "test-support"))]
let lsp_store = self.weak.clone();
let pending_workspace_folders = pending_workspace_folders.clone();
move |cx| async move {
let binary = binary.await?;
#[cfg(any(test, feature = "test-support"))]
@@ -239,12 +239,12 @@ impl LocalLspStore {
binary,
&root_path,
adapter.code_action_kinds(),
pending_workspace_folders,
cx,
)
}
});
let pending_workspace_folders: Arc<Mutex<BTreeSet<Url>>> = Default::default();
let startup = {
let server_name = adapter.name.0.clone();
let delegate = delegate as Arc<dyn LspAdapterDelegate>;
@@ -7551,10 +7551,11 @@ impl LspStore {
// Update language_servers collection with Running variant of LanguageServerState
// indicating that the server is up and running and ready
let workspace_folders = workspace_folders.lock().clone();
local.language_servers.insert(
server_id,
LanguageServerState::running(
workspace_folders.lock().clone(),
workspace_folders,
adapter.clone(),
language_server.clone(),
None,

View File

@@ -820,6 +820,7 @@ impl BufferSearchBar {
}
self.dismissed = false;
self.adjust_query_regex_language(cx);
handle.search_bar_visibility_changed(true, window, cx);
cx.notify();
cx.emit(Event::UpdateLocation);

View File

@@ -187,9 +187,13 @@ impl Vim {
let direction = self.search.direction;
search_bar.has_active_match();
let new_head = new_selections.last().unwrap().start;
let old_head = self.search.prior_selections.last().unwrap().start;
let is_different_head = self
.search
.prior_selections
.last()
.map_or(true, |range| range.start != new_head);
if new_head != old_head && self.search.direction == Direction::Next {
if is_different_head && self.search.direction == Direction::Next {
count = count.saturating_sub(1)
}
self.search.count = 1;

View File

@@ -2,7 +2,7 @@
description = "The fast, collaborative code editor."
edition.workspace = true
name = "zed"
version = "0.176.0"
version = "0.176.1"
publish.workspace = true
license = "GPL-3.0-or-later"
authors = ["Zed Team <hi@zed.dev>"]

View File

@@ -1 +1 @@
dev
stable