forked from zed-industries/zed
-
Notifications
You must be signed in to change notification settings - Fork 4
Transition to GPUI 3 #102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Anthony-Eid
merged 246 commits into
RemcoSmitsDev:debugger
from
Anthony-Eid:gpui-3-update
Jan 29, 2025
Merged
Transition to GPUI 3 #102
Anthony-Eid
merged 246 commits into
RemcoSmitsDev:debugger
from
Anthony-Eid:gpui-3-update
Jan 29, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Closes zed-industries#23342 Ran `nix flake update` and did some cleanup in shell.nix to follow nix [best practices](https://discourse.nixos.org/t/how-to-solve-libstdc-not-found-in-shell-nix/25458/6). Prior to running `nix flake update` `strings "$(echo "$LD_LIBRARY_PATH" | tr : "\n" | grep "gcc")/libstdc++.so.6" | grep "CXXABI_1.3.15" CXXABI_1.3.15` Does not find `CXXABI_1.3.15` After running `nix flake update` `strings "$(echo "$LD_LIBRARY_PATH" | tr : "\n" | grep "gcc")/libstdc++.so.6" | grep "CXXABI_1.3.15" CXXABI_1.3.15` Finds `CXXABI_1.3.15` Launching Zed 0.168.3 inside Zed's nix development shell now launches with no errors. Release Notes: - N/A
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/upload-artifact](https://redirect.github.com/actions/upload-artifact) | action | digest | `6f51ac0` -> `65c4c4a` | --- ### Configuration 📅 **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone America/New_York, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- Release Notes: - N/A <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#22762) During my work on PR zed-industries#22616, while trying to fix the `test_reporting_fs_changes_to_language_servers` test case, I noticed that we are currently handling paths using `String` in some places. However, this approach causes issues on Windows. This draft PR modifies `rebuild_watched_paths_inner` and `glob_literal_prefix`. For example, take the `glob_literal_prefix` function modified in this PR: ```rust assert_eq!( glob_literal_prefix("node_modules/**/*.js"), "node_modules" ); // This works on Unix, fails on Windows assert_eq!( glob_literal_prefix("node_modules\\**\\*.js"), "node_modules" ); // This works on Windows assert_eq!( glob_literal_prefix("node_modules\\**/*.js"), "node_modules" ); // This fails on Windows ``` The current implementation treats path as `String` and relies on `\` as the path separator on Windows, but on Windows, both `/` and `\` can be used as separators. This means that `node_modules\**/*.js` is also a valid path representation. There are two potential solutions to this issue: 1. **Continue handling paths with `String`**, and on Windows, replace all `/` with `\`. 2. **Use `Path` for path handling**, which is the solution implemented in this PR. ### Advantages of Solution 1: - Simple and direct. ### Advantages of Solution 2: - More robust, especially in handling `strip_prefix`. Currently, the logic for removing a path prefix looks like this: ```rust let path = "/some/path/to/file.rs"; let parent = "/some/path/to"; // remove prefix let file = path.strip_prefix(parent).unwrap(); // which is `/file.rs` let file = file.strip_prefix("/").unwrap(); ``` However, using `Path` simplifies this process and makes it more robust: ```rust let path = Path::new("C:/path/to/src/main.rs"); let parent = Path::new("C:/path/to/src"); let file = path.strip_prefix(&parent).unwrap(); // which is `main.rs` let path = Path::new("C:\\path\\to/src/main.rs"); let parent = Path::new("C:/path/to\\src\\"); let file = path.strip_prefix(&parent).unwrap(); // which is `main.rs` ``` Release Notes: - N/A --------- Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
…d-industries#23317) This Pull Request introduces a new command `workspace: move focused panel to next position` which finds the currently focused panel, if such panel exists, and moves it to the next valid dock position, following the order of `Left → Bottom → Right` and then starting again from the left position. In order to achieve this the following changes have been introduced: * Add a new default implementation for `PanelHandle`, namely `PanelHandle::move_to_next_position` which leverages `PanelHandle::position`, `PanelHandle::position_is_valid` and `PanelHandle::set_position` methods to update the panel's position to the next valid position. * Add a new method to the `workspace` module, ` move_focused_panel_to_next_position`, which is responsible for finding the currently focused panel, if such a panel exists, and calling the `move_to_next_position` method in the panel's handle. * Add a new action to the `workspace` module, `MoveFocusedPanelToNextPosition`, which is handled by the `move_focused_panel_to_next_position` method. Tests have also been added to the `workspace` module in order to guarantee that the action is correctly updating the focused panel's position. Here's a quick video of it, in action 🔽 https://github.com/user-attachments/assets/264d382b-5239-40aa-bc5e-5d569dec0734 Closes zed-industries#23115 Release Notes: - Added new command to move the focused panel to the next valid dock position – `workspace: move focused panel to next position` .
) Closes zed-industries#22740 I haven't assigned any default keybindings to these actions because it might conflict with existing OS bindings. Preview: https://github.com/user-attachments/assets/7c62cb34-2747-4674-a278-f0998e7d17f9 Release Notes: - Added `workspace::ActivateNextWindow` and `workspace::ActivatePreviousWindow` actions for cycling between windows.
…es#22861) When the user closes a tab, the tab switcher will now select the tab at the same position. This feature is especially relevant for keyboard users when you want to close multiple consecutive tabs with `<Ctrl-Backspace>`. Please see the discussion at zed-industries#22791 for full motivation and the quick demo. Release Notes: - tab_switcher: Preserve selected position when tab is closed
…es#23357) Related issue: zed-industries#20167 Release Notes: - Changed the default keybinding to accept partial inline completions from `ctrl-right` to `ctrl-cmd-right` on macOS, because `ctrl-right` is already bound to jump to the end of the line. Co-authored-by: Antonio <antonio@zed.dev> Co-authored-by: Kirill <kirill@zed.dev> Co-authored-by: Bennet <bennet@zed.dev>
Note: Design hasn't been reviewed yet, but the logic is done When the user switches the inline completion provider to `zed`, we'll show a modal prompting them to accept terms if they haven't done so: https://github.com/user-attachments/assets/3fc6d368-c00a-4dcb-9484-fbbbb5eb859e If they dismiss the modal, they'll be able to get to it again from the inline completion button: https://github.com/user-attachments/assets/cf842778-5538-4e06-9ed8-21579981cc47 This also stops zeta sending requests that will fail immediately when ToS are not accepted. Release Notes: - N/A --------- Co-authored-by: Richard <richard@zed.dev> Co-authored-by: Danilo Leal <daniloleal09@gmail.com> Co-authored-by: Joao <joao@zed.dev>
…d-industries#23364) Just a little design fine-tune. | Before | After | |--------|--------| | <img width="454" alt="Screenshot 2025-01-20 at 12 13 10 PM" src="https://github.com/user-attachments/assets/b27372f2-00f5-40f4-927d-0d831ec4b90d" /> | <img width="454" alt="Screenshot 2025-01-20 at 12 12 17 PM" src="https://github.com/user-attachments/assets/207d08da-d75e-4c60-a6eb-cb1549b5925c" /> | Release Notes: - N/A
To make the mention and keyboard navigability discoverable. Release Notes: - N/A
This PR capitalizes the co-author prefix, as this is the way GitHub writes it in their [docs](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-co-authored-commits-on-the-command-line). Release Notes: - N/A
…ators, class inheritance, function arguments and definition keywords (zed-industries#21454) Add capture groups for builtin types, builtin attribute decorators, class inheritance, function arguments and definition keywords. Related to zed-industries#14892 Release Notes: - Improved syntax highlight for Python: new capture groups for `@function.arguments`, `@function.kwargs`, `@type.class.inheritance`, `@keyword.definition`, `@attribute.builtin` and `@type.builtin`.
The output of `git status --porcelain=v1` includes untracked directories, i.e. directories that have no tracked files beneath. Since we have our own way of computing a "summary" status for each directory in a repo, this is not helpful for Zed; and it interferes with our handling of nested repos. So just skip these lines in the output. Closes zed-industries#23133 Release Notes: - Fix project panel colors when one git repository is nested beneath another
…industries#23375) Release Notes: - N/A
…2997) Adds support for Cut, Copy, Paste, Undo, Redo, New, Open, Save, and Find keys to the default keymap. These keys can be found on old keyboards, but also custom layouts like [Extend](https://dreymar.colemak.org/layers-extend.html). Release Notes: - Added support for the Cut, Copy, Paste, Undo, Redo, New, Open, Save, and Find keys to the default keymap.
Release Notes: - N/A
…d-industries#23354) According to zed-industries#23223, manually setting `RUSTFLAGS` env var overrides settings in `.cargo/config.toml`. Since users possibly may set their own `RUSTFLAGS` when building, this creates an avenue where builds may fail for really strange reasons that are difficult to debug. This PR adds notes to the troubleshooting section to avoid setting `RUSTFLAGS`, and offers alternatives which do not conflict. This problem most recently affected nightly CI builders since we had been setting `RUSTFLAGS` in our workflows to enable custom things like gles or compiling with a specific target cpu. PR zed-industries#23117 caused builds to fail unless they were compiled with `-C target-feature=+crt-static`, which due to this issue the `RUSTFLAGS` env var we set overrode the `config.toml` compile flags, causing our builds to fail. Release Notes: - N/A
…ries#23378) Closes zed-industries#23015 Release Notes: - Improved which keybindings are selected for display. Now later entries within `bindings` will take precedence. The default keymaps have been updated accordingly.
`@mention`ed files in assistant2 now get replaced by the full path of the file in what gets sent to the model, while rendering visually as just the filename (in a crease, so they can only be selected/deleted as a whole unit, not character by character). https://github.com/user-attachments/assets/a5867a93-d656-4a17-aced-58424c6e8cf6 Release Notes: - N/A --------- Co-authored-by: João Marcos <joao@zed.dev> Co-authored-by: Conrad <conrad@zed.dev>
I've noticed an occasional error: `ignoring event C:\some\path\to\file outside of root path \\?\C:\some\path`. This happens because UNC paths always fail to match with non-UNC paths during operations like `strip_prefix` or `starts_with`. To address this, I changed the types of some key parameters to `SanitizedPath`. With this adjustment, FS events are now correctly identified, and under the changes in this PR, the `test_rescan_and_remote_updates` test also passes successfully on Windows. Release Notes: - N/A
Also fixes issue introduced in zed-industries#23113 where changes to keyboard layout would not cause reload of keymap configuration. Closes zed-industries#20531 Release Notes: - N/A
Closes zed-industries#22883 To fix the problem, we move `handle_rename_project_entry` from `Worktree` to `LspStore` and register it there. This way it becomes available both in local and headless projects and this avoids the duplication. Release Notes: - Fixed renaming project entries in Remote Development
…ustries#23385) If a suggested edit is a single character insert or a single line deletion, we'll show the diff popover to make it stand out more. Release Notes: - N/A Co-authored-by: Danilo <danilo@zed.dev>
…ymbol highlighting (zed-industries#23401) This unblocks work on zed-industries#22182; a single language server might actually be required by multiple languages (think of e.g. C/C++, Javascript/Typescript), in which case it doesn't make sense to use a single grammar. We already use primary language of a buffer for highlights and this PR makes this the only supported syntax highlighting flavour for returned symbols. Closes #ISSUE Release Notes: - N/A
…ies#23403) Follow up to zed-industries#22658 This PR ensures the background and border color of a project panel entry is exactly the same with one exception: if the item is focused, active, and not with mouse down. The point is to not be able to see the border at all given they're there to act sort of akin to CSS's `outline` (which doesn't add up to the box model). Please let me know if there is any edge case I either messed up here or didn't account for. https://github.com/user-attachments/assets/29c74f6a-b027-4d19-a7de-b9614f0d7859 Release Notes: - N/A
| Before | After | |--------|--------| | <img width="1328" alt="Screenshot 2025-01-21 at 11 20 49 AM" src="https://github.com/user-attachments/assets/ad8e3017-122a-4ebd-b1f5-5eb41cc3725a" /> | <img width="1328" alt="Screenshot 2025-01-21 at 11 19 39 AM" src="https://github.com/user-attachments/assets/a0dcbd52-6aca-43fa-97ee-6efde15c8bc1" /> | Release Notes: - N/A
Updates zed-industries#21927 Replaces zed-industries#22904 Closes zed-industries#8580 Adds actions (default keybinds with emacs keymap): - editor::SetMark (`ctrl-space` and `ctrl-@`) - editor::ExchangeMark (`ctrl-x ctrl-x`) Co-Authored-By: Peter <peter@zed.dev> Release Notes: - Add Emacs mark mode (`ctrl-space` / `ctrl-@` to set mark; `ctrl-x ctrl-x` to swap mark/cursor) - Breaking change: `selection` keyboard context has been replaced with `selection_mode` --------- Co-authored-by: Peter <peter@zed.dev>
…3707) This PR adds menu item for `workspace::OpenFiles` in app menu on Linux and Windows. Context: When opening a file or folder on Linux and Windows via the native file picker, the picker can be either in file-only mode or folder-only mode. This means you have to open it already knowing whether you want to open a file or a folder, unlike macOS, which lets you choose either in the same picker. For this reason, a new action, `workspace::OpenFiles`, was recently added for Linux and Windows. This is basically file-only mode, alongside the existing `workspace::Open` action, which is folder-only. In macOS, the `workspace::Open` action is sufficient to open both file and folder. Before: <img src="https://github.com/user-attachments/assets/67dc95d6-e98d-438a-9568-570e87617f85" alt="Before" width="200" /> After: <img src="https://github.com/user-attachments/assets/d0ffd02c-0f48-4edc-b426-4d430f2e0c86" alt="After" width="200" /> Release Notes: - Added "Open File" action in file menu for Linux and Windows.
Post-PR merge fixes. Release Notes: - N/A
Following up on zed-industries#20763, this PR adds support for module- and class-level docstrings, adds "additional docstrings" as described in [PEP 257](https://peps.python.org/pep-0257/), and fixes function-level docstrings so that only the first string literal in a function gets treated as a docstring. One question that occurs to me is: Would it be good to capture attribute and additional docstrings differently from regular docstrings? E.g. `@string.doc.attribute`, `@string.doc.additional`? PEP 257 mentions that unlike regular docstrings, these docstrings are ignored by the interpreter (regular docstrings get added as the `__doc__` property of the object they document), so I can see someone potentially wanting to style them a little differently. Release notes: * Added Python syntax highlighting for class- and module-level docstrings, additional docstrings, and improved recognition of function-level docstrings. Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
…dustries#23755) Closes zed-industries#23699 Release Notes: - Fixed issue where snippets would not update when a snippets file contained comments.
This fixes the panics we we're seeing in `EditPreview::highlight_edits`. The reason for this was that we were interpolating edits incorrectly. Here's an example: ```rust let a = 0; // existing code let c = 2; // suggested by edit prediction ``` The edits would look like this: `[(Point(1, 0)..Point(1, 0), "let c = 2;"]` Now i type: ```rust let a = 0; // existing code let b = 1; // added this line let c = 2; // suggested by edit prediction ``` Before this change, the `interpolate` function would allow insertions before the edit prediction edits, the anchors will move to the next line. The edits would look now like this: `[(Point(2, 0)..Point(2, 0), "let c = 2;"]` However, now we end up with a call to `EditPreview::highlight_edits`, with the following parameters: - current_snapshot: ```rust let a = 0; let b = 1; ``` - edits: `[(Point(2, 0)..Point(2, 0), "let c = 2;"]` - applied_edits_snapshot: ```rust let a = 0; let c = 2; ``` And here you can see the issue, applying the `edits` to the `current_snapshot` should always end up re-creating the text that is present in the `applied_edits_snapshot`. That is not the case here though, meaning that the offsets in the new buffer are not correct, which can either lead to a confusing popup or a crash if the suggestion is at the end of the file. Here's a real world example (edit prediction is ONLY suggesting to delete a new line): <img width="487" alt="Screenshot 2025-01-27 at 13 05 26" src="https://github.com/user-attachments/assets/a0a8064e-8cfa-48b2-9f1c-efc2d0d9d7d4" /> We fixed this by only allowing interpolation if the user is editing after all the edit predictions OR if the user edit is a subset of the model suggestion. Co-Authored-by: Antonio <antonio@zed.dev> Release Notes: - N/A Co-authored-by: Antonio <antonio@zed.dev>
…-industries#23597) This hides the ability to rate completions behind the `predict-edits-rate-completions` feature flag Release Notes: - N/A
…s#23766)" (zed-industries#23771) This reverts commit dfed43a. Closes #ISSUE Release Notes: - N/A
Now both remote collab and ssh remote get entries shown and updated in the git panel. This seems to be quite a step towards remote git support, hence submitting a PR. Further steps: remove `get_local_repo` and allow getting the repo from `Worktree`, not its local counterpart + have another, remote impl of the `GitRepository` trait. Release Notes: - N/A
…ed (zed-industries#23775) Closes #ISSUE Release Notes: - N/A
…rminal (zed-industries#23776) Closes zed-industries#23774 Release Notes: - Improved terminal hover word matching
In both `thread` and `prompt editor` the context file picker, gitignored files are hidden (as expected) when searching files by path, but they are still shown initially as you create the file picker. Plus, selecting gitignored files in the `prompt editor` is bugged and collapses everything. This PR settles on not showing gitignored files to solve these inconsistencies. Release Notes: - Fix gitignored files filter occasionally not working in context file picker.
This PR fixes an issue introduced in zed-industries#20551 that would prevent models with unknown IDs from working in the LLM service. We only need to look up a model from its ID for the beta headers, and if we can't find that particular model we should fall back to the default beta headers instead of bailing out completely, Release Notes: - N/A
TODO: - [x] Add BackgroundTag::PatternSlash - [x] Support metal slash pattern fills - [x] Support blade slash pattern fills --- Adds support for a new background type in gpui, `pattern_slash`. Usage: ```rust div().size(px(56.0)).bg(pattern_slash(gpui::red())) ``` This will create a 56px square with a red slash pattern fill. You can run the pattern example with `cargo run -p gpui --example pattern`:  --- After talking with @as-cii at length about how we want to support patterns in gpui, we decided for now we'll simply add a new BackgroundTag specific to this pattern. It isn't the best long term plan however – we'll likely want to introduce the concept of a `Fill` at some point so we can have `Fill::Solid`, `Fill::Gradient(LinearGradient)`, etc in the future. The pattern is designed to seamlessly tile vertically for elements of the same height. For example, for use in editor line backgrounds:  --- Release Notes: (do we do gpui release notes?) - Adds support for slash pattern fills in `gpui`. --------- Co-authored-by: Antonio Scandurra <me@as-cii.com>
This PR fixes the `pattern` example, which was merged in zed-industries#23576 without being updated with the new GPUI changes. Release Notes: - N/A
Co-Authored-By: Max <max@zed.dev> Release Notes: - N/A Co-authored-by: Max <max@zed.dev>
This reverts commit d8c9fdd. Closes #ISSUE Release Notes: - N/A
…on (zed-industries#23803) This PR updates the GitHub Action definitions to restrict more CI jobs to only run in the `zed-industries` organization (and thus, not on forks). Release Notes: - N/A
Closes #ISSUE Release Notes: - N/A
Closes: zed-industries#6884 (hopefully 🤞) Release Notes: - N/A
- Updates the bindings ([tree-sitter-prisma](https://github.com/victorhqc/tree-sitter-prisma)) to its latest update (recently updated to use latest tree-sitter) - Improves syntax highlighting - Adds the `view` keyword **After** <img width="1174" alt="Screenshot 2025-01-24 at 12 44 57" src="https://github.com/user-attachments/assets/84e6afe0-5340-4cdf-ad85-9a800a757323" /> **Before** <img width="1174" alt="Screenshot 2025-01-24 at 12 44 45" src="https://github.com/user-attachments/assets/11296998-fdfe-4fe8-8e5b-feeb41c24385" /> Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <git@maxdeviant.com>
…#23811) This PR fixes a typo in the error that occurs when trying to construct an AWS Kinesis client and the `kinesis_region` value is missing. Release Notes: - N/A
RemcoSmitsDev
pushed a commit
that referenced
this pull request
Jun 5, 2025
…ers (zed-industries#32008) Hi, this pull request adds `sorbet` and `steep` to the list of available language servers for the Ruby language in order to prepare default Ruby language settings for these LS. Both language servers are disabled by default. We plan to add both in #104 and #102. Thanks! Release Notes: - ruby: Added `sorbet` and `steep` to the list of available language servers.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
This is another update to gpui3 because the last PR used a rebase strategy that rewrote Zed's commit history. So I reverted it and used a basic merge to maintain an accurate history.
Co-authored-by: Remco Smits djsmits12@gmail.com