This adds support for runnables to Go.
It adds the following tasks:
- `go test $ZED_GO_PACKAGE -run $ZED_SYMBOL`
- `go test $ZED_GO_PACKAGE`
- `go test ./...`
- `go run $ZED_GO_PACKAGE` if it has a `main` function
Release Notes:
- Added built-in Go runnables and tasks that allow users to run Go test
functions, test packages, or run `main` functions.
Demo:
https://github.com/zed-industries/zed/assets/1185253/a6271d80-faf4-466a-bf63-efbec8fe6c35
https://github.com/zed-industries/zed/assets/1185253/92f2b616-7501-463d-b613-1ec1084ae0cd
Thorsten Ball
created
e5b9e20
Allow ssh connection for setting up zed (#12063)
3382e79
Improve file finder match results (#12103)
Kirill Bulatov
created
c290d92
Allow formatting of unsaved buffers with prettier (#12095)
Click to expand commit body
This fixes #4529 by allowing unsaved buffers to be formatted with
prettier.
Steps to do that:
1. Create a new buffer
2. Set language for the buffer (e.g.: `language selector: toggle` and
JSON)
3. In settings, set prettier parser for language (can't be inferred,
since we don't have filename) and allow formatting with prettier:
```json
{
"languages": {
"JSON": {
"prettier": {
"allowed": true,
"parser": "json"
}
}
}
}
```
4. Use `editor: format`
Release Notes:
- Added ability to format unsaved buffers with Prettier. Requirement is
to set a Prettier parser in the user settings. Example for JSON: `{
"languages": { "JSON": { "prettier": { "allowed": true, "parser": "json"
} } } }` ([#4529](https://github.com/zed-industries/zed/issues/4529)).
Demo:
https://github.com/zed-industries/zed/assets/1185253/d24e490b-2e2c-4a5d-95a8-fc8675523780
Thorsten Ball
created
b451af4
Fix `npm install` error with some languages (#12087)
Click to expand commit body
If you have already installed `node` using `brew install node`, you are
fine. If you did not install `node` on you local machine, it fails.
The `node_binary` path is actually not included in environment variable.
When run `npm install`, some extensions like `eslint`, may run some
commands like `sh -c node .....`. Since `node_binary` path is not
included in `PATH` variable, `sh -c node ...` will fail complaining that
"command not found". If you have installed `node` before, `node` is
already included in `PATH`, so you are fine. If not, it fails.
Closes #11890
Release Notes:
- Fixed Zed's internal Node runtime not being put in `$PATH` correctly
when running language servers and other commands with `node`.
([#11890](https://github.com/zed-industries/zed/issues/11890))
---------
Co-authored-by: Thorsten Ball <mrnugget@gmail.com>
This PR bumps the Ruby extension to v0.0.4.
Changes:
- #11869
- #12012
- #12052
Release Notes:
- N/A
Vitaly Slobodin
created
99570f9
ruby: Add support for running tests (#12052)
Click to expand commit body
Hello, this pull request adds two things related to each other. I hope
it's fine to submit both in the same pull request but I am totally fine
with submitting them in separate pull requests, just let me know. This
is an initial version for both features. Thanks!
## Symbols outline support for testing frameworks: minitest and RSPec
Symbols outline support in
[Minitest](https://github.com/minitest/minitest) (the testing framework
that comes with Ruby on Rails out of the box) and RSpec (another testing
framework that is popular in Ruby and Ruby on Rails world). Here are
some screenshots:
### Minitest
Given this Ruby code:
```ruby
require "test_helper"
class CategoryTest < ActiveSupport::TestCase
context "validations" do
subject { build(:category) }
should validate_presence_of(:title)
should validate_length_of(:title).is_at_most(255)
should validate_uniqueness_of(:title)
end
end
class TestNamesWithMiniTest < ActiveSupport::TestCase
def test_foo_1; assert true; end
def test_foo_2; assert true; end
def test_bar_1; assert true; end
def test_bar_2; assert true; end
end
```
We have this symbols outline:

### RSpec
I used `mastodon` application for testing because it's written in Ruby.
Given the following file
https://github.com/mastodon/mastodon/blob/main/spec/models/account_spec.rb
We have the following symbols outline:

## Running Ruby tests
### Minitest
Given the same file as above, we have the following workflow:
https://github.com/zed-industries/zed/assets/1894248/dc335495-3460-4a6d-95c4-e4cbc87a1ea0
### RSpec
Given the following file
`https://github.com/mastodon/mastodon/blob/main/spec/models/account_spec.rb`
We have the following workflow:
https://github.com/zed-industries/zed/assets/1894248/a17067ea-73b6-4229-8f1b-1b88dde63401
<hr />
Release Notes: Added Ruby test runnables support
Vitaly Slobodin
created
f371087
Introduce `Editor::insert_flaps` and `Editor::remove_flaps` (#12096)
Click to expand commit body
This pull request introduces the ability to add flaps, custom foldable
regions whose first foldable line can be associated with:
- A toggle in the gutter
- A trailer showed at the end of the line, before the inline blame
information
https://github.com/zed-industries/zed/assets/482957/c53a9148-f31a-4743-af64-18afa73c404c
To achieve this, we changed `FoldMap::fold` to accept a piece of text to
display when the range is folded. We use this capability in flaps to
avoid displaying the ellipsis character.
We want to use this new API in the assistant to fold context while still
giving visual cues as to what that context is.
Release Notes:
- N/A
---------
Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Max <max@zed.dev>
Antonio Scandurra
,
Nathan Sobo
,
Mikayla
, and
Max
created
b89f360
lsp: Handle `client/unregisterCapability` to fix gopls (#12086)
Click to expand commit body
This fixes #10224 by handling `client/unregisterCapability` requests
that have a `workspace/didChangeWatchedFiles` method.
While debugging the issue, I found out that `gopls` seems to block
indefinitely when there's no reply to the `client/unregisterCapability`
request. Even an empty response would fix the issue.
Seems like gopls 15.x and later seem to handle nested subfolders well,
but do not handle unanswered requests.
Instead of replying with an empty response, I decided to change how we
handle file watching and keep a list of all registered paths so that we
can then unregister paths and recreate the glob patterns.
Release Notes:
- Fixed `gopls` not working correctly when the `go.mod` file was in a
subfolder and not the root folder of the project opened in Zed.
([#10224](https://github.com/zed-industries/zed/issues/10224)).
Add config for tag autoclosing: add following to lsp section of your
settings:
"vscode-html-language-server": {
"settings": {
"html": { "tagAutoclosing": true }
}
}
It also accepts `css`, `js/ts` and `javascript` as options.
Disable HTML language server in JS/TS/TSX files for now. I decided to
disable it for now as it caused excessive edits in these types of files
(as reported by @mariansimecek in
https://github.com/zed-industries/zed/pull/11761#issuecomment-2122038107);
it looks like HTML language server tries to track language ranges (e.g.
whether a particular span is TS/HTML fragment etc) just like we do.
However in plain JS/TSX files it seems like it treats the whole file as
one big chunk of HTML, which is.. not right, to say the least.
No release note, as HTML extension goodies are not on Preview yet.
Release Notes:
- N/A
This fixes #5304 by adding a new Duplicate action to the project panel
context menu.
It really is implemented on top of copy&paste.
Release Notes:
- Added a Duplicate action to the project panel.
([#5304](https://github.com/zed-industries/zed/issues/5304)).
https://github.com/zed-industries/zed/assets/1185253/f0fa6a4b-f066-47df-84f0-257a049800d1
Thorsten Ball
created
ba1d28f
Add `.gql` and `.graphqls` extensions for GraphQL icon (#12073)
Click to expand commit body
There are `.gql` and `.graphqls` suffix support in [GraphQL VSCode
extension](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql-syntax).
I use those file extensions in my projects, hence I wanted them to be
graphql icons.
Release Notes:
- Added GraphQL icon for `.gql` and `.graphqls` files.
currently:

after this pr:

in vscode:

Anıl Şenay
created
2f31026
ui: Don't break flex layout when using `WithRemSize` (#12076)
Click to expand commit body
This PR fixes an issue where the flex hierarchy wasn't getting broken by
the use of `WithRemSize`.
Release Notes:
- N/A
Marshall Bowers
created
315e45f
Match the startup behavior of the CLI to the main app (#12044)
Click to expand commit body
Currently the main binary will open an empty file if no previous
workspaces exist or, if it is the first startup, show the welcome page.
When starting via the CLI it will simply drop you in an empty workspace:
no empty file and no welcome page.
This changes the CLI startup to match the behavior of the non-CLI
startup, so they will both create an empty file or show the welcome page
if no path was given and no workspaces were opened in the past.
Release Notes:
- Matched startup behavior of the CLI to the behavior of the main app.
Owen Law
created
1e18bcb
vim: Fix %s replace not working more than twice (#12045)
f2357c7
terminal: Add coloration to task icons based on status (#12066)
Click to expand commit body
Release Notes:
- Fixes: ([#11968](https://github.com/zed-industries/zed/issues/11968)).
Adds colouration to task icons in terminal based off status

versecafe
created
42ea2be
Add "new window" option to the dock menu (#12067)
Click to expand commit body
Fixes: #11651
Co-Authored-By: versecafe <147033096+versecafe@users.noreply.github.com>
Release Notes:
- Added a "New Window" item to the dock menu
([#11651](https://github.com/zed-industries/zed/issues/11651)).
---------
Co-authored-by: versecafe <147033096+versecafe@users.noreply.github.com>
Conrad Irwin
and
versecafe
created
1732ea9
Better private file sharing for remote projects (#12002)
3a79aa8
Fuzzy-match lines when applying edits from the assistant (#12056)
Click to expand commit body
This uses Jaro-Winkler similarity for now, which seemed to produce
pretty good results in my tests. We can easily swap it with something
else if needed.
Release Notes:
- N/A
Antonio Scandurra
created
0b8c168
html: Add support for autoclosing of tags (#11761)
Click to expand commit body
Fixes #5267
TODO:
- [x] Publish our fork of vscode-langservers-extracted on GH and wire
that through as a language server of choice for HTML extension.
- [x] Figure out how to prevent edits made by remote participants from
moving the cursor of a host.
Release Notes:
- Added support for autoclosing of HTML tags in local projects.
Adds the ability to have some effect run when a selection changes in a
picker.
If the `PickerDelegate` implements something other than `None` for
`selected_index_changed` then each time the selection changes it will
run that effect.
For example:
```rs
impl PickerDelegate for PromptManagerDelegate {
//...
fn selected_index_changed(
&self,
ix: usize,
cx: &mut ViewContext<Picker<Self>>,
) -> Option<Box<dyn Fn(&mut WindowContext) + 'static>> {
Some(self.prompt_manager.set_active_prompt(ix, cx))
}
//...
}
```
This isn't currently used in any picker, but I'm adding this to allow
the functionality we intended for the prompt library, we're changing
selections, activates a preview in the right column.
This will be useful for building any sort of UI where there's a picker
on the left and a preview on the right, such as a UI like them
telescope.
Release Notes:
- N/A
Fixes #12025
Release Notes:
- Fixed backtick characters not getting autoclosed in Golang files
(#12025).
Piotr Osiewicz
created
ab7ce32
Add glob support for custom file type language (#12043)
Click to expand commit body
Release Notes:
- Added glob support for file_types configuration
([#10765](https://github.com/zed-industries/zed/issues/10765)).
`file_types` can now be written like this:
```json
"file_types": {
"Dockerfile": [
"Dockerfile",
"Dockerfile.*",
]
}
```
Joshua Farayola
created
4e935f9
Remove F2 keybind for Rename on MacOS and Linux (#12037)
Click to expand commit body
Fix [#11608](https://github.com/zed-industries/zed/issues/11608)
Release Notes:
- Changed rename keybind from F2 to Enter in right-click context menu
([#11608](https://github.com/zed-industries/zed/issues/11608)).

Nipun Shukla
created
2f4890a
ruby: Pass initialization options to LSPs (#12012)
Click to expand commit body
This pull request adds ability to pass `initialization_options` to both
`solargraph` and `ruby-lsp` language servers. Additionally it updates
the documentation to reflect that and the recently added `ruby-lsp`
server.
Release Notes:
- Pass `initialization_options` to Ruby LSP servers.
a9f35d2
Suggest extension for `.wit` files (#12031)
Click to expand commit body
Release Notes:
- Added an extension suggestion for `.wit` files.
d1y
created
410c46a
Trigger columnar selection behavior on middle mouse down (#12005)
Click to expand commit body
fixes https://github.com/zed-industries/zed/issues/11990
Release Notes:
- Changed middle mouse down to trigger a columnar selection, creating a
rectangle of multi cursors over a dragged region.
([#11990](https://github.com/zed-industries/zed/issues/11990))
84affa9
Allow the assistant to suggest edits to files in the project (#11993)
Click to expand commit body
### Todo
* [x] tuck the new system prompt away somehow
* for now, we're treating it as built-in, and not editable. once we have
a way to fold away default prompts, let's make it a default prompt.
* [x] when applying edits, re-parse the edit from the latest content of
the assistant buffer (to allow for manual editing of edits)
* [x] automatically adjust the indentation of edits suggested by the
assistant
* [x] fix edit row highlights persisting even when assistant messages
with edits are deleted
* ~adjust the fuzzy search to allow for small errors in the old text,
using some string similarity routine~
We decided to defer the fuzzy searching thing to a separate PR, since
it's a little bit involved, and the current functionality works well
enough to be worth landing. A couple of notes on the fuzzy searching:
* sometimes the assistant accidentally omits line breaks from the text
that it wants to replace
* when the old text has hallucinations, the new text often contains the
same hallucinations. so we'll probably need to use a more fine-grained
editing strategy where we perform a character-wise diff of the old and
new text as reported by the assistant, and then adjust that diff so that
it can be applied to the actual buffer text
Release Notes:
- Added the ability to request edits to project files using the
assistant panel.
---------
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Nathan <nathan@zed.dev>
Max Brunsfeld
,
Antonio Scandurra
,
Marshall
,
Antonio
, and
Nathan
created
Do not spawn a second completion request when completion menu is open and a new edit is made.
Release Notes:
- N/A
Gus
created
e5a4421
Reduce spamming of inline completion discard events (#11999)
Click to expand commit body
I'm not a huge fan of passing around a boolean all around the place, but
this will tame the events for now until we have a better solution.
Release Notes:
- N/A
11c97a3
Implement 'Cmd+W with no open tabs closes the window', with a setting (#11989)
Click to expand commit body
Follow up to: https://github.com/zed-industries/zed/pull/10986
However, I have set this to have a default behavior of 'auto': matching
the current platform's conventions, rather than a default value of
'off'.
fixes https://github.com/zed-industries/zed/issues/5322.
Release Notes:
- Changed the behavior of `workspace::CloseActiveItem`: when you're
using macOS and there are no open tabs, it now closes the window
([#5322](https://github.com/zed-industries/zed/issues/5322)). This can
be controlled with a new setting, `when_closing_with_no_tabs`, to
disable it on macOS, or enable it on other platforms.
Mikayla Maki
created
7fd736e
docs: Update macOS development docs with dispatch.h error solution (#11986)
Click to expand commit body
### Title
Update macOS Development Documentation with Dispatch.h Error Solution
### Description
This PR updates the macOS development documentation to include a
solution for the `dispatch/dispatch.h` file not found error. This error
is encountered during local development when using the `cargo run`
command. The documentation now includes steps to ensure the Xcode
command line tools are properly installed and set, and instructions to
set the `BINDGEN_EXTRA_CLANG_ARGS` environment variable.
### Changes
- Added troubleshooting section for `dispatch/dispatch.h` error in
`development/macos.md`.
### Related Issues
- Closes [#11963](https://github.com/zed-industries/zed/issues/11963)
### Testing Instructions
1. Follow the steps in the updated `development/macos.md` to configure
your environment.
2. Run `cargo clean` and `cargo run` to ensure the build completes
successfully.
Release Notes:
- N/A
Bosco
created
4dd83da
Fix hang when opening URL in first browser window (#11961)
Click to expand commit body
If opening a url opens the first browser window the call does not return
completely blocking the ui until the browser window is closed. Using
spawn instead of status does not block, but we will loose the exitstatus
of the browser window.
Release Notes:
- N/A
Moritz Bitsch
created
719e6e9
linux: Add more missing dependencies on Fedora (#11868)
Click to expand commit body
see https://docs.rs/openssl/latest/openssl/
Release Notes:
- N/A
yodatak
created
64ba08c
Add documentation for auto-switching theme (#11908)
Click to expand commit body
Added documentation regarding auto-switching themes to the default
settings file, according to
([#9627](https://github.com/zed-industries/zed/issues/9627)).
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Improves documentation for `CodeLabel.filter_range` in
`zed_extension_api` by clarifying that it's a range of only the text
displayed in the label, *not* the `code` field.
Release Notes:
- N/A
Valentine Briese
created
b890fa7
Report an error when trying to open ui in linux::headless (#11952)