Commit Graph
100 Commits
Author SHA1 Message Date
Nathan Sobo fa7ebd0825 Include drop shadows with different corner radii in the example 2023-08-12 11:08:58 -06:00
Nathan Sobo 65123e6eed Allow individual corner radii on drop shadows 2023-08-12 10:58:08 -06:00
Nathan Sobo 40f478937e Allow distinct corner radii for images 2023-08-12 10:50:04 -06:00
Nathan Sobo 84dc4090bd Wire up per corner radii for quad
Still need to expose this in the styling layer and allow images
to have per corner radii.
2023-08-12 10:40:23 -06:00
Nathan Sobo 8ed5e8f86d Pass PaintContext to Element::paint (#2788)
I want to use this on another branch, but it's a sweeping change, so
this prepares the ground for it. This can always be reverted if it
doesn't work out.
2023-08-08 21:16:57 -06:00
Nathan Sobo db96fb1307 Merge remote-tracking branch 'origin/main' into paint-context 2023-08-08 18:27:16 -06:00
Nathan Sobo 54ca5f1d44 Replace context methods that take a window id with methods on window handles (#2832)
With this PR, I've eliminated almost all references to window ids
outside of the internals of GPUI. All public methods taking these ids
are now defined on `AnyWindowHandle`, which provides a more coherent
narrative around windows as a concept.
2023-08-08 17:51:37 -06:00
Nathan Sobo 0dc70e6cbf Rename mac platform Window to MacWindow for clarity 2023-08-08 17:21:06 -06:00
Nathan Sobo fc96676662 Use AppContext::update when updating windows so we handle effects 2023-08-08 17:20:46 -06:00
Nathan Sobo 8e49d1419a Minimize window id usage 2023-08-08 16:38:46 -06:00
Nathan Sobo afd89b256a Store AnyWindowHandles instead of usizes 2023-08-08 16:06:53 -06:00
Nathan Sobo 1e8a9ccdb5 Merge remote-tracking branch 'origin/main' into window-handles 2023-08-08 11:42:55 -06:00
Nathan Sobo b77c336a3d Return window handles from WeakItemHandle 2023-08-08 11:39:56 -06:00
Nathan Sobo b2d9ccc0a2 Move more window methods off AsyncAppContext 2023-08-08 11:38:07 -06:00
Nathan Sobo 95cd96e4be Move debug_elements to AnyWindowHandle 2023-08-08 11:27:19 -06:00
Nathan Sobo 4f10f0ee86 Remove window methods from AsyncAppContext 2023-08-08 11:23:49 -06:00
Nathan Sobo 1fd80ba8bd Remove AsyncAppContext::remove_window 2023-08-08 11:22:43 -06:00
Nathan Sobo fe6a1886c1 Remove unused dock code 2023-08-08 11:20:42 -06:00
Nathan Sobo 0a4633f88f Remove more window id usage 2023-08-08 11:20:09 -06:00
Nathan Sobo da7dc9c880 Work with window handles instead of ids in drag code 2023-08-08 11:14:02 -06:00
Nathan Sobo d896d89842 Store an AnyWindowHandle in WindowContext 2023-08-08 11:08:37 -06:00
Nathan Sobo 49f1f1c6c2 Remove window when closing workspace in test 2023-08-08 09:13:17 -06:00
Nathan Sobo dba2facd23 Remove window via handles 2023-08-07 22:58:01 -06:00
Nathan Sobo f0da6b05fd Remove TestAppContext::add_view
Instead, we now call this on window handles.
2023-08-07 22:46:48 -06:00
Nathan Sobo 0f332238b3 Remove unused method 2023-08-07 22:08:44 -06:00
Nathan Sobo d687c3d81f Merge remote-tracking branch 'origin/main' into window-handles 2023-08-07 22:07:20 -06:00
Nathan Sobo f2be3181a9 Move window-related methods from TestAppContext to AnyWindowHandle 2023-08-07 20:23:04 -06:00
Nathan Sobo 0197d49230 Move activation simulation to AnyWindowHandle 2023-08-07 19:45:43 -06:00
Nathan Sobo 486f5bc6ca Get compiling 2023-08-07 19:08:58 -06:00
Nathan Sobo 3e0d0e5c01 WIP 2023-08-07 13:54:47 -06:00
Nathan Sobo d4d32611fe WIP 2023-08-06 18:57:02 -06:00
Nathan Sobo adc50469ff WIP 2023-08-06 12:45:31 -06:00
Nathan Sobo dcf8b00656 WIP 2023-08-05 18:00:44 -06:00
Nathan Sobo d3c1966d96 WIP: Return WindowHandle<V: View> from AppContext::add_window (#2820)
Instead of returning a usize for the window id, I'm instead returning a
`WindowHandle<V: View>` where `V` is the type of the window's root view.
@as-cii helped me with a cool technique using generic associated types
where methods on `WindowHandle` can return either T or Option<T>
depending on the `BorrowWindowContext::Result` associated type.

Some example usage...

```rs
let window = cx.add_window(|cx| MyView::new(cx));
let my_view = window.root(cx); // If cx is TestAppContext, returns MyView. Otherwise returns Option<MyView>, because the window could be closed.
```


This isn't insanely beneficial on its own, but I think it will help
clean up our testing story. I'm planning on making `window` more useful
in tests for laying out elements, etc.

- [x] Rework tests that call `add_window` 😅 to expect only a window in
return.
- [x] Get tests passing
- [x] 🚬  test
2023-08-03 18:45:51 -06:00
Nathan Sobo 2d96388be3 Use WindowHandles in a couple places 2023-08-03 17:46:34 -06:00
Nathan Sobo 485c0a482e Don't refcount window handles 2023-08-03 17:11:47 -06:00
Nathan Sobo afcc0d621b WIP 2023-08-03 17:03:39 -06:00
Nathan Sobo 3c938a7377 WIP 2023-08-03 08:10:16 -06:00
Nathan Sobo 8e36da1382 Get tests passing 2023-08-02 15:02:55 -06:00
Nathan Sobo 884cee6dfd Get tests compiling returning WindowHandle<V: View> from add_window 2023-08-02 14:05:03 -06:00
Nathan Sobo 60e190e500 WIP 2023-08-02 12:08:56 -06:00
Nathan Sobo 300ce61bd0 WIP 2023-08-02 08:25:40 -06:00
Nathan Sobo b695c42e11 WIP: Return WindowHandle<V: View> from AppContext::add_window 2023-08-01 22:28:04 -06:00
Nathan Sobo 1b03c5d69c Pass PaintContext to Element::paint
I want to use this on another branch, but it's a sweeping change,
so this prepares the ground for it. This can always be reverted if
it doesn't work out.
2023-07-25 17:32:31 -06:00
Nathan SoboandAntonio Scandurra 8f8a99d788 Bind cmd-? to assistant::toggle_focus
Bypass system help menu shortcut at the app delegate level to achieve this.

Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 11:43:24 +02:00
Nathan SoboandAntonio Scandurra 7efcd60608 Remove border from assistant message header
Also: Increase right margin on token count to space it from the scrollbar.

Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:54:44 +02:00
Nathan SoboandAntonio Scandurra 83fc7b9b7c Avoid scrolling to the new cursor position so the assistant's output is stable
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:32:06 +02:00
Nathan SoboandAntonio Scandurra f52d3ea5ef Clean up tooltips, create conversation on cmd-n
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:27:29 +02:00
Nathan SoboandAntonio Scandurra d41a7f41fb Space out assistant icons to match pane icons
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:00:28 +02:00
Nathan Sobo 04d93dfbd9 vim: indent/outdent (#2644)
Release Notes:

- vim: support indent/outdent
([#832](https://github.com/zed-industries/community/issues/832>)).
2023-06-27 04:15:55 -06:00
Nathan Sobo fd3ee0ebd0 Vim toggle case (#2648)
Release Notes:

- vim: Add ~ to toggle case
([#1410](https://github.com/zed-industries/community/issues/1410))
2023-06-27 04:13:24 -06:00
Nathan Sobo 29b2639b4c Merge remote-tracking branch 'origin/main' into vim-indent 2023-06-27 12:09:47 +02:00
Nathan Sobo 16c23557b8 vim: Fix scrolling (#2647)
After #2641 we noticed that scrolling didn't take a count parameter, and
a few other issues with the way that we calculated the distance to
scroll.
 
Release Notes:

- Improved distance calculations for page-up/page-down
- vim: Allow counts to work with scrolling shortcuts.
2023-06-27 04:01:14 -06:00
Nathan Sobo 7294314ce7 vim: shortcuts for tab navigation (#2649)
Release Notes:

- vim: added gt/ctrl-pagedown and gT/ctrl-pageup for tab navigation
2023-06-27 03:57:01 -06:00
Nathan Sobo 0fd0b60bd6 vim: Fix code actions menu (#2650)
Fixes: zed-industries/community#1690

I'm not sure this is the correct way to fix this...
* A simpler approach would be to just say `!showing_code_actions` in the
binding file (as `showing_completions` can only happen in insert mode -
and `VimControl` will be false). This seemed a little error prone if
more menus were added in the future.
* A more complicated approach would be to copy the way this is done from
the MouseContextMenu, which registers its own keyboard shortcuts, and as
such uses those when it's open. This seems "more correct", but is a
major refactoring for a very small reward.

Release Notes:

- vim: Fix code actions menu
([#1690](https://github.com/zed-industries/community/issues/1690))
2023-06-27 03:56:08 -06:00
Nathan Sobo 3f4a06f576 Add an Element derive macro for building components out of other elements (#2643)
To turn any struct into a composite element, you can implement a render
method with the following signature:

```rs
fn render<V: View>(&mut self, view: &mut V, cx: &mut ViewContext<V>) -> AnyElement<V>;
```

Then add #[derive(Element)] to the struct definition.

This will make it easier to introduce higher-level components that are
expressed in terms of other elements. Instead of calling functions that
return elements, we can now make any struct into an element fairly
easily. The advantage is that we can use method chaining to express
optional state on these components, and they blend in better with other
elements.

cc @mikayla-maki @osiewicz @iamnbutler 

Release Notes:

- N/A
2023-06-25 08:12:02 -06:00
Nathan Sobo bede668b14 Add a derive macro for Element
To turn any struct into a composite element, you can implement a render method
with the following signature:

fn render<V: View>(&mut self, view: &mut V, cx: &mut ViewContext<V>) -> AnyElement<V>;

Then add #[derive(Element)] to the struct definition.

This will make it easier to introduce higher-level components that are expressed in
terms of other elements.
2023-06-25 07:51:50 -06:00
Nathan Sobo 1707652643 Always focus a panel when zooming it
This allows us to zoom a panel when clicking a button, even if the
panel isn't currently focused.
2023-06-22 06:55:31 -06:00
Nathan Sobo ea5398a702 vim: binding fixes (#2637)
Release Notes:

- In vim mode you can now use count modifiers with arrow keys (`5<down>`
will go down 5 lines).
- In vim mode `ctrl+]` and `ctrl+o` now work to go to definition and
back
2023-06-22 06:44:12 -06:00
Nathan Sobo cd008d1503 Add support for joining lines (#2636)
🚧 We have a couple more refinements to this to add 🚧 

Release Notes:

You can now join lines with `ctrl-j` or `shift-J` in Vim normal mode.

🍐'd with @ConradIrwin
2023-06-22 06:38:57 -06:00
Nathan Sobo a49189a704 Add Zoom button to assistant panel 2023-06-21 19:50:22 -06:00
Nathan Sobo a75341db97 Move model and remaining tokens to assistant toolbar 2023-06-21 19:01:30 -06:00
Nathan SoboandConrad Irwin a365b2f177 Add shift-J binding to Vim normal mode
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
2023-06-21 11:58:31 -06:00
Nathan SoboandConrad Irwin cde8d7d747 Don't use test-only method; add ctrl-j binding
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
2023-06-21 11:53:11 -06:00
Nathan SoboandConrad Irwin cf38264eda Handle multiple selections when joining lines
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
2023-06-21 11:47:06 -06:00
Nathan SoboandConrad Irwin 61352f68ea Add more assertions for joining lines at the end of the file
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
2023-06-21 11:21:09 -06:00
Nathan SoboandConrad Irwin f07a929350 Allow joining multiple lines and deleting empty lines
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
2023-06-21 11:18:28 -06:00
Nathan SoboandConrad Irwin c48bd394c1 Start on joining lines
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
2023-06-21 10:32:02 -06:00
Nathan Sobo d78fbbc63e Add title to assistant panel and move + to right 2023-06-21 09:54:49 -06:00
Nathan Sobo 0932149c48 Fix filename 2023-06-20 20:21:43 -06:00
Nathan Sobo 3a61fd503f WIP: Trying to display the toolbar but tired. May be worth discarding this. 2023-06-20 20:11:37 -06:00
Nathan SoboandJulia Risley 23bc11f8b3 Remove the nested Pane from the assistant
Since we don't want tabs, I think it would be better to render the toolbar
for ourselves directly and handle switching between conversations.

Co-Authored-By: Julia Risley <julia@zed.dev>
2023-06-20 18:52:48 -06:00
7a051a0dcb Panic in debug if global settings can't be deserialized from defaults
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Julia Risley <julia@zed.dev>
2023-06-20 18:12:59 -06:00
Nathan SoboandJulia Risley bd7f8e8b38 Scan conversations dir on assistant panel open and on changes
Co-Authored-By: Julia Risley <julia@zed.dev>
2023-06-20 16:19:43 -06:00
Nathan SoboandKyle Caverly 230b4d237e Add SavedConversation::list() method
Co-Authored-By: Kyle Caverly <kyle@zed.dev>
2023-06-20 13:29:34 -06:00
Nathan SoboandKyle Caverly 9f783944a7 Wait until we have a summary before saving a conversation
Also, avoid collisions by adding a discriminant.

Co-Authored-By: Kyle Caverly <kyle@zed.dev>
2023-06-20 13:03:23 -06:00
Nathan Sobo 03993ea719 Rename SumTree::push_tree to ::append (#2626)
This is something I've been meaning to rename in SumTree. Was looking at
the code and figure why not now.
2023-06-20 08:37:55 -06:00
Nathan Sobo 8c298a9da5 Rename SumTree::push_tree to ::append 2023-06-19 19:49:33 -06:00
Nathan Sobo 882009bc75 Save conversations to ~/.config/zed/conversations
Still need to implement loading / listing.
I'd really be rather write operations to a database. Maybe we
should be auto-saving? Integrating with panes? I just did
the simple thing for now.
2023-06-16 16:15:07 -06:00
Nathan Sobo c3b2b4c4e3 Cycle message roles on ctrl-r (#2619)
I'd like to follow up to allow roles to be cycled for the selected range
and support multi-cursors, but this is a start and contains a
refactoring, so going to merge.

Release Notes:

- Added the ability to cycle roles in the assistant with `ctrl-r`
2023-06-16 14:11:01 -06:00
Nathan Sobo 54c71c1a35 Insert reply after the currently selected user message 2023-06-16 12:41:07 -06:00
Nathan Sobo 11f318566e Allow splitting of messages using shift-enter (#2613)
Closes
https://linear.app/zed-industries/issue/Z-2364/allow-splitting-blocks

Release Notes:

- Added support for splitting messages in the assistant panel using
`shift-enter`. (preview-only)
2023-06-16 11:50:50 -06:00
Nathan Sobo 75b5ac8488 Cycle message roles on ctrl-r 2023-06-16 11:50:18 -06:00
Nathan Sobo c179dd9990 Remove redundant tests 2023-06-16 11:43:16 -06:00
6c0f65cfe0 Avoid inserting redundant newlines
Co-Authored-By: Piotr Osiewicz <piotr@zed.dev>
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-16 10:36:42 -06:00
8c6ba13fef Never insert an empty prefix when splitting a message with a non-empty range
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
Co-Authored-By: Piotr Osiewicz <piotr@zed.dev>
2023-06-15 09:02:15 -06:00
Nathan Sobo 23836eb251 Not working yet: Remove empty messages unless they contain the cursor
Problem is, I'm trying to trust the excerpt id of the selection head,
but it's a sentinel value and not the actual excerpt id of the message.
I think we probably need to resolve to offsets instead.
2023-06-05 22:58:08 -06:00
Nathan Sobo 8a851ad7f8 Fix annoying system prompt (#2538)
I was having fun, but it was too much. It makes the assistant too
annoying to be useful.

Release Notes:

Use `N/A` in this section if this item should be skipped in the release
notes.

Add release note lines here:

* Dialed back the system prompt on the assistant.
2023-05-29 22:05:40 -06:00
Nathan Sobo 063613bf4e Fix annoying system prompt
I was having fun, but it was too much. It makes the assistant too annoying to be useful.
2023-05-29 21:47:59 -06:00
Nathan Sobo ffbfbe422b WIP: Not sure I actually want to rip this out 2023-05-26 16:11:58 -06:00
Nathan Sobo 3904971bd8 Hide assistant gutter 2023-05-26 15:38:03 -06:00
Nathan Sobo 8f6e67f440 Cancel assists on escape 2023-05-26 14:49:27 -06:00
Nathan SoboandAntonio Scandurra 80080a43e4 Start on an assistant panel based on multi-buffers
Each message is represented as a multibuffer excerpt to allow for
fluid editing of the conversation transcript.

Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-05-26 10:09:55 -06:00
Nathan Sobo 0b7d095c0a Introduce the ability to talk to GPT-4 within buffers on preview and dev (#2524)
This adds basic ability to interact with OpenAI inside a buffer.

Release Notes:

* If`OPENAI_API_KEY` is defined in your environment, you can now run the
`ai: assist` command to pass the text of your current buffer to GPT-4.
If you're editing a file with a `.zmd` extension, you can also invoke
the model with `cmd-enter.` (preview-only)
2023-05-24 12:00:43 -06:00
Nathan Sobo 26051de160 Clean up 2023-05-24 11:08:00 -06:00
Nathan Sobo 747322a02d Merge remote-tracking branch 'origin/main' into zmd 2023-05-24 11:04:07 -06:00
Nathan Sobo d495c1b804 Only run AI agent on dev and preview 2023-05-24 10:58:33 -06:00
Nathan Sobo ba79a8ba94 WIP 2023-05-24 10:26:14 -06:00
Nathan Sobo 50e1e17d09 WIP 2023-05-24 09:53:08 -06:00
Nathan Sobo 051c7566cc WIP 2023-05-24 09:38:37 -06:00