Commit log

1dd4c1b Enable `clippy::redundant_closure_call` (#8840)

Click to expand commit body
This PR enables the
[`clippy::redundant_closure_call`](https://rust-lang.github.io/rust-clippy/master/index.html#/redundant_closure_call)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

9ea50ed Enable `clippy::iter_overeager_cloned` (#8839)

Click to expand commit body
This PR enables the
[`clippy::iter_overeager_cloned`](https://rust-lang.github.io/rust-clippy/master/index.html#/iter_overeager_cloned)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

9c6a0d9 Set working directory for `project` to project path (#8837)

Click to expand commit body
This fixes #8823 by setting the current working directory we use when
launching our own `prettier` process via `node` to the project path.

Why does this fix it?

We already *did* read the correct configuration options for `prettier`
from any configuration files, we also correctly inferred which
`prettier` plugins to use, but somehow when running

    ./node_modules/.bin/prettier my-file.tsx

produced different results compared to `prettier` in Zed.

But we *do* pass the right options to `prettier.format` when calling it
here:
https://github.com/zed-industries/zed/blob/996f1036fcc86dc95f6402311175929ed3c00909/crates/prettier/src/prettier_server.js#L177-L190

I checked those against the `prettier --loglevel=debug` output: they're
the same.

Turns out that the difference is we launch our `prettier_server.js` (a
JavaScript shim that wraps `prettier`-the-library in a language server
interface) not in the project path.

So somewhere inside `prettier.format` something is `require`d and fails
because we're not in that project directory. But when you run
`./node_modules/.bin/prettier` you are.

With the fix here, `prettier` now correctly picks up the tailwind plugin
that didn't seem to work in #8823. It probably fixes a bunch of other
oddities that folks reported with `prettier` too.



Release Notes:

- Fixed `prettier` integration not correctly picking up `prettier`
plugins, because it didn't run in the project's root path when invoked.
([#8823](https://github.com/zed-industries/zed/issues/8823)).

Thorsten Ball created

0976034 linux: remove todo for credential implementation (#8834)

Click to expand commit body
As commented
[here](https://github.com/zed-industries/zed/pull/8035#issuecomment-1976894590),
this is already done.



Release Notes:
- N/A

Christian Bergschneider created

12980dd Enable `clippy::derivable_impls` (#8836)

Click to expand commit body
This PR enables the
[`clippy::derivable_impls`](https://rust-lang.github.io/rust-clippy/master/index.html#/derivable_impls)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

a860530 Assign OpenAI model based on Azure OpenAI deployment ID (#8835)

Click to expand commit body
Following up on #8646, this PR makes it so we select an OpenAI model
based on the deployment ID when using Azure OpenAI.

Release Notes:

- N/A

Marshall Bowers created

996f103 linux: clipboard (#8822)

Click to expand commit body
Linux clipboard implementation with `copypasta`.


Release Notes:

- Added linux clipboard support

Rom Grk created

33ef5b7 Enable `clippy::iter_kv_map` (#8832)

Click to expand commit body
This PR enables the
[`clippy::iter_kv_map`](https://rust-lang.github.io/rust-clippy/master/index.html#/iter_kv_map)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

16be391 Enable `clippy::needless_update` (#8830)

Click to expand commit body
This PR enables the
[`clippy::needless_update`](https://rust-lang.github.io/rust-clippy/master/index.html#/needless_update)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

94593dc clangd: download the correct binary on Linux (#8820)

Click to expand commit body
Release Notes:

- Fixed clangd LSP download not working on Linux

Thorben Kröger created

98a1e87 task: Spawn static tasks in separate shell (#8827)

Click to expand commit body
That way one can use environment variables in task definitions.

Fixes: #8660

/cc @SomeoneToIgnore it looks like we don't ever set `separate_shell` to
false anymore, it might be worth streamlining?

Release Notes:

- Fixed static tasks not being run under a separate shell.
- Removed `separate_shell` setting from task definitions. It is now a default for tasks defined in tasks.json file.

Piotr Osiewicz created

6121c28 Fix argument order when printing prettier debug info (#8826)

Click to expand commit body
Release Notes:


- N/A

Thorsten Ball created

c91969d linux/wayland: prevent possible panic (#8824)

Click to expand commit body
Prevent a panic from arising from this case:
https://github.com/zed-industries/zed/pull/8632#discussion_r1510015928

It's not really safe to dispatch any action before dropping the state
borrow, because it may need to be modified.

Rom Grk created

5382983 Return "open in new window" as default in recent projects (#8798)

Click to expand commit body
https://github.com/zed-industries/zed/assets/5518/8bbd13a7-9144-48b0-9bc8-6651725476f8

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

Reworks `recent_projects::OpenRecent` action with collab projects in mind:
* keep the "open in new window" behavior for corresponding menu and command entries
* use new, "reuse current window" behavior in the recent projects picker up in the toolbar

This way, old Zed behavior is not customizable, kept as original in all main use cases — so that projects shared via remote entities: a channel and a call, are never accidentally closed, breaking the sharing. 

Release Notes:

- Return "open in new window" as default in recent projects

Jason Lee created

3a184bb Docs: Made "Configuring Zed" a link (#8790)

Click to expand commit body
Seems like this was intended to be a link (?). Easier to click it than
find the section in the navigation.



Release Notes:

- N/A

Ole Herman Schumacher Elgesem created

38f106c Add a fish-specific fix for #8633 (#8659)

Click to expand commit body
Release Notes:
- Fixed detection of `direnv` not working in `fish` when an LSP adapter
(`gopls`, for example) tries to detect user-installed binaries. (#8633)

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>

Stanislav Alekseev and Thorsten Ball created

20acc12 Implement 'format without save' (#8806)

Click to expand commit body
This solves a major usability problem in Zed, that there's no way to
temporarily disable auto formatting without toggling the whole feature
off.

fixes https://github.com/zed-industries/zed/issues/5230

Release Notes:

- Added a new `workspace::SaveWithoutFormatting`, bound to `cmd-k s`, to
save a file without invoking the auto formatter.

Mikayla Maki created

ff65008 linux: add credentials impl via oo7 (#8035)

Click to expand commit body
This change implements gpui's credentials API for the linux platform,
using the [`oo7`](https://lib.rs/crates/oo7) library.

We had a short discussion on Discord about where to store credentials
and landed on the two dbus APIs
[`org.freedesktop.Secrets`](https://specifications.freedesktop.org/secret-service/latest/index.html)
and
[`org.freedesktop.portal.Secrets`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Secret.html).
The first one provides access to a more or less general purpose
keystore, the second provides a way of obtaining a unique masterkey
which in turn can be used for encrypting stuff and storing it to disk
(especially interesting for sandboxed apps, think flatpak/snap).

I decided to give the implementation a try with `oo7`, which uses the
portal if the app is sandboxed and the secret service otherwise. If we
do not want to use that library, we would probably have to more or less
copy its functionality anyways. I also heard rumors of eventually
changing the credentials API and I think this implementation serves as a
starting point to discuss the need for this?

With a working credentials implementation the sign in button now works
(it panicked before).

Todos:
- [x] implement keystore unlocking
- [x] try the change with oo7's tracing enabled?
- [x] test the password deletion

Release Notes:

- N/A

---------

Signed-off-by: Niklas Wimmer <mail@nwimmer.me>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>

Niklas Wimmer and Mikayla Maki created

1442fcb Add doas support in script/linux (#8788)

Click to expand commit body
Release Notes:
- n/a

feelamee created

49f378e Fix name of zstd package in Arch Linux repos (#8789)

Click to expand commit body
Fixed name of [zstd](https://archlinux.org/packages/core/x86_64/zstd/)
package in Arch Linux repos in script for installing deps, required for
building Zed on linux

Release Notes:

- N/A

feelamee created

0717d30 Move windows up to workspace dependency (#8786)

Click to expand commit body
This way we can keep track of what we're using.

Release Notes:

- N/A

Mikayla Maki created

36d9b3d windows: get pid with win32 api (#8785)

Click to expand commit body
While trying to get mouse/keyboard support in for Windows I ran into a
stack overflow issue related to the pid being `-1`. Getting the proper
process ID seems to fix it.

Release Notes:

- Fixed stack overflow on Windows

Ezekiel Warren created

a5eab29 Implement `all_font_families` for the LinuxTextSystem (#8331)

Click to expand commit body
Implemented the function to get all font family names for
`LinuxTextSystem` which was previously kept as `unimplemented`.

Release Notes:

- N/A

Change Explanation:

- We get the
[`&Database`](https://docs.rs/fontdb/0.16.1/fontdb/struct.Database.html)
struct from the
[`FontSystem`](https://docs.rs/cosmic-text/latest/cosmic_text/struct.FontSystem.html)
by using the `.db` method.
- From the `Database` struct we get the
[`FaceInfo`](https://docs.rs/fontdb/0.16.1/fontdb/struct.FaceInfo.html)
which the provides a method to get the family
names([`families`](https://docs.rs/fontdb/0.16.1/fontdb/struct.FaceInfo.html#structfield.families))
- The `families` function returns a tuple of Vec. The tuple consists of
the `String` containing the name and the
[`Language`](https://docs.rs/fontdb/0.16.1/fontdb/enum.Language.html)
struct.

*It is noted that for the `families` function, the first family is
always `English US` unless it is unavailable*

Since the empty function provided
[here](https://github.com/zed-industries/zed/blob/main/crates/gpui/src/platform/linux/text_system.rs#L75)
explicitly declares a `Vec<String>` as the return type so I am
prioritizing the `English US` font family unless advised otherwise by
the reviewer.

---------

Signed-off-by: Maharshi Basu <basumaharshi10@gmail.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>

Maharshi Basu and Mikayla Maki created

6a6dbe3 linux: wayland: implement cursor style handling (#8632)

Click to expand commit body
Release Notes:

- Implemented cursor style changing in wayland


[zed_cursor_wayland.webm](https://github.com/zed-industries/zed/assets/12579216/cbc03f85-41c1-4687-88b5-2aa5612d7129)

---------

Co-authored-by: Mikayla <mikayla@zed.dev>

Joel Selvaraj and Mikayla created

37ffa86 Add libzstd to script/linux (#8780)

Click to expand commit body
add a missing dependency to linux script

aryal created

9095a6b Replace todo calls with error values in linux/platform (#8531)

Click to expand commit body
We currently use a mix of unimplemented methods with empty bodies and
`todo!()` calls in linux/platform.

`todo!()`s cause crashes in runtime with accidental key presses or
clicks.

To avoid this, this PR replaces `todo!()`s in linux/platform with error
values.

This helps when working on Zed itself, testing PRs etc.

Release Notes:

- N/A

Ömer Sinan Ağacan created

69e0474 Windows gpui platform (#8490)

Click to expand commit body
First implementation of gpui platform for Windows.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>

白山風露 and Marshall Bowers created

a88df2c Enable `clippy::default_constructed_unit_structs` (#8778)

Click to expand commit body
This PR enables the
[`clippy::default_constructed_unit_structs`](https://rust-lang.github.io/rust-clippy/master/index.html#/default_constructed_unit_structs)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

53630dc Enable `clippy::needless_lifetimes` (#8777)

Click to expand commit body
This PR enables the
[`clippy::needless_lifetimes`](https://rust-lang.github.io/rust-clippy/master/index.html#/needless_lifetimes)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

1fa9496 Enable `clippy::explicit_counter_loop` (#8776)

Click to expand commit body
This PR enables the
[`clippy::explicit_counter_loop`](https://rust-lang.github.io/rust-clippy/master/index.html#/explicit_counter_loop)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

08f9c3f Accept partial copilot suggestions (#8682)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/8020
 
This PR adds a new shortcut cmd-right, if a copilot suggestion exists.
The suggestions is accepted word by word.
It emulates the behaviour of VS Code's Github Copilot implementation.


Release Notes:

- Added ability to accept partial copilot suggestions ([8020](https://github.com/zed-industries/zed/issues/8020))

Jonathan created

56f0418 Enable `clippy::needless_option_as_deref` (#8775)

Click to expand commit body
This PR enables the
[`clippy::needless_option_as_deref`](https://rust-lang.github.io/rust-clippy/master/index.html#/needless_option_as_deref)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

2964a01 Enable `clippy::identity_op` (#8773)

Click to expand commit body
This PR enables the
[`clippy::identity_op`](https://rust-lang.github.io/rust-clippy/master/index.html#/identity_op)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

83f6a1e Enable `clippy::vec_init_then_push` (#8771)

Click to expand commit body
This PR enables the
[`clippy::vec_init_then_push`](https://rust-lang.github.io/rust-clippy/master/index.html#/vec_init_then_push)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

6685d3a Enable `clippy::redundant_guards` (#8770)

Click to expand commit body
This PR enables the
[`clippy::redundant_guards`](https://rust-lang.github.io/rust-clippy/master/index.html#/redundant_guards)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

bfc6485 Enable `clippy::bool_comparison` (#8769)

Click to expand commit body
This PR enables the
[`clippy::bool_comparison`](https://rust-lang.github.io/rust-clippy/master/index.html#/bool_comparison)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

5fad319 Enable `clippy::expect_fun_call` (#8768)

Click to expand commit body
This PR enables the
[`clippy::expect_fun_call`](https://rust-lang.github.io/rust-clippy/master/index.html#/expect_fun_call)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

fe04f69 Enable `clippy::useless_conversion` (#8767)

Click to expand commit body
This PR enables the
[`clippy::useless_conversion`](https://rust-lang.github.io/rust-clippy/master/index.html#/useless_conversion)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

20d1333 Fix some comments (#8760)

Click to expand commit body
Release Notes:

- N/A

Signed-off-by: geekvest <cuimoman@sohu.com>

geekvest created

a6dbaac Enable `clippy::needless_question_mark` (#8759)

Click to expand commit body
This PR enables the
[`clippy::needless_question_mark`](https://rust-lang.github.io/rust-clippy/master/index.html#/needless_question_mark)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

33790b8 Enable `clippy::useless_format` (#8758)

Click to expand commit body
This PR enables the
[`clippy::useless_format`](https://rust-lang.github.io/rust-clippy/master/index.html#/useless_format)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

373e18b Enable `clippy::unnecessary_unwrap` (#8756)

Click to expand commit body
This PR enables the
[`clippy::unnecessary_unwrap`](https://rust-lang.github.io/rust-clippy/master/index.html#/unnecessary_unwrap)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

191fcf6 Enable `clippy::nonminimal_bool` (#8755)

Click to expand commit body
This PR enables the
[`clippy::nonminimal_bool`](https://rust-lang.github.io/rust-clippy/master/index.html#/nonminimal_bool)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

2f87647 Enable `clippy::extra_unused_lifetimes` (#8754)

Click to expand commit body
This PR enables the
[`clippy::extra_unused_lifetimes`](https://rust-lang.github.io/rust-clippy/master/index.html#/extra_unused_lifetimes)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

6599744 Enable `clippy::explicit_auto_deref` (#8753)

Click to expand commit body
This PR enables the
[`clippy::explicit_auto_deref`](https://rust-lang.github.io/rust-clippy/master/index.html#/explicit_auto_deref)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

6a9e8fa Enable `clippy::unnecessary_operation` (#8752)

Click to expand commit body
This PR enables the
[`clippy::unnecessary_operation`](https://rust-lang.github.io/rust-clippy/master/index.html#/unnecessary_operation)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

ea68f86 Enable `clippy::option_map_unit_fn` (#8751)

Click to expand commit body
This PR enables the
[`clippy::option_map_unit_fn`](https://rust-lang.github.io/rust-clippy/master/index.html#/option_map_unit_fn)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

d19957b Enable `clippy::redundant_locals` (#8750)

Click to expand commit body
This PR enables the
[`clippy::redundant_locals`](https://rust-lang.github.io/rust-clippy/master/index.html#/redundant_locals)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

328c8a9 Enable `clippy::search_is_some` (#8748)

Click to expand commit body
This PR enables the
[`clippy::search_is_some`](https://rust-lang.github.io/rust-clippy/master/index.html#/search_is_some)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

3ab16d8 Enable `clippy::option_as_ref_deref` (#8747)

Click to expand commit body
This PR enables the
[`clippy::option_as_ref_deref`](https://rust-lang.github.io/rust-clippy/master/index.html#/option_as_ref_deref)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created