This PR fixes the sizing of the workspace, specifically with regards to
the center pane.
This fixes the issue where the tab bar would get clipped when its width
exceeded the size of the screen.
<img width="1298" alt="Screenshot 2023-12-12 at 8 36 15 PM"
src="https://github.com/zed-industries/zed/assets/1486634/592d7c6d-6901-4bd4-b5e7-e30bcad67e21">
Release Notes:
- N/A
This PR enables scrolling horizontally in the tab bar.
Currently this requires holding down <kbd>Shift</kbd> for the scroll to
activate. We'll need to look into this.
Scrolling also currently works when there is a split in the editor, as
the non-split view goes down a different rendering path that does not
constrain the pane width, which breaks a number of things.
Release Notes:
- N/A
Wrap width is already assigned from within draw. It can be called
multiple times as taffy iteratively computes the layout.
This fixes a hang we were seeing in nightly when opening the chat panel.
Wrap width is already assigned from within draw. It can be called multiple
times as taffy iteratively computes the layout.
Co-authored-by: Nathan <nathan@zed.dev>
@as-cii and @SomeoneToIgnore noticed a bug where Zed nightly would
continuously report that an update was available. This nightly
auto-update logic depends on the `ZED_COMMIT_SHA` constant, which is
compiled into the app via an rustc environment variable that is assigned
in the `zed2` build script.
I think the bug was caused by the `zed2` build script's output being
cached on our CI, when building the nightly app bundle. The result was
that the `publish-nightly` action updated the "current SHA" for nightly,
but uploaded an artifact whose `ZED_COMMIT_SHA` was cached from an
earlier version.
I've added a line to the `build.rs` that triggers a rerun if the
`.git/logs/HEAD` file has been changed. I think this should prevent the
unwanted caching.
We were registering `deploy` only on editors, which did succeed for
channel notes; however, channel note does not have an associated
workspace (that we pulled from the editor). It made more sense to just
register these actions for a workspace, notwithstanding the editor.
This PR also fixes a bunch of cx.dispatch_action calls to call the
handler directly instead (e.g. instead of dispatching ReplaceNext we
just call buffer_search_bar.replace_next instead) as otherwise these
actions are not handled if the buffer search bar does not have the
focus.
Release Notes:
- N/A
This PR fixes an issues where it was possible for panes to overflow the
window (for instance, by having a large number of tabs in the tab bar).
Release Notes:
- N/A
* Fixed dock toggling not focusing the terminal element
* Fixed loosing focus on dock close (e.g. cmd-d on the last terminal in
the dock)
* Removed element stateless focus API since it would not work when the
element is not rendered, update all API usages to the stateful one via
`gpui::Subscription`
Release Notes:
- N/A
The biggest improvements come from preventing element moves where
unnecessary, and when they are absolutely needed, try to make the struct
we're moving as small as possible. Having big structs on the stack (such
as `Interactivity`) increases the cost of moving but also reduces
opportunities for other compiler optimizations (e.g., inlining).
One more notable change was using `FxHashMap` and `FxHashSet` in hot
code paths where we don't need those collections to be resistant to DoS.
Another thing I am seeing a lot in the profiler is interacting with
`StackingOrder` (cloning it, searching for it, inserting into the
`Scene`). I have some thoughts on how to optimize that but I punted on
it because performance seems to be pretty good now.
Release Notes:
- N/A
Part of
https://linear.app/zed-industries/issue/Z-1386/add-equivalent-setting-to-vscodes-auto-reveal-exclude
Deals with https://github.com/zed-industries/community/issues/800
* add a `project_panel::auto_reveal_entries` config entry to allow
disabling auto reveal in project panel (auto reveal is enabled by
default)
* add a `pane::RevealInProjectPanel` action (and a pane tab context menu
entry) to manually reveal any file entry
* stop auto revealing gitignored directories at all
We can add the auto reveal exclude globs later, if needed, but let's try
to keep the config simpler and start with a more minimalist approach.
Release Notes:
- Improved project panel auto reveal mechanics: gitignored files are not
auto revealed anymore; a `auto_reveal_entries = true` config option for
`project_panel` is added; a `pane::RevealInProjectPanel` action and a
corresponding buffer tab context menu were added
We can also use these maps and sets in place of `SeaHasher` because
they are also deterministic. Note that we're not swapping std's
`HashMap` and `HashSet` wholesale inside of `collections` because
on the server we need cryptographically secure collections.