Compare commits

...

7 Commits

Author SHA1 Message Date
Zed Bot
cb2885410d Bump to 0.190.1 for @ConradIrwin 2025-06-06 03:11:19 +00:00
gcp-cherry-pick-bot[bot]
6535a148b5 Fix innermost brackets panic (cherry-pick #32120) (#32189)
Cherry-picked Fix innermost brackets panic (#32120)

Release Notes:

- Fixed a few rare panics that could happen when a multibuffer excerpt
started with expanded deleted content.

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2025-06-05 16:00:22 -06:00
gcp-cherry-pick-bot[bot]
fc3a5a799e Fix a panic in merge conflict parsing (cherry-pick #32119) (#32123)
Cherry-picked Fix a panic in merge conflict parsing (#32119)

Release Notes:

- Fixed a panic that could occur when editing files containing merge
conflicts.

Co-authored-by: Cole Miller <cole@zed.dev>
2025-06-04 20:32:12 -04:00
Max Brunsfeld
393382c448 Bump tree-sitter-bash to 0.25 (#32091)
Closes https://github.com/zed-industries/zed/issues/23703

Release Notes:

- Fixed a crash that could occur when editing bash files
2025-06-04 13:23:22 -04:00
Max Brunsfeld
2ad24ef799 Bump Tree-sitter to 0.25.6 (#32090)
Fixes #31810 

Release Notes:

- Fixed a crash that could occur when editing YAML files.
2025-06-04 12:55:46 -04:00
Vitaly Slobodin
185e0696ae ruby: Add sorbet and steep to the list of available language servers (#32008)
Hi, this pull request adds `sorbet` and `steep` to the list of available
language servers for the Ruby language in order to prepare default Ruby
language settings for these LS. Both language servers are disabled by
default. We plan to add both in #104 and #102. Thanks!

Release Notes:

- ruby: Added `sorbet` and `steep` to the list of available language servers.
2025-06-04 10:20:51 -04:00
Joseph T. Lyons
750c6356e7 v0.190.x preview 2025-06-04 10:12:33 -04:00
8 changed files with 46 additions and 13 deletions

10
Cargo.lock generated
View File

@@ -16509,9 +16509,9 @@ dependencies = [
[[package]]
name = "tree-sitter"
version = "0.25.5"
version = "0.25.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac5fff5c47490dfdf473b5228039bfacad9d765d9b6939d26bf7cc064c1c7822"
checksum = "a7cf18d43cbf0bfca51f657132cc616a5097edc4424d538bae6fa60142eaf9f0"
dependencies = [
"cc",
"regex",
@@ -16524,9 +16524,9 @@ dependencies = [
[[package]]
name = "tree-sitter-bash"
version = "0.23.3"
version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "329a4d48623ac337d42b1df84e81a1c9dbb2946907c102ca72db158c1964a52e"
checksum = "871b0606e667e98a1237ebdc1b0d7056e0aebfdc3141d12b399865d4cb6ed8a6"
dependencies = [
"cc",
"tree-sitter-language",
@@ -19708,7 +19708,7 @@ dependencies = [
[[package]]
name = "zed"
version = "0.190.0"
version = "0.190.1"
dependencies = [
"activity_indicator",
"agent",

View File

@@ -574,8 +574,8 @@ tokio = { version = "1" }
tokio-tungstenite = { version = "0.26", features = ["__rustls-tls"] }
toml = "0.8"
tower-http = "0.4.4"
tree-sitter = { version = "0.25.5", features = ["wasm"] }
tree-sitter-bash = "0.23"
tree-sitter = { version = "0.25.6", features = ["wasm"] }
tree-sitter-bash = "0.25.0"
tree-sitter-c = "0.23"
tree-sitter-cpp = "0.23"
tree-sitter-css = "0.23"

View File

@@ -1525,7 +1525,7 @@
"allow_rewrap": "anywhere"
},
"Ruby": {
"language_servers": ["solargraph", "!ruby-lsp", "!rubocop", "..."]
"language_servers": ["solargraph", "!ruby-lsp", "!rubocop", "!sorbet", "!steep", "..."]
},
"SCSS": {
"prettier": {

View File

@@ -6213,7 +6213,7 @@ impl MultiBufferSnapshot {
cursor.seek_to_start_of_current_excerpt();
let region = cursor.region()?;
let offset = region.range.start;
let buffer_offset = region.buffer_range.start;
let buffer_offset = start_excerpt.buffer_start_offset();
let excerpt_offset = cursor.excerpts.start().clone();
Some(MultiBufferExcerpt {
diff_transforms: cursor.diff_transforms,

View File

@@ -2842,6 +2842,22 @@ async fn test_random_multibuffer(cx: &mut TestAppContext, mut rng: StdRng) {
.unwrap()
+ 1
);
let reference_ranges = cx.update(|cx| {
reference
.excerpts
.iter()
.map(|excerpt| {
(
excerpt.id,
excerpt.range.to_offset(&excerpt.buffer.read(cx).snapshot()),
)
})
.collect::<HashMap<_, _>>()
});
for i in 0..snapshot.len() {
let excerpt = snapshot.excerpt_containing(i..i).unwrap();
assert_eq!(excerpt.buffer_range(), reference_ranges[&excerpt.id()]);
}
assert_consistent_line_numbers(&snapshot);
assert_position_translation(&snapshot);

View File

@@ -171,7 +171,8 @@ impl ConflictSet {
let mut conflicts = Vec::new();
let mut line_pos = 0;
let mut lines = buffer.text_for_range(0..buffer.len()).lines();
let buffer_len = buffer.len();
let mut lines = buffer.text_for_range(0..buffer_len).lines();
let mut conflict_start: Option<usize> = None;
let mut ours_start: Option<usize> = None;
@@ -212,7 +213,7 @@ impl ConflictSet {
&& theirs_start.is_some()
{
let theirs_end = line_pos;
let conflict_end = line_end + 1;
let conflict_end = (line_end + 1).min(buffer_len);
let range = buffer.anchor_after(conflict_start.unwrap())
..buffer.anchor_before(conflict_end);
@@ -390,6 +391,22 @@ mod tests {
assert_eq!(their_text, "This is their version in a nested conflict\n");
}
#[test]
fn test_conflict_markers_at_eof() {
let test_content = r#"
<<<<<<< ours
=======
This is their version
>>>>>>> "#
.unindent();
let buffer_id = BufferId::new(1).unwrap();
let buffer = Buffer::new(0, buffer_id, test_content.to_string());
let snapshot = buffer.snapshot();
let conflict_snapshot = ConflictSet::parse(&snapshot);
assert_eq!(conflict_snapshot.conflicts.len(), 1);
}
#[test]
fn test_conflicts_in_range() {
// Create a buffer with conflict markers

View File

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

View File

@@ -1 +1 @@
dev
preview