b3b94e6
Ensure panel and pane sizes are integral (#8619)
Click to expand commit body
Fixes: #8050
For some reason that we didn't investigate, if you have view caching
enabled,
and you have non-integer sized bounds, and you are right aligning
things, the
co-ordinates can differ by +/- 1px when using the cached view.
The easiest fix for now is to just not do that.
Co-Authored-By: Antonio <as-cii@zed.dev>
Release Notes:
- Fixed the pane icons flickering
([#8050](https://github.com/zed-industries/zed/issues/8050)).
Co-authored-by: Antonio <as-cii@zed.dev>
Conrad Irwin
and
Antonio
created
db9cc42
Support Sourcehut & Codeberg in permalinks (#8616)
Click to expand commit body
Updates #5110
Release Notes:
- Added support for repositories hosted on `git.sr.ht` (Sourcehut) and
`codeberg.org` to the `editor: copy permalink to line` and `editor: open
permalink to line` actions
([#5110](https://github.com/zed-industries/zed/issues/5110)).
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Rajesh Malviya
and
Marshall Bowers
created
faa6f97
Restore signature of `build_permalink` (#8609)
Click to expand commit body
This PR restores the original signature of `build_permalink`, which
intentionally uses a params struct to avoid mixing up the various `&str`
params that could otherwise be accidentally provided in the wrong order
without being caught by the compiler.
Release Notes:
- N/A
Marshall Bowers
created
dc7befb
Bind ctrl-w to DeleteToPreviousWordStart (#8606)
Click to expand commit body
Even though I use Vim mode, I'd love to have this in the command
palette/fuzzy finder. It's an Emacs keybinding, but also supported by
macOS nearly everywhere.
Release Notes:
- N/A
Thorsten Ball
created
5196552
Support Bitbucket.org in permalinks (#8601)
Click to expand commit body
This adds support for Bitbucket.org/Bitbucket Cloud repositories to the
`editor: copy permalink to line` and `editor: open permalink to line`
actions.
Fixes #5110.
Release Notes:
- Added support for repositories hosted on Bitbucket.org (Bitbucket
Cloud) to the `editor: copy permalink to line` and `editor: open
permalink to line` actions.
([#5110](https://github.com/zed-industries/zed/issues/5110)).
Thorsten Ball
created
47bcb30
Use `Pointer` cursor style on Recent Projects, VCS Menu. (#8595)
Click to expand commit body
Release Notes:
- Improved to use `Pointer` style cursor on VCS and Recent Projects
menu.
https://github.com/zed-industries/zed/assets/5518/4f638c6a-00b8-4fa8-b469-4d3109827bc2
Jason Lee
created
953bc5e
Fix post-merge issue from the old branch PR (#8590)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/6924/files that
had old code in CI that worked, but fresh `main` had different code that
needed small changes.
Release Notes:
- N/A
Kirill Bulatov
created
c94852b
Go to reference when there's only one (#6924)
Click to expand commit body
Fixes #4796
- Improved Go To Definition usability when there's a single reference ([4796](https://github.com/zed-industries/zed/issues/4796))
---------
Co-authored-by: Kirill Bulatov <kirill@zed.com>
Yangze Luo
and
Kirill Bulatov
created
81886a9
Fix default Vim keybinds for GoTo(Type)DefinitionSplit (#8587)
I would like to keep diagnostics open on one side, and process them on
the other.
Release Notes:
- Added `editor::OpenExcerptsSplit` (bound to `cmd-k enter`) to open the
selected excerpts in the adjacent pane
- vim: Added `ctrl-w d`, `ctrl-w shift-d` and `ctrl-w space` for
`editor::GoTo{,Type}Definition` and `editor::OpenExcerptsSplit`
Conrad Irwin
created
b7429bf
Added `menu::UseSelectedQuery` command that populates task modal query with the selected task name (#8572)
Kirill Bulatov
created
9bd5ebb
Revert "Introduce a new `ToggleGraphicsProfiler` command (#7607)" (#8567)
Click to expand commit body
This reverts commit 0cebf68306ab0ef08693701532260e1fdc0f1ee9.
Although this thing is very cool, it is a top source of crashes.
Example crash:
```
Segmentation fault: 11 on thread 26
objc_retain +16
invocation function for block in Overlay::onCommandBufferCommit(id<MTLCommandBuffer>) +60
MTLDispatchListApply +52
```
Release Notes:
- Removed "Toggle Graphics Profiler" as it crashes too much.
Conrad Irwin
created
ac30ded
Allow .zed/tasks.json local configs (#8536)
Click to expand commit body

Follow-up of
https://github.com/zed-industries/zed/issues/7108#issuecomment-1960746397
Makes more clear where each task came from, auto (re)load
.zed/config.json changes, properly filtering out other worktree tasks.
Release Notes:
- Added local task configurations
This PR brings linux XKB key translation more in line with the macOS
logic, which fixes quite a few key bindings.
Rom Grk
created
c07237d
Add other vkcube command to Linux docs (#8543)
Click to expand commit body
Add other vkcube command to Linux docs
Release Notes:
- N/A
Rajas Paranjpe
created
387c161
Add libssl-dev for apt dependencies (#8512)
Click to expand commit body
While building on Ubuntu (arm64). I had to manually install
`libssl-dev`.
Just added that in `script/linux`.
hamza72x
created
b76e0d9
Linux: Rewrite the event loop using calloop (#8314)
Click to expand commit body
This PR unifies the event loop code for Wayland and X11. On Wayland,
blocking dispatch is now used. On X11, the invisible window is no longer
needed.
Release Notes:
- N/A
---------
Co-authored-by: Dzmitry Malyshau <kvark@fastmail.com>
Co-authored-by: Tadeo Kondrak <me@tadeo.ca>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Co-authored-by: julia <julia@zed.dev>
Roman
,
Dzmitry Malyshau
,
Tadeo Kondrak
,
Mikayla Maki
, and
julia
created
You will now be able to say `/cherry-pick v0.123.x` to cherry-pick to a
different branch.
Release Notes:
- N/A
Conrad Irwin
created
014e6f6
gpui: Don't impl IntoElement on () (#8555)
Click to expand commit body
Although it's kinda cute, rust makes it too easy to accidentally return
() from a function.
/cc @nathansobo
Release Notes:
- N/A
Conrad Irwin
created
9e4b3ce
Avoid an unwrap when loading languages (#8562)
Click to expand commit body
We couldn't reproduce the panic, but I believe it was possible when
uninstalling an extension while one if its grammars was still loading.
Release Notes:
- Fixed a crash that could happen when uninstalling a language extension
while its grammar was loading.
---------
Co-authored-by: Conrad <conrad@zed.dev>
57f5f12
Fix flickering cursor style when a pane was zoomed (#8546)
Click to expand commit body
Release Notes:
- N/A
Co-authored-by: Max Brunsfeld <max@zed.dev>
Antonio Scandurra
and
Max Brunsfeld
created
7efa8d0
Do not set rules by default for eslint (#8545)
Click to expand commit body
Follow-up to and fix for #8537.
Turns out that if you set `rules: []` it doesn't mean "no matchers", but
it means "no rules". So let's not set a default here.
Release Notes:
- N/A, see #8537
Co-authored-by: Conrad <conrad@zed.dev>
Thorsten Ball
and
Conrad
created
d0ffd51
Optimize file finder subscriptions (#8343)
Click to expand commit body
Fixes #7519
Optimizes file finder subscriptions — it now only subscribes to
worktrees updates instead of all project updates.
Project panel could also be optimized this way, I guess.
Release Notes:
- Fix selection resets in the file finder during language server
startup ([7519](https://github.com/zed-industries/zed/issues/7519))
Andrew Lygin
created
7aba9eb
Introduce a short-term solution for flickering (#8542)
Click to expand commit body
This uses bounds checking alone to determine hover state to avoid
flicker. It's a short-term solution because the rendering is incorrect.
We think this is better than flickering though and buys us some time as
we work on a more robust solution overall.
Release Notes:
- Fixed flickering when hovering.
---------
Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra
and
Nathan
created
517ea73
Add Coffeescript, Scala, FSharp, TCL and Nim icons and add SQL as "storage" (#8447)
Click to expand commit body
I would like to add these file icons all from the source svgrepo.com and
with a size of 14x14. Also I've modified file_types.json in order to add
the file types and path to the image aswell as added SQL as a storage
type so it's linked to an icon.
Here is how these new changes would look like:
<img width="240" alt="Captura de pantalla 2024-02-26 a las 19 30 33"
src="https://github.com/zed-industries/zed/assets/93369643/73e50e4a-bfe8-4239-b919-280150051e36">
Release Notes:
- Added icons for Coffeescript, F#, Nim, Scala, and TCL files.
- Updated icon for SQL files.
Hugo Urías
created
a52177f
Allow users to configure ESLint `codeActionOnSave` settings (#8537)
Click to expand commit body
This fixes #8533 by allowing users to specify the settings that are
passed to ESLint on workspace initialization.
Example Zed `settings.json` to enable `fixAll` for eslint when
saving/formatting, but only for the `import/order` rule:
```json
{
"languages": {
"JavaScript": {
"code_actions_on_format": {
"source.fixAll.eslint": true
}
}
},
"lsp": {
"eslint": {
"settings": {
"codeActionOnSave": {
"rules": ["import/order"]
}
}
},
}
}
```
The possible settings are described in the README of `vscode-eslint`
here:
https://github.com/Microsoft/vscode-eslint?tab=readme-ov-file#settings-options
- `eslint.codeActionsOnSave.enable` (default: `true`, config key in Zed:
`lsp.eslint.settings.codeActionOnSave.enable`)
- `eslint.codeActionsOnSave.mode` (default: not set by Zed, config key
in Zed: `lsp.eslint.settings.codeActionOnSave.mode`)
- `eslint.codeActionsOnSave.rules` (default: `[]`, config key in Zed:
`lsp.eslint.settings.codeActionOnSave.rules`)
Yes, in the readme it's plural: `codeActionsOnSave`, but since
`eslint-vscode` we're using this old release:
https://github.com/microsoft/vscode-eslint/releases/tag/release%2F2.2.20-Insider
We use the singular version:
https://github.com/microsoft/vscode-eslint/blob/release/2.2.20-Insider/server/src/eslintServer.ts#L461
Our schema looks like this:
```json
{
"lsp": {
"eslint": {
"settings": {
"codeActionOnSave": {
"enable": true,
"rules": ["import/order"],
"mode": "all"
}
}
},
}
}
```
We should probably fix this and upgrade to the newest version of ESLint.
Release Notes:
- Added ability for users to configure settings for ESLint's
`codeActionOnSave`, e.g. specifying `rules` that should be respected
when also using `"code_actions_on_format": {"source.fixAll.eslint":
true}`. These settings can be passed to ESLint as part of the `"lsp"`
part of the Zed settings. Example: `{"lsp": {"eslint": {"settings":
{"codeActionOnSave": { "rules": ["import/order"] }}}}}`
([#8533](https://github.com/zed-industries/zed/issues/8533)).
Demo:
https://github.com/zed-industries/zed/assets/1185253/5c0cf900-9acb-4a70-b89d-49b6eeb6f0e4
Thorsten Ball
created
893e55f
Downscale source file icons to 14x14 (#8521)
f895983
Add ability to run ESLint (and other non-primary language server) code actions on format (#8496)
Click to expand commit body
This PR does two things to fix
https://github.com/zed-industries/zed/issues/4325:
1. It changes the way `code_actions_on_format` works to send the
possibly configured code actions to _all_ (and not just the primary)
languages servers. That means configured code actions can now be sent to
ESLint, tailwind, ... and other language servers.
2. It enables `codeActionsOnSave` by default for ESLint. That does
**not** mean that by default we will run something on save, but only
that we enable it for ESLint.
Users can then configure their Zed to run the `eslint` code action on
format. Example, for JavaScript:
```json
{
"languages": {
"JavaScript": {
"code_actions_on_format": {
"source.fixAll.eslint": true
}
},
}
}
```
Release Notes:
- Added ability to run ESLint fixes when formatting a buffer. Code
actions configured in
[`code_actions_on_format`](https://zed.dev/docs/configuring-zed#code-actions-on-format)
are now being sent to _all_ language servers connected to a buffer, not
just the primary one. So if a user now sets `"code_actions_on_format": {
"source.fixAll.eslint": true }` in their Zed settings, the
`source.fixAll.eslint` code action will be sent to ESLint, which is not
a primary language server. Since the formatter (prettier, or external
commands, or another language server, ...) still runs, it's important
that these code actions and the formatter don't clash.
([#4325](https://github.com/zed-industries/zed/issues/4325)).
Demo:
https://github.com/zed-industries/zed/assets/1185253/9ef03ad5-1f5c-4d46-b72a-eef611e32f39
96d9df0
Sort tasks modal entries by last used time
Kirill Bulatov
created
9f7e625
Fix formatting of code in `prettier` crate (#8526)
Click to expand commit body
Came across this code, saw lots of blue squiggly lines, saw a chance to
simplify the code a little bit and reduce indentation.
(Kinda ironic that I'm the one formatting the prettier code, right?)
Release Notes:
- N/A
Thorsten Ball
created
a3174be
chore: Move Location type to language (#8527)
Click to expand commit body
Release Notes:
- N/A
Piotr Osiewicz
created
2f6b290
linux: fix invalid cross-device link error (#8437)
Click to expand commit body
This PR fix the "invalid cross-device link" error occurred in linux when
trying to write the settings file atomically, like when click the
"Enable vim mode" checkbox at first start.
```plain
[2024-02-26T22:59:25+08:00 ERROR util] .../zed/crates/settings/src/settings_file.rs:135: Failed to write settings to file "/home/$USER/.config/zed/settings.json"
Caused by:
0: failed to persist temporary file: Invalid cross-device link (os error 18)
1: Invalid cross-device link (os error 18)
```
Currently the `fs::RealFs::atomic_write()` method write to a temp file
created with `NamedTempFile::new()` and then call `persist()` method to
write to the config file path, which actually do a `rename` syscall
under the hood. As the
[issue](https://github.com/Stebalien/tempfile/issues/245) said
> `NamedTempFile::new()` will create a temporary file in your system's
temporary file directory. You need `NamedTempFile::new_in()`.
The temporary file directory in linux is in `/tmp`, which is mounted to
`tmpfs` filesystem, and in most case(all case I guess)
`$HOME/.config/zed` is mounted to a different filesystem. And the
`rename` syscall between different filesystems will return a `EXDEV`
errno, as described in the man page
[rename(2)](https://man7.org/linux/man-pages/man2/renameat2.2.html):
```plain
EXDEV oldpath and newpath are not on the same mounted
filesystem. (Linux permits a filesystem to be mounted at
multiple points, but rename() does not work across
different mount points, even if the same filesystem is
mounted on both.)
```
And as the issue above said, use a different temp dir with
`NamedTempFile::new_in()` for linux platform might be a solution, since
the `rename` syscall provides atomicity.
Release Notes:
- Fix `settings.json` save failed with invalid cross-device link error
in linux
Release Notes:
- vim: Fixed `.` when multiple windows are open
([#7446](https://github.com/zed-industries/zed/issues/7446)).
- vim: Fixed switching to normal mode after `J`, `<` or `>` in visual
mode ([#4439](https://github.com/zed-industries/zed/issues/4439))
- vim: Added `ctrl-t` and `ctrl-d` for indent/outdent in insert mode.
- Fixed indent/outdent/join lines appearing to work in read-only buffers
([#8423](https://github.com/zed-industries/zed/issues/8423))
- Fixed indent with an empty selection when the cursor was in column 0
I'm not sure how compliant you're aiming to be with vim, but the `f`
behavior is more useful when it can search on multiple lines instead of
a single one, so I'd like to propose this change.
This change is quite frequent in vim/neovim as a plugin (e.g.
[clever-f](https://github.com/VSCodeVim/Vim),
[improved-ft](https://github.com/backdround/improved-ft.nvim), etc), and
in other vim emulations (e.g.
[vscode-vim](https://github.com/VSCodeVim/Vim)).
Rom Grk
created
bd8896a
Add icon support for files without extensions (#8453)
Click to expand commit body
Release Notes:
- Added support for showing file icons for files without suffixes.
Before:
<img width="281" alt="image"
src="https://github.com/zed-industries/zed/assets/25414681/ab4c00ed-72c7-458f-8dda-61c68165590f">
After:
<img width="242" alt="Screenshot 2024-02-27 at 1 51 20 AM"
src="https://github.com/zed-industries/zed/assets/25414681/8f3082c4-9424-4bc3-9100-a527b9adc315">
This screenshot is to show if the file has extension, then the extension
takes precedence.
<img width="193" alt="image"
src="https://github.com/zed-industries/zed/assets/25414681/72fcebd1-361f-444b-8890-f59932963083">
<br>
- Added icons for
- Docker - https://www.svgrepo.com/svg/473589/docker
- License - https://www.svgrepo.com/svg/477704/license-1
- Heroku - https://www.svgrepo.com/svg/341904/heroku
- Updated tests
This fixes the compilation stck overflow here:
https://ogeon.github.io/2024/02/25/palette-0.7.5.html
Release Notes:
- N/A
Conrad Irwin
created
9ae5366
Ensure more Zed files are formatted uniformly (#8505)
Click to expand commit body
Follow-up of
https://github.com/zed-industries/zed/pull/8500#issuecomment-1967522477
Now things are much better, but I still reformat the default.json
settings file:
```diff
diff --git a/assets/settings/default.json b/assets/settings/default.json
index c60c53026..67bf4505b 100644
--- a/assets/settings/default.json
+++ b/assets/settings/default.json
@@ -75,14 +75,7 @@
// Hide the values of in variables from visual display in private files
"redact_private_values": false,
// Globs to match against file paths to determine if a file is private.
- "private_files": [
- "**/.env*",
- "**/*.pem",
- "**/*.key",
- "**/*.cert",
- "**/*.crt",
- "**/secrets.yml"
- ],
+ "private_files": ["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"],
// Whether to use additional LSP queries to format (and amend) the code after
// every "trigger" symbol input, defined by LSP server capabilities.
"use_on_type_format": true,
```
For me, Zed's doing that with the default prettier:
```
['/Users/someonetoignore/work/zed/zed/assets/settings/default.json' with options: {"printWidth":120,"tabWidth":2,"parser":"json","plugins":[],"path":"/Users/someonetoignore/work/zed/zed/assets/settings/default.json"}](stderr: Resolved config: {}, will format file '/Users/someonetoignore/work/zed/zed/assets/settings/default.json' with options: {"printWidth":120,"tabWidth":2,"parser":"json","plugins":[],"path":"/Users/someonetoignore/work/zed/zed/assets/settings/default.json"})
```
and `!/Library/Application Support/Zed/prettier/package-lock.json`
states that I have
```
"node_modules/prettier": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
"integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
"bin": {
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
```
Release Notes:
- N/A
Kirill Bulatov
created
e2bcb28
Use proper buffer versions when [de]serializing hint proto requests (#8502)
Click to expand commit body
During inlay hint<->proto conversions, uses proper buffer versions and
never carries them across the .await points, to fix the
```
thread 'main' panicked at 'invalid anchor Anchor { timestamp: Lamport {0: 8558}, offset: 54, bias: Right, buffer_id: Some(BufferId(8)) }. buffer id: 8, version: Global {0: 8546, 1: 8378}'
/Users/administrator/actions-runner-2/_work/zed/zed/crates/text/src/text.rs:1919
<backtrace::capture::Backtrace>::create
<backtrace::capture::Backtrace>::new
Zed::init_panic_hook::{closure#0}
std::panicking::rust_panic_with_hook
std::panicking::begin_panic_handler::{{closure}}
std::sys_common::backtrace::__rust_end_short_backtrace
_rust_begin_unwind
core::panicking::panic_fmt
<text::BufferSnapshot>::summary_for_anchor::<usize>
<multi_buffer::anchor::Anchor as multi_buffer::ToOffset>::to_offset
<editor::display_map::DisplayMap>::splice_inlays
<editor::Editor>::splice_inlay_hints
editor::inlay_hint_cache::fetch_and_update_hints::{closure#0}::{closure#0}
<async_task::raw::RawTask<<async_task::runnable::Builder<_>>::spawn_local::Checked<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>, core::result::Result<(), anyhow::Error>, <gpui::executor::ForegroundExecutor>::spawn::inner<core::result::Result<(), anyhow::Error>>::{closure#0}, ()>>::run
<gpui::platform::mac::platform::MacPlatform as gpui::platform::Platform>::run
Zed::main
std::sys_common::backtrace::__rust_begin_short_backtrace::<fn(), ()>
std::rt::lang_start::<()>::{closure#0}
std::rt::lang_start_internal
_main
```
class of panics.
Release Notes:
- Fixed occasional panics during collaborative editing with inlay hints
on both sides
Co-authored-by: Conrad <conrad@zed.dev>
Kirill Bulatov
and
Conrad
created
89caf06
Move note about screenshots up in the PR template (#8501)
Click to expand commit body
This PR rearranges the PR template to move the line about including
screenshots or media up underneath the `Added/Fixed/Improved` section.
This makes it easier to delete one section or the other depending on
what kind of change you're making.
Release Notes:
- N/A
Marshall Bowers
created
f93272e
Format default `settings.json` with Prettier (#8500)
Click to expand commit body
This PR formats the default `settings.json` file with Prettier.
This should help avoid unnecessary modifications in other PRs making
consequential changes to this file.
Release Notes:
- N/A