Adds more docstring highlights missing from #20486.
[PEP257](https://peps.python.org/pep-0257/) defines attribute docstrings
as
> String literals occurring immediately after a simple assignment at the
top level of a module, class, or __init__ method are called “attribute
docstrings”.
This PR adds `@string.doc` for such cases.
Before:

After:

Release Notes:
- Added Python syntax highlighting for attribute docstrings.
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
This PR fixes an issue where slash commands in the output of other slash
commands were not being evaluated when configured to do so.
Closes https://github.com/zed-industries/zed/issues/20820.
Release Notes:
- Fixed slash commands from other slash commands (like `/default`) not
being evaluated (Preview only).
Marshall Bowers
created
6a2c712
Use Instant not chrono for telemetry (#20756)
Click to expand commit body
We occasionally see dates in the future appearing in our telemetry. One
hypothesis is that this is caused by a clock change while Zed is running
causing date math based on chrono to be incorrect.
Instant *should* be a more stable source of relative timestamps.
Release Notes:
- N/A
Conrad Irwin
created
9454f0f
clangd: Use Url::to_file_path() to get actual file path for header/source (#20856)
Click to expand commit body
Using `Url::path()` seems fine on POSIX systems as it will leave forward
slash (given hostname is empty). On Windows it will result in error.
Release Notes:
- N/A
Egor Krugletsov
created
5b0c15d
Add pytest-based test discovery and runnables for Python (#18824)
Click to expand commit body
Closes #12080, #18649.
Screenshot:
<img width="1499" alt="image"
src="https://github.com/user-attachments/assets/2644c2fc-19cf-4d2c-a992-5c56cb22deed">
Still in progress:
1. I'd like to add configuration options for selecting a Python test
runner (either pytest or unittest) so that users can explicitly choose
which runner they'd like to use for running their tests. This preference
has to be configured as unittest-style tests can also be run by pytest,
meaning we can't rely on auto-discovery to choose the desired test
runner.
2. I'd like to add venv auto-discovery similar to the feature currently
provided by the terminal using detect_venv.
3. Unit tests.
Unfortunately I'm struggling a bit with how to add settings in the
appropriate location (e.g. Python language settings). Can anyone provide
me with some pointers and/or examples on how to either add extra
settings or to re-use the existing ones?
My rust programming level is OK-ish but I'm not very familiar with the
Zed project structure and could use some help.
I'm also open for pair programming as mentioned on the website if that
helps!
Release Notes:
- Added pytest-based test discovery and runnables for Python.
- Adds a configurable option for switching between unittest and pytest
as a test runner under Python language settings. Set "TASK_RUNNER" to
"unittest" under task settings for Python if you wish to use unittest to
run Python tasks; the default is pytest.
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Julian de Ruiter
and
Piotr Osiewicz
created
aae3907
editor: Show hints for using AI features on empty lines (#20824)
Click to expand commit body
Co-Authored-by: Thorsten <thorsten@zed.dev>
Co-Authored-by: Antonio <antonio@zed.dev>
Screenshot:

TODO:
- [x] docs
Release Notes:
- Added inline hints that guide users on how to invoke the inline
assistant and open the assistant panel. (These hints can be disabled by
setting `{"assistant": {"show_hints": false}}`.)
---------
Co-authored-by: Thorsten <thorsten@zed.dev>
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Thorsten Ball <mrnugget@gmail.com>
Bennet Bo Fenner
,
Thorsten
,
Antonio
, and
Thorsten Ball
created
a35b73e
Revert "remove usages of `theme::color_alpha`"
Click to expand commit body
This reverts commit c0d11be75f0a2febec1edc86c70a2594eca79b44.
Closes https://github.com/zed-industries/extensions/issues/1588.
| Before | After |
| --- | --- |
| 
| 
|
Release Notes:
- Added HTML injections for markdown syntax highlighting
uncenter
created
bd0f197
Create `RunningKernel` trait to allow for native and remote jupyter kernels (#20842)
Click to expand commit body
Starts setting up a `RunningKernel` trait to make the remote kernel
implementation easy to get started with. No release notes until this is
all hooked up.
Release Notes:
- N/A
Kyle Kelley
created
343c885
Improve file_types in default.json (#20429)
Click to expand commit body
Detect .env.* as Shell Script
Move non glob json/jsonc/toml file_types into langauges/*/config.toml
Peter Tripp
created
e7a0890
Don't call setAllowsAutomaticKeyEquivalentLocalization on Big Sur (#20844)
Click to expand commit body
Closes #20821
Release Notes:
- Fixed a crash on Big Sur (preview only)
Conrad Irwin
created
d4c5c0f
Don't render invisibles with elements (#20841)
Click to expand commit body
Turns out that in the case you have a somehow valid utf-8 file that
contains almost all ascii control characters, we run out of element
arena space.
Fixes: #20652
Release Notes:
- Fixed a crash when opening a file containing a very large number of
ascii control characters on one line.
Conrad Irwin
created
f0c7e62
Leave goal_x unchanged when moving by rows past the start or end of the document (#20705)
Click to expand commit body
Perhaps this was intentional behavior, but if not, I've attempted to
write this hacky fix — I noticed using the vertical arrow keys to move
past the document start/end would reset the goal_x to either zero (for
moving upwards) or the line width (for moving downwards). This change
makes Zed match most native text fields (at least on macOS) which leave
goal_x unchanged, even when hitting the end of the document.
I tested this change manually. Would be happy to add automatic tests for
it too, but couldn't find any existing cursor movement tests.
Release Notes:
- Behavior when moving vertically past the start or end of a document
now matches native text fields; it no longer resets the selection goal
lord
created
80d50f5
collab: Add feature flag to bypass account age check (#20843)
Click to expand commit body
This PR adds a `bypass-account-age-check` feature flag that can be used
to bypass the minimum account age check.
Release Notes:
- N/A
Marshall Bowers
created
fb6c987
python: Improve function syntax highlighting (#20487)
Click to expand commit body
Release Notes:
- Differentiate between function and method calls and definitions.
`function.definition` matches the highlight for e.g. rust,
`function.call` is new.
- Likewise differentiate between class calls and class definitions.
- Better highlighting of function decorators (the `@` symbol is
punctuation, and now the decorator itself has a `function.decorator`
tag)
- Make `cls` a special variable (like `self`)
- Add `ellipsis` as a built-in constant
Note that most themes do not currently make use of the
`function.definition` tags, and none make use of the
`type.class.definition` tag. Hopefully more themes will pick this up.
*Before:*
<img width="248" alt="image"
src="https://github.com/user-attachments/assets/550ccd3d-594c-413a-b543-ef9caf39eee1">
*After:*
<img width="245" alt="image"
src="https://github.com/user-attachments/assets/47aa43b1-006b-4f9f-9029-510880f390ea">
Carroll Wainwright
created
b4c2f29
Remove use of current `File` for new buffers that never have `File` (#20832)
Click to expand commit body
`create_buffer` calls `Buffer::local` which sets `file` to `None`
[here](https://github.com/zed-industries/zed/blob/f12981db32f9b936cd29e39ccc7f8a0b4e54cee1/crates/language/src/buffer.rs#L629).
So there's no point in then immediately attempting to update maps that
rely on `file` being present.
Release Notes:
- N/A
Restore ability to SSH to macOS arm remotes (`uname -m` on mac == `arm64`).
Fix regression introduced in https://github.com/zed-industries/zed/pull/20618
Closes: #12739
Release Notes:
Solves #12739 by
- Enable snippet parsing to successfully parse snippets with choices
- Show completion menu when tabbing to a snippet variable with multiple
choices
Todo:
- [x] Parse snippet choices
- [x] Open completion menu when tabbing to a snippet variable with
several choices (Thank you Piotr)
- [x] Get snippet choices to reappear when tabbing back to a previous
tabstop in a snippet
- [x] add snippet unit tests
- [x] Add fuzzy search to snippet choice completion menu & update
completion menu based on choices
- [x] add completion menu unit tests
Current State:
Using these custom snippets
```json
"my snippet": {
"prefix": "log",
"body": ["type ${1|i32, u32|} = $2"],
"description": "Expand `log` to `console.log()`"
},
"my snippet2": {
"prefix": "snip",
"body": [
"type ${1|i,i8,i16,i64,i32|} ${2|test,test_again,test_final|} = $3"
],
"description": "snippet choice tester"
}
```
Using snippet choices:
https://github.com/user-attachments/assets/d29fb1a2-7632-4071-944f-daeaa243e3ac
---------
Co-authored-by: Piotr Osiewicz <piotr@zed.dev>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Anthony Eid
,
Piotr Osiewicz
, and
Piotr Osiewicz
created
Fixes shellcheck errors in script/*
Adds a couple trailing newlines.
Adds `script/shellcheck-scripts` and associated CI machinery.
Current set ultra-conservative, does not output warnings, only errors.
- Don't output junk to stderr when cmake unavailable
- Kitware PPA does not include up to date bins for all distros (e.g.
Ubuntu 24 only has 3.30.2 although 3.30.4 has been out for a while) so
don't try to force install a specific version. Take the best we can get.
Peter Tripp
created
e2552b9
collab: Bypass account age check for users with active LLM subscriptions (#20837)
Click to expand commit body
This PR makes it so users with an active LLM subscription can bypass the
account age check.
Release Notes:
- N/A
Marshall Bowers
created
3789918
Adjust file finder width configuration (#20819)
Click to expand commit body
Follow up to: https://github.com/zed-industries/zed/pull/18682
This PR tweaks the setting value, so it's clear we're referring to
`max-width`, meaning the width will change up to a specific value
depending on the available window size. Then, it also makes `Small` the
default value, which, in practice, makes the modal size the same as it
was before the original PR linked above.
Release Notes:
- N/A
---------
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Danilo Leal
and
Kirill Bulatov
created
d265e44
Don't treat absence of a file on fs as conflict for new files from CLI (#20828)
Click to expand commit body
Closes #20827
Release Notes:
- Fixes bug where save for new files created via CLI would report a
conflict and ask about overwriting.
Michael Sloan
created
f12981d
docs: Add Language extension config TBDs (To Be Documented) (#20829)
Click to expand commit body
Release Notes:
- N/A
Peter Tripp
created
d99f5fe
Add `File.disk_state` enum to clarify filesystem states (#20776)
Click to expand commit body
Motivation for this is to make things more understandable while figuring
out #20775.
This is intended to be a refactoring that does not affect behavior, but
there are a few tricky spots:
* Previously `File.mtime()` (now `File.disk_state().mtime()`) would
return last known modification time for deleted files. Looking at uses,
I believe this will not affect anything. If there are behavior changes
here I believe they would be improvements.
* `BufferEvent::DirtyChanged` is now only emitted if dirtiness actually
changed, rather than if it may have changed. This should only be an
efficiency improvement.
Release Notes:
- N/A
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Michael Sloan
and
Mikayla Maki
created
df1d0de
ocaml: Extract to zed-extensions/ocaml repository (#20825)
Click to expand commit body
This PR extracts the OCaml extensions to the
[zed-extensions/ocaml](https://github.com/zed-extensions/ocaml)
repository.
Release Notes:
- N/A
This PR bumps the OCaml extension to v0.1.1.
Changes:
- https://github.com/zed-industries/zed/pull/20700
Release Notes:
- N/A
Marshall Bowers
created
0e7770a
theme: Add color `darken` function (#20746)
Click to expand commit body
This PR adds a `darken` function that allows to reduce the lightness of
a color by a certain factor. This popped up as I wanted to add hover
styles to tinted-colors buttons.
Release Notes:
- N/A
Danilo Leal
created
3f905d5
assistant: Adjust title summarization prompt (#20822)
Click to expand commit body
Meant to avoid the excessive use of "Here's a concise 3-7 word title..."
and "Title:" instances we've been seeing lately.
Follow up to: https://github.com/zed-industries/zed/pull/19530
Release Notes:
- Improve prompt for generating title summaries, avoiding preambles
Danilo Leal
created
f01a86c
Support for Back/Forward multimedia keys (#20695)
Click to expand commit body
- Added Support for Back/Forward multimedia keys (Linux)
Peter Tripp
created
5fd7afb
docs: More language extension config.toml key documentation (#20818)
Click to expand commit body
Release Notes:
- N/A
Peter Tripp
created
9260aba
Use `HashMap<ProjectEntryId, Entry>` instead of `HashSet<Entry>` in outline_panel (#20780)
Click to expand commit body
Came across this because I noticed that `Entry` implements `Hash`, which
was surprising to me. I believe that `ProjectEntryId` should be unique
and so it seems better to dedupe based on this.
Release Notes:
- N/A
Michael Sloan
created
d92166f
Revert "Use livekit's Rust SDK instead of their swift SDK (#13343)" (#20809)
Click to expand commit body
Issues found:
* audio does not work well with various set-ups using USB
* switching audio during initial join may leave the client with no audio
at all
* audio streaming is done on the main thread, beachballing certain
set-ups
* worse screenshare quality (seems that there's no dynamic scaling
anymore, compared to the Swift SDK)
This reverts commit 1235d0808ed7697874085fc8528f22aec988c85e.
Release Notes:
- N/A
Kirill Bulatov
created
59a355d
docs: Update Svelte extension link (#20804)
Click to expand commit body
Closes #20768
Release Notes:
- N/A
moshyfawn
created
ee207ab
Map "feature upsell" events to the new "Noun Verbed" format (#20787)
Click to expand commit body
Release Notes:
- N/A
Nathan Sobo
created
31566cb
Add width setting for the file finder (#18682)
Click to expand commit body
This PR adds the ability to adjust the width of the file finder popup. I
found when searching my projects the default width was not always wide
enough and there was no option to change it.
It allows values `small`, `medium` (default), `large`, `xlarge`, and
`full`
Release Notes:
- Added a setting to adjust the width of the file finder modal
Example Setting:
```json
"file_finder": {
"modal_width": "medium"
},
```
Screenshots can be found in the comments below.
Isaac Donaldson
created
2d34765
lsp: Retrieve links to documentation for the given symbol (#19233)
Click to expand commit body
Closes #18924
Release Notes:
- Added an `editor:OpenDocs` action to open links to documentation via
rust-analyzer
Lu Wan
created
f9990b4
Send events to Snowflake in the format they're expected by Amplitude (#20765)
Click to expand commit body
This will allow us to use the events table directly in Amplitude, which
lets us use the newer event ingestion flow that detects changes to the
table. Otherwise we'll need a transformation.
I think Amplitude's API is probably a pretty good example to follow for
the raw event schema, even if we don't end up using their product. They
also recommend a "Noun Verbed" format for naming events, so I think we
should go with this. This will help us be consistent and encourage the
author of events to think more clearly about what event they're
reporting.
cc @ConradIrwin
Release Notes:
- N/A
Nathan Sobo
created
97e9137
Update references of Ollama Llama 3.1 to model Llama 3.2 (#20757)
Click to expand commit body
Release Notes:
- N/A
Siddharth M. Bhatia
created
932c7e2
gpui: Fix SVG color render, when color have alpha (#20537)
Click to expand commit body
Release Notes:
- N/A
## Demo
- [Source
SVG](https://github.com/user-attachments/assets/1c681e01-baba-4613-a3e7-ea5cb3015406)
click here open in browser.
| Before | After |
| --- | --- |
| <img width="1212" alt="image"
src="https://github.com/user-attachments/assets/ba323b13-538b-4a34-bb64-9dcf490aface">
| <img width="1212" alt="image"
src="https://github.com/user-attachments/assets/4635926a-843e-426d-89a1-4e9b4f4cc37e">
|
---------
Co-authored-by: Floyd Wang <gassnake999@gmail.com>
Release Notes:
- N/A
---
```
cargo run -p gpui --example painting
```
I added this demo to verify the detailed support of Path drawing in
GPUI.
Because of, when we actually used GPUI to draw a 2D line chart, we found
that the straight line Path#line_to did not support `anti-aliasing`, and
the drawn line looked very bad.
As shown in the demo image, if we zoom in on the image, we can clearly
see that all the lines are jagged.
I read and tried to make some appropriate adjustments to the functions
in Path, but since I have no experience in the graphics field, I still
cannot achieve anti-aliasing support so far.
I don't know if I used it wrong somewhere. I checked `curve_to` and
found that the curves drawn have anti-aliasing effects, as shown in the
arc part of the figure below.
<img width="1136" alt="image"
src="https://github.com/user-attachments/assets/4dfb7603-e746-43e9-b737-cff56b56329f">
Release Notes:
- Added Transparency effect for Windows #19405


---------
Co-authored-by: thedeveloper-sharath <35845141+thedeveloper-sharath@users.noreply.github.com>
Gowtham K
and
thedeveloper-sharath
created
21c785e
Add more common Prettier plugin base paths (#20758)
Click to expand commit body
Closes #19024
Release Notes:
- Added some more common Prettier plugin base paths
SweetPPro
created
516f7b3
Add Loading and Fallback States to Image Elements (via StyledImage) (#20371)
Click to expand commit body
@iamnbutler edit:
This pull request enhances the image element by introducing the ability
to display loading and fallback states.
Changes:
- Implemented the loading and fallback states for image elements using
`.with_loading` and `.with_fallback` respectively.
- Introduced the `StyledImage` trait and `ImageStyle` to enable a fluent
API for changing image styles across image types (`Img`,
`Stateful<Img>`, etc).
Example Usage:
```rust
fn loading_element() -> impl IntoElement {
div().size_full().flex_none().p_0p5().rounded_sm().child(
div().size_full().with_animation(
"loading-bg",
Animation::new(Duration::from_secs(3))
.repeat()
.with_easing(pulsating_between(0.04, 0.24)),
move |this, delta| this.bg(black().opacity(delta)),
),
)
}
fn fallback_element() -> impl IntoElement {
let fallback_color: Hsla = black().opacity(0.5);
div().size_full().flex_none().p_0p5().child(
div()
.size_full()
.flex()
.items_center()
.justify_center()
.rounded_sm()
.text_sm()
.text_color(fallback_color)
.border_1()
.border_color(fallback_color)
.child("?"),
)
}
impl Render for ImageLoadingExample {
fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
img("some/image/path")
.id("image-1")
.with_fallback(|| Self::fallback_element().into_any_element())
.with_loading(|| Self::loading_element().into_any_element())
}
}
```
Note:
An `Img` must have an `id` to be able to add a loading state.
Release Notes:
- N/A
---------
Co-authored-by: nate <nate@zed.dev>
Co-authored-by: michael <michael@zed.dev>
Co-authored-by: Nate Butler <iamnbutler@gmail.com>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Mikayla Maki
,
nate
,
michael
,
Nate Butler
, and
Antonio Scandurra
created