Compare commits

..

2066 Commits

Author SHA1 Message Date
Nathan Sobo
4013cf9229 One more doc 2023-11-22 13:32:08 -07:00
Nathan Sobo
ed92f7a037 More docs 2023-11-22 13:03:31 -07:00
Nathan Sobo
d3576ddd0e Write some docs 2023-11-22 12:57:47 -07:00
Nathan Sobo
6dcbb9a05d Further refine element traits 2023-11-22 12:39:55 -07:00
Nathan Sobo
5158508d0a Add RenderOnceStateful 2023-11-22 12:16:27 -07:00
Nathan Sobo
c23f17ee0b Reorganize element-related traits 2023-11-22 11:19:43 -07:00
Antonio Scandurra
ca1d9dd0e5 Fix scrolling in gpui2::UniformList (#3386)
Release Notes:

- N/A
2023-11-22 18:10:49 +01:00
Antonio Scandurra
8aaa46a1b6 Track scroll in editor's context menu 2023-11-22 17:58:00 +01:00
Antonio Scandurra
bd4a710cef Use interactivity's base style for UniformList 2023-11-22 17:50:34 +01:00
Antonio Scandurra
f37ace63e0 Initial autocomplete support for editor2 (#3383)
Release Notes:

- N/A
2023-11-22 16:02:37 +01:00
Piotr Osiewicz
ce3acf17cf CI: use global config toml (#3384)
It looks like we should keep RUSTFLAGS consistent in CI if possible;
some commands augmented RUSTFLAGS with "-D warnings" which overrode
`.cargo/config.toml`, causing unnecessary rebuilds even for non-bundling
runs. Tl;dr: for the last few days our average CI time spiked
significantly.
There are several solutions:
- We can place `-D warnings` in our `.cargo/config.toml`. That's not a
good solution, because then you wouldn't ever be able to build Zed with
warnings locally. A true PITA!
- We can place another config.toml somewhere in the search path
(https://doc.rust-lang.org/cargo/reference/config.html#hierarchical-structure)
and rely on the merging of properties. That way we can avoid having `-D
warnings` on developer machines while being able to override CI
behaviour at will.

This PR implements the latter approach by creating the new config file
manually. Ideally we should have it a a separate file in repository
that's moved into $HOME/.cargo on each CI run. Maybe we should even
place it somewhere more local to the checked out Zed version, as placing
it in a global spot is kinda bad too - what if we start building
multiple cargo projects on our CI machines?

Release Notes:

- N/A
2023-11-22 15:25:43 +01:00
Piotr Osiewicz
492c3a1e83 Bump artifact size limit for CI to 100GB 2023-11-22 15:14:24 +01:00
Piotr Osiewicz
6f8e03470c Use printf instead of echo 2023-11-22 14:41:26 +01:00
Piotr Osiewicz
8a6d3094c4 Change tabs to spaces 2023-11-22 14:37:41 +01:00
Piotr Osiewicz
552f03c49d chore/CI: place .cargo/config.toml augmentations in ~/.cargo/config.toml 2023-11-22 14:36:10 +01:00
Antonio Scandurra
2b6e8de11f Don't perform wrapping in completions 2023-11-22 14:23:09 +01:00
Antonio Scandurra
fff2d7955e Round up line width 2023-11-22 14:01:22 +01:00
Antonio Scandurra
3a8e9b5697 Avoid holding borrow to editor while painting child elements 2023-11-22 11:40:38 +01:00
Mikayla Maki
c199d92dac Update main.rs 2023-11-21 18:14:14 -08:00
Marshall Bowers
a94cf54aab Fix storybook (#3379)
This PR fixes storybook and gets it back into a compiling and running
state.

Release Notes:

- N/A
2023-11-21 14:28:00 -05:00
Nate Butler
6fe7b22164 UI refinements + Popover (#3377)
[[PR Description]]

- Update default ui_font_size
- Update toolbar style
- Start on ui::Popover

Release Notes:

- N/A
2023-11-21 13:49:10 -05:00
Marshall Bowers
1b05aad30c Extract Story into separate story crate (#3378)
This PR extracts the `Story` component into a separate `story` crate so
that it can be shared among various crates that define stories.

Release Notes:

- N/A

---------

Co-authored-by: Nate Butler <iamnbutler@gmail.com>
2023-11-21 13:42:00 -05:00
Nate Butler
40a49e6896 Update popover doc
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-21 12:43:56 -05:00
Nate Butler
9a145a4d86 Correctly position popover aside, add list item states
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-21 12:40:48 -05:00
Nate Butler
9f2e3bab9b Allow popover to take an aside
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-21 12:26:10 -05:00
Nate Butler
dac7912e87 Start on popover 2023-11-21 12:10:06 -05:00
Marshall Bowers
f4b4bdfd83 ui2: Get component stories compiling again (#3376)
This PR gets the component stories defined in `ui2` compiling again.

Release Notes:

- N/A
2023-11-21 12:06:25 -05:00
Nate Butler
f04deeb5f9 Document InteractionState 2023-11-21 11:51:15 -05:00
Antonio Scandurra
f2c63781f9 Merge branch 'main' into editor2-autocomplete
# Conflicts:
#	crates/editor2/src/editor.rs
2023-11-21 17:43:09 +01:00
Nate Butler
bec61123fd Update toolbar.rs 2023-11-21 11:06:27 -05:00
Marshall Bowers
6cd0bcc578 Fix panic when opening settings in zed2 (#3375)
This PR fixes a panic that occurs when opening the settings in zed2.

We store the `ThemeRegistry` as a global without wrapping it in an
`Arc`, so we need to retrieve it the same way.

Release Notes:

- N/A
2023-11-21 10:58:52 -05:00
Nate Butler
6d6aa3b253 Update default ui font settings 2023-11-21 10:43:18 -05:00
Nate Butler
79c890f31a ui2 cleanup (#3374)
[[PR Description]]

Tidies up the `ui2` crate, removing all components we aren't using and
doing a bit of reorganization.

Release Notes:

- N/A
2023-11-21 01:55:00 -05:00
Nate Butler
209fb10731 Remove stories mod until it is re-enabled 2023-11-21 01:36:35 -05:00
Nate Butler
8947438510 Update elevation 2023-11-21 01:23:47 -05:00
Nate Butler
453aa5ffd7 TextColor -> Color 2023-11-21 01:05:29 -05:00
Nate Butler
56d45e72cd Add Shape enum to avatar component, refactor UITextSize to styles/typography.rs 2023-11-21 00:59:29 -05:00
Nate Butler
205607a9cd Clean out UI 2023-11-21 00:44:51 -05:00
Piotr Osiewicz
b4275008f9 Search2 (#3332)
This is just a buffer search (without project search), as the latter
needs a multibuffer from `editor`
Release Notes:

- N/A
2023-11-21 01:38:14 +01:00
Mikayla Maki
361801e527 WIP: Remove V parameter on elements (#3366)
This is an exploration of what it would take to remove the `V` generic
from the element type. Answer: less than I expected.

I added a new struct to GPUI2: `CallbackHandle<Event>`, and reworked the
interactivity related APIs to take this type. I also added a
`.callback()` function to `ViewContext` that can construct a
`CallbackHandle` to wrap our current `|&mut View, &Evt, &mut
ViewContext| {...}` based APIs. With these two changes, we can now
capture the context of the callsite of a click handler, allowing us to
capture all relevant types and data _before_ sending them into GPUI.
This lets us achieve a similar programing style to the existing system,
while also letting us remove all of the generics from the entire element
system. For an example of what this looks like in practice, here's a
side by side diff of the test in `interactive.rs` (which compiles and
passes):

<img width="1310" alt="Screenshot 2023-11-19 at 7 32 08 PM"
src="https://github.com/zed-industries/zed/assets/2280405/596f2a9a-9c8e-4158-bf6d-0003cf973015">

Note how the new arrangement of types is more amenable to rust's type
inference, allowing the code to be just as terse as before despite the
extra function call in the middle.

This approach also allows components to provide well typed APIs to
views, without ever knowing that view's type. This PR includes an
example rewrite of the button component in `ui2`, here's what it's
struct could look like now:

<img width="1105" alt="Screenshot 2023-11-19 at 7 24 28 PM"
src="https://github.com/zed-industries/zed/assets/2280405/fc98d3c2-6831-4c0f-a324-ab0fae33b0bc">

However, I have not yet ported the derive macro for Component to this
new structure, as I know @nathansobo is currently reworking that code.

Once that macro has been rewritten, it should be relatively easy to
rewrite the rest of Zed2 with this approach, the only major difference
that I can foresee is that the editor element would need to wrap it's
operations in an update callback. Though I can think of a few ways to
fix this with a new `ViewElement` trait, that does the wrapping for you.
2023-11-20 16:24:01 -08:00
Piotr Osiewicz
2138715fca Merge remote-tracking branch 'origin/callback-handles' into search2 2023-11-21 01:16:21 +01:00
Mikayla
a844bf7d41 Fix stories
co-authored-by: Piotrek <piotr@zed.dev>
2023-11-20 16:06:10 -08:00
Piotr Osiewicz
3e329861f9 Brave new world awaits
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-21 00:47:47 +01:00
Piotr Osiewicz
54a3b56935 Merge remote-tracking branch 'origin/callback-handles' into search2 2023-11-21 00:40:20 +01:00
Conrad Irwin
8049ec674e Fix last thing 2023-11-20 16:35:56 -07:00
Conrad Irwin
5c0f2e75ea Remove all the settings 2023-11-20 16:30:14 -07:00
Conrad Irwin
3e2dba36b4 Merge branch 'main' into callback-handles 2023-11-20 16:28:35 -07:00
Nate Butler
3096222672 Add deploy-docs script (#3373)
[[PR Description]]

Adds `script/deploy-docs`:
- If you don't already have it, it will clone the `zed-docs` repo into
`../zed-docs`
    - It will build the docs and output them in `../zed-docs`
    - Then it will open the docs.
- By default this "dry runs" (doesn't push) but you can pass `-p` to
push the changes.
    - If you add `-c` it will clean out the old docs before running.
    
If you run the script with `p` it will push up the changes, and vercel
will automatically deploy them.

Release Notes:

- N/A
2023-11-20 18:07:37 -05:00
Conrad Irwin
8b6b7e60be borrow less 2023-11-20 16:00:47 -07:00
Nate Butler
a83d626912 Make the script a bit more resilient 2023-11-20 17:50:25 -05:00
Mikayla
2c4d83c9af WIP
co-authored-by: conrad <conrad@zed.dev>
co-authored-by: Nathan <nathan@zed.dev>
2023-11-20 14:46:01 -08:00
Nate Butler
a87ffa58ff Add more crates 2023-11-20 17:07:14 -05:00
Nate Butler
3210d36727 Create deploy-docs 2023-11-20 16:13:18 -05:00
Marshall Bowers
652e3b0bb6 Rename ListEntry to ListItem (#3371)
This PR renames the `ListEntry` component to `ListItem` to better
reflect its intent.

Release Notes:

- N/A
2023-11-20 16:13:06 -05:00
Max Brunsfeld
4f4ef4a357 More fixes for zed nightly (#3370)
When running `script/bundle` with the new `-2` flag, we needed to adjust
the fat-binary creation step to look for the binary called `Zed2`.

We also fixed a source of intermittent build failures in `script/bundle`
due to running multiple `swift build` processes concurrently for the
`live_kit_client2` crate, building for the two architectures.

Release Notes:

NA
2023-11-20 12:36:25 -08:00
Max Brunsfeld
2731855487 Fix error when building live_kit_client2 for two architectures concurrently
Co-authored-by: Julia <julia@zed.dev>
2023-11-20 12:10:35 -08:00
Marshall Bowers
eb307b22f0 Rework List to use children (#3369)
This PR reworks the `List` component to use `children` instead of
accepting a `Vec<ListItem>` in its constructor.

This is a step towards making the `List` component more open.

Release Notes:

- N/A
2023-11-20 14:58:31 -05:00
Mikayla
6985b70859 fix gpui2 2023-11-20 11:55:27 -08:00
Conrad Irwin
25ed7c57c1 WIP 2023-11-20 12:34:08 -07:00
Conrad Irwin
d0dd44faad Merge branch 'main' into callback-handles 2023-11-20 12:21:42 -07:00
Max Brunsfeld
6e84f740aa Set -e in bump-nightly script
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-20 11:01:37 -08:00
Max Brunsfeld
c571273ab4 Allow bundling in debug mode with both architectures
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-20 11:00:12 -08:00
Max Brunsfeld
babd41916a Remove gpui (1) dependencies from zed2
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-20 10:46:16 -08:00
Mikayla
acbad4c7b7 WIP 2023-11-20 10:34:22 -08:00
Piotr Osiewicz
fe0a8b4be2 Fix warnings in tests 2023-11-20 19:25:14 +01:00
Piotr Osiewicz
d60855b06d Merge branch 'main' into search2 2023-11-20 19:23:35 +01:00
Piotr Osiewicz
99ef8ccd3f fixup dismissing of search bar 2023-11-20 19:07:37 +01:00
Conrad Irwin
6f0cdc35f3 Refine element and component traits (#3367)
This PR changes `Element::paint` to move self and introduces a new
`RenderOnce` trait, which renders into an element by moving self.
Elements are required to be `RenderOnce`, and `element_id` is now on
`RenderOnce` so we can get the id without moving self. The `child` and
`children` methods now expect `impl RenderOnce`.

```rust
pub trait Element<V: 'static>: 'static + RenderOnce<V> {
    type State: 'static;

    fn layout(
        &mut self,
        view_state: &mut V,
        element_state: Option<Self::State>,
        cx: &mut ViewContext<V>,
    ) -> (LayoutId, Self::State);

    fn paint(
        self,
        bounds: Bounds<Pixels>,
        view_state: &mut V,
        element_state: &mut Self::State,
        cx: &mut ViewContext<V>,
    );

    fn into_any(self) -> AnyElement<V> {
        AnyElement::new(self)
    }
}

pub trait RenderOnce<V: 'static>: Sized {
    type Element: Element<V> + 'static;

    fn element_id(&self) -> Option<ElementId>;

    fn render_once(self) -> Self::Element;

   // default helpers ...
}
```

To make a type a component, you can add `#[derive(RenderOnce)]`, which
will require your type to implement the `Component` trait:

```rust
pub trait Component<V: 'static>: 'static {
    type Rendered: RenderOnce<V>;

    fn render(self, view: &mut V, cx: &mut ViewContext<V>) -> Self::Rendered;
}
```

I'm satisfied with this being what we open source for elements, aside
from maybe adding a `StatefulComponent` trait that uses element state.
Things finally feel like they slot into a coherent and simple narrative.

Release Notes:

- N/A
2023-11-20 10:48:50 -07:00
Piotr Osiewicz
3ddfc7ff61 Remove unused import 2023-11-20 18:44:51 +01:00
Piotr Osiewicz
fa8cd843ca fixup! Merge branch 'main' into search2 2023-11-20 18:42:15 +01:00
Piotr Osiewicz
07cc5904f8 Merge branch 'main' into search2 2023-11-20 18:37:41 +01:00
Piotr Osiewicz
3d28495c67 fixup! Remove dbg statements 2023-11-20 18:35:39 +01:00
Piotr Osiewicz
ad38708ede Remove dbg statements 2023-11-20 18:31:30 +01:00
Piotr Osiewicz
c1f0ac30a0 Fix up tests once and for good 2023-11-20 18:24:37 +01:00
Conrad Irwin
b19a6c0dcc Fix storybook2 2023-11-20 10:16:05 -07:00
Conrad Irwin
5d16f76518 fmt 2023-11-20 10:05:57 -07:00
Conrad Irwin
8599ba557d Fix more import errors 2023-11-20 10:01:21 -07:00
Conrad Irwin
f08426c7a0 shhhh 2023-11-20 10:00:37 -07:00
Conrad Irwin
f86480ba5d Merge followup mess 2023-11-20 09:58:05 -07:00
Conrad Irwin
0798cfd58c Merge branch 'main' into derive-element-redux 2023-11-20 09:15:38 -07:00
Joseph T. Lyons
385028865e Add timestamp delta to telemetry events (#3365)
- [X] assistant_events
- [X] call_events
- [X] copilot_events
- [X] cpu_events
- [X] download_events
- [X] editor_events
- [X] memory_events
- [X] page_events
- [X] panic_events
---
- [X] For each of the previous tables:
    - [X] backup events to comp
    - [X] make new table (changing any time fields to be datetime64)
    - [X] copy data
    - [X] rename old table
    - [X] rename new table
---
- [ ] Delete all old tables once (going to hold off on this for some
time - want to make sure things are working correctly)
    - [X] we see new data coming in on new tables
    - [X] old times truncate correctly
    - [X] new times show millisecond values
---
- [X] check dashboards to make sure queries didn't get broken from
changing time data type
    - [X] Fix broken charts
- [X] monitor vercel for runtime errors

---

- [X] zed.dev changes
- [X] chrono changes to panicked_on
    - [X] Make sure new panics are good
- [X] remove commented out code and dbg code
- [X] triple check that both crate versions have the changes
- [X] make sure all event function calls use the same original arguments
- [X] Finish testing version 2

Release Notes:

- N/A
2023-11-20 09:27:18 -05:00
Joseph T. Lyons
966bf56ddb Activate telemetry in zed2 2023-11-20 09:08:07 -05:00
Piotr Osiewicz
8d4828a2e8 Circumvent part of the tests 2023-11-20 13:43:56 +01:00
Mikayla
f3eb1d4abf Add button port example 2023-11-19 19:11:51 -08:00
Joseph T. Lyons
5dc3369cf6 Remove unused imports 2023-11-19 22:09:14 -05:00
Joseph T. Lyons
722ad5a01d Fix data types 2023-11-19 22:03:55 -05:00
Joseph T. Lyons
8e612e4287 Restore commented-out code 2023-11-19 22:00:01 -05:00
Joseph T. Lyons
e0f8615d52 Remoe dbg!()s 2023-11-19 21:55:19 -05:00
Joseph T. Lyons
3abd376d6a Add timestamp delta to telemetry events 2023-11-19 21:52:28 -05:00
Conrad Irwin
45371584b1 Focus workspace on launch (#3364)
Fixes action dispatch when no focus is there.

Release Notes:

- N/A
2023-11-19 19:38:41 -07:00
Mikayla
88024ca7c9 Remove V parameter on elements 2023-11-19 18:32:31 -08:00
Conrad Irwin
c0d85dc1dd Fix text wrapping when a child of a v_stack() (#3362)
Previously text that was rendered in a flex-column would reserve the
correct
amount of space during layout, and then paint itself incorrectly.

Release Notes:

- N/A
2023-11-19 11:37:31 -07:00
Piotr Osiewicz
b67193e322 ui2: Do not enable 'stories' feature by default. (#3363)
This cuts down LLVM IR size from 3 million lines to 700k in debug build.
This then leads to ~3s compile time in debug build (without incremental
on ui itself), as opposed to 10.5s on main.

Release Notes:

- N/A
2023-11-19 12:11:42 +01:00
Piotr Osiewicz
e83a297229 Move binding function back into keybinding module 2023-11-19 11:54:46 +01:00
Piotr Osiewicz
31336b0b7d ui2: Do not enable 'stories' feature by default.
This cuts down LLVM IR size from 3 million lines to 700k in debug build.
This then leads to ~3s compile time in debug build (without incremental on ui itself), as opposed to 10.5s on main.
2023-11-19 11:44:33 +01:00
Conrad Irwin
c5738a509c delint 2023-11-18 22:20:50 -07:00
Conrad Irwin
0711121586 Add some test cases 2023-11-18 22:16:28 -07:00
Nathan Sobo
33cd6f520a Clean compile with redesigned element traits 2023-11-18 21:51:47 -07:00
Conrad Irwin
cf47ed2c5f Fix wrapping when parent has a max_width
(Also avoid re-wrapping text we already wrapped)
2023-11-18 21:31:16 -07:00
Conrad Irwin
242a0b85b5 Update Taffy to latest main 2023-11-18 21:30:33 -07:00
Conrad Irwin
7172ce37b1 Fix text wrapping when a child of a v_stack() 2023-11-18 20:35:22 -07:00
Nathan Sobo
0673606de8 WIP 2023-11-18 20:22:43 -07:00
Nathan Sobo
adc355a1e6 Element refinement passing on ui2 2023-11-18 20:05:47 -07:00
Mikayla Maki
073405018e Revert changes 2023-11-18 16:37:34 -08:00
Mikayla Maki
b758d1b871 Update bundle 2023-11-18 13:06:23 -08:00
Mikayla Maki
fd8ebb4f17 Update bundle 2023-11-18 11:50:54 -08:00
Mikayla Maki
a73db6bfca Fix more bundling errors (#3361)
Release Notes:

- N/A
2023-11-18 10:59:35 -08:00
Mikayla
ede7656f02 please work 2023-11-18 10:46:35 -08:00
Mikayla Maki
30b7da0e4a N/t6 (#3360)
[[PR Description]]

- Fix broken pane group spacing
- Work on diagnostics styling (still wip)

Release Notes:

- N/A
2023-11-17 23:29:18 -08:00
Nathan Sobo
be33f000e2 WIP: Lots of errors, starting on resurrecting derive Element 2023-11-18 00:27:40 -07:00
Mikayla
55dbcf2039 Remove unused imports 2023-11-17 23:14:14 -08:00
Nate Butler
f9804feefa Remove flex_1 from bottom dock to fix pane group spacing 2023-11-18 02:06:51 -05:00
Nathan Sobo
23ffce9fbe WIP: Work toward eliminating Component trait
This refactor enhances the overall design by promoting reusable and composable UI component structures within the Zed project codebase.
2023-11-18 00:03:23 -07:00
Nathan Sobo
2515bbf990 Move self in Element::paint
Remove mutable state borrows in favor of state ownership in render processes to streamline element rendering.
2023-11-17 23:32:55 -07:00
Mikayla
461fa8d71e Testing the auto-updater 2023-11-17 22:17:42 -08:00
Mikayla Maki
e1285b9780 Add nightly release channel for zed2 (#3355)
Release Notes:

- N/A
2023-11-17 22:12:18 -08:00
Nate Butler
d6f173866e Use muted color for fold indicators 2023-11-18 01:02:40 -05:00
Nate Butler
b218ab4755 Remove default hover state for icon buttons 2023-11-18 01:02:21 -05:00
Nate Butler
101fe7fbb5 Update diagnostic status bar tool 2023-11-18 00:54:01 -05:00
Mikayla
fd6e47c167 Fix auto update command 2023-11-17 21:52:49 -08:00
Nate Butler
9969caf513 Style empty diagnostics as an editor 2023-11-17 23:39:40 -05:00
Nathan Sobo
0069dd5ce6 WIP 2023-11-17 20:05:37 -07:00
Mikayla
eb2e9a59b7 Fix bundling again 2023-11-17 18:27:11 -08:00
Mikayla
16f420528d Remove CLI from zed2 (for now) 2023-11-17 18:09:42 -08:00
Mikayla
e43696eb6b Temporary debug builds for faster ci testing 2023-11-17 17:46:05 -08:00
Mikayla
70d0421b3c Fix bundle script 2023-11-17 17:44:41 -08:00
Max Brunsfeld
ee753beebd Build nightly release based on 'nightly' tag, not any tag w/ nightly prefix 2023-11-17 17:21:35 -08:00
Mikayla
bf324c152b Add bump nightly script 2023-11-17 17:14:48 -08:00
Mikayla
dd283b471a Add autoupdate2
co-authoredby: max@zed.dev
2023-11-17 15:48:32 -08:00
Max Brunsfeld
a03d062120 Make the commit sha availabe in the app, via a global
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Kirill <kirill@zed.dev>
2023-11-17 14:52:43 -08:00
Max Brunsfeld
a8bea41ad8 Put release channel back to dev 2023-11-17 14:31:49 -08:00
Max Brunsfeld
6a22ab83cf Fix cargo check --tests invocation 2023-11-17 14:16:12 -08:00
Max Brunsfeld
5e2eb436ff Check out repo outside of reusable actions
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Kirill <kirill@zed.dev>
2023-11-17 14:14:03 -08:00
Max Brunsfeld
c684f08e30 Wire up release_nightly workflow, to upload artifacts to DO spaces
Co-authored-by: Kirill <kirill@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-17 14:07:51 -08:00
Julia
c9fc7eac4f zed2: Project diagnostics (#3359)
Release Notes:

- N/A
2023-11-17 16:54:00 -05:00
Julia
189ddf9380 Merge branch 'main' into unborked-git-zed2-diagnostics-view 2023-11-17 16:43:29 -05:00
Julia
62297a56c8 Render diagnostics header and summary 2023-11-17 16:32:35 -05:00
Julia
24c9bbf461 Render a more correct diagnostic indicator status panel button 2023-11-17 16:32:35 -05:00
Julia
3655a96e54 Merge branch 'main' into unborked-git-zed2-diagnostics-view 2023-11-17 16:32:35 -05:00
Julia
967ef9d414 Render diagnostics view and such a bit more 2023-11-17 16:32:35 -05:00
Julia
c6d22af416 Get diagnostic2 tests building and running 2023-11-17 16:32:35 -05:00
Julia
a464a7da2a Merge branch 'main' into unborked-git-zed2-diagnostics-view 2023-11-17 16:32:35 -05:00
Julia
f4eb219c75 Get diagnostics view almost building in the zed2 world
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-17 16:32:35 -05:00
Conrad Irwin
ec3bb0f090 Focus workspace on launch
Fixes action dispatch when no focus is there.
2023-11-17 14:11:39 -07:00
Kirill Bulatov
12b59daa1e Allow to exclude files from worktrees (#3356)
* Part of https://github.com/zed-industries/community/issues/70

Allows to fully remove from Zed certain files or file groups: no items
will be scanned or added into worktrees, so nothing will be shown in
project tree, project search and go to file would not see those,
corresponding FS events will be ignored.

One exclusion is .git files: those are still not shown or accessible by
default, yet tracked in the worktrees.

By default, is configured to 
```json
  "file_scan_exclusions": [
    "**/.git",
    "**/.svn",
    "**/.hg",
    "**/CVS",
    "**/.DS_Store",
    "**/Thumbs.db",
    "**/.classpath",
    "**/.settings"
  ],
```

* In addition, contains code preparations for "search in included files"
feature: new SearchOptions variant, search crate and RPC adjustments

Release Notes:

- Added `file_scan_exclusions` section to project settings to completely
ignore certain files in Zed
2023-11-17 23:06:47 +02:00
Mikayla Maki
7a8da8ce11 Adjust the type arrangement on ManagedViews (#3354)
Made the trait into a blanket-trait impl if you have it's two
constituent pieces (FocusableView and EventEmitter) to remove the
duplicated method. I also changed the struct to an enum for aesthetic
reasons (EventType::EventName feels self documenting to me) and added
some new `cx` APIs utilizing our new powers of dismissal.

Release Notes:

- N/A
2023-11-17 13:04:57 -08:00
Conrad Irwin
a6d6f8a193 shhh (#3358)
- Fix image errors


Release Notes:

- N/A
2023-11-17 14:01:44 -07:00
Kirill Bulatov
d352a63d9d Port new workspace logic to gpui2, uncomment most of the workspace2 tests 2023-11-17 22:54:19 +02:00
Mikayla
f44f60c6e6 WIP: 2023-11-17 12:54:16 -08:00
Nathan Sobo
c866c211b5 Make static str and SharedString implement Element 2023-11-17 13:48:01 -07:00
Conrad Irwin
6bfe6fa0e1 Fix image errors
* Firstly only log one error per image load, not per frame
* Secondly use an Icon not an image for rendering Icons
2023-11-17 13:47:07 -07:00
Mikayla
149b9d1aa6 Merge branch 'main' into managed-view-adjustment 2023-11-17 12:40:44 -08:00
Conrad Irwin
624bd0a05a Collab ui2 (#3357)
* Clickable context menus & movable panels – what will they think of
next?!

Release Notes:

- N/A
2023-11-17 13:33:18 -07:00
Conrad Irwin
ceb20dea96 Refactorings 2023-11-17 13:23:12 -07:00
Mikayla
6976af5029 Push some sketches 2023-11-17 12:16:55 -08:00
Kirill Bulatov
616bda85e9 Fix the tests 2023-11-17 21:40:57 +02:00
Kirill Bulatov
2759ed4d00 An attempt to ignore git regularly 2023-11-17 21:40:57 +02:00
Kirill Bulatov
8180938401 Fix most of the TODOs 2023-11-17 21:40:57 +02:00
Kirill Bulatov
6028cd90d4 Retract back to original scanning strategy
Do not descend into ignored directories, to avoid tracking their state.
2023-11-17 21:40:57 +02:00
Kirill Bulatov
906db58188 Defer ignored dirs scanning 2023-11-17 21:40:57 +02:00
Kirill Bulatov
30fefa0ef8 Use a better name 2023-11-17 21:40:57 +02:00
Kirill Bulatov
5f468970f0 Fix some of the old tests 2023-11-17 21:40:57 +02:00
Kirill Bulatov
d3ce82e82c Fix the new test 2023-11-17 21:40:57 +02:00
Kirill Bulatov
cafeba103b Exclude ignored opened buffers from search 2023-11-17 21:40:57 +02:00
Kirill Bulatov
ce2cfc6035 Fix the ! bug, better test draft 2023-11-17 21:40:57 +02:00
Kirill Bulatov
26f7e66b49 Add default scan excluded files settings 2023-11-17 21:40:56 +02:00
Kirill Bulatov
c52fe2f536 Move toggle ignored button into include directories editor 2023-11-17 21:40:56 +02:00
Kirill Bulatov
9373d38434 Rescan worktree on scan exclusions settings change 2023-11-17 21:40:56 +02:00
Kirill Bulatov
1612c90052 More lenient file path matchers 2023-11-17 21:40:56 +02:00
Kirill Bulatov
b8be720490 Fix the bugs 2023-11-17 21:40:56 +02:00
Kirill Bulatov
126e4cce8f Scan all ignored files by default now 2023-11-17 21:40:56 +02:00
Kirill Bulatov
401f85bed2 Properly ignore elements from configured exceptions 2023-11-17 21:40:56 +02:00
Kirill Bulatov
9072e5a507 Properly set ignore stacks and is_ignored values 2023-11-17 21:40:56 +02:00
Kirill Bulatov
7d97dfa6be Test and filter data draft 2023-11-17 21:40:56 +02:00
Kirill Bulatov
a5c615ceb4 Pass a new query parameter into the search 2023-11-17 21:40:56 +02:00
Conrad Irwin
eb04160d2d Dock menu 2023-11-17 12:14:06 -07:00
Conrad Irwin
9d742b90c3 Allow you to click on a context menu item 2023-11-17 11:57:51 -07:00
Mikayla
5cf953d559 Add error messages to server deployment for nightly 2023-11-17 10:31:10 -08:00
Mikayla
17d53d0e38 Rename again, add fun cx APIs using new traits 2023-11-17 10:06:41 -08:00
Mikayla
01d9d53f4a Adjust the type arrangement on ManagedViews 2023-11-17 09:51:11 -08:00
Max Brunsfeld
8837045abb Fix underspecified assertions in new tests for file reload race (#3353)
I accidentally left the test assertions unnecessarily vague in
https://github.com/zed-industries/zed/pull/3348. This PR makes the
assertions constrain the behavior more specifically. I also added a
second test for a related bug that was fixed in that PR, about
performing and undoing an edit while a buffer reload is in-progress.

Release Notes:

- NA
2023-11-17 09:32:00 -08:00
Max Brunsfeld
55548ca61a Fix underspecified assertions in new tests for file reload race 2023-11-17 09:14:31 -08:00
Piotr Osiewicz
3b5754a77e Clean up tests (they compile now) 2023-11-17 17:23:47 +01:00
Piotr Osiewicz
eb9959a0cf gpui: notifications now takes an entity instead of a model 2023-11-17 17:23:05 +01:00
Piotr Osiewicz
ae1ebc6858 fixup! Remove dead code (for now). 2023-11-17 17:22:52 +01:00
Piotr Osiewicz
27600b6b8d Remove dead code (for now).
Ensure actions are registed just once (previously some were registered on both Workspace and search bar itself).
2023-11-17 14:42:20 +01:00
Piotr Osiewicz
741e11cc11 Fix up action derive 2023-11-17 13:27:33 +01:00
Piotr Osiewicz
f23cc724d4 chore: cargo fmt 2023-11-17 13:23:42 +01:00
Piotr Osiewicz
dca2dc7b6b Merge branch 'main' into search2 2023-11-17 13:22:30 +01:00
Piotr Osiewicz
8845f5a183 Clean up warnings 2023-11-17 13:22:07 +01:00
Kirill Bulatov
6680e1e9fe Create new Zed release channel: nightly 2023-11-17 12:13:32 +02:00
Antonio Scandurra
27cd7b204d Merge branch 'main' into editor2-autocomplete 2023-11-17 11:03:25 +01:00
Kirill Bulatov
9d8184670a Remove binary target collisions between zed & zed2 (#3352)
Get rid of the following warnings:

```
The example target `test_app` in package `live_kit_client2 v0.1.0 (/Users/someonetoignore/work/zed/zed/crates/live_kit_client2)` has the same output filename as the example target `test_app` in package `live_kit_client v0.1.0 (/Users/someonetoignore/work/zed/zed/crates/live_kit_client)`.
Colliding filename is: /Users/someonetoignore/work/zed/zed/target/debug/examples/test_app
The targets should have unique names.
Consider changing their names to be unique or compiling them separately.
This may become a hard error in the future; see <https://github.com/rust-lang/cargo/issues/6313>.
warning: output filename collision.
The example target `test_app` in package `live_kit_client2 v0.1.0 (/Users/someonetoignore/work/zed/zed/crates/live_kit_client2)` has the same output filename as the example target `test_app` in package `live_kit_client v0.1.0 (/Users/someonetoignore/work/zed/zed/crates/live_kit_client)`.
Colliding filename is: /Users/someonetoignore/work/zed/zed/target/debug/examples/test_app.dSYM
The targets should have unique names.
Consider changing their names to be unique or compiling them separately.
This may become a hard error in the future; see <https://github.com/rust-lang/cargo/issues/6313>.

---------------

warning: output filename collision.
The bin target `Zed` in package `zed2 v0.109.0 (/Users/administrator/actions-runner-1/_work/zed/zed/crates/zed2)` has the same output filename as the bin target `Zed` in package `zed v0.113.0 (/Users/administrator/actions-runner-1/_work/zed/zed/crates/zed)`.
Colliding filename is: /Users/administrator/actions-runner-1/_work/zed/zed/target/debug/Zed.dSYM
The targets should have unique names.
Consider changing their names to be unique or compiling them separately.
This may become a hard error in the future; see <https://github.com/rust-lang/cargo/issues/6313>.
```

as we plant to build *.dmg of both versions for a while.

Release Notes:

- N/A
2023-11-17 10:02:27 +02:00
Kirill Bulatov
89e44d4901 Remove binary target collisions between zed & zed2 2023-11-17 09:56:28 +02:00
Mikayla Maki
41ac8ef909 Restore saving (#3351)
and a bunch of random workspace stuff!

Release Notes:

-
2023-11-16 23:22:01 -08:00
Mikayla
1693718637 Merge branch 'main' into saving-2 2023-11-16 23:11:38 -08:00
Mikayla
9a3cd073c7 Restore a bunch of random workspace stuff 2023-11-16 23:05:28 -08:00
Nathan Sobo
2fb13cf1ca Separate WrappedLines from ShapedLines (#3350)
ShapedLines are never wrapped, whereas WrappedLines are optionally
wrapped if they are associated with a wrap width. Originally, when
rewriting GPUI, I tried to combine everything because wrapping is
inherently optional for the Text element, but we have a bunch of APIs
that don't make sense on a line that may wrap, so we need a distinct
type for that case.

This is a precursor to implementing clickable links in markdown. I
noticed multiple places where we were confused about whether or not the
line was wrapped so this felt important.

Release Notes:

- N/A
2023-11-16 23:20:35 -07:00
Conrad Irwin
391ab8fa1b Add more detail to panel switcher interaction (#3344)
Also featuring:
* IconButton#action()
* gpui::ManagedView
* `menu_handle()`

Release Notes:

- N/A
2023-11-16 23:16:50 -07:00
Nathan Sobo
9558da8681 Separate WrappedLines from ShapedLines
ShapedLines are never wrapped, whereas WrappedLines are optionally wrapped if
they are associated with a wrap width. I tried to combine everything because
wrapping is inherently optional for the Text element, but we have a bunch of
APIs that don't make sense on a line that may wrap, so we need a distinct type
for that case.
2023-11-16 23:10:51 -07:00
Conrad Irwin
2d1d75f482 +ManagedView
And some games with rust traits
2023-11-16 23:02:10 -07:00
Conrad Irwin
2182cb2656 Ooh generics 2023-11-16 22:16:29 -07:00
Conrad Irwin
6d4276ea5f Merge branch 'main' into collab_ui2 2023-11-16 22:08:42 -07:00
Conrad Irwin
c0ad15756c More attachment configuration for context menus 2023-11-16 21:59:23 -07:00
Max Brunsfeld
e67c44a562 Fix file-reloading race condition (#3348)
### Summary

This PR fixes a bug that @as-cii and @osiewicz saw when the on-disk
contents of files changed due to running `git checkout` at the command
line. It caused a buffer's contents to diverge from the file's on disk
contents, but the buffer to show an *unmodified* status.

I've also introduced new APIs on gpui's deterministic executor, which
make it possible to write a test that reliably triggered the bug.

### Details

The bug is triggered by the following sequence of events:
1. A buffer's file changes on disk while the buffer is *unmodified*
2. Zed reloads the new content of the file
3. Before updating the buffer itself, Zed computes a *diff* between the
buffer's current contents, and the newly-loaded contents
4. While this diff is being computed, one of two things happens:
     1. the buffer changes on-disk *again*.
2. the user edits the buffer, but undoes the edit, so that the buffer
returns to an unmodified state

The bug itself was caused by a few things:
* The buffer diffing algorithm is pretty slow, because we perform a
character-wise diff
* We previously allowed multiple reload tasks to run concurrently
* When discarding an out-of-date diff, we failed to update parts of the
buffer's state (`saved_fingerprint`) which allow us to recognize that
the buffer's content differs from the file.

It was also difficult to reproduce the problem in tests, because under
deterministic execution, because it was extremely unlikely for other
tasks to make progress *after* a file had been reloaded, but *before*
the disk task has resolved. To help with testing, I introduced a pair of
executor APIs:

`spawn_labeled`, - for spawning a background task with a given *label*
`deprioritize_task` - for forcing tasks with a given label to run
*after* all other concurrent tasks.

I also made the `Model::next_event` test helper method more useful, in
that it no longer runs *until* parked in order to wait for the next
event to occur. It just steps the executor one poll at a time until the
model emits an event.

Release Notes:

- Fixed a bug that caused buffers to report incorrect modified/conflict
status when their buffers changed on disk multiple times in rapid
succession.
2023-11-16 20:19:16 -08:00
Max Brunsfeld
32979f3aca Rename deprioritize_task -> deprioritize
It applies to a family of tasks, not a task.
2023-11-16 20:03:18 -08:00
Max Brunsfeld
f3b6719c76 Rename both PlatformDispatcher::poll and Executor::run_step to 'tick'
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2023-11-16 19:58:26 -08:00
Conrad Irwin
9547e88d88 TEMP 2023-11-16 19:50:31 -07:00
Conrad Irwin
547888942f Add storybook3 2023-11-16 19:42:25 -07:00
Mikayla Maki
61bd6bab09 Actions‽ (#3349)
This PR re-implements our actions with macros instead of a blanket impl.

Release Notes:

- N/A
2023-11-16 18:18:04 -08:00
Mikayla
432572c592 #RemoveThe2 2023-11-16 18:04:35 -08:00
Max Brunsfeld
17b2b112bc Don't update file's saved mtime when reload is aborted 2023-11-16 18:02:49 -08:00
Mikayla
49d3e1cc4b Add default derive 2023-11-16 17:39:05 -08:00
Mikayla
4de2c0f7ef Re-implement actions as derive macros instead of blanket impls 2023-11-16 17:32:02 -08:00
Max Brunsfeld
0bed5e4562 Port buffer reload bug fixes back to gpui1 crates 2023-11-16 16:03:14 -08:00
Max Brunsfeld
5f1acae0d3 Fix race conditions and bugs in Buffer::reload 2023-11-16 16:03:14 -08:00
Max Brunsfeld
89d73f713a Label the buffer's diff task so it can be deprioritized in tests 2023-11-16 16:03:13 -08:00
Max Brunsfeld
b2451d9dd6 Combine adjacent edits in buffer's diff 2023-11-16 16:03:05 -08:00
Conrad Irwin
074a221e0f Progress on ContextMenu 2023-11-16 16:59:27 -07:00
Max Brunsfeld
f9650b3111 Don't run until all the way until parked when waiting for a model's next event 2023-11-16 15:54:00 -08:00
Max Brunsfeld
6397c05835 Add the ability to deprioritize specific labeled tasks in tests 2023-11-16 15:54:00 -08:00
Conrad Irwin
9456f716c2 Only send one right click event 2023-11-16 15:30:53 -07:00
Nate Butler
83dfb191d6 UI size + other theme refinements (#3347)
[[PR Description]]

- Fixes bad titlebar states when the ui scale is set very low
- Tidies up a number of workspace styles

Release Notes:

- N/A
2023-11-16 16:30:47 -05:00
Nate Butler
3223e21d9f Add dock borders 2023-11-16 16:17:17 -05:00
Nate Butler
9c5f580012 Use Selected for active IconButtons 2023-11-16 16:17:10 -05:00
Nate Butler
3d8e63b93b Buttons should always use cursor_pointer 2023-11-16 16:09:11 -05:00
Nate Butler
c2d6d24952 Ensure the titlebar stays large enough even with small ui sizes 2023-11-16 16:01:42 -05:00
Nate Butler
a526f23c81 Add ui_font settings and set default rem size accordingly (#3346)
[[PR Description]]
- Adds ui_font_family, ui_font_features, ui_font_size to settings and
default settings
- Use the new ui font settings to set the rem size when the workspace is
created.

Release Notes:

- N/A
2023-11-16 15:40:33 -05:00
Conrad Irwin
267e07472d Checkpoint, MenuHandle can open one 2023-11-16 13:32:19 -07:00
Nate Butler
ffd092a098 Add ui_font_* for tests 2023-11-16 15:30:50 -05:00
Nate Butler
fa9f4a9355 Init rem_size in the workspace at the start of the render
Co-Authored-By: Mikayla Maki <mikayla.c.maki@gmail.com>
2023-11-16 13:43:36 -05:00
Mikayla
a0e976599c Salvage old distributed slice code 2023-11-16 10:32:55 -08:00
Nate Butler
08dddf0b26 Revert change to default buffer font size 2023-11-16 13:13:03 -05:00
Marshall Bowers
b559bfd80f Parameterize theme2::init to allow loading just the base theme (#3345)
This PR adds a parameter to the `theme2::init` method to indicate what
the theme-loading behavior should be.

This allows us to indicate when we want to load all of the additional
built-in user themes (like in the Zed binary and in the storybook), and
when we don't want to load the user themes (like in tests).

We're using an enum over just a `bool` here for clarity at the call
site.

Release Notes:

- N/A
2023-11-16 13:03:30 -05:00
Piotr Osiewicz
f8b91bd0f0 Fix some of the warnings 2023-11-16 18:36:19 +01:00
Conrad Irwin
d782426491 Dismiss tooltips on click 2023-11-16 10:26:09 -07:00
Conrad Irwin
4540f04dbe Add more detail to panel switcher interaction 2023-11-16 09:57:59 -07:00
Nate Butler
38d0fdc09a Remove todo
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-16 11:42:23 -05:00
Nate Butler
b2f9c454b0 Change the default buffer font size to 16
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-16 11:38:04 -05:00
Nate Butler
c71e522b4e Allow users to set UI font properties in their settings
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-16 11:37:46 -05:00
Piotr Osiewicz
6b6a30c3da Merge branch 'main' into search2 2023-11-16 17:16:15 +01:00
Kirill Bulatov
2aa7c6f2b4 Add a simple context menu into terminal2 (#3343)
Release Notes:

- N/A
2023-11-16 16:41:27 +02:00
Kirill Bulatov
ab0a3f19ab Add an actual context menu into terminal-2
(click the text, not the pane!)

Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-16 16:36:44 +02:00
Antonio Scandurra
c08ce1c3b8 Start rendering autocompletion menu 2023-11-16 14:55:06 +01:00
Antonio Scandurra
781a95d2e3 Add back Completion::documentation 2023-11-16 14:47:45 +01:00
Kirill Bulatov
f638d4ce1d Add basic context menu element 2023-11-16 14:35:13 +02:00
Kirill Bulatov
0f0b7090b8 Fix more errors in terminal element 2023-11-16 13:10:43 +02:00
Kirill Bulatov
03b4c7c464 Terminal 2 (#3342)
Release Notes:

- N/A
2023-11-16 10:59:42 +02:00
Kirill Bulatov
fd61683c46 WIP 2023-11-16 10:40:02 +02:00
Kirill Bulatov
e3465fbcf9 Comment out the terminal view 2023-11-16 10:04:20 +02:00
Kirill Bulatov
a238368296 More compilation fixes 2023-11-16 10:04:18 +02:00
Kirill Bulatov
61d6cb880c Start porting terminal_element to gpui2
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2023-11-16 10:04:03 +02:00
Kirill Bulatov
d89c51135a Start porting terminal_view to gpui2
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2023-11-16 10:04:03 +02:00
Mikayla Maki
c8f83e2d4d Tabs n splits (#3340)
Adds back:

- [x] Tab clicking
- [x] Splits ~
- [x] Workspace deserialization

Also adds a new `FocusableView` API to GPUI

Release Notes:

- N/A
2023-11-15 23:52:43 -08:00
Mikayla
9da0b78ead Merge branch 'main' into tabs-n-splits 2023-11-15 23:41:25 -08:00
Mikayla
e9e1170976 Compile taffy in release mode 2023-11-15 23:15:36 -08:00
Mikayla
c70c0f9ae9 Remove initialize_workspace 2023-11-15 23:11:31 -08:00
Conrad Irwin
613add0aed collab ui2 (#3341)
Panel switching

* Also: Tooltip::text("whatever", cx);
* And: Tooltip::for_action("whatever", &collab_panel::Toggle, cx);
* And `overlay()` in Gpui2 (similar to `Overlay` in gpui).

Release Notes:

- N/A
2023-11-15 23:10:52 -07:00
Conrad Irwin
74afa62a55 Add Overlay component to gpui2 2023-11-15 23:00:36 -07:00
Conrad Irwin
8c14a8fa95 Merge branch 'main' into collab_ui2 2023-11-15 21:04:47 -07:00
Conrad Irwin
0a9fb3978b Enable panel switching 2023-11-15 21:01:00 -07:00
Nathan Sobo
e5ada92b7b Remove initialize from the Element trait (#3338)
Initially, we imagined registering keyboard handlers in the initialize
phase so we would understand the relationships between focus handles
during the layout pass, which would allow us to assign assign `focus_in`
styles that impact layout.

However, we soon realized that many elements aren't created until paint
time anyway, such as within the uniform list. Since it's impossible to
know prior to paint whether an element contains the focused element, it
makes more sense to eliminate the `focus_in` styling helper.

Release Notes:

- N/A
2023-11-15 19:36:35 -07:00
Mikayla
78cea69172 Add focusable view and restore workspace deserialization. Partially restore split and tab functions 2023-11-15 16:36:43 -08:00
Conrad Irwin
7f70712dac Uncomment enough to register the panel 2023-11-15 16:44:21 -07:00
Conrad Irwin
0e79a7f26b collab ui2 (#3339)
- Move placeholder titlebar render to collab_ui

Release Notes:

- N/A
2023-11-15 16:21:52 -07:00
Mikayla
e905ababcd Add back splitting 2023-11-15 15:21:19 -08:00
Conrad Irwin
793fa6e3a4 Move placeholder titlebar render to collab_ui 2023-11-15 16:09:21 -07:00
Conrad Irwin
84bcbf1128 Add collab_ui2 2023-11-15 16:08:03 -07:00
Mikayla
faf93aed4e checkpoint 2023-11-15 14:17:04 -08:00
Nathan Sobo
4f09633379 Remove focus_in styling helper 2023-11-15 14:17:49 -07:00
Nathan Sobo
c6b374ebc9 Remove initialize method from Element trait 2023-11-15 14:11:19 -07:00
Conrad Irwin
26d90a5e48 Leaky, but better, test abstraction (#3337)
Make test view creation a bit more ergonomic 

Release Notes:

- N/A
2023-11-15 14:09:02 -07:00
Conrad Irwin
0a51784dd0 Leaky, but better, test abstraction 2023-11-15 14:01:10 -07:00
Conrad Irwin
19c0b390d2 FileFinder tests (#3336)
Also including:
* Fixes for focus when closing the last item in a pane
* Workspace#active_item_as::<Editor>()
* cx.simulate_input()

Release Notes:

- N/A
2023-11-15 13:24:34 -07:00
Conrad Irwin
cebc8428c8 FileFinder tests 2023-11-15 13:16:28 -07:00
Antonio Scandurra
33a808a49b WIP 2023-11-15 20:41:09 +01:00
Antonio Scandurra
ffcc1cbf77 Clear the state of keystroke matchers when focus changes (#3335)
Release Notes:

- N/A
2023-11-15 20:41:01 +01:00
Antonio Scandurra
759ce7440c Avoid unnecessary call to with_element_id in RenderViewWith
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-15 20:12:30 +01:00
Antonio Scandurra
1d04dc5dbf Clear the state of keystroke matchers when focus changes
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-15 20:11:07 +01:00
Antonio Scandurra
3978d4e872 Show fold indicators (#3334)
Release Notes:

- N/A
2023-11-15 20:10:24 +01:00
Antonio Scandurra
08dfcba68a Fix panic when painting blocks 2023-11-15 20:02:35 +01:00
Antonio Scandurra
c225a3e5af Don't use Mutex or Arc now that app state is not Send
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-15 18:50:34 +01:00
Antonio Scandurra
c7b7f7dfd5 Move render_view into View::render_with
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-15 18:50:09 +01:00
Joseph T. Lyons
d791fc707a v0.114.x dev 2023-11-15 12:47:40 -05:00
Antonio Scandurra
9ff238921f Fix clicking on code action and fold indicators
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-15 18:29:53 +01:00
Antonio Scandurra
17b8e4a684 Handle clicking folded ranges
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-15 18:19:26 +01:00
Antonio Scandurra
3ff8c78b58 Return a Fold struct when querying the FoldMap
This contains a new `id` field that lets us distinguish among folds.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-15 17:09:59 +01:00
Conrad Irwin
1db4fab3ab Add command palette tests and simulate_keystrokes (#3330)
Release Notes:

- N/A
2023-11-15 08:00:41 -07:00
Kirill Bulatov
aa0563c656 More detailed errors when opening files (#3333)
Release Notes:

- N/A
2023-11-15 16:31:48 +02:00
Piotr Osiewicz
69e01e67dc Bind cycle_mode action 2023-11-15 15:22:35 +01:00
Kirill Bulatov
888098bad2 More detailed errors when opening files 2023-11-15 16:20:00 +02:00
Piotr Osiewicz
c37faf0ab3 Add query history and replace buttons 2023-11-15 15:05:48 +01:00
Antonio Scandurra
851a60a68e Render fold indicators in the gutter 2023-11-15 14:07:37 +01:00
Piotr Osiewicz
b11bfa8821 Merge branch 'main' into search2 2023-11-15 12:54:26 +01:00
Antonio Scandurra
c0f43d964c Introduce rename in editor2 (#3331)
Release Notes:

- N/A
2023-11-15 11:15:08 +01:00
Antonio Scandurra
786cc59d7a Fix formatting 2023-11-15 11:07:32 +01:00
Antonio Scandurra
45381e566c Fix focus management on editor when renaming 2023-11-15 11:05:09 +01:00
Antonio Scandurra
003e4bc241 Extract out a register_actions function 2023-11-15 09:53:32 +01:00
Antonio Scandurra
feeb44c122 Merge remote-tracking branch 'origin/main' into editor2-rename
# Conflicts:
#	crates/editor2/src/editor.rs
#	crates/editor2/src/element.rs
#	crates/gpui2/src/style.rs
2023-11-15 09:51:33 +01:00
Antonio Scandurra
c3094b7c3d Introduce gpui::render_view 2023-11-15 09:45:23 +01:00
Antonio Scandurra
1def355d44 Don't return Result from TextStyle::highlight 2023-11-15 09:10:46 +01:00
Conrad Irwin
c81bd288d4 Fix test 2023-11-14 23:47:08 -07:00
Conrad Irwin
91b54b352b Add command palette tests and simulate_keystrokes 2023-11-14 23:22:51 -07:00
Nathan Sobo
e37d7f5b0e Fix click events by notifying when we assign pending_mouse_down (#3329)
We need to notify when we set the pending mouse down so we attach the
mouse up event listener before the mouse button is released.

Release Notes:

- N/A
2023-11-14 19:55:23 -07:00
Nathan Sobo
32ad486a8e Document contexts 2023-11-14 19:52:51 -07:00
Nathan Sobo
00d8921ae9 Fix click events by notifying when we assign pending_mouse_down 2023-11-14 19:22:41 -07:00
Max Brunsfeld
f9a5e141aa Fix uncached raster_bounds computation and font selection (#3328)
This fixes some slowness we noticed when scrolling an editor in `zed2`.
2023-11-14 17:27:12 -08:00
Max Brunsfeld
8de8615176 Fix uncached raster_bounds computation and font selection
Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-14 17:19:10 -08:00
Mikayla Maki
96f0257fb3 Simplify element types (#3318)
This PR does away with the extra type parameters on Div and instead
introduces two wrapper elements, `Stateful` and `Focusable`. All of the
interactivity is stored on `Interactivity` and `InteractiveState`, which
is stored on the base element. The wrappers simply control what methods
are available to call.

Not sure this is fully working, but a smoke test does work.

/cc @as-cii @ConradIrwin 

Release Notes:

- N/A
2023-11-14 16:03:20 -08:00
Mikayla
817c6dd49c remove dbg 2023-11-14 15:57:23 -08:00
Mikayla
b81b96f353 Merge branch 'element-types' of github.com:zed-industries/zed into element-types 2023-11-14 15:55:53 -08:00
Mikayla
7f72df6dcf Merge branch 'main' into element-types 2023-11-14 15:49:10 -08:00
Mikayla Maki
df64a3c701 Not working yet file-finder2 (#3321)
Porting file_finder

Release Notes:

- N/A
2023-11-14 15:22:59 -08:00
Conrad Irwin
1109cd11c8 Abandon ship 2023-11-14 16:17:24 -07:00
Nathan Sobo
bef4df5df9 Return an id from Element::element_id instead of calling cx.with_element_id
Co-Authored-By: Julia <julia@zed.dev>
2023-11-14 16:05:28 -07:00
Max Brunsfeld
ca63a99736 Enable tests in project panel 2 (#3325) 2023-11-14 15:02:51 -08:00
Max Brunsfeld
860959fe13 Implement simulated prompts in TestPlatform 2023-11-14 14:56:50 -08:00
Mikayla
6b25841e2a WIP 2023-11-14 14:48:34 -08:00
Max Brunsfeld
606ab74b9f Project panel: detect filename editor blur via an editor event 2023-11-14 14:02:28 -08:00
Nate Butler
b40daa132f Set Pane Size (#3327)
[[PR Description]]

Set the size of panes to their `size`.

Release Notes:

- N/A
2023-11-14 16:57:09 -05:00
Nate Butler
008655b879 Set Pane Size 2023-11-14 16:47:52 -05:00
Conrad Irwin
3b01a032ba In the middle of stuff 2023-11-14 14:38:23 -07:00
Marshall Bowers
fea0ff3745 Use IconElement in project panel (#3326)
This PR updates the project panel to use the `IconElement` to render
icons instead of duplicating the styles.

Release Notes:

- N/A
2023-11-14 15:52:57 -05:00
Max Brunsfeld
123faed5b0 Re-enable all project panel tests
Some are still failing.
2023-11-14 12:45:46 -08:00
Marshall Bowers
22f024bd5f Use IconElement in project panel 2023-11-14 15:44:26 -05:00
Conrad Irwin
80b7f75d24 Merge branch 'main' into file_finder 2023-11-14 13:34:25 -07:00
Conrad Irwin
3a4c5aa440 Implement FileFinder 2023-11-14 13:34:14 -07:00
Mikayla Maki
dcdbf43af0 Fix some small quit and recursion bugs (#3323)
Release Notes:

- N/A
2023-11-14 12:32:41 -08:00
Mikayla
62fc0b2100 Remove unnescessary unimplemented 2023-11-14 12:12:02 -08:00
Julia
75490fe2b1 Avoid user NPM config/cache & put NodeRuntime installation behind a lock (#3324)
Release Notes:

- Fixed a case where system NPM configuration could effect Node based
language server installation.
2023-11-14 15:08:48 -05:00
Julia
59ec9e508b Avoid user NPM config/cache & put NodeRuntime installation behind a lock 2023-11-14 14:49:31 -05:00
Mikayla
3419aaf17e Fix several shutdown related bugs 2023-11-14 11:42:58 -08:00
Conrad Irwin
37d0b8424c Merge branch 'main' into element-types 2023-11-14 12:10:26 -07:00
Marshall Bowers
5c8db996ee Extend Label & Tooltip (#3322)
This PR extends the `Label` component with additional functionality,
partially for use in the `TextTooltip` component.

- [x] `Label` should take a `size` (`Default` & `Small` for now)
  - These should use `text_ui` and `text_ui_sm`
- [x] Fold `LabelColor` and `IconColor` into one enum
  - `TextColor`
- [x] `TextTooltip`'s keybinding field should take whatever we use for
keybindings instead of a string, and render the keybinding component
- [x] `TextTooltip` should use small `Label`s

Release Notes:

- N/A
2023-11-14 13:56:05 -05:00
Marshall Bowers
76c15229c1 Combine LabelColor and IconColor into TextColor 2023-11-14 13:48:01 -05:00
Conrad Irwin
5dda105182 Merge branch 'main' into element-types 2023-11-14 11:45:19 -07:00
Marshall Bowers
dc56a7b12b Add LabelSize 2023-11-14 13:43:37 -05:00
Antonio Scandurra
48b3a90fbf WIP 2023-11-14 19:42:07 +01:00
Mikayla Maki
6add446334 WIP: Zed2: Add core mac app actions (#3316)
Add back cmd-q, cmd-n, etc.

TODO:
- [x] Fix quit checking workspace windows
- [ ] ~~See if GPUI2 has a DebugElements analog~~

Release Notes:

- N/A
2023-11-14 10:41:03 -08:00
Marshall Bowers
9d31523cf3 Rename keybinding method on PaletteItem to key_binding 2023-11-14 13:37:21 -05:00
Marshall Bowers
90d7033fd0 Pass KeyBindings to TextTooltips 2023-11-14 13:36:03 -05:00
Mikayla
27574524b8 Restore quit action 2023-11-14 10:31:55 -08:00
Conrad Irwin
b69b5742ed Fix panicking unwrap() 2023-11-14 11:27:52 -07:00
Marshall Bowers
aa1471948f Merge branch 'main' into extend-label-and-tooltip 2023-11-14 13:14:10 -05:00
Mikayla
caa0bae04f Merge branch 'main' into core-actions 2023-11-14 10:11:39 -08:00
Conrad Irwin
f4ccff7b72 TEMP 2023-11-14 11:03:55 -07:00
Nathan Sobo
bb584cc7c4 WIP 2023-11-14 11:00:52 -07:00
Nate Butler
251b4640c6 Extend tooltip to take meta + kb 2023-11-14 12:59:53 -05:00
Max Brunsfeld
c7d80c7aac Start work on creating gpui2 version of project panel (#3299)
I'm gonna land what I have, even though some features aren't ported yet,
since we're working on all of this code so actively.

* [x] get the basic structure compiling
* [x] get the panel laying out correctly
* [ ] rename / new file editor
* [ ] enable the tests
* [ ] drag and drop
* [ ] context menu
2023-11-14 09:56:46 -08:00
Antonio Scandurra
428be43710 Wire up rename editor 2023-11-14 18:50:02 +01:00
Max Brunsfeld
2c3c238c9d Fix warnings 2023-11-14 09:47:48 -08:00
Max Brunsfeld
b893ac2a02 Merge branch 'main' into project-panel2 2023-11-14 09:33:48 -08:00
Piotr Osiewicz
c14efb74d7 Finish up touchups for search UI.
Co-authored-by: Nate <nate@zed.dev>
2023-11-14 18:18:52 +01:00
Piotr Osiewicz
08dde94299 WIP styling
Co-authored-by: Nate <nate@zed.dev>
2023-11-14 17:59:53 +01:00
Nathan Sobo
e08f1690b3 Remove commented field 2023-11-14 09:33:28 -07:00
Antonio Scandurra
5ae96e4eb6 Render blocks in editor2 (#3320)
Release Notes:

- N/A
2023-11-14 17:29:55 +01:00
Conrad Irwin
7d94d8940c Not working yet file-finder2 2023-11-14 09:28:18 -07:00
Antonio Scandurra
40c634e056 Merge remote-tracking branch 'origin/main' into editor2-blocks 2023-11-14 17:16:58 +01:00
Antonio Scandurra
7f5014b34a Add red background to blocks that need styling 2023-11-14 17:15:33 +01:00
Antonio Scandurra
0b8ec5372b Return the line length when x is past the last glyph
Co-Authored-By: Julia <julia@zed.dev>
2023-11-14 17:06:18 +01:00
Piotr Osiewicz
6c69e40e5c WIP 2023-11-14 16:56:31 +01:00
Antonio Scandurra
d855e91e43 Honor cmd-w to close active item
Co-Authored-By: Julia <julia@zed.dev>
2023-11-14 16:38:20 +01:00
Nate Butler
6b366c102e Allow a button to take a color (#3315)
[[PR Description]]
- Allows a button to take a color and resolve it into `IconColor` and
`LabelColor`
- Extend `IconColor` and `LabelColor` to allow them to take a
`Player(i)`
- `impl From<LabelColor> for IconColor`

Release Notes:

- N/A
2023-11-14 10:36:52 -05:00
Joseph T. Lyons
ac6babde5a Add gpt-4-1106-preview model (#3319)
This PR adds the `gpt-4-1106-preview` model. It required forking two
repos from different organizations, as one is a submodule of another.

Update 1:

~Currently, I'm just temporarily pointing towards a personal fork of the
repo, but once [this
PR](https://github.com/zurawiki/tiktoken-rs/pull/49) lands, we can
switch back to using the official crate.~

Update 2:

~PR was merged, we are now pointing to a specific commit on the original
official repo - may want to bump it to an official version once a new
one has been released.~

Update 3:

Author published a [new
version](https://crates.io/crates/tiktoken-rs/0.5.7). Now, we are back
to relying on the official crate.

<img width="1118" alt="SCR-20231114-ibgs"
src="https://github.com/zed-industries/zed/assets/19867440/cc2657b6-98f9-413f-9a0c-f337636f367c">

Release Notes:

- Added support for the
[`gpt-4-1106-preview`](https://openai.com/blog/new-models-and-developer-products-announced-at-devday)
model in the assistant panel.
- Updated the `assistant.default_open_ai_model` setting to default to
`gpt-4-1106-preview`. To override the default, use the following snippet
to your `settings.json` file:

```rs
"assistant": {
    // 1. "gpt-3.5-turbo-0613""
    // 2. "gpt-4-0613""
    // 3. "gpt-4-1106-preview"
    "default_open_ai_model": "<Your choice of model here>"
  },
```
2023-11-14 10:11:08 -05:00
Antonio Scandurra
b6914bf0fd Re-enable find all references
Co-Authored-By: Julia <julia@zed.dev>
2023-11-14 16:09:29 +01:00
Antonio Scandurra
f9b9b7549f Render block elements
Co-Authored-By: Julia <julia@zed.dev>
2023-11-14 16:03:06 +01:00
Joseph T. Lyons
a5fc5819f1 Bump tiktoken-rs to official release 2023-11-14 09:12:25 -05:00
Joseph T. Lyons
946a696d3d Update tiktoken-rs dependency
The PR to add the `gpt-4-1106-preview` model was merged:

https://github.com/zurawiki/tiktoken-rs/pull/49
2023-11-14 09:00:04 -05:00
Antonio Scandurra
fc5ec47cc8 WIP 2023-11-14 14:48:59 +01:00
Joseph T. Lyons
516a8790b9 Add gpt-4-1106-preview model 2023-11-14 08:28:57 -05:00
Nathan Sobo
6abaacc457 Fix formatting 2023-11-14 01:58:10 -07:00
Nathan Sobo
364e3e7de5 Merge remote-tracking branch 'origin/main' into element-types 2023-11-14 01:55:58 -07:00
Nathan Sobo
c6e8a097a3 Rename back to div 2023-11-14 01:41:55 -07:00
Nathan Sobo
be18c47912 Remove unnecessary with_element_id calls 2023-11-14 01:38:13 -07:00
Nathan Sobo
a5306c2312 Remove div module 2023-11-14 01:25:10 -07:00
Nathan Sobo
80014a28ea No compile errors or warnings 2023-11-14 01:23:09 -07:00
Nathan Sobo
27fb381cca Checkpoint 2023-11-14 01:15:48 -07:00
Mikayla
8aa076692e Add missing global 2023-11-14 00:09:42 -08:00
Mikayla
ee4957dd47 Implement most core actions 2023-11-14 00:06:33 -08:00
Nathan Sobo
ce30a689a0 Checkpoint 2023-11-13 23:15:45 -07:00
Mikayla
ec16e70336 Sketch in core zed actions code 2023-11-13 22:13:07 -08:00
Conrad Irwin
58f9ef99f7 command 2 2 (#3317)
- Update command matches faster
- Fix action dispatching...
- Add Text::styled() and use it in command palette
- Fix SingleLine editor font size
- Fix elevation on go_to_line2
- Allow clicking on commands in the command palette

Release Notes:

- N/A
2023-11-13 23:12:03 -07:00
Nathan Sobo
9382a304c4 Checkpoint 2023-11-13 23:03:14 -07:00
Nathan Sobo
1668330764 Checkpoint 2023-11-13 22:51:44 -07:00
Nathan Sobo
4a3a1ad0c3 Checkpoint 2023-11-13 22:42:19 -07:00
Nathan Sobo
54a817a5ab Checkpoint 2023-11-13 22:28:33 -07:00
Nathan Sobo
f71afdb0f2 Checkpoint 2023-11-13 22:22:09 -07:00
Nathan Sobo
83a5f74493 Checkpoint 2023-11-13 22:02:05 -07:00
Conrad Irwin
ad017a5df5 Allow clicking on commands in the command palette 2023-11-13 21:42:27 -07:00
Conrad Irwin
4ef95f05e8 Fix elevation on go_to_line2 2023-11-13 21:42:04 -07:00
Conrad Irwin
e0416e9d2a Fix SingleLine editor font size 2023-11-13 21:41:41 -07:00
Nathan Sobo
044d9679ab Checkpoint 2023-11-13 21:40:02 -07:00
Conrad Irwin
c5878cbd5f Add Text::styled() and use it in command palette
Prevents jumping while typing
2023-11-13 19:53:55 -07:00
Nathan Sobo
872b5186e2 Checkpoint 2023-11-13 19:23:07 -07:00
Nathan Sobo
922bb3195b WIP 2023-11-13 18:58:42 -07:00
Conrad Irwin
06f3c60be8 Fix action dispatching... 2023-11-13 18:56:59 -07:00
Conrad Irwin
abdaa3105b Update command matches faster 2023-11-13 18:21:08 -07:00
Nathan Sobo
76754c559c WIP 2023-11-13 18:18:25 -07:00
Mikayla Maki
ca3341f066 Improve actions macros (#3292)
- `actions!` now uses `#[action]` on each struct to reduce duplication.
- The `#[action]` macro now works on unit structs.
- Renamed `menu::unused` to `menu::init` and added more explanation in
comments.

Release Notes:

- N/A
2023-11-13 17:14:56 -08:00
Mikayla Maki
f25c794a7e WIP: Add some editor tests (#3285)
This is a continuation of
https://github.com/zed-industries/zed/pull/3232, however as I started
working on this it seemed a bit premature.

There are a few GPUI changes to finish getting the editor green (mainly
clipboard and simulate_resize), as well as several editor methods to
port (several around changing selections), as well as several editor
methods that are now fully broken (tagged with 'todo(finish editor
tests)').

I am also comitting the partially ported integration tests, which where
close to compiling.

Release Notes:

- N/A
2023-11-13 16:57:41 -08:00
Mikayla
8bbced50c2 Add test tag 2023-11-13 16:51:59 -08:00
Nate Butler
38888696db Allow a button to take a color 2023-11-13 19:46:15 -05:00
Mikayla
d197660d3b Fix broken tests and comment out remaining tests 2023-11-13 16:46:06 -08:00
Mikayla
7d1593b90c Merge branch 'main' into editor-tests 2023-11-13 15:53:22 -08:00
Mikayla
a4e9fea133 WIP
co-authored-by: conrad <conrad.irwin@zed.dev>
2023-11-13 15:53:04 -08:00
Marshall Bowers
a7c42be9a9 Add One Dark (#3314)
- Adds `one-dark`, and sets it as default for now.

Release Notes:

- N/A
2023-11-13 18:50:02 -05:00
Marshall Bowers
0430e8fbf2 Use "One Dark" as default theme 2023-11-13 18:44:17 -05:00
Nathan Sobo
aec7955ccf Checkpoint 2023-11-13 16:40:29 -07:00
Marshall Bowers
92f2e8eb34 Combine related conditions 2023-11-13 18:22:04 -05:00
Marshall Bowers
53117eb5e5 Merge branch 'main' into one-themes 2023-11-13 18:16:45 -05:00
Nate Butler
fea5436ba9 Remove unused imports 2023-11-13 17:54:22 -05:00
Nate Butler
1c74662dc4 Reorganize theme2 crate (#3312)
[[PR Description]]

- Colocates defaults with their defs
- Organizes each style module into the `styles` subfolder
(`src/styles/players`, etc)
- Standardizes the use of `dark()` and `light()` throughout (ex:
`StatusColors::dark()`)
- Documents and extents StatusColors

Release Notes:

- N/A
2023-11-13 17:53:29 -05:00
Conrad Irwin
019d23a246 Add KeyBindings to CommandPalette (#3313)
Release Notes:

- N/A
2023-11-13 15:53:18 -07:00
Nate Butler
701f954448 Start refining tab 2023-11-13 17:51:58 -05:00
Conrad Irwin
25bc898807 Add KeyBindings to CommandPalette 2023-11-13 15:40:49 -07:00
Nate Butler
dd434588ee WIP 2023-11-13 17:38:44 -05:00
Nate Butler
97d6e7f2f5 Add one syntax theme 2023-11-13 17:09:55 -05:00
Max Brunsfeld
2eedd2ad03 Merge branch 'main' into project-panel2 2023-11-13 13:39:13 -08:00
Conrad Irwin
b918c27cf9 WIP: Rework key dispatch to allow focus to be changed and actions to be dispatched on arbitrary focus handles (#3303)
Will explain more later.

Release Notes:

- N/A
2023-11-13 14:19:10 -07:00
Conrad Irwin
f8bc9be284 Fix test 2023-11-13 13:53:08 -07:00
Nate Butler
c1887747b7 Add one_dark theme 2023-11-13 15:48:05 -05:00
Nate Butler
e0547d9acd Allow arrays of colors to be passed in 2023-11-13 15:47:57 -05:00
Nate Butler
916df3c614 Add color converter util 2023-11-13 15:28:20 -05:00
Conrad Irwin
f464d69ff8 Merge branch 'main' into dispatch-tree 2023-11-13 13:21:57 -07:00
Mikayla
0e3fd92bd0 Get editor tests compiling 2023-11-13 12:10:14 -08:00
Marshall Bowers
04ad19d01b Choose appropriate player colors based on theme appearance 2023-11-13 15:07:13 -05:00
Conrad Irwin
7e7b065535 Fix on_action on focusable
We were accidentally dropping the key context
2023-11-13 12:48:36 -07:00
Max Brunsfeld
c0f34e3302 Add delete, open file, and rename actions to the project panel
Co-authored-by: Julia <julia@zed.dev>
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-13 11:38:47 -08:00
Piotr Osiewicz
dfd68d4cb8 WIP: start search2 2023-11-13 20:38:37 +01:00
Max Brunsfeld
1968becf94 Merge branch 'main' into project-panel2 2023-11-13 11:26:51 -08:00
Max Brunsfeld
91b634fc59 Get some project panel actions working
Add styling for hovered and selected items

Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Julia <julia@zed.dev>
2023-11-13 11:08:51 -08:00
Nate Butler
5c424fbe6e Refine command palette (#3311)
[[PR Description]]

Update command palette styles

Release Notes:

- N/A
2023-11-13 13:58:51 -05:00
Nate Butler
889d20d046 Reorganize theme2 crate 2023-11-13 13:58:23 -05:00
Max Brunsfeld
13dd912817 Get left, right, and bottom docks rendering in the right places in the workspace
Co-authored-by: Julia <julia@zed.dev>
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-13 10:47:15 -08:00
Conrad Irwin
2625051f75 Better fix for multiple focuses in one frame 2023-11-13 11:32:05 -07:00
Nate Butler
8432b713cc Resolve errors
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-13 13:16:05 -05:00
Nate Butler
f6c54b8043 Redine command palette style
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
2023-11-13 13:13:40 -05:00
Mikayla
4c5d5105f3 Merge branch 'main' into editor-tests 2023-11-13 09:54:02 -08:00
Nate Butler
7be12cb7b1 Checkpoint Broken 2023-11-13 12:44:50 -05:00
Antonio Scandurra
348760556a 💄 2023-11-13 18:33:08 +01:00
Antonio Scandurra
a6c95ad331 Fix panic when querying available actions 2023-11-13 18:29:18 +01:00
Nate Butler
5361a499ae Checkpoint 2023-11-13 12:09:31 -05:00
Nate Butler
521972ed9e Update Status Colors 2023-11-13 11:56:42 -05:00
Kirill Bulatov
031d841305 Make inlay hint cache tests pass (#3310)
Release Notes:

- N/A
2023-11-13 18:42:16 +02:00
Kirill Bulatov
dbd26ac651 Make inlay hint cache tests pass
Co-Authored-By: Conrad  <conrad.irwin@gmail.com>
2023-11-13 18:25:21 +02:00
Marshall Bowers
71790b338b Add Sized bound to StyledExt trait (#3309)
This PR moves the `Sized` bound to the `StyledExt` trait so we don't
have to repeat it on each of the methods.

Release Notes:

- N/A
2023-11-13 11:22:49 -05:00
Marshall Bowers
3654dd8da0 Remove unnecessary map 2023-11-13 11:10:08 -05:00
Marshall Bowers
5b254b03df Move Sized bound to StyledExt trait 2023-11-13 11:10:00 -05:00
Joseph T. Lyons
be8bd437cd Update jetbrains keymap to match community repo 2023-11-13 10:41:56 -05:00
Antonio Scandurra
45fef27aa1 Clear all the state when clearing KeyDispatcher 2023-11-13 15:31:35 +01:00
Antonio Scandurra
44534b926d Register actions on the right div 2023-11-13 15:21:47 +01:00
Antonio Scandurra
c8fb8e2859 💄 2023-11-13 15:20:43 +01:00
Antonio Scandurra
d0b5c654aa Clear pending keystrokes when finding action 2023-11-13 14:48:08 +01:00
Antonio Scandurra
827b16bf5c Capture node in dispatch tree even if it's not focusable 2023-11-13 14:42:16 +01:00
Antonio Scandurra
26d26fadb3 Fix focus story 2023-11-13 14:35:49 +01:00
Kirill Bulatov
7a454bed22 Uncomment inlay hints logic and tests (#3307)
Tests compile, but do not pass due to todo!s in the platform code, hence
ignored for now.

Release Notes:

- N/A
2023-11-13 15:20:43 +02:00
Kirill Bulatov
e257f7d0b1 Ignore tests for now 2023-11-13 15:02:24 +02:00
Piotr Osiewicz
c3461d274e chore: Bump cc to 1.0.84 (#3304)
This resolves a minor issue where build scripts could've acquired more
job server tokens from Cargo than allowed by `-j` parameter. I've filled
a PR at https://github.com/rust-lang/cc-rs/pull/878 and we've iterated
on the design over there since.

TL;DR: some build scripts may complete a tad bit quicker, potentially
shaving off a few seconds off of debug/release builds. Full description
of the issue is available in
https://github.com/rust-lang/cc-rs/issues/858

Release Notes:

- N/A
2023-11-13 13:14:22 +01:00
Kirill Bulatov
a9c17e7407 Uncomment all inlay hint cache code and tests 2023-11-13 14:07:48 +02:00
Kirill Bulatov
81cc6e84b7 pane: When opening a buffer, actually scroll to the selected tab. (#3306)
Previously it might've reused a shared state.

Deals with https://github.com/zed-industries/community/issues/2262 also
fixes influencer's feedback.

No gpui2 port, due to 0 scrollable functionality in it yet.

Release Notes:

- Fixed tabs not being scrolled to on buffer (re)open
(https://github.com/zed-industries/community/issues/2262)
2023-11-13 13:21:26 +02:00
Kirill Bulatov
f0f0b47058 pane: When opening a buffer, actually scroll to the selected tab. Previously it might've reused a shared state.
Deals with https://github.com/zed-industries/community/issues/2262 also fixes influencer's feedback.

Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-13 13:09:02 +02:00
Antonio Scandurra
9c18253863 Register key and action listeners using Interactive::initialize
Co-Authored-By: Thorsten <mrnugget@gmail.com>
2023-11-13 11:37:57 +01:00
Antonio Scandurra
318cb784b2 Fix panic when calling with_key_dispatch recursively
Co-Authored-By: Thorsten <mrnugget@gmail.com>
2023-11-13 10:17:52 +01:00
Mikayla
13255ef133 Poke at getting the project panel showing up 2023-11-12 23:22:02 -08:00
Nate Butler
6c6fb99cad Theme elevation + Palette Style (#3305)
[[PR Description]]

Release Notes:

- N/A
2023-11-12 22:29:25 -05:00
Nate Butler
800ad1d3dc Update command palette style 2023-11-12 22:13:54 -05:00
Piotr Osiewicz
cdd347c2a0 chore: Bump cc to 1.0.84
This resolves a minor issue where build scripts could've acquired more job server tokens from Cargo than allowed by `-j` parameter. I've filled a PR at https://github.com/rust-lang/cc-rs/pull/878 and we've iterated on the design over there since.

TL;DR: some build scripts may complete a tad bit quicker, potentially shaving off a few seconds off of debug/release builds.
2023-11-12 21:28:02 +01:00
Nathan Sobo
7eaba8fabc WIP 2023-11-10 14:47:45 -07:00
Nate Butler
6bdb6e486e Refactor command palette, picker and code action styles.
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-10 16:13:25 -05:00
Nate Butler
3d66ba35a3 Add ui::Divider component
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-10 16:12:32 -05:00
Nate Butler
5dca5caf9f Add elevation to StyledExt
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-10 16:12:14 -05:00
Nathan Sobo
74a0d9316a Add a DispatchTree which will replace the existing key dispatch strategy
Instead of freezing a stack, we will record the entire dispatch tree so we can
change focus.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-11-10 11:56:14 -07:00
Antonio Scandurra
1c02690199 Wire up code actions in editor2 (#3302)
Release Notes:

- N/A
2023-11-10 16:47:09 +01:00
Antonio Scandurra
c2c6921734 🔥 2023-11-10 16:41:21 +01:00
Antonio Scandurra
198a854370 Fix bad import 2023-11-10 16:41:21 +01:00
Antonio Scandurra
468a014bfc Allow measuring arbitrary items in UniformList 2023-11-10 16:41:21 +01:00
Antonio Scandurra
c44db3b7ec Confirm code action on mouse down 2023-11-10 16:41:21 +01:00
Antonio Scandurra
fb450e35f7 Wire up keyboard interaction in code actions menu 2023-11-10 16:41:21 +01:00
Antonio Scandurra
bf576d47b1 Make code actions menu prettier 2023-11-10 16:41:21 +01:00
Antonio Scandurra
c76fd93015 Use padded bounds to draw uniform list items 2023-11-10 16:41:21 +01:00
Antonio Scandurra
1d37191320 Ensure UniformList style is painted beneath its items 2023-11-10 16:41:21 +01:00
Antonio Scandurra
6929a71827 Ceil measured width for Text element 2023-11-10 16:41:13 +01:00
Kirill Bulatov
3cd4eeffef Do not add diagnostics for any selection in the diagnostics panel (#3300)
Make the panel less jumpy by deferring diagnostics updates until cmd-s
is pressed, if any caret is placed inside the diagnostics panel.

Release Notes:

- N/A
2023-11-10 13:50:58 +02:00
Kirill Bulatov
d38a2b793e Do not add diagnostics for any selection in the diagnostics panel 2023-11-10 13:35:58 +02:00
Antonio Scandurra
a30b47aa5f Show a very basic code actions menu 2023-11-10 12:26:35 +01:00
Antonio Scandurra
23fd1e19dc Ignore element offset when manually drawing AnyElement 2023-11-10 11:35:57 +01:00
Antonio Scandurra
a0987f1121 Merge remote-tracking branch 'origin/main' into code-actions-2 2023-11-10 11:01:23 +01:00
Conrad Irwin
2f3044a2da command palette2 (#3296)
Still to do:
- [ ] Figure out why `ctrl-g` `ctrl-g` doesn't dismiss GoToLine (but
`cmd-shift-p` `cmd-shift-p` does dismiss Command). Likely to do with the
"Editor" context in the keymap, but this did used to work in gpui1.
- [ ] Fix first render with incorrect matches immediately flashes.
- [ ] Show keybindings
- [x] Figure out why `cmd-shift-p "go to line" enter` panics
- [ ] Fix the selected visuals
- [ ] Party hard
- [ ] Uncomment the tests
2023-11-09 22:44:50 -07:00
Conrad Irwin
cc9fb9dea0 Fix panic caused by focusing the same thing twice 2023-11-09 22:25:46 -07:00
Conrad Irwin
5a711886d4 Refactor to make ModalLayer a View 2023-11-09 22:15:44 -07:00
Conrad Irwin
d4b1d1b528 Move from register_modals to register_workspace_action 2023-11-09 21:51:48 -07:00
Conrad Irwin
e6d6806693 Tidy up some more modal behaviour 2023-11-09 21:11:44 -07:00
Conrad Irwin
a73265ace4 Merge branch 'main' into command_palette2 2023-11-09 20:58:54 -07:00
Conrad Irwin
77d92ff65a Tidy up 2023-11-09 20:58:35 -07:00
Max Brunsfeld
b9e098ead8 Start work on creating gpui2 version of project panel 2023-11-09 16:51:03 -08:00
Marshall Bowers
cb8c534dac theme_importer: Support importing themes containing comments (#3298)
This PR updates the `theme_importer` with support for parsing theme
files containing comments.

Up until now we've been manually removing comments from the VS Code
theme files.

Release Notes:

- N/A
2023-11-09 19:22:15 -05:00
Marshall Bowers
6bc1cf0fae Re-import the Synthwave 84 theme (#3297)
This PR re-imports the Synthwave 84 theme now that we support 3-value
hex colors.

Release Notes:

- N/A
2023-11-09 18:56:42 -05:00
Max Brunsfeld
6f23894b40 Fix editor settings deserialization in editor2 2023-11-09 15:37:46 -08:00
Conrad Irwin
ff15ddf3e0 Render more than one item 2023-11-09 16:36:36 -07:00
Marshall Bowers
8bd02fdadc Extend RGBA hex color parsing to support 3-value and 4-value variants (#3295)
This PR extends our support for parsing hex color codes to `Rgba` to
additionally support 3-value (`#rgb`) and 4-value (`#rgba`) formats.

See [here](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color)
for more details on these hex color variants.

Release Notes:

- N/A
2023-11-09 18:27:47 -05:00
Marshall Bowers
82861e3123 Improve digit duplication 2023-11-09 18:19:58 -05:00
Marshall Bowers
8f5adeb9c3 Improve error conditions when parsing hex colors 2023-11-09 18:00:17 -05:00
Marshall Bowers
417279e01b Add support for parsing 3-value and 4-value hex codes 2023-11-09 17:45:05 -05:00
Nate Butler
2347576fb5 Extend theme converter to allow multimatching against vscode colors (#3294)
[[PR Description]]

Adds the ability to specify a vec of VScode syntax scopes to match
against for a given syntax style.

Example:

```rust
pub fn to_vscode(&self) -> Vec<&'static str> {
        use ZedSyntaxToken::*;

        match self {
            SyntaxAttribute => vec!["entity.other.attribute-name"],
            SyntaxBoolean => vec!["constant.language"],
            SyntaxComment => vec!["comment"],
            SyntaxCommentDoc => vec!["comment.block.documentation"],
            SyntaxConstant => vec!["constant.character"],
            SyntaxConstructor => vec!["entity.name.function.definition.special.constructor"],
            SyntaxEmbedded => vec!["meta.embedded"],
            SyntaxEmphasis => vec!["markup.italic"],
            SyntaxEmphasisStrong => vec![
                "markup.bold",
                "markup.italic markup.bold",
                "markup.bold markup.italic",
            ],
            SyntaxEnum => vec!["support.type.enum"],
            SyntaxFunction => vec![
                "entity.name.function",
                "variable.function",
                "support.function",
            ],
            SyntaxKeyword => vec!["keyword"],
            SyntaxLabel => vec![
                "label",
                "entity.name",
                "entity.name.import",
                "entity.name.package",
            ],
            // .. more styles
}}
```

Useful `settings.json` for testing themes:

```json5
{
  // --- Dark Themes ---
  "theme": "Ayu Dark"
  // "theme": "Ayu Mirage"
  // "theme": "Dracula"
  // "theme": "Gruvbox Dark Hard"
  // "theme": "Gruvbox Dark Medium"
  // "theme": "Gruvbox Dark Soft"
  // "theme": "Night Owl"
  // "theme": "Noctis Obscuro"
  // "theme": "Noctis"
  // "theme": "Nord"
  // "theme": "Palenight (Mild Contrast)"
  // "theme": "Palenight Operator"
  // "theme": "Palenight"
  // "theme": "Rose Pine Moon"
  // "theme": "Rose Pine"
  // "theme": "Solarized Dark"
  // "theme": "Synthwave 84"
  // --- Light Themes ---
  // "theme": "Ayu Light"
  // "theme": "Gruvbox Light Hard"
  // "theme": "Gruvbox Light Medium"
  // "theme": "Gruvbox Light Soft"
  // "theme": "Noctis Lux"
  // "theme": "Rose Pine Dawn"
  // "theme": "Solarized Light"
}
```

Release Notes:

- N/A
2023-11-09 17:40:10 -05:00
Max Brunsfeld
7586ef1787 Refine search query suggestions (#3293)
This PR fixes some issues in response to feedback from Dan Abramov and
Jose Valim.

To do:

* [x] fix non-word search suggestions
* [x] add setting for disabling search suggestions

Release Notes:

- Fixed an issue where opening a search without text selected would
populate the search query with non-word characters adjacent to the
cursor.
- Added a setting, `seed_search_query_from_cursor`, which controls
whether the search query is automatically populated from the buffer when
starting a new buffer search or project search.

By default, the search query will always be set to the word under the
cursor. If you want to only populate the search query when text is
selected, you can add the following to your `~/.zed/settings.json`:
  
  ```json
  {
    "seed_search_query_from_cursor": "selection"
  }
  ```

If you don't want the search query to be automatically populated, even
when there is text selected, add the following:
  
  ```json
  {
    "seed_search_query_from_cursor": "never"
  }
  ```
2023-11-09 14:25:20 -08:00
Max Brunsfeld
b6eef26f91 Merge branch 'main' into search-query-suggestion-fixes 2023-11-09 14:18:17 -08:00
Conrad Irwin
fa153a0d56 Make command dispatching work 2023-11-09 15:14:23 -07:00
Max Brunsfeld
6b8ce3cc85 Add a setting for when to seed the search query from the text under the cursor 2023-11-09 14:03:14 -08:00
Nate Butler
6b65acaa99 regenerate themes, format 2023-11-09 16:48:35 -05:00
Nate Butler
00b298a50c Fix incorrect Rose Pine Dawn theme name 2023-11-09 16:44:40 -05:00
Nate Butler
024fb4f818 Remove unused import 2023-11-09 16:41:58 -05:00
Nate Butler
4cd37e6e62 Extend theme converter to allow multimatching against vscode colors 2023-11-09 16:38:48 -05:00
Max Brunsfeld
28d3d21108 Generalize Refineable derive macro to derive arbitrary traits on the refinement type 2023-11-09 13:23:31 -08:00
Max Brunsfeld
dba41e99dd Avoid suggesting search query if cursor is not on a word 2023-11-09 12:33:30 -08:00
Marshall Bowers
31a6409a4c Refine theme styles (#3291)
This PR refines a number of styles in the default theme, as well as
updates the theme importer to support importing syntax styles from VS
Code themes.

Release Notes:

- N/A
2023-11-09 15:32:10 -05:00
Marshall Bowers
7b489f5e2e Allow user-theme related methods to be unused 2023-11-09 15:16:59 -05:00
Nathan Sobo
408a495aaf Call init 2023-11-09 13:14:11 -07:00
Nate Butler
1c6a960bbf Deal with special case where a VSCode theme doesn't have a foreground color
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-09 14:53:04 -05:00
Nate Butler
54157eb99a Finish passing Syntax from VSCode themes to Zed Themes
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-09 14:41:26 -05:00
Max Brunsfeld
c6b76d908f Use normal JS comments within JSX tags and JSX expression blocks (#3290)
This fix only required changing the `overrides` queries for JavaScript
and TSX. I've made the fix in both the `zed2` and `zed` crates.

Release Notes:

- Fixed an issue in JavaScript and TSX files, where the 'toggle
comments' command used the wrong comment syntax inside of JSX tags and
expressions within JSX.
2023-11-09 11:15:08 -08:00
Max Brunsfeld
e50318e7e1 Duplicate buffer test changes in language2 version 2023-11-09 11:09:49 -08:00
Max Brunsfeld
4c89b2885e Use normal JS comments within JSX tags and JSX expression blocks
Co-authored-by: Kirill <kirill@zed.dev>
2023-11-09 10:58:33 -08:00
Nathan Sobo
f5f9d881d7 Polish actions macros 2023-11-09 11:57:13 -07:00
Nate Butler
ff053890cf Extend UserSyntax to allow font_style and font_weight to be specified
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-09 13:46:08 -05:00
Conrad Irwin
72de5cb6ce Fix escape in GoToLine with new event emitter (#3289)
[[PR Description]]

Release Notes:

- N/A
2023-11-09 11:23:26 -07:00
Marshall Bowers
978cff8095 Use IndexMap for a deterministic order when importing syntax colors 2023-11-09 13:12:36 -05:00
Antonio Scandurra
1a0ddc424b WIP 2023-11-09 19:11:17 +01:00
Marshall Bowers
1f0fccc353 Reorganize theme_importer 2023-11-09 13:07:32 -05:00
Antonio Scandurra
b029083441 Start on rendering context menu in editor2
Co-Authored-By: Nathan <nathan@zed.dev>
Co-Authored-By: Mikayla <mikayla@zed.dev>
2023-11-09 19:03:10 +01:00
Marshall Bowers
34e31fd489 Properly emit UserHighlightStyles 2023-11-09 12:59:20 -05:00
Julia
98271fb9bb zed2: Get tsserver running again (#3288)
Port these changes to the zed2 directory

Release Notes:

- N/A
2023-11-09 12:55:27 -05:00
Conrad Irwin
3c689ba33e Fix escape in GoToLine with new event emitter 2023-11-09 10:52:17 -07:00
Piotr Osiewicz
a1d9f351db Some more woogaloo around action dispatch
Co-authored-by: Conrad <conrad@zed.dev>
2023-11-09 18:51:41 +01:00
Marshall Bowers
ff19a0ca18 Add importing-themes feature flag to theme2 crate
When this feature is set the `themes` module won't be compiled.
This allows us to run the `theme_importer` even when the `themes` module
has compile errors in it.
2023-11-09 12:49:16 -05:00
Marshall Bowers
60eae3e50a Emit unique highlights for each syntax token 2023-11-09 12:46:37 -05:00
Antonio Scandurra
5d15886675 Render code actions indicator
Co-Authored-By: Nathan <nathan@zed.dev>
2023-11-09 18:43:26 +01:00
Piotr Osiewicz
194d615691 Fix up keybindings propagation
Co-authored-by: Conrad <conrad@zed.dev>
2023-11-09 18:33:36 +01:00
Nate Butler
efd1db1b09 WIP – Add Syntax themes to importer
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-09 12:30:53 -05:00
Piotr Osiewicz
d184e0d426 Start working on command_palette2 2023-11-09 17:54:05 +01:00
Julia
9cb14c189b zed2: Get tsserver running again 2023-11-09 11:43:40 -05:00
Nate Butler
4b5ca3e420 Allow imported themes to refine StatusColors
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-09 11:30:59 -05:00
Antonio Scandurra
cfee1401ed Extract AnyElement::{measure,draw}
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-11-09 17:30:41 +01:00
Joseph T. Lyons
40f40ab1ec Fix typo in EULA (#3287)
Release Notes:

- N/A
2023-11-09 11:25:50 -05:00
Joseph T. Lyons
604682bb91 Fix typo in EULA 2023-11-09 11:08:30 -05:00
Nate Butler
7253160b04 Add more vscode colors 2023-11-09 11:01:18 -05:00
Kirill Bulatov
b157453630 Do not use prettier for formatting node_modules/** files (#3286)
Fixes

> the most annoying thing i'm running into right now is that when i'm
patching something inside node_modules, Zed tries to pretty-format it
according to my prettier config. this messes up the patch because it has
formatting changes now. i need the pretty formatting on save to be off
inside node_modules, that never makes sense

feedback from #influencers 

Do note though, that language servers will still format any file inside
node_modules, but at least it's not prettier now.
VSCode seem to format the node_modules/** files via language servers
too, so that seems ok for now, and the rest could be fixed during

> "project diagnostics" (eslint) seem to be running inside node_modules,
e.g. i'm seeing 3182 "errors" in my project. that doesn't make sense and
probably wastes resources in addition to being annoying

feedback later.

Release Notes:

- Fixed prettier formatting files inside node_modules
2023-11-09 17:42:58 +02:00
Kirill Bulatov
f55d89088b Port changes to gpui2 2023-11-09 17:18:41 +02:00
Julia
27b3378020 Get tsserver running again (#3277)
Release Notes:

- Fixed a few issues preventing Javascript/Typescript language server
from working with latest upstream changes.
2023-11-09 10:14:36 -05:00
Kirill Bulatov
2e957bc564 Do not propose prettier formatters for documents in node_modules/ 2023-11-09 14:49:37 +02:00
Kirill Bulatov
ce40d5e0c5 Adjust the tests 2023-11-09 14:40:32 +02:00
Kirill Bulatov
8be07eddcc Change locate prettier method signature 2023-11-09 14:23:33 +02:00
Mikayla
656eb9d455 WIP 2023-11-09 00:18:00 -08:00
Mikayla
43eb7f28d1 checkpoint 2023-11-08 23:16:04 -08:00
Nate Butler
bdeb32c34b Extend VSCode theme importer 2023-11-09 01:39:31 -05:00
Nate Butler
25c8b19dfb WIP 2023-11-09 01:21:22 -05:00
Mikayla
f569628088 Merge branch 'more-gpui2-apis' into editor-tests 2023-11-08 22:19:11 -08:00
Mikayla
86630bbe59 Add extra clone 2023-11-08 22:16:08 -08:00
Mikayla
269c3ea244 Uncomment tests 2023-11-08 22:11:51 -08:00
Mikayla
7a7ef1025d Add Context::read_window, WindowHandle::root, and change ViewContext.view() to return a reference 2023-11-08 22:11:19 -08:00
Nate Butler
b5f60b7e50 Merge branch 'main' into update-workspace-styles 2023-11-09 00:38:06 -05:00
Mikayla
4404e76a2d Merge branch 'main' into editor-integration 2023-11-08 21:33:14 -08:00
Mikayla
0bfd18ba09 WIP 2023-11-08 21:32:59 -08:00
Mikayla Maki
ad3b0bd227 port notifications2 and integration tests (#3283)
Release Notes:

- N/A
2023-11-08 21:32:33 -08:00
Nathan Sobo
8c44f6a814 Simplify input handling (#3282)
This PR takes a different approach to input handling.

Rather than returning the optional input handler, focus handle pair from
the element trait, we instead allow you to register an input handler
imperatively on the window context with `WindowContext::handle_input`.
You pass a focus handle reference and any implementer of
`PlatformInputHandler`. There's an `ElementInputHandler<V>` that
implements `PlatformWindowHandler` so long as `V` implements
`InputHandler`.

Release Notes:

- N/A
2023-11-08 22:27:36 -07:00
Mikayla
7888dc4592 Add notifications2 2023-11-08 21:23:31 -08:00
Nathan Sobo
d52c5646b4 Add docs 2023-11-08 22:03:26 -07:00
Nathan Sobo
7c922ad6ee Remove comments 2023-11-08 21:49:21 -07:00
Nathan Sobo
8278a07354 Actually set the input handler 2023-11-08 21:43:14 -07:00
Mikayla Maki
8330fb5f10 port rope2 to zed2 (#3224)
port rope2 to zed2

Release Notes:

- NA
2023-11-08 20:19:05 -08:00
Mikayla Maki
e2130ca444 Switch from associated type to generic on EventEmitter trait (#3281)
This removes a lot of ad-hoc event translation code in the workspace and
replaces it with a GPUI feature and trait bounds.

TODO:
- [x] Proof out idea
- [x] Convert the workspace
- [x] Convert the rest of the app

Release Notes:

- N/A
2023-11-08 20:16:33 -08:00
Mikayla
2c67cc80ba Merge branch 'main' into event-emitter 2023-11-08 20:10:38 -08:00
Nathan Sobo
9a022671a2 Simplify IME support 2023-11-08 21:06:00 -07:00
Mikayla
3c57b912b9 Update editor to use new event emitter 2023-11-08 19:52:43 -08:00
Mikayla
a97c8bf58f Get workspace compiling with new event emitters 2023-11-08 19:29:00 -08:00
Conrad Irwin
97ce9e9586 de-dbg (#3280)
Remove some debugging from GoToLine

Release Notes:

- N/A
2023-11-08 18:45:42 -07:00
Max Brunsfeld
2bf8616a48 Implement bounds_for_range, so that text input windows are positioned correctly (#3278)
![Screenshot 2023-11-08 at 5 33
10 PM](https://github.com/zed-industries/zed/assets/326587/09efd785-2c43-41b2-9429-c17067497fd2)

![Screenshot 2023-11-08 at 5 33
28 PM](https://github.com/zed-industries/zed/assets/326587/14a9faee-3547-40b6-a31f-16f653cdcb36)
2023-11-08 17:38:11 -08:00
Conrad Irwin
47a63d5cb7 de-dbg 2023-11-08 18:36:12 -07:00
Max Brunsfeld
4350801399 Merge branch 'main' into bounds-for-range 2023-11-08 17:31:00 -08:00
Max Brunsfeld
277fbda356 Fix vertical position in first_rect_for_character_range 2023-11-08 17:27:32 -08:00
Max Brunsfeld
86865431b9 Assign gutter widht on editor view when painting element 2023-11-08 17:01:50 -08:00
Mikayla
26fc36ee0e First pass at allowing multiple event types to be emitted by an entity 2023-11-08 16:34:38 -08:00
Marshall Bowers
15f6fbf53b Merge branch 'bounds-for-range' of github.com:zed-industries/zed into bounds-for-range 2023-11-08 19:25:18 -05:00
Marshall Bowers
9a41c58779 Hard-code the gutter margin temporarily 2023-11-08 19:25:12 -05:00
Max Brunsfeld
b77fab0fae 🎨 2023-11-08 16:24:11 -08:00
Conrad Irwin
b90e34aeb2 go to line2 (#3261)
- MODAL
- center a div
- MOAR CODE
- Beautiful go to line modal


Release Notes:
- N/A
2023-11-08 17:16:00 -07:00
Max Brunsfeld
7a8f219251 Account for element's bounds in Editor::bounds_for_range
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-08 16:15:10 -08:00
Conrad Irwin
cef8fa5570 tidy tidy 2023-11-08 17:09:38 -07:00
Max Brunsfeld
1a37d9edc6 Register text input handlers via new element hook
Provide element bounds to the input handler's `bounds_for_rect` method.

Co-authored-by: Marshall <marshall@zed.dev>
2023-11-08 15:48:55 -08:00
Conrad Irwin
1b9f76c01d Refactor GoToLine to use cx.observe_new_views() 2023-11-08 16:23:05 -07:00
Max Brunsfeld
d273fa6dd0 Fix DisplaySnapshot::x_for_point always returning 0
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-08 13:55:39 -08:00
Max Brunsfeld
c81440424b Fix blinking in editor2 (#3272)
This also introduces new APIs in `ViewContext` for observing window
focus changes.

Release Notes:

- N/A
2023-11-08 13:53:43 -08:00
Julia
c7139db39e Get tsserver running again 2023-11-08 16:51:54 -05:00
Conrad Irwin
cbdd4aca89 Merge branch 'main' into go-to-line2 2023-11-08 14:46:52 -07:00
Conrad Irwin
6a802e2fda Make Modals dismissable in theory 2023-11-08 14:45:54 -07:00
Nate Butler
e505fb330c WIP 2023-11-08 16:43:32 -05:00
Nate Butler
23a97f5b61 Document ColorScaleSteps (#3271)
[[PR Description]]

Adds documentation to ColorScaleSteps:

```rust
/// Returns the specified step in the [`ColorScale`].
    #[inline]
    pub fn step(&self, step: ColorScaleStep) -> Hsla {
        // Steps are one-based, so we need convert to the zero-based vec index.
        self.0[step.0 - 1]
    }

    /// `Step 1` - Used for main application backgrounds.
    ///
    /// This step provides a neutral base for any overlaying components, ideal for applications' main backdrop or empty spaces such as canvas areas.
    ///
    #[inline]
    pub fn step_1(&self) -> Hsla {
        self.step(ColorScaleStep::ONE)
    }

    /// `Step 2` - Used for both main application backgrounds and subtle component backgrounds.
    ///
    /// Like `Step 1`, this step allows variations in background styles, from striped tables, sidebar backgrounds, to card backgrounds.
    #[inline]
    pub fn step_2(&self) -> Hsla {
        self.step(ColorScaleStep::TWO)
    }

    /// `Step 3` - Used for UI component backgrounds in their normal states.
    ///
    /// This step maintains accessibility by guaranteeing a contrast ratio of 4.5:1 with steps 11 and 12 for text. It could also suit hover states for transparent components.
    #[inline]
    pub fn step_3(&self) -> Hsla {
        self.step(ColorScaleStep::THREE)
    }

    /// `Step 4` - Used for UI component backgrounds in their hover states.
    ///
    /// Also suited for pressed or selected states of components with a transparent background.
    #[inline]
    pub fn step_4(&self) -> Hsla {
        self.step(ColorScaleStep::FOUR)
    }

    /// `Step 5` - Used for UI component backgrounds in their pressed or selected states.
    #[inline]
    pub fn step_5(&self) -> Hsla {
        self.step(ColorScaleStep::FIVE)
    }

    /// `Step 6` - Used for subtle borders on non-interactive components.
    ///
    /// Its usage spans from sidebars' borders, headers' dividers, cards' outlines, to alerts' edges and separators.
    #[inline]
    pub fn step_6(&self) -> Hsla {
        self.step(ColorScaleStep::SIX)
    }

    /// `Step 7` - Used for subtle borders on interactive components.
    ///
    /// This step subtly delineates the boundary of elements users interact with.
    #[inline]
    pub fn step_7(&self) -> Hsla {
        self.step(ColorScaleStep::SEVEN)
    }

    /// `Step 8` - Used for stronger borders on interactive components and focus rings.
    ///
    /// It strengthens the visibility and accessibility of active elements and their focus states.
    #[inline]
    pub fn step_8(&self) -> Hsla {
        self.step(ColorScaleStep::EIGHT)
    }

    /// `Step 9` - Used for solid backgrounds.
    ///
    /// `Step 9` is the most saturated step, having the least mix of white or black.
    ///
    /// Due to its high chroma, `Step 9` is versatile and particularly useful for semantic colors such as
    /// error, warning, and success indicators.
    #[inline]
    pub fn step_9(&self) -> Hsla {
        self.step(ColorScaleStep::NINE)
    }

    /// `Step 10` - Used for hovered or active solid backgrounds, particularly when `Step 9` is their normal state.
    #[inline]
    pub fn step_10(&self) -> Hsla {
        self.step(ColorScaleStep::TEN)
    }

    /// `Step 11` - Used for text and icons requiring low contrast or less emphasis.
    #[inline]
    pub fn step_11(&self) -> Hsla {
        self.step(ColorScaleStep::ELEVEN)
    }

    /// `Step 12` - Used for text and icons requiring high contrast or prominence.
    #[inline]
    pub fn step_12(&self) -> Hsla {
        self.step(ColorScaleStep::TWELVE)
    }
```

Release Notes:

- N/A
2023-11-08 16:25:17 -05:00
Nate Butler
208f5f5182 Extend Styled for Zed-specific methods (#3276)
[[PR Description]]

- Adds `StyledExt` for Zed-specific methods like `ui_text`, `v_flex`,
etc.
- Updates components previously using `text_*` methods.

Release Notes:

- N/A
2023-11-08 16:04:46 -05:00
Mikayla
097efdebc5 WIP 2023-11-08 12:49:09 -08:00
Nate Butler
9cc3ee9674 Update usages of text_size_* to text_ui in ui components
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-08 15:28:38 -05:00
Nate Butler
9bdfc7a2e5 Update StyledExt to impl over I & F as well as V for Div
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-08 15:25:44 -05:00
Marshall Bowers
acf37804eb Use a fork of ctor to silence warnings generated by macro (#3275)
This PR switches us over to a fork of `ctor` that contains the fixes
from https://github.com/mmastrac/rust-ctor/pull/295, backported to our
current version of `ctor` (v0.1.20).

Once 1) the `ctor` maintainer publishes a new version with that change
and 2) we're ready to upgrade to the latest version of `ctor` we can
switch back to the mainline version.

Release Notes:

- N/A
2023-11-08 15:05:19 -05:00
Nate Butler
f4abd95866 Remove the Stack trait, update StyledExt to include stacks
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-08 15:00:47 -05:00
Nate Butler
cb830a4ce0 Remove unused code in avatar 2023-11-08 14:46:47 -05:00
Mikayla Maki
94e1a75ff0 WIP: Add collab tests (#3232)
TODO:
- [x] GPUI2: Implement record_backtrace on executor
- [x] GPUI2: Implement rng on executor
- [x] GPUI2: Determine whether to Implement global notifications for
removals
- [x] Get existing tests passing

TODO later:
- [ ] Port: collab_ui and uncomment tests
- [ ] Port: editor and uncomment tests
- [ ] Port: notifications and uncomment tests



Release Notes:

- N/A
2023-11-08 11:46:22 -08:00
Nate Butler
4ef2f0b2b9 Update StyledExt to use more idiomatic method naming 2023-11-08 14:42:56 -05:00
Conrad Irwin
e90f6acf5f Silence problem 2023-11-08 12:37:35 -07:00
Conrad Irwin
dbe06fe5fc Merge branch 'main' into add-collab-tests 2023-11-08 12:33:15 -07:00
Mikayla
409e17ad30 Merge branch 'main' into go-to-line2 2023-11-08 11:32:36 -08:00
Nate Butler
6ecf629c63 BROKEN: Checkpoint 2023-11-08 14:29:38 -05:00
Mikayla
1864d37d2e Fix double borrow in synchronous tests 2023-11-08 11:23:35 -08:00
Max Brunsfeld
b6b0fea210 Merge branch 'main' into fix-editor-blinking 2023-11-08 11:01:13 -08:00
Max Brunsfeld
b33ea3c700 Preserve stateless interactivity when assigning elements an id (#3274) 2023-11-08 10:56:02 -08:00
Max Brunsfeld
2ac28240e4 Merge branch 'main' into picker-actions 2023-11-08 10:49:44 -08:00
Max Brunsfeld
5480c01cda Extract a Frame struct from Window (#3273)
This PR pulls the previous/current frame data out of the `Window` and
into a separate `Frame` struct.

Release Notes:

- N/A
2023-11-08 10:47:11 -08:00
Max Brunsfeld
4c31a0c989 Preserve stateless interactivity when assigning elements an id
Co-authored-by: Nathan <nathan@zed.dev>
Co-authored-by: Piotr <piotr@zed.dev>
2023-11-08 10:45:10 -08:00
Mikayla Maki
cb0315939e Don't generate licenses on every PR (#3260)
Build speed improvification
2023-11-08 10:40:51 -08:00
Mikayla
e1cb993878 Get tests green 2023-11-08 10:38:43 -08:00
Marshall Bowers
ca2cc42800 Remove unused SceneBuilder constructor 2023-11-08 13:30:20 -05:00
Antonio Scandurra
866df770cb Extract a Frame struct from Window
Co-Authored-By: Marshall <marshall@zed.dev>
Co-Authored-By: Nathan <nathan@zed.dev>
Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-08 13:24:11 -05:00
Antonio Scandurra
14b41d657d Introduce ViewContext::on_blur
Co-Authored-By: Marshall <marshall@zed.dev>
2023-11-08 19:09:01 +01:00
Antonio Scandurra
2fd8b1f489 Fix blinking behavior in editor when receiving/losing focus
Co-Authored-By: Marshall <marshall@zed.dev>
2023-11-08 19:03:57 +01:00
Nate Butler
e4ca2cb20b Update titlebar 2023-11-08 12:57:31 -05:00
Nate Butler
6e11044e9e add ui_text_size functions 2023-11-08 12:57:24 -05:00
Mikayla
9b30f490c7 Merge branch 'main' into add-collab-tests 2023-11-08 09:57:08 -08:00
Mikayla
3050c440f4 Merge branch 'main' into add-collab-tests 2023-11-08 09:41:57 -08:00
Max Brunsfeld
d25f48ed6b Register menu2 actions using actions macro 2023-11-08 09:35:19 -08:00
Antonio Scandurra
738b2ce6c5 Extract a Frame struct from Window
Co-Authored-By: Marshall <marshall@zed.dev>
Co-Authored-By: Nathan <nathan@zed.dev>
Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-08 18:17:38 +01:00
Joseph T. Lyons
c67f78c065 Improve get preview channel changes script (#3270)
- Improve reliability of finding release note lines
- Identify cases where release notes were accidentally omitted (no "N/A
line)
- Filter out N/As

Release Notes:

- N/A
2023-11-08 11:55:52 -05:00
Antonio Scandurra
0143fa2056 Fix clipping bugs in editor2 (#3269)
Release Notes:

- N/A
2023-11-08 17:51:39 +01:00
Marshall Bowers
761d4fcd49 Port the picker and uniform list (#3248)
This adds a `UniformList` element and partially implements `Picker` as a
component, using `UniformList`. Because editor2 isn't fully implemented
yet, the picker doesn't have filtering logic yet. We want to merge this
for now though, to make the UniformList element available for other
crates.

Release Notes:

- N/A
2023-11-08 17:45:23 +01:00
Joseph T. Lyons
e6bda025a3 Improve get preview channel changes script
- Filter out N/As
- Identify missing release note lines

Co-Authored-By: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
2023-11-08 11:40:53 -05:00
Marshall Bowers
b6766ba39a Replace GitStatusColors with StatusColors (#3268)
This PR removes `GitStatusColors` in favor of just using `StatusColors`
instead.

Release Notes:

- N/A
2023-11-08 11:32:32 -05:00
Antonio Scandurra
d71f671476 Fix clipping in Line::draw
Co-Authored-By: Nathan <nathan@zed.dev>
Co-Authored-By: Marshall <marshall@zed.dev>
2023-11-08 17:32:21 +01:00
Antonio Scandurra
727fb4fbff Use a consistent clipping strategy for drawing all the primitives
Co-Authored-By: Nathan <nathan@zed.dev>
2023-11-08 17:29:05 +01:00
Marshall Bowers
e9650c025f Fix overflow in UniformList 2023-11-08 11:26:26 -05:00
Marshall Bowers
fe28d8faea Merge branch 'main' into picker 2023-11-08 11:18:54 -05:00
Joseph T. Lyons
9e5a4ea6c4 v0.113.x dev 2023-11-08 10:53:37 -05:00
Antonio Scandurra
131074732f Wire up mouse interaction in editor2 (#3267)
Release Notes:

- N/A
2023-11-08 15:36:47 +01:00
Antonio Scandurra
55dca1e3e1 💄 2023-11-08 15:33:11 +01:00
Antonio Scandurra
15d40d6df5 Determine whether the gutter was hovered 2023-11-08 15:30:41 +01:00
Antonio Scandurra
dfc536b4f5 Handle MouseUpEvent in editor2 2023-11-08 15:17:30 +01:00
Antonio Scandurra
e500c05880 Move building of key listeners outside of EditorElement::initialize 2023-11-08 15:12:54 +01:00
Antonio Scandurra
bef3b80bd4 Clear hover background highlights
Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-08 15:08:54 +01:00
Piotr Osiewicz
e5f78ec122 Uncomment mouse_dragged event
Co-authored-by: Antonio <antonio@zed.dev>
2023-11-08 15:02:35 +01:00
Piotr Osiewicz
1b085bd618 Extract mouse event handlers into paint_mouse_listeners
Co-authored-by: Antonio <antonio@zed.dev>
2023-11-08 14:40:08 +01:00
Piotr Osiewicz
dd20032eab Hook up mouse_down function handler
Co-authored-by: Antonio <antonio@zed.dev>
2023-11-08 14:36:05 +01:00
Piotr Osiewicz
e30449e61a Pass text_bounds instead of full editor bounds into mouse_moved.
Co-authored-by: Antonio <antonio@zed.dev>
2023-11-08 14:28:16 +01:00
Piotr Osiewicz
334829f868 uncomment show_hover 2023-11-08 14:24:28 +01:00
Piotr Osiewicz
cd3773531c uncomment mouse moved 2023-11-08 14:24:28 +01:00
Antonio Scandurra
e4bc03217d gpui2: Type-erase futures. (#3266)
Project2's LLVM IR size is ~33-44% bigger than project1 due to the fact
that in gpui2 we call async_task::spawn(_local) with impl Future instead
of dyn Future, which leads to quite a few more instantiations of
RawTask.

LLVM-IR size for project2:
|  build_type  |  main   |  this branch  | project1 |
|  debug       | 2617795 |    2022814    | 1817866  |
|  release     | 4439033 |    3715086    | 3314489  |

Note that this PR is in line with what was done in GPUI1 (we've also
boxed futures there).
Release Notes:

- N/A
2023-11-08 14:21:40 +01:00
Antonio Scandurra
b1f5723d84 Re-enable most of the features in editor2 (#3265)
Release Notes:

- N/A
2023-11-08 14:20:09 +01:00
Piotr Osiewicz
2364f6b22e gpui2: Type-erase futures.
Project2's LLVM IR size is ~20-25% bigger than project1 due to the fact that in gpui2 we call async_task::spawn(_local) with impl Future instead of dyn Future, which leads to quite a few more instantiations of RawTask.

LLVM-IR size for project2:
|  build_type  |  main   |  this branch  | project1 |
|  debug       | 2617795 |    2022814    | 1817866  |
|  release     | 4439033 |    3715086    | 3314489  |
2023-11-08 13:06:28 +01:00
Antonio Scandurra
c5d5571ad3 Fix warnings when generating function name for ctor
Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-08 12:31:35 +01:00
Antonio Scandurra
6a0789c88e Don't alpha blend when rasterizing paths
Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-08 12:04:25 +01:00
Antonio Scandurra
8ac8a6f1d9 Re-enable most of the functionalities in editor2 2023-11-08 11:30:32 +01:00
Nate Butler
31bac3dd62 Document ColorScaleSteps 2023-11-08 00:45:05 -05:00
Nathan Sobo
d67581875f Register actions statically / globally (#3264)
This updates our approach to action registration to make it
static/global.

There are 3 different approaches to creating an action, depending on the
complexity of your action's implementation. All of them involve defining
a data type with the correct trait implementations and registering it,
each a bit more powerful / verbose.

* Define a simple list of unit structs that implement `Action` -
`actions!(Foo, Bar, Baz)`
* Make a more complex data type into an action with `#[action]`. This
derives all the necessary traits and registers the action.
  ```rs
  #[action]
  struct MoveLeft {
    word: true
  }
  ```
* Implement all traits yourself and just register the action with
`#[register_action]`.

Release Notes:

N/A
2023-11-07 22:05:59 -07:00
Nathan Sobo
408edaae39 Remove call to removed method 2023-11-07 21:58:46 -07:00
Nathan Sobo
1949fa5147 Merge remote-tracking branch 'origin/main' into register-actions 2023-11-07 21:56:08 -07:00
Nathan Sobo
2a55b0dbfb Simplify actions macro. 2023-11-07 21:48:47 -07:00
Nathan Sobo
fdc9ea7f9b Docs and cleanup 2023-11-07 21:26:51 -07:00
Nathan Sobo
814e62050c Register actions globally before main 2023-11-07 20:58:37 -07:00
Nathan Sobo
80630cd4d9 WIP 2023-11-07 20:23:02 -07:00
Nate Butler
776338d27a Update default theme player colors and add players story (#3263)
[[PR Description]]

- Update the default theme player colors for `Zed Pro Moonlight` and
`Zed Pro Daylight`
- Adds the ability to create stories in the `theme2` crate


![image](https://github.com/zed-industries/zed/assets/1714999/61fca222-1512-43b1-a229-fae1080d07fa)

You can see them by running:
- `cargo run -p storybook2 -- components/players --theme "Zed Pro
Daylight"`
- `cargo run -p storybook2 -- components/players --theme`

The player colors crisscross back and forth on the color wheel so that
the colors are as distinct as possible.


![image](https://github.com/zed-industries/zed/assets/1714999/255c9fd2-34da-4f75-9aad-0dd02f7009bf)

We do have room to add additional players if needed. Just let me know if
we feel like the default 8 aren't cutting it.


Release Notes:

- N/A
2023-11-07 22:00:49 -05:00
Nate Butler
0dd6ea6d41 Add new default player colors and the players story. 2023-11-07 21:51:12 -05:00
Nate Butler
79b4f78cb3 Extend the theme crate to enable stories, add players story 2023-11-07 21:08:33 -05:00
Nate Butler
a39865b4b2 Update default player colors 2023-11-07 20:27:00 -05:00
Max Brunsfeld
06960df287 Implement basic fuzzy filtering in picker 2023-11-07 17:24:04 -08:00
Max Brunsfeld
bdec1c8202 Merge branch 'main' into picker 2023-11-07 16:57:47 -08:00
Max Brunsfeld
bcc92e9c4e Implement basic text input handling (#3262)
This PR adds basic text input to Editors in zed2.

Note that we have *not* yet implemented the
`InputHandler::bounds_for_range` method on `Editor`, so the composition
and emoji picker windows are not yet positioned correctly.
2023-11-07 16:57:26 -08:00
Max Brunsfeld
9fe3073af7 Get basic text input working
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-07 16:33:02 -08:00
Max Brunsfeld
bd12e3edb6 Assign editors as text input handlers
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-07 15:44:00 -08:00
Conrad Irwin
b2ae08b159 Implement an InputHandler trait for gpui2
Co-Authored-By: Marshall <marshall@zed.dev>
Co-Authored-By: Max <max@zed.dev>
Co-Authored-By: Julia <julia@zed.dev>
2023-11-07 16:30:04 -07:00
Conrad Irwin
7cdece4857 Beautiful go to line modal
Co-authored-by: Julia <julia@zed.dev>
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-07 15:32:34 -07:00
Max Brunsfeld
ea603401e2 Get actions + focus working on picker, now that it's a view
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-07 13:48:32 -08:00
Conrad Irwin
ae2d0f1fa1 Merge branch 'main' into go-to-line3 2023-11-07 14:44:45 -07:00
Conrad Irwin
5751303ea4 MOAR CODE 2023-11-07 14:44:36 -07:00
Max Brunsfeld
36d9633f6f Merge branch 'main' into picker 2023-11-07 13:37:49 -08:00
Max Brunsfeld
b9d051eae7 Start work on adding a filter editor to the picker
Implement picker as a view instead of as a component

Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-07 13:37:10 -08:00
Conrad Irwin
ffce5ff084 Don't generate licenses on every PR 2023-11-07 14:33:19 -07:00
Conrad Irwin
9cdfce4956 Make it possible to render a single line editor (#3259)
[[PR Description]]

Release Notes:

- (Added|Fixed|Improved) ...
([#<public_issue_number_if_exists>](https://github.com/zed-industries/community/issues/<public_issue_number_if_exists>)).
2023-11-07 14:26:10 -07:00
Nate Butler
3a85beeaa5 center a div 2023-11-07 16:23:41 -05:00
Conrad Irwin
5c450843a5 Add text and focus to editor 2023-11-07 14:19:15 -07:00
Conrad Irwin
a21c49c015 Make it possible to render a single line editor 2023-11-07 14:05:23 -07:00
Max Brunsfeld
80e6427eec 🎨
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-07 13:03:36 -08:00
Conrad Irwin
acab2f9003 MODAL 2023-11-07 13:23:27 -07:00
Max Brunsfeld
10c94cc8b7 Remove unused import 2023-11-07 11:47:49 -08:00
Mikayla Maki
a3bd04fed2 Merge branch 'main' into picker 2023-11-07 11:44:02 -08:00
Mikayla Maki
c7f5888348 editor singleline (#3257)
- Implement Editor::single_line
- Fix confusing error message
- Fix loading keyfiles
- Wire up GoToLine modal
2023-11-07 11:41:33 -08:00
Max Brunsfeld
d690fb038d Merge branch 'main' into picker 2023-11-07 11:27:14 -08:00
Nate Butler
b692fb1464 Start documenting ThemeColors (#3258)
[[PR Description]]
- Adds doc comments for most fields on ThemeColors
- Scaffolds out some upcoming additional fields (Will add in a later PR)
- Renames a few fields:
    - `element_placeholder` -> `element_placeholder_text`
    - `element_drop_target` -> `drop_target_background`
- Removes the redundant `element_placeholder_text` (This should be set
using `text_placeholder`

Release Notes:

- N/A
2023-11-07 14:14:56 -05:00
Conrad Irwin
1e6a0f1c7b Wire up GoToLine modal 2023-11-07 12:12:05 -07:00
Conrad Irwin
0233864e92 Fix loading keyfiles 2023-11-07 12:04:37 -07:00
Conrad Irwin
b804b25c21 Fix confusing error message 2023-11-07 12:04:21 -07:00
Nate Butler
df84ba4222 Continue documenting theme colors 2023-11-07 14:04:09 -05:00
Max Brunsfeld
6928ad1335 Rename List -> UniformList
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-07 11:00:53 -08:00
Max Brunsfeld
2412873719 Remove commented-out code in picker2
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-07 10:53:59 -08:00
Max Brunsfeld
742180a3a8 Implement list scroll tracking
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-07 10:45:38 -08:00
Nate Butler
eb5fe3a3b9 Merge branch 'main' into document-theme 2023-11-07 13:36:08 -05:00
Nate Butler
91f356a2f1 Begin documenting theme colors 2023-11-07 13:36:01 -05:00
Conrad Irwin
3a72f2122a Implement Editor::single_line 2023-11-07 11:12:36 -07:00
Antonio Scandurra
4bf3a4e3d4 Implement movement in editor2 (#3256)
Release Notes:

- N/A
2023-11-07 19:12:09 +01:00
Conrad Irwin
c89d6eb292 modals2 (#3247)
New Modal implementation for gpui2

Release Notes:

N/A
2023-11-07 10:56:46 -07:00
Antonio Scandurra
aa17adaac9 Merge remote-tracking branch 'origin/main' into editor-movement 2023-11-07 18:50:43 +01:00
Antonio Scandurra
d7e86eb1c1 Merge remote-tracking branch 'origin/main' into editor-movement 2023-11-07 18:48:08 +01:00
Max Brunsfeld
1d34b7b9fe Implement picker actions
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-11-07 09:46:41 -08:00
Marshall Bowers
25876161f8 theme_importer: Format generated themes (#3255)
This PR makes the `theme_importer` format the themes that it generates
automatically.

Release Notes:

- N/A
2023-11-07 12:45:09 -05:00
Max Brunsfeld
69eb49a2ed Merge branch 'main' into picker 2023-11-07 09:34:57 -08:00
Antonio Scandurra
2697862a02 Merge remote-tracking branch 'origin/main' into editor-movement 2023-11-07 17:54:46 +01:00
Antonio Scandurra
82a018996b WIP 2023-11-07 17:54:14 +01:00
Antonio Scandurra
64b899c68c Implement scrolling for editor2 (#3251)
Release Notes:

- N/A
2023-11-07 17:53:57 +01:00
Julia
5336c5decf Re-introduce a macro for defining actions for ease of use (#3253)
Release Notes:

- N/A
2023-11-07 11:51:00 -05:00
Marshall Bowers
0d95410634 Rework third-party themes (#3254)
This PR reworks the way we define our third-party themes to make them
work as overlays on top of a base theme.

We introduce the concept of a `UserThemeFamily` that contains
`UserTheme`s. Rather than being an entire theme definition on their own,
a `UserTheme` just contains optional overrides for the values in a
`Theme`.

When resolving a `UserTheme`, we apply it on top of the base theme. Any
values not overridden in the `UserTheme` will fall back to the `Theme`
defaults.

Right now we are just using `UserTheme` to model third-party themes that
we distribute with the Zed binary. However, this same structure can also
be used to import arbitrary user themes (such as from a theme registry,
or even a theme blob from the settings file).

Release Notes:

- N/A
2023-11-07 11:40:07 -05:00
Julia
643146d768 Re-introduce a macro for defining actions for ease of use
Co-Authored-By: Piotr Osiewicz <piotr@zed.dev>
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
2023-11-07 11:30:58 -05:00
Conrad Irwin
a2a28af052 Add Modals
P.S. this is all completely different now

Co-Authored-By: Marshall <marshall@zed.dev>
Co-Authored-By: Julia <julia@zed.dev>
2023-11-07 09:18:34 -07:00
Piotr Osiewicz
9582a6f317 chore: Run multitarget build in script/bundle (#3241)
Ignore this PR for now.

This has a chance to speed up a build in case where e.g. we're
single-threaded in aarch64 build; at that point the x86_64 codegen can
take place. Also, MIR can probably be shared between the two
architectures, further reducing build time.

Release Notes:
- N/A
2023-11-07 17:00:36 +01:00
Conrad Irwin
2e43015664 gpui event test (#3249)
- Flesh out gpui2 test support
- Smoke test for event handling
2023-11-07 08:43:15 -07:00
Marshall Bowers
74853ea55f Rename ThemeVariant to Theme (#3252)
This PR renames the `ThemeVariant` type to `Theme`.

This better reflects its purpose, as well as matches the same name as we
had before, which should make porting crates slightly easier.

Release Notes:

- N/A
2023-11-07 10:41:36 -05:00
Conrad Irwin
6f74854525 Fix event ordering issues 2023-11-07 08:29:55 -07:00
Antonio Scandurra
b0650517ad Clip text when scrolling horizontally
Co-Authored-By: Julia <julia@zed.dev>
Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-07 15:50:18 +01:00
Antonio Scandurra
b9e98c112f Re-enable scrolling for EditorElement
Co-Authored-By: Julia <julia@zed.dev>
Co-Authored-By: Piotr <piotr@zed.dev>
2023-11-07 15:48:08 +01:00
Antonio Scandurra
9cb8512603 Start on laying out and painting editor2 (#3250)
![CleanShot 2023-11-07 at 13 16
28@2x](https://github.com/zed-industries/zed/assets/482957/a136a3d9-b518-4591-8307-e63cfe0e4310)


Release Notes:

- N/A
2023-11-07 15:14:26 +01:00
Marshall Bowers
7078c5fbb9 Regenerate all themes 2023-11-07 08:59:50 -05:00
Marshall Bowers
01eac50fc8 Add new ThemeColors values to the theme printer 2023-11-07 08:59:37 -05:00
Antonio Scandurra
9f2e6be1b3 Fix warning 2023-11-07 14:31:17 +01:00
Antonio Scandurra
268be71d8e Add colors for document highlights 2023-11-07 13:15:08 +01:00
Antonio Scandurra
bdf6e8bcc7 Merge remote-tracking branch 'origin/main' into editor2-paint 2023-11-07 13:09:48 +01:00
Antonio Scandurra
6ae09634ce Remove focused field and use FocusHandle instead in Editor 2023-11-07 12:46:31 +01:00
Antonio Scandurra
a866370dc1 Paint lines 2023-11-07 12:25:33 +01:00
Conrad Irwin
a7d52ee86f Smoke test for event handling 2023-11-06 21:05:22 -07:00
Conrad Irwin
8e799b6e22 Flesh out gpui2 test support 2023-11-06 21:05:11 -07:00
Conrad Irwin
2afeb50c4b Try notarytool (#3239)
Try to use notarytool to fix build problems
2023-11-06 18:16:38 -07:00
Mikayla
85000eba81 wip: picker
co-authored-by: nathan <nathan@zed.dev>
co-authored-by: max <max@zed.dev>
2023-11-06 17:09:38 -08:00
Mikayla
3c93b585ab Checkpoint 2023-11-06 15:11:22 -08:00
Mikayla
ea6755b1ca Checkpoint 2023-11-06 14:26:10 -08:00
Nate Butler
99a57d922f Add theme importer (#3246)
[[PR Description]]

Thanks @maxdeviant for all the help with this one 🫂 

- Adds the `theme_importer` crate
- Adds the ability to import themes in VSCode Format.
- Adds the `assets/themes/src` folder with source files for imported
themes
- Adds an initial set of themes: `andromeda`, `ayu`, `dracula`,
`gruvbox`, `night-owl`, `noctis`, `palenight`, `rose-pine`, `solarized`,
`synthwave-84`.

From the README:

## Usage

- `cargo run -p theme_importer` - Import the context of
`assets/themes/src`

---

## Troubleshooting

As the importer generates rust files, you may need to manually do some
cleanup in `registry.rs` and `themes/mod.rs` if you remove themes or
delete the `themes` folder in the theme crate.

---

## Required Structure

To import a theme or series of themes 3 things are required:

- `family.json`: A JSON file containing the theme family metadata and
list of theme variants
- `{theme_name}.json`: One theme json for each theme variant
- `LICENSE`: A license file for the theme family

### `family.json`

#### `name`

The name of the theme family. Avoid special characters.

This will be used for the theme family directory name (lowercased) and
the theme family name in the Zed UI.

Good:

- `Rose Pine`
- `Synthwave 84`
- `Monokai Solarized`

Bad:

- `Rosé Pine`
- `Synthwave '84`
- `Monokai (Solarized)`

#### `author`

The author of the theme family. This can be a name or a username.

This will be used for the theme family author in the Zed UI.

#### `themes`

A list of theme variants.

`appearance` can be either `light` or `dark`. This will impact which
default fallback colors are used, and where the theme shows up in the
Zed UI.

### `{theme_name}.json`

Each theme added to the family must have a corresponding JSON file. This
JSON file can be obtained from the VSCode extensions folder (once you
have installed it.) This is usually located at `~/.vscode/extensions`
(on macOS).

You can use `open ~/.vscode/extensions` to open the folder in Finder
directly.

Copy that json file into the theme family directory and tidy up the
filenames as needed.

### `LICENSE`

A LICENSE file is required to import a theme family. Failing to provide
a complete text license will cause it to be skipped when the import is
run.

If the theme only provices a license code (e.g. MIT, Apache 2.0, etc.)
then put that code into the LICENSE file.

If no license is provided, either contact the theme creator or don't add
the theme.

---

### Complete Example:

An example family with multiple variants:

```json
{
  "name": "Ayu",
  // When both name and username are available
  // prefer the `username (name)` format
  "author": "dempfi (Ike Ku)",
  "themes": [
    {
      "name": "Ayu Light",
      "file_name": "ayu-light.json",
      "appearance": "light"
    },
    {
      "name": "Ayu Mirage",
      "file_name": "ayu-mirage.json",
      "appearance": "dark"
    },
    {
      "name": "Ayu Dark",
      "file_name": "ayu-dark.json",
      "appearance": "dark"
    }
  ]
}
```

An example single variant family:

```json
{
  "name": "Andromeda",
  "author": "Eliver Lara (EliverLara)",
  "themes": [
    {
      "name": "Andromeda",
      "file_name": "andromeda.json",
      "appearance": "dark"
    },
    {
      "name": "Andromeda Bordered",
      "file_name": "andromeda-bordered.json",
      "appearance": "dark"
    }
  ]
}
```


Release Notes:

- N/A
2023-11-06 16:08:05 -05:00
Nate Butler
eac7c3cea9 Update Cargo.toml 2023-11-06 16:02:21 -05:00
Nate Butler
2931d32499 Add a README for theme_importer 2023-11-06 16:00:57 -05:00
Mikayla
3f7dc59512 Snapshot for kirill 2023-11-06 12:33:20 -08:00
Nate Butler
3cb72610b3 Finish up initial themes 2023-11-06 15:24:36 -05:00
Nate Butler
62981fc2ee Format themes 2023-11-06 14:58:34 -05:00
Nate Butler
c47c64184c Add additional themes, update theme importer 2023-11-06 14:54:21 -05:00
Mikayla
75a80811b3 WIP 2023-11-06 11:18:56 -08:00
Conrad Irwin
050d72719a Use gpui instead of gpui2 consistently (#3245)
Release Notes:

N/A
2023-11-06 12:02:58 -07:00
Conrad Irwin
496518f3e8 Use gpui instead of gpui2 consistenytly 2023-11-06 11:50:33 -07:00
Conrad Irwin
eb325fb387 editor2 rendering (#3244)
- Make tab bar visible
- Fix tab text colors
- Ensure panes cover the available space
- Make the close button close
- Fix bug when unsubscribe called after remove
- WIP: start on editor element
- Add hover behaviour to tabs
- Add PointingHand on tabs
- gpui2: Add on_hover events
- Tooltip on tabs
- MOAR TOOLTIPS
- Use an `IconButton` for the tab close button
- Remove unneeded type qualification
- Tooltips in mouse event handler & fix executor timer
- Move more tooltip logic into gpui2 & fix tooltip moving on paint
- Update tooltip code a bit
- Allow multiple subscriptions from one entity handle

Release Notes:

- N/A
2023-11-06 11:29:42 -07:00
Nate Butler
3940e02a73 Add Nord Theme 2023-11-06 13:25:27 -05:00
Marshall Bowers
d224f511fa Add interactivity to Checkbox component (#3240)
This PR adds interactivity to the `Checkbox` component.

They can now be checked and unchecked by clicking them.

Release Notes:

- N/A
2023-11-06 13:22:25 -05:00
Mikayla
d66ed4310f WIP: change over background executor test helpers 2023-11-06 10:16:08 -08:00
Conrad Irwin
c59817cd72 Merge branch 'main' into editor2-rendering 2023-11-06 11:06:43 -07:00
Conrad Irwin
d88dccffbc Allow multiple subscriptions from one entity handle 2023-11-06 11:03:14 -07:00
Antonio Scandurra
e460f6a27c WIP 2023-11-06 18:59:46 +01:00
Conrad Irwin
3afdeeac1e tooltip2 (#3237)
- Fix executor.timer() in gpui2
- Add support for tooltips 

[[PR Description]]

Release Notes:

- N/A
2023-11-06 10:51:01 -07:00
Nate Butler
80f80df5cf Add Noctis Theme 2023-11-06 12:43:10 -05:00
Conrad Irwin
4d88a326e1 Tidy up a bit better 2023-11-06 10:37:35 -07:00
Kirill Bulatov
254b369624 Properly toggle diagnostics (#3243)
Follow-up of https://github.com/zed-industries/zed/pull/3236 that fixes
a bug introduced in that PR: diagnostics warning toggle stopped working.

Release Notes:

- N/A
2023-11-06 19:35:49 +02:00
Kirill Bulatov
bfb860c06c Properly toggle diagnostics 2023-11-06 19:29:31 +02:00
Marshall Bowers
f8504c349c Merge branch 'main' into import-theme 2023-11-06 12:08:46 -05:00
Marshall Bowers
bf80c1da5b Rename fields in ThemeColors (#3242)
This PR applies a number of field renames in the `ThemeColors` struct
from the `import-theme` branch.

This will help prevent this branch from diverging too far from `main`.

Release Notes:

- N/A

---------

Co-authored-by: Nate Butler <iamnbutler@gmail.com>
Co-authored-by: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-06 11:53:27 -05:00
Conrad Irwin
f730982e7b Use notarytool to bundle 2023-11-06 09:38:09 -07:00
Julia
8bcf114a05 Actually find downloaded binary in Elixir cached binary method (#3183)
Language adapters 2.0 will systematically fix this kind of issue and
cause world peace but until we do that let's be less broken

Release Notes:

- Fixed being unable to find already downloaded Elixir-LS binary on the
file system.
2023-11-06 11:37:45 -05:00
Julia
66b967532f zed2: Actually find downloaded binary in Elixir cached binary method 2023-11-06 11:31:31 -05:00
Piotr Osiewicz
ee28cc5deb chore: Run multitarget build in script/bundle
This has a chance to speed up a build in case where e.g. we're single-threaded in aarch64 build; at that point the x86_64 codegen can take place. Also, MIR can probably be shared between the two architectures, further reducing build time.
2023-11-06 17:21:34 +01:00
Julia
dbdb5f6519 Actually find downloaded binary in Elixir cached binary method 2023-11-06 11:18:36 -05:00
Nate Butler
230edeb5f8 Add gruvbox source theme, strip comments 2023-11-06 11:16:09 -05:00
Nate Butler
8192a52bd0 Skip .DS_Store files when scanning themes folder 2023-11-06 11:03:17 -05:00
Nate Butler
5d90396b51 Ignore generated themes 2023-11-06 10:59:00 -05:00
Nate Butler
5c24c931c5 Remove unused file 2023-11-06 10:57:25 -05:00
Nate Butler
b9d8e08165 Add Andromeda source theme 2023-11-06 10:57:15 -05:00
Piotr Osiewicz
9509153f99 chore: Update vue.js parser (fixes wonky HTML parsing) (#3238)
Vue.js defined a bunch of symbols in it's scanner that collided with
those defined in HTML Tree-sitter grammar. I simply removed them as they
were meant for consumption by the external parties interested in HTML
parser with Vue support - since we handle that ourselves this is not
really necessary to preserve anymore. cc was firing up a bunch of
warnings about unused symbols when I've marked those functions as
`static`, so yeah.
Release Notes:

- Fixed HTML highlighting breaking in presence of <!-- --> comments
(fixes zed-industries/community#2166).
2023-11-06 16:16:46 +01:00
Antonio Scandurra
769526a76a Paint editor background 2023-11-06 15:54:09 +01:00
Piotr Osiewicz
7374ca999b chore: Update vue.js parser (fixes wonky HTML parsing)
Vue.js defined a bunch of symbols in it's scanner that collided with those defined in HTML Tree-sitter grammar. I simply removed them as they were meant for consumption by the external parties interested in HTML parser with Vue support - since we handle that ourselves this is not really necessary to preserve anymore. cc was firing up a bunch of warnings about unused symbols, so yeah.
2023-11-05 22:56:35 +01:00
Kirill Bulatov
128d3696ad More heuristics for diagnostics updates (#3236)
Follow-up of https://github.com/zed-industries/zed/pull/3225
That PR enabled every `project::Event::DiskBasedDiagnosticsFinished` to
update the diagnostics, which turned out to be bad, Zed does query for
more diagnostics after every excerpt update, and that seems to be due to
`Event::Edited` emitted by the multibuffers created in the diagnostics
panel.

* now, instead of eagerly updating the diagnostics every time, only do
that if the panel has 0 or 1 caret placed and no changes were made in
the panel yet.
Otherwise, use previous approach and register the updated paths to defer
their update later.

* on every `update_excerpts` in the diagnostics panel, query the entire
diagnostics summary (and store it for the future comparisons), compare
old and new summaries and re-query diagnostics for every path that's not
in both summaries.
Also, query every path that was registered during the
`DiskBasedDiagnosticsFinished` updates that were not eagerly updated
before.

This way we're supposed to get all new diagnostics (for new paths added)
and re-check all old paths that might have stale diagnostics now.

* do diagnostics rechecks concurrently for every path now, speeding the
overall process

Release Notes:

- Fixed diagnostics triggering too eagerly during multicaret edits and
certain stale diagnostics not being removed in time
2023-11-05 16:17:38 +02:00
Nate Butler
b2f744f576 Add checkboxes and their stories (#3235)
[[PR Description]]

Adds checkboxes and their stories.

A checkbox can be created simply by passing an id:

~~~rust
#[derive(Component)]
pub struct Checkbox {
    id: SharedString,
    checked: Selected,
    disabled: bool,
}

impl Checkbox {
    pub fn new(id: impl Into<SharedString>) -> Self {
        Self {
            id: id.into(),
            checked: Selected::Unselected,
            disabled: false,
        }
    }
    //...
}
~~~

I've documented this component rather thoroughly as an example of how
we've been thinking about building out UI elements:

~~~rs
pub fn render<V: 'static>(self, _view: &mut V, cx: &mut ViewContext<V>)
-> impl Component<V> {
        let group_id = format!("checkbox_group_{}", self.id);

        // The icon is different depending on the state of the checkbox.
        //
        // We need the match to return all the same type,
        // so we wrap the eatch result in a div.
        //
        // We are still exploring the best way to handle this.
        let icon = match self.checked {
            // When selected, we show a checkmark.
            Selected::Selected => {
                div().child(
                    IconElement::new(Icon::Check)
                        .size(crate::IconSize::Small)
                        .color(
// If the checkbox is disabled we change the color of the icon.
                            if self.disabled {
                                IconColor::Disabled
                            } else {
                                IconColor::Selected
                            },
                        ),
                )
            }
            // In an indeterminate state, we show a dash.
            Selected::Indeterminate => {
                div().child(
                    IconElement::new(Icon::Dash)
                        .size(crate::IconSize::Small)
                        .color(
// If the checkbox is disabled we change the color of the icon.
                            if self.disabled {
                                IconColor::Disabled
                            } else {
                                IconColor::Selected
                            },
                        ),
                )
            }
            // When unselected, we show nothing.
            Selected::Unselected => div(),
        };

        // A checkbox could be in an indeterminate state,
        // for example the indeterminate state could represent:
        //  - a group of options of which only some are selected
        //  - an enabled option that is no longer available
        //  - a previously agreed to license that has been updated
        //
// For the sake of styles we treat the indeterminate state as selected,
        // but it's icon will be different.
        let selected =
self.checked == Selected::Selected || self.checked ==
Selected::Indeterminate;

// We could use something like this to make the checkbox background when
selected:
        //
        // ~~~rust
        // ...
        // .when(selected, |this| {
        //     this.bg(cx.theme().colors().element_selected)
        // })
        // ~~~
        //
// But we use a match instead here because the checkbox might be
disabled,
// and it could be disabled _while_ it is selected, as well as while it
is not selected.
        let (bg_color, border_color) = match (self.disabled, selected) {
            (true, _) => (
                cx.theme().colors().ghost_element_disabled,
                cx.theme().colors().border_disabled,
            ),
            (false, true) => (
                cx.theme().colors().element_selected,
                cx.theme().colors().border,
            ),
(false, false) => (cx.theme().colors().element,
cx.theme().colors().border),
        };

        div()
// Rather than adding `px_1()` to add some space around the checkbox,
// we use a larger parent element to create a slightly larger
            // click area for the checkbox.
            .size_5()
// Because we've enlarged the click area, we need to create a
            // `group` to pass down interaction events to the checkbox.
            .group(group_id.clone())
            .child(
                div()
                    .flex()
                    // This prevent the flex element from growing
                    // or shrinking in response to any size changes
                    .flex_none()
// The combo of `justify_center()` and `items_center()`
// is used frequently to center elements in a flex container.
                    //
                    // We use this to center the icon in the checkbox.
                    .justify_center()
                    .items_center()
                    .m_1()
                    .size_4()
                    .rounded_sm()
                    .bg(bg_color)
                    .border()
                    .border_color(border_color)
// We only want the interaction states to fire when we
                    // are in a checkbox that isn't disabled.
                    .when(!self.disabled, |this| {
// Here instead of `hover()` we use `group_hover()`
                        // to pass it the group id.
                        this.group_hover(group_id.clone(), |el| {
                            el.bg(cx.theme().colors().element_hover)
                        })
                    })
                    .child(icon),
            )
    }
~~~

Release Notes:

- N/A
2023-11-05 08:37:45 -05:00
Kirill Bulatov
ad93d9132f Correctly update old diagnostics 2023-11-05 15:37:27 +02:00
Kirill Bulatov
fdcb907644 Parallelize diagnostics filling, add more logs 2023-11-05 15:06:39 +02:00
Kirill Bulatov
ff1d692e46 Restructure inner path data 2023-11-05 14:53:13 +02:00
Kirill Bulatov
7145fabb6d Eagerly refresh diagnostics that do not intercept with user input 2023-11-05 14:44:22 +02:00
Kirill Bulatov
660c3371e4 Refresh all possibly stale diagnostics pat 2023-11-05 14:43:54 +02:00
Nate Butler
1bce5dcc69 Add checkboxes and their stories 2023-11-05 01:06:41 -05:00
Nate Butler
b243de407e Simplify toggle, some ui2 reorganization (#3234)
[[PR Description]]

A few mix organizational things in UI, as well as some toggle changes.

Simplify toggle:

```rust
/// Whether the entry is toggleable, and if so, whether it is currently toggled.
///
/// To make an element toggleable, simply add a `Toggle::Toggled(_)` and handle it's cases.
///
/// You can check if an element is toggleable with `.is_toggleable()`
///
/// Possible values:
/// - `Toggle::NotToggleable` - The entry is not toggleable
/// - `Toggle::Toggled(true)` - The entry is toggleable and toggled
/// - `Toggle::Toggled(false)` - The entry is toggleable and not toggled
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum Toggle {
    NotToggleable,
    Toggled(bool),
}
```

Adds helper functions to easily get the toggle and toggleable states:

```rust
impl Toggle {
    /// Returns true if the entry is toggled (or is not toggleable.)
    ///
    /// As element that isn't toggleable is always "expanded" or "enabled"
    /// returning true in that case makes sense.
    pub fn is_toggled(&self) -> bool {
        match self {
            Self::Toggled(false) => false,
            _ => true,
        }
    }

    pub fn is_toggleable(&self) -> bool {
        match self {
            Self::Toggled(_) => true,
            _ => false,
        }
    }
}
```

Pulls `disclosure_control` out of components and creates a common def:

```rust
pub fn disclosure_control<V: 'static>(toggle: Toggle) -> impl Component<V> {
    match (toggle.is_toggleable(), toggle.is_toggled()) {
        (false, _) => div(),
        (_, true) => div().child(
            IconElement::new(Icon::ChevronDown)
                .color(IconColor::Muted)
                .size(IconSize::Small),
        ),
        (_, false) => div().child(
            IconElement::new(Icon::ChevronRight)
                .color(IconColor::Muted)
                .size(IconSize::Small),
        ),
    }
}
```

disclosure_control will likely get pulled into it's own component in the
future instead of being in toggle.

Release Notes:

- N/A
2023-11-04 12:09:41 -04:00
Nate Butler
b125cc279f Simplify toggle, do some reorganization 2023-11-04 11:24:31 -04:00
Antonio Scandurra
86d1defda2 Fix compile errors, now lines are being laid out 2023-11-04 14:37:57 +01:00
Kirill Bulatov
ac9efaebb7 Suppress unused vars warning generated by gpui macro (#3233) 2023-11-04 14:06:42 +02:00
Kirill Bulatov
9f40a5c53f Suppress unused vars warning generated by gpui macro 2023-11-04 13:54:37 +02:00
Conrad Irwin
de5458cfe0 Update tooltip code a bit
This fixes a tiny UX bug where the tooltip would appear to move if you
hovered over an element, then moved your mouse out and back within
500ms.

The fix is to retain the task, so we can drop it to cancel it when the
mouse leaves.

Also changes the time we construct the tooltip to the time it first
shows.
2023-11-03 21:40:28 -06:00
Mikayla Maki
123439adc2 Merge branch 'main' into add-collab-tests 2023-11-03 18:06:08 -07:00
Mikayla
e1525e2b47 Get collab2 green 2023-11-03 18:01:06 -07:00
Max Brunsfeld
436dc93441 WIP2000 2023-11-03 16:40:37 -07:00
Max Brunsfeld
42409528af Allow language injection in markdown code blocks in channel notes (#3231)
Release Notes:

- Fixed an issue where markdown code blocks were not syntax-highlighted
in channel notes editors.
2023-11-03 16:12:02 -07:00
Max Brunsfeld
2dd32dbe87 Allow language injection in markdown code blocks in channel notes 2023-11-03 15:53:54 -07:00
Julia
4725cd2cd6 Move more tooltip logic into gpui2 & fix tooltip moving on paint
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
2023-11-03 18:37:15 -04:00
Nate Butler
4cce6ae212 Add UI docs (#3230)
Not as exciting as it sounds - Just starting to scaffold out some UI
docs and want to get feedback.

Release Notes:

- N/A
2023-11-03 18:25:08 -04:00
Nate Butler
b0d202ba5e Merge branch 'main' into add-ui-docs 2023-11-03 18:20:17 -04:00
Nate Butler
9ce7199d2d Add some initial docs 2023-11-03 18:19:54 -04:00
Marshall Bowers
5d36331942 storybook2: Remove unreferenced components module (#3229)
This PR removes the `components` module from `storybook2` as it was
dead, unreferenced code.

Release Notes:

- N/A
2023-11-03 18:12:21 -04:00
Julia
3834e26f71 Tooltips in mouse event handler & fix executor timer
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
2023-11-03 18:02:58 -04:00
Marshall Bowers
6abdab7735 Remove theme.txt 2023-11-03 17:52:19 -04:00
Marshall Bowers
76db100d11 ui2: Reorganize components (#3228)
This PR reorganizes the components in the `ui2` crate.

The distinction between "elements" and "components" is now gone, with
all of the reusable components living under `components/`.

The components that we built while prototyping but will eventually live
in other crates currently reside in the `to_extract/` module.

Release Notes:

- N/A
2023-11-03 17:34:11 -04:00
Marshall Bowers
287ea0a6e4 Allow deriving Serialize and Deserialize on generated refinement (#3227)
This PR adds support for deriving `Serialize` and `Deserialize` on the
refinement type generated by `#[derive(Refineable)]`.

Release Notes:

- N/A
2023-11-03 17:21:00 -04:00
Marshall Bowers
b5224bdafd Remove unneeded type qualification 2023-11-03 16:40:46 -04:00
Nate Butler
d500b01aed Add docs burndown list
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-03 16:37:22 -04:00
Marshall Bowers
1361b61708 Use an IconButton for the tab close button 2023-11-03 16:36:02 -04:00
Nate Butler
740e2cc5bf Start on ui root doc
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-03 16:28:54 -04:00
Conrad Irwin
f97046b86f MOAR TOOLTIPS 2023-11-03 14:15:32 -06:00
Kirill Bulatov
edacffab58 Refresh diagnostics inside the tab (#3225)
r-a now has 2 different types of diagnostics: 
* "disk-based" ones that come from `cargo check` and related, that emit
`project::Event::DiskBasedDiagnosticsStarted` and
`DiskBasedDiagnosticsFinished`
* "flycheck" diagnostics from r-a itself, that it tries to dynamically
apply to every buffer open, that come with `DiagnosticsUpdated` event.

Latter diagnostics update frequently, on every file close and open, but
`diagnostics.rs` logic had never polled for new diagnostics after
registering the `DiagnosticsUpdated` event, so the only way we could
have newer diagnostics was to re-open the whole panel.
The PR fixes that, and also adds more debug logging to the module.
The logic of the fix looks very familiar to previous related fix:
https://github.com/zed-industries/zed/pull/3128

One notable thing after the fix: "flycheck" diagnostics stay forever if
the diagnostics panel is opened: excerpts in that panel do not allow the
buffer to get dropped (hence, closed in terms of r-a) and get the
updated, zero diagnostics.
If the diagnostics panel is opened and closed multiple times, those
errors gradually disappear.

Release Notes:

- Fixed diagnostics panel not refreshing its contents properly
2023-11-03 22:03:05 +02:00
Conrad Irwin
33245d119e Tooltip on tabs
Co-Authored-By: Julia <julia@zed.dev>
2023-11-03 14:02:46 -06:00
Kirill Bulatov
918d123284 Fix the test 2023-11-03 21:51:12 +02:00
Kirill Bulatov
6f8947a3d3 Fix a compilation error 2023-11-03 21:51:12 +02:00
Kirill Bulatov
9cb8ce172d Refresh diagnostics inside the tab 2023-11-03 21:51:12 +02:00
Marshall Bowers
12500364b4 Merge branch 'main' into import-theme 2023-11-03 15:41:12 -04:00
Marshall Bowers
fa7d6c0e70 Remove Default impl for ThemeColors` (#3226)
This PR removes the `Default` impl for `ThemeColors`.

Since we need default light and dark variants for `ThemeColors`, we
can't use a single `Default` impl.

Release Notes:

- N/A
2023-11-03 15:40:50 -04:00
Mikayla Maki
c529343ba1 WIP: Port channel crate to gpui2 (#3192) 2023-11-03 12:32:47 -07:00
Max Brunsfeld
66499f60ee Fix double borrow in synchronous tests that take AppContext
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Antonio <antonio@zed.dev>
2023-11-03 12:10:11 -07:00
Mikayla
2b883bf32e WIP 2023-11-03 12:04:24 -07:00
Conrad Irwin
26e64fb843 gpui2: Add on_hover events 2023-11-03 12:51:38 -06:00
Antonio Scandurra
2a672e2126 WIP 2023-11-03 18:55:20 +01:00
Mikayla
6a1fb18334 Update to latest patterns for porting work 2023-11-03 10:46:47 -07:00
Max Brunsfeld
b085569b46 Add channel2 crate
Co-authored-by: Marshall <marshall@zed.dev>
2023-11-03 10:41:41 -07:00
Conrad Irwin
d73c54f604 Add PointingHand on tabs 2023-11-03 11:30:15 -06:00
Conrad Irwin
c604a2e34e Add hover behaviour to tabs
Co-Authored-By: Marshall <marshall@zed.dev>
Co-Authored-By: Nathan <nathan@zed.dev>
2023-11-03 10:55:07 -06:00
KCaverly
a65c1776d8 port rope2 to zed2 2023-11-03 12:15:23 -04:00
Antonio Scandurra
d3b02c4de4 WIP: start on editor element 2023-11-03 17:14:17 +01:00
Conrad Irwin
580694dbda Fix bug when unsubscribe called after remove
Co-Authored-By: Julia <julia@zed.dev>
2023-11-03 09:56:35 -06:00
Conrad Irwin
920ea1bf0a Make the close button close 2023-11-03 09:20:27 -06:00
Antonio Scandurra
b5c2cf371a Ensure panes cover the available space 2023-11-03 16:14:03 +01:00
Conrad Irwin
0edcec7c4e Fix tab text colors 2023-11-03 09:12:12 -06:00
Marshall Bowers
363d7c6634 Exclude source themes from Zed2 binary 2023-11-03 11:11:10 -04:00
Kyle Caverly
343525d77b added workspace event for WorkspaceCreated (#3222)
added workspace2 event for WorkspaceCreated

Release Notes:

- NA
2023-11-03 11:06:11 -04:00
Marshall Bowers
acc36e6dab Update emitted module import 2023-11-03 10:58:06 -04:00
Marshall Bowers
293fbe4c75 Account for colors in VS Code theme being optional 2023-11-03 10:54:12 -04:00
Antonio Scandurra
b21c25826d Make tab bar visible 2023-11-03 15:51:33 +01:00
Antonio Scandurra
0b3c888acc Start on editor2 (#3223)
Opening this pull request early on, as I added a bunch of APIs to
`gpui2` and uncommented code that might be useful to others in
`workspace2`.

Release Notes:

- N/A
2023-11-03 15:37:48 +01:00
Marshall Bowers
e0382a61b9 Update color names in workspace2 2023-11-03 10:16:34 -04:00
Marshall Bowers
a7edd380e3 Merge branch 'main' into import-theme 2023-11-03 10:11:35 -04:00
Antonio Scandurra
de3d37e070 Don't depend on gpui2 in text 2023-11-03 14:53:08 +01:00
Antonio Scandurra
097171b9b8 Merge remote-tracking branch 'origin/main' into editor2 2023-11-03 14:47:49 +01:00
Antonio Scandurra
3e8fcefaef Remove more todos 2023-11-03 14:42:26 +01:00
Antonio Scandurra
feaab953a8 Add ViewContext::window_context 2023-11-03 14:41:37 +01:00
KCaverly
b148c61047 added workspace event for WorkspaceCreated 2023-11-03 08:52:18 -04:00
Kirill Bulatov
90d532f0ba Uncomment more gpui2 (#3221)
Release Notes:

- N/A
2023-11-03 13:45:35 +02:00
Kirill Bulatov
1a0cd3e09b Remove and add more todosmerge . 2023-11-03 13:22:11 +02:00
Antonio Scandurra
77e3c7f8ee WIP 2023-11-03 12:10:15 +01:00
Kirill Bulatov
f1fc07de94 Move journal2 to workspace2 2023-11-03 12:55:06 +02:00
Kirill Bulatov
eb8a0e7148 Uncomment persistence tests 2023-11-03 12:38:09 +02:00
Antonio Scandurra
b7712c2f4b Fix a todo in workspace 2023-11-03 11:36:39 +01:00
Antonio Scandurra
bed10b433a Allow converting from a WeakView<V> to an AnyWeakView 2023-11-03 11:36:18 +01:00
Antonio Scandurra
6fc7b17259 Expose a focus handle from workspace::Item 2023-11-03 11:00:57 +01:00
Antonio Scandurra
97d1d9bd9b Uncomment Editor::report_editor_event 2023-11-03 10:53:55 +01:00
Antonio Scandurra
0dfa3c60b7 Remove some todos 2023-11-03 10:50:30 +01:00
Antonio Scandurra
11feda01e3 Uncomment Editor::new 2023-11-03 10:38:28 +01:00
Kirill Bulatov
a9ab413c5a Detect prettier in npm workspaces correctly (#3219)
Deals with https://github.com/zed-industries/community/issues/2016

Also refactored project code to spawn less default prettiers.

Release Notes:

- Fixed prettier not working in npm workspaces
2023-11-03 11:14:45 +02:00
Antonio Scandurra
2fccde5ab6 Remove unused code 2023-11-03 10:11:13 +01:00
Antonio Scandurra
efa27cf9b8 Uncomment more editor code 2023-11-03 10:09:00 +01:00
Kirill Bulatov
09346fb9f1 Port changes to zed2 2023-11-03 11:02:50 +02:00
Kirill Bulatov
24dd1c5812 Properly order default prettier installations and startups 2023-11-03 11:02:50 +02:00
Kirill Bulatov
244c693968 Reuse already running default prettiers 2023-11-03 11:02:50 +02:00
Kirill Bulatov
cf95f9b082 Make it more clear that missing prettier is to blame 2023-11-03 11:02:50 +02:00
Kirill Bulatov
369b5140fb Restore LSP names for prettier servers 2023-11-03 11:02:50 +02:00
Kirill Bulatov
b75d8a60a8 Simplify 2023-11-03 11:02:50 +02:00
Kirill Bulatov
ff144def63 Fix the bugs 2023-11-03 11:02:50 +02:00
Kirill Bulatov
6bbb79a9f5 Rework prettier installation and start 2023-11-03 11:02:50 +02:00
Kirill Bulatov
d673efebd2 Add prettier workspace resolution test 2023-11-03 11:02:50 +02:00
Antonio Scandurra
cdc82d01f7 Call editor::init 2023-11-03 09:06:25 +01:00
Antonio Scandurra
800c2685ea Remove dependency from gpui from editor2 2023-11-03 09:05:58 +01:00
Nathan Sobo
fbee6b5352 Get editor2 compiling with a ton of code commented out 2023-11-02 23:35:20 -06:00
Nathan Sobo
f3b8a9d8c2 WIP 2023-11-02 22:56:04 -06:00
Nathan Sobo
a731f8fb1e WIP 2023-11-02 21:28:56 -06:00
Nathan Sobo
dfc7c81500 WIP 2023-11-02 21:03:29 -06:00
Nathan Sobo
72b9dc8216 Merge remote-tracking branch 'origin/main' into editor2 2023-11-02 20:47:09 -06:00
Nathan Sobo
6a89f7ce4f rich text2 (#3220)
- git -> git3
- Add rich_text2

[[PR Description]]

Release Notes:

N/A
2023-11-02 20:46:45 -06:00
Nathan Sobo
2a12e8f307 Merge remote-tracking branch 'origin/rich_text2' into editor2 2023-11-02 20:34:52 -06:00
Nate Butler
383d9129f4 [Not compiling] Continue working on VSCode import 2023-11-02 21:49:26 -04:00
Conrad Irwin
0b3932f38c Convert rich_text2 2023-11-02 19:30:33 -06:00
Conrad Irwin
6ecb4805f7 Add rich_text2 2023-11-02 19:19:18 -06:00
Conrad Irwin
cbd902658c git -> git3
This is needed for the editor.
2023-11-02 19:18:01 -06:00
Conrad Irwin
0aabb19a45 Into the woods 2023-11-02 18:52:08 -06:00
Nate Butler
b4e2368943 Merge branch 'main' into import-theme 2023-11-02 20:16:09 -04:00
Nate Butler
0d0b6db24f Update theme importer 2023-11-02 20:15:51 -04:00
Nate Butler
8d09baa3a5 Remove unintentionally committed txt file 2023-11-02 20:06:35 -04:00
Nate Butler
2b0c959137 Add terminal colors to ThemeColors, add _background to some color names. 2023-11-02 19:53:52 -04:00
Nathan Sobo
9052b48949 Use correct color values in quad fragment shader (#3217)
Previously, when using rounded corners, the borders would get wider.
Looks like we weren't using the input color values consistently in the
fragment shader. The quad values are raw HSLA and are converted in the
vertex shader.

Release Notes:

- N/A
2023-11-02 17:49:56 -06:00
Marshall Bowers
95a0827517 Clean up unused code 2023-11-02 19:20:21 -04:00
Marshall Bowers
152ac6927f Add themes2/src/themes directory 2023-11-02 19:17:39 -04:00
Marshall Bowers
d1636bf16b Finish up theme printer 2023-11-02 19:14:51 -04:00
Marshall Bowers
fc376287e0 Start work on theme printer 2023-11-02 18:57:13 -04:00
Nathan Sobo
7b712ac68f WIP 2023-11-02 16:47:14 -06:00
Marshall Bowers
0bc51382b2 Add basic VsCodeThemeConverter 2023-11-02 18:24:38 -04:00
Marshall Bowers
e48332c81f Parse VSCode theme files 2023-11-02 18:00:55 -04:00
Conrad Irwin
583c36e24b WIP 2023-11-02 15:27:49 -06:00
Nate Butler
058981350c Scaffold out new theme-importer crate
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-02 17:21:11 -04:00
Conrad Irwin
09efa017d4 Editor2 2023-11-02 14:36:42 -06:00
Conrad Irwin
9e5275cc18 Fix error handling of open_path
Co-Authored-By: Nathan <nathan@zed.dev>
2023-11-02 14:34:43 -06:00
Nate Butler
972f076b4d Deserialize theme metadata 2023-11-02 16:31:22 -04:00
Nate Butler
58ac7f2926 [Broken] Load a src theme in test 2023-11-02 16:26:27 -04:00
Marshall Bowers
54969877a4 Make the Zed2 window movable (#3218)
This PR makes the Zed2 window movable and fixes a crash related to a
`todo!()` that wasn't necessary.

Release Notes:

- N/A
2023-11-02 16:17:31 -04:00
Conrad Irwin
6eeaa64e62 workspace2 (#3188)
Tracking PR for workspace port
2023-11-02 13:34:19 -06:00
Conrad Irwin
8283909dfd Disable selective warnings to make cargo check happy 2023-11-02 13:28:58 -06:00
Nathan Sobo
91f3e9707a Use correct color values in quad fragment shader
Co-Authored-By: Julia Risley <julia@zed.dev>
2023-11-02 13:18:20 -06:00
Conrad Irwin
269a72464d Merge remote-tracking branch 'origin/main' into zed2-workspace 2023-11-02 13:16:24 -06:00
Mikayla Maki
85f0959548 Remove the 2s from source code (#3216)
Release Notes:

- N/A
2023-11-02 12:11:16 -07:00
Marshall Bowers
9c8220d04e Remove commented-out label code 2023-11-02 15:04:52 -04:00
Nate Butler
809d8786f1 WIP 2023-11-02 14:54:53 -04:00
Marshall Bowers
3605afc163 Render active item in pane 2023-11-02 14:40:34 -04:00
Nathan Sobo
d1cb2d3e11 Enforce Send bound on next frame callback functions, because they're invoked on arbitrary threads (#3215)
This enforces the send bound, then uses an async task looping on a
channel to run callbacks on the main thread.
2023-11-02 12:36:38 -06:00
Marshall Bowers
8b1b7a2f80 Checkpoint: Basic tab bar structure 2023-11-02 14:34:48 -04:00
Nathan Sobo
29d8390743 Fix formatting 2023-11-02 12:28:58 -06:00
Nathan Sobo
1dd20d4c0a Merge remote-tracking branch 'origin/main' into gpui2-image-reborrow 2023-11-02 12:25:06 -06:00
Nate Butler
004c5d309b WIP 2023-11-02 14:23:43 -04:00
Nathan Sobo
04a8ee222b Enforce a Send bound on next frame callbacks
This required using mpsc channels to invoke frame callbacks on the
main thread and send the receiver to the platform display link.

Co-Authored-By: Julia Risley <julia@zed.dev>
2023-11-02 12:01:22 -06:00
Mikayla
d11ff14b57 Remove the 2s from source code 2023-11-02 10:55:02 -07:00
Conrad Irwin
5a41eed120 WIP 2023-11-02 11:34:31 -06:00
Marshall Bowers
1e7a216d55 WIP 2023-11-02 13:21:28 -04:00
Conrad Irwin
8f0f5a9ba1 Render status bar
Co-Authored-By: Antonio <me@as-cii.com>
2023-11-02 11:18:11 -06:00
Conrad Irwin
803d2b6710 Add double click to zoom the window
Co-Authored-By: Antonio <me@as-cii.com>
2023-11-02 10:58:46 -06:00
Marshall Bowers
0e1d2fdf21 Checkpoint: Narrow down error 2023-11-02 12:47:06 -04:00
Marshall Bowers
66e4d75e6f Checkpoint: Reproduction with Avatar story 2023-11-02 12:34:40 -04:00
Conrad Irwin
bd54bfa4e1 Render titlebar
Co-Authored-By: Mikayla <mikayla@zed.dev>
2023-11-02 10:31:18 -06:00
Conrad Irwin
634aba89d2 Add back some window events for workspace
Co-Authored-By: Antonio <me@as-cii.com>
2023-11-02 10:03:03 -06:00
Nate Butler
a3565225ad Document format_distance (#3214)
Adds docs for `ui2::util::format_distance`:
- distance_in_seconds
- distance_string
- naive_format_distance
- naive_format_distance_from_now

These are ports of
[`date-fns`](https://date-fns.org/v2.30.0/docs/formatDistance)'s format
distance utilities

[[PR Description]]

Release Notes:

- N/A
2023-11-02 11:58:45 -04:00
Julia
17ff881e7a Uncomment lsp2 tests (#3213)
Release Notes:

- N/A
2023-11-02 11:54:06 -04:00
Nate Butler
6f41a77a25 Document format_distance
Adds docs for:
- distance_in_seconds
- distance_string
- naive_format_distance
- naive_format_distance_from_now
2023-11-02 11:53:20 -04:00
Conrad Irwin
0bab1a92df Merge remote-tracking branch 'origin/main' into zed2-workspace 2023-11-02 09:44:38 -06:00
Antonio Scandurra
fd81d838fe Introduce ViewContext::observe_window_{activation,bounds} (#3212)
Release Notes:

- N/A
2023-11-02 16:44:26 +01:00
Julia
b7efab8a55 Uncomment lsp2 tests 2023-11-02 11:42:48 -04:00
Marshall Bowers
ec0cff0e1a Add map method to Components (#3210)
This PR adds a `map` method to the `Component` trait.

`map` is a fully-generalized form of `when`, as `when` can be expressed
in terms of `map`:

```rs
div().map(|this| if condition { then(this) } else { this })
```

This allows us to take advantage of Rust's pattern matching when
building up conditions:

```rs
// Before
div()
    .when(self.current_side == PanelSide::Left, |this| this.border_r())
    .when(self.current_side == PanelSide::Right, |this| {
        this.border_l()
    })
    .when(self.current_side == PanelSide::Bottom, |this| {
        this.border_b().w_full().h(current_size)
    })

// After
div()
    .map(|this| match self.current_side {
        PanelSide::Left => this.border_r(),
        PanelSide::Right => this.border_l(),
        PanelSide::Bottom => this.border_b().w_full().h(current_size),
    })
```

Release Notes:

- N/A
2023-11-02 11:39:40 -04:00
Antonio Scandurra
ec4f0d7bca Implement ViewContext::observe_window_activation
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
2023-11-02 16:37:57 +01:00
Antonio Scandurra
3a824e468f Subsume observe_fullscreen into observe_window_bounds
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
2023-11-02 16:31:27 +01:00
Nate Butler
5e12b48ae0 Work on default theme, Notifications, Add ListHeader meta (#3203)
Work on default theme, Notifications, Add ListHeader `meta`

Also adds `naive_format_distance` & `naive_format_distance_from_now`

Release Notes:

- N/A
2023-11-02 11:19:48 -04:00
Antonio Scandurra
de80974a1d Add ViewContext::observe_fullscreen
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
2023-11-02 16:11:52 +01:00
Julia
57fcc22f1c Uncomment db2 tests (#3211)
Release Notes:

- N/A
2023-11-02 11:10:08 -04:00
Nate Butler
d4db7a14b3 Remove unused import 2023-11-02 11:04:04 -04:00
Nate Butler
3b91a76159 Merge branch 'main' into n/t2 2023-11-02 11:02:55 -04:00
Nate Butler
d48ec7d58e Remove unused import 2023-11-02 11:02:46 -04:00
Nate Butler
6d562aaa6f Use naive_format_distance_from_now in Notifications 2023-11-02 11:02:17 -04:00
Julia
46e81da4e1 Uncomment db2 tests 2023-11-02 11:01:38 -04:00
Nate Butler
b76c117979 Update naive_format_distance and tests 2023-11-02 10:37:33 -04:00
Kyle Caverly
5ee2b01102 authenticate with completion provider on new inline assists (#3209)
authenticate with completion provider on new inline assists

Release Notes:

- Fixed bug which lead the inline assist functionality to never
authenticate
2023-11-02 10:14:52 -04:00
Nate Butler
cde7b244bc Checkpoint - impl format_distance 2023-11-02 10:11:25 -04:00
KCaverly
d5b6300fd7 moved from Boxes to Arcs for shared access of completion providers across the assistant panel and inline assistant 2023-11-02 10:08:47 -04:00
Nathan Sobo
52e195b47c WIP 2023-11-02 07:46:49 -06:00
KCaverly
b5fe0d72ee authenticate with completion provider on new inline assists 2023-11-02 09:34:18 -04:00
Joseph T. Lyons
5412f20e35 Fix missing commit (collab version bump) 2023-11-02 09:22:12 -04:00
Joseph T. Lyons
971563fd48 Format YAML 2023-11-02 09:05:29 -04:00
Joseph T. Lyons
f724b6d032 Cleanly truncate Discord release notes 2023-11-02 09:05:16 -04:00
Antonio Scandurra
d4e199cab1 WIP 2023-11-02 13:58:42 +01:00
Antonio Scandurra
c1ca7ad41d Implement WindowContext::remove_window 2023-11-02 13:37:55 +01:00
Antonio Scandurra
089bf58934 Implement AppState::test 2023-11-02 13:34:21 +01:00
Antonio Scandurra
32dded551c Checkpoint 2023-11-02 11:05:24 +01:00
Antonio Scandurra
72156bf502 Merge remote-tracking branch 'origin/main' into zed2-workspace 2023-11-02 11:04:47 +01:00
Antonio Scandurra
6d2e1a8e76 Introduce more GPUI2 APIs needed for transitioning the workspace (#3208)
Release Notes:

- N/A
2023-11-02 11:03:24 +01:00
Antonio Scandurra
76c675a63b 💄 2023-11-02 10:57:29 +01:00
Antonio Scandurra
32db64a049 Introduce more GPUI2 APIs needed for transitioning the workspace 2023-11-02 10:54:33 +01:00
Antonio Scandurra
51338d785c WIP 2023-11-02 10:09:08 +01:00
Antonio Scandurra
bda43ca1fe Merge remote-tracking branch 'origin/main' into zed2-workspace 2023-11-02 10:06:05 +01:00
Antonio Scandurra
8793300444 Remove more Send bounds and simplify view rendering (#3207)
This pull request removes more `Send` bounds from GPUI2 after #3206 and
simplifies some internals. Specifically:

- The `Reference` enum was removed, as we always capture mutable
references anyway.
- A few GATs from `Context` and `VisualContext` were removed, as they're
unnecessary now that `MainThread` isn't a thing.
- View rendering was greatly simplified (we were able to remove
`EraseViewState` and `ViewObject`)

Release Notes:

- N/A
2023-11-02 10:04:28 +01:00
Antonio Scandurra
9c7b45f38b Add back Send and Sync to AssetSource 2023-11-02 09:58:53 +01:00
Antonio Scandurra
d5f0e91faa Remove stray todo 2023-11-02 09:56:45 +01:00
Antonio Scandurra
5e50430299 Fix compile errors 2023-11-02 09:47:21 +01:00
Antonio Scandurra
64ad8943ba Remove more Send bounds and simplify view rendering 2023-11-02 09:44:16 +01:00
Antonio Scandurra
2fb4c04fc3 Remove more Send bounds and remove EraseViewState 2023-11-02 09:39:06 +01:00
Antonio Scandurra
b2c7ddc41f Remove some stray Send bounds 2023-11-02 09:18:16 +01:00
Antonio Scandurra
18fcb41292 Simplify contexts 2023-11-02 09:15:14 +01:00
Antonio Scandurra
ff27700913 Fix outstanding errors in gpui2 2023-11-02 09:08:47 +01:00
Nathan Sobo
3e7df82977 WIP: Merge branch 'main' into zed2-workspace 2023-11-01 22:35:02 -06:00
Nathan Sobo
6cab5c2885 Restore foreground/background distinction and confine application state to the main thread (#3206)
The potential for deadlock and other complexity ended up convincing us
that the benefits of making the app state accessible from any thread
were not worth their cost. We probably could have gone back to the old
executors, but we decided to fix forward and continue to get the
benefits of the new dispatcher.
2023-11-01 21:29:28 -06:00
Nathan Sobo
64ee1bb7a5 Fix prod compile error 2023-11-01 21:19:06 -06:00
Nathan Sobo
2079cd641e Fix post-merge compile errors 2023-11-01 21:16:41 -06:00
Nathan Sobo
db9ccd7f34 Merge remote-tracking branch 'origin/main' into gpui2-no-send 2023-11-01 21:10:31 -06:00
Nathan Sobo
57dfc50687 Get language2 tests passing by not blocking on a foreground task 2023-11-01 21:04:17 -06:00
Nathan Sobo
53066df522 Get project2 tests green 2023-11-01 20:14:40 -06:00
Marshall Bowers
aa14552fee Remove unneeded .intos 2023-11-01 22:01:59 -04:00
Marshall Bowers
b9ac1e43cd Update scale accessors 2023-11-01 22:00:16 -04:00
Marshall Bowers
bd4bff47a0 Merge branch 'main' into n/t2 2023-11-01 21:54:10 -04:00
Marshall Bowers
72d060108d Make indexing into ColorScales safe (#3205)
This PR makes indexing into `ColorScale`s safe by constraining the
`ColorScaleStep`s to a set of known values.

Release Notes:

- N/A
2023-11-01 21:52:42 -04:00
Marshall Bowers
220228c183 Fix underflow when indexing into ColorScales 2023-11-01 21:15:06 -04:00
Marshall Bowers
115bd65344 Merge branch 'main' into n/t2 2023-11-01 21:11:26 -04:00
Marshall Bowers
69aafe9ff6 Adjust ColorScale representation (#3204)
This PR adjusts the representations of `ColorScale`s to allow us to
remove an unsafe `From` impl when converting from the statically-defined
representation of the scale.

Release Notes:

- N/A
2023-11-01 21:10:50 -04:00
Max Brunsfeld
401ddc6f49 WIP - flush_fs_events 2023-11-01 17:45:38 -07:00
Max Brunsfeld
6ee93125d0 Fix hangs in new dispatcher
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2023-11-01 17:11:42 -07:00
Conrad Irwin
90facc051a beautiful diff 2023-11-01 15:31:37 -06:00
Nate Butler
d0975aacac Merge branch 'main' into n/t2 2023-11-01 16:52:43 -04:00
Nate Butler
229ba0744e Add additional notifications and style tweaks
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-01 16:50:59 -04:00
Nate Butler
be3cc6458c Implement Notifications
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-11-01 16:34:42 -04:00
Conrad Irwin
f415a37a3d Uncomment project2 tests (#3200) 2023-11-01 20:27:53 +00:00
Conrad Irwin
cd10ba9e06 Use run_until_parked instead of blocked in tests 2023-11-01 14:27:25 -06:00
Kyle Caverly
2105dc0022 port text2 to zed2 (#3202)
port text2 to zed2

Release Notes:

- NA
2023-11-01 16:27:08 -04:00
Nate Butler
3f74f75dee WIP 2023-11-01 16:19:49 -04:00
KCaverly
77dbb15aa3 port text2 to zed2 2023-11-01 16:13:53 -04:00
Nathan Sobo
3f34a8e7ec Checkpoint 2023-11-01 14:00:26 -06:00
Nathan Sobo
11b6d9e33a Split out a foreground and background executor 2023-11-01 13:53:45 -06:00
Max Brunsfeld
dd1a2a9e44 wip 2023-11-01 13:53:45 -06:00
Max Brunsfeld
57ffa8201e Start removing the Send impl for App
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Nathan <nathan@zed.dev>
2023-11-01 13:53:45 -06:00
Conrad Irwin
ea7fdef417 And more unused imports 2023-11-01 13:51:42 -06:00
Conrad Irwin
a5d37d3510 Remove two more hanging tests 2023-11-01 13:26:12 -06:00
Mikayla
6f38eb3252 Finish main merge 2023-11-01 11:52:14 -07:00
Joseph T. Lyons
51ecf8e6b4 collab 0.28.0 2023-11-01 14:50:29 -04:00
Mikayla
e82d8eb5b8 Merge branch 'main' into zed2-workspace 2023-11-01 11:46:28 -07:00
Mikayla
1c1b53ecf6 WIP 2023-11-01 11:45:31 -07:00
Mikayla Maki
78f47f179a Rename live kit bridge to 2 (#3201)
Release Notes:

- N/A
2023-11-01 11:40:40 -07:00
Mikayla
6aaeb23157 Rename live kit bridge to 2 2023-11-01 10:52:15 -07:00
Conrad Irwin
cfe0ddc61a More unused imports 2023-11-01 11:43:06 -06:00
Max Brunsfeld
c467fa955b Comment out hanging project2 tests
Co-authored-by: Conrad <conrad@zed.dev>
2023-11-01 10:38:47 -07:00
Antonio Scandurra
337a79e35f WIP 2023-11-01 18:34:51 +01:00
Marshall Bowers
b910bbf002 Add ui_font_size setting (#3199)
This PR adds a new `ui_font_size` setting that can be used to control
the scale of the entire UI.

We use the value in this setting to set the base rem size of the window.

Release Notes:

- N/A
2023-11-01 13:11:12 -04:00
Nate Butler
8dafd5f1f3 Allow ListHeader to take a meta 2023-11-01 12:43:25 -04:00
Mikayla Maki
bd61d71018 Finish port of livekit client and call2 (#3198) 2023-11-01 09:37:40 -07:00
Joseph T. Lyons
7d300d3f5b v0.112.x dev 2023-11-01 12:34:26 -04:00
Mikayla
1568ecbe1e Add back room code to call2 2023-11-01 09:29:54 -07:00
Antonio Scandurra
c3a8bab4d2 WIP 2023-11-01 17:21:58 +01:00
Mikayla
51fa80ef06 ported example app, live_kit_client2 is done 2023-11-01 09:19:32 -07:00
Julia
b7625d81e8 Port multi_buffer to gpui2 (#3193)
Release Notes:

- N/A
2023-11-01 11:45:44 -04:00
Antonio Scandurra
147db607c7 WIP 2023-11-01 16:24:19 +01:00
Marshall Bowers
6ed60769ac Merge branch 'n/t2' of github.com:zed-industries/zed into n/t2 2023-11-01 10:52:29 -04:00
Marshall Bowers
3189cd779e Remove unused impl 2023-11-01 10:52:25 -04:00
Nate Butler
5d660759bf Continue refining default syntax theme 2023-11-01 10:50:00 -04:00
Marshall Bowers
d2a8f972f3 Fix return type 2023-11-01 10:48:23 -04:00
Marshall Bowers
8fb7c174b0 Merge branch 'main' into n/t2 2023-11-01 10:46:27 -04:00
Marshall Bowers
bbe53895ef Return ColorScaleSets from individual color scale functions (#3197)
This PR adjusts the individual color scale functions to return
`ColorScaleSet`s instead of `DefaultColorScaleSet`s.

We only use the `DefaultColorScaleSet`s to simplify the construction of
the scales, so it isn't necessary to surface them outside of the
function.

Release Notes:

-  N/A
2023-11-01 10:45:42 -04:00
Marshall Bowers
b8547e926d Remove blanket From<&str> impl for Hsla
Since this is a fallible operation we don't want to have a blanket
infallible conversion from any arbitrary `&str` to an `Hsla`.
2023-11-01 10:31:03 -04:00
Kyle Caverly
1b9619ca7f added parsing support for <|S| |E|> spans (#3184)
added parsing support for <|S| and |E|> spans for inline generation
2023-11-01 10:26:01 -04:00
Kirill Bulatov
e8857d959b WIP 2023-11-01 16:10:07 +02:00
Kirill Bulatov
a9d7c86307 WIP 2023-11-01 15:37:51 +02:00
Kirill Bulatov
73c97d0c10 WIP
Uncomment more methods in workspace2.rs
2023-11-01 14:47:29 +02:00
Antonio Scandurra
4d320f065e WIP 2023-11-01 12:47:19 +01:00
Nate Butler
3bcc2fa17b Update notifications panel 2023-11-01 02:10:23 -04:00
Nate Butler
bfb1f5ecf0 Continue refining theme, update tabs & tab bar 2023-11-01 01:41:33 -04:00
Nate Butler
0efd69c60f Refine default colors 2023-11-01 00:51:57 -04:00
Nate Butler
e0cb95b334 Add From<&str> for Hsla 2023-11-01 00:51:47 -04:00
Nathan Sobo
d47ef6470b WIP 2023-10-31 22:32:18 -06:00
Marshall Bowers
272f856460 Use Refineable for ThemeStyles (#3196)
This PR updates the `ThemeStyles` struct to use the `Refineable` trait
instead of a custom declarative macro for generating refinements.

Release Notes:

- N/A
2023-10-31 23:33:51 -04:00
Nathan Sobo
4da8ee1e1d Remove one todo from the critical path 2023-10-31 21:19:32 -06:00
Marshall Bowers
36a73d657a Remove old Theme definition (#3195)
This PR removes the old `Theme` definition in favor of the new
`ThemeVariant`s.

The new `SyntaxStyles` have been reverted to the old `SyntaxTheme` that
operates by storing the syntax styles as a vector of
`gpui2::HighlightStyle`s.

This is necessary for the intended usage by `language2`, where we find
the longest key in the theme's syntax styles that matches the capture
name:

18431051d9/crates/language2/src/highlight_map.rs (L15-L41)
2023-10-31 23:05:50 -04:00
Marshall Bowers
18431051d9 Rework theme2 with new theme structure (#3194)
This PR reworks the theme definition in the `theme2` crate to be based
off of the new theme work that @iamnbutler has been working on.

We're still developing the new theme system, but it is complete enough
that we can now load the default theme and use it to theme the storybook
(albeit with some further refining of the color palette required).

---------

Co-authored-by: Nate Butler <iamnbutler@gmail.com>
Co-authored-by: Marshall Bowers <marshall@zed.dev>
2023-10-31 22:23:00 -04:00
Julia
795369a1e3 Port multi_buffer to gpui2 2023-10-31 18:34:36 -04:00
Nathan Sobo
0ecf6bde73 WIP 2023-10-31 16:15:30 -06:00
Mikayla
244e8ce101 WIP - make livekit work in GPUI2 2023-10-31 14:04:03 -07:00
Max Brunsfeld
291d35f337 Merge branch 'main' into zed2-project-test
Co-authored-by: Marshall <marshall@zed.dev>
2023-10-31 11:50:56 -07:00
Nathan Sobo
fd15551d97 Remove Reference 2023-10-31 11:29:13 -06:00
Nathan Sobo
8f1000ea10 Checkpoint 2023-10-31 11:27:08 -06:00
Nathan Sobo
9798d65cf9 Checkpoint 2023-10-31 11:22:40 -06:00
Nathan Sobo
90601fe4fd Checkpoint 2023-10-31 11:16:08 -06:00
Max Brunsfeld
ed5f1d3bdd zed2 (#3174)
PR to get zed2 into main.

Because we have taken the approach of porting crates by renaming them to
`-2` we will need to manually reapply any changes that were made to
ported crates since the `zed2` branch diverged from master.

I think this is the list of PRs that may need changes ported manually.
Any changes to the following crates may need to be moved from crate `x`
to `x2` for each of the following crates: `audio call client copilot db
feature_flags fs fuzzy gpui install_cli language lsp prettier project
rpc settings storybook terminal theme ui zed`.

- [x] f75eb3f62 Conrad Irwin (origin/main, origin/HEAD, main) Merge
branch 'more-signing' (17 hours ago)
- [x] 832026a0a Julia Limit language server reinstallation attempts
(#3177) (18 hours ago)
- [x] 4539cef6d Julia Capture language server stderr during startup/init
and log if failure (#3175) (21 hours ago)
- [x] e6f2288a0 Conrad Irwin Don't use function_name in vim tests
(#3171) (2 days ago)
- [x] f67f42779 Mikayla Maki Rename IIFE to maybe (#3165) (2 days ago)
- [ ] 90f65ec9f Max Brunsfeld Remove logic for multiple channel parents
(#3162) (2 days ago)
- [ ] 4f859e025 Conrad Irwin link to channel notes (#3167) (2 days ago)
- [ ] b8bd070a8 Conrad Irwin Fix panic by disallowing multiple room
joins (#3149) (3 days ago)
- [ ] cc9e92857 Max Brunsfeld Guest roles (#3140) (3 days ago)
- [x] b090cefdd Kirill Bulatov Rework prettier tests (#3160) (3 days
ago)
- [ ] ff497810d Kyle Caverly move keychain access into semantic index as
opposed to on init (#3158) (3 days ago)
- [x] 2b95db087 Conrad Irwin Fix infinite loop in select all (#3154) (3
days ago)
- [ ] a5836b033 Max Brunsfeld Add chat mentions and a notifications
panel (#3121) (4 days ago)
- [ ] ef1a69156 Kyle Caverly update semantic search to use keychain as
fallback (#3151) (6 days ago)
- [x] 26638748b Kirill Bulatov Move prettier parsers data into languages
from LSP adapters (#3150) (6 days ago)
- [ ] 0dae0f602 Conrad Irwin pixel columns (#3052) (7 days ago)
- [x] cc7df91cc Julia Whoops (#3146) (7 days ago)
- [x] 808976ee2 Julia Magic incantations for Tailwind autocomplete in
more languages (#3141) (7 days ago)
- [ ] cc390ba86 Conrad Irwin Start writing role to database (#3120) (10
days ago)
- [ ] 2795091f0 Kyle Caverly Introduce Context Retrieval in Inline
Assistant (#3097) (10 days ago)
- [x] b168bded1 Conrad Irwin New entitlements: (#3118) (10 days ago)
- [x] 247cdb1e1 Joseph T. Lyons Fix telemetry-related crash on start up
(#3131) (11 days ago)
- [ ] 2323fd17b Julia Autocomplete docs (#3126) (2 weeks ago)
- [x] 16d9d77d8 Kirill Bulatov Update diagnostics indicator when
diagnostics are udpated (#3128) (2 weeks ago)
- [ ] 634202340 Kirill Bulatov Remove zed -> ... -> semantic_index ->
zed Cargo dependency cycle (#3127) (2 weeks ago)

Note: this list does not include any PRs that did not change crates that
have been converted; it also does not include any commits that were
pushed directly to master.

### To figure out what needs migrating, run:

```
git diff COMMIT^..COMMIT -- crates/audio crates/call crates/client crates/copilot crates/db crates/feature_flags crates/fs crates/fuzzy crates/gpui crates/install_cli crates/language crates/lsp crates/prettier crates/project crates/rpc crates/settings crates/storybook crates/terminal crates/theme crates/ui crates/zed
```
2023-10-31 10:12:17 -07:00
Nathan Sobo
0a2fde8707 WIP 2023-10-31 11:03:01 -06:00
Antonio Scandurra
66b520a513 Call initialize on the rendered element on AnyView 2023-10-31 17:17:42 +01:00
Conrad Irwin
8db6b78fdd Implement start/finish waiting for gpui2
I'm not sure these are strictly necessary, but it will make porting
tests easier to have them.
2023-10-31 16:14:10 +00:00
Conrad Irwin
0e9a82711c Actually deliver test events to subscribers 2023-10-31 16:04:33 +00:00
KCaverly
fed391fe6b wip 2023-10-31 12:00:45 -04:00
Conrad Irwin
81f8e81e48 Fix block to allow for sync progress 2023-10-31 15:57:01 +00:00
KCaverly
551171a339 Merge branch 'zed2' of github.com:zed-industries/zed into zed2-workspace 2023-10-31 11:39:34 -04:00
KCaverly
68a1c7ce4c wip 2023-10-31 11:32:56 -04:00
Antonio Scandurra
0aa9c6b61d Introduce AnyWeakView
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-10-31 16:19:46 +01:00
Antonio Scandurra
7b6514b178 Simplify AnyView
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-10-31 16:16:30 +01:00
KCaverly
5550e80c4e workspace2 is compiling
Co-Authored-By: Kirill <kirill@zed.dev>
2023-10-31 11:14:43 -04:00
KCaverly
e315e1bb6c small window change 2023-10-31 10:50:28 -04:00
KCaverly
663e8aed8a wip progress 2023-10-31 10:49:51 -04:00
Conrad Irwin
b8e007c6ec Call flush_effects in test context update()
In gpui1 we used to do this even outside of top-level contexts, but not
sure we should make tests work that differently to the main app.
2023-10-31 14:24:12 +00:00
KCaverly
eb4ac2c276 wip 2023-10-31 10:12:40 -04:00
KCaverly
efce38fce2 wip 2023-10-31 10:04:04 -04:00
KCaverly
8d0905e479 dock compiling with todos outstanding
Co-Authored-By: Kirill <kirill@zed.dev>
2023-10-31 09:25:36 -04:00
Conrad Irwin
3e5379526e Fix entity map drop behavior
The entity map needs to be able to distinguish between the case when
the entity_id is waiting to be dropped, and when it is completely gone.

Before 8bc207141, it assumed that entity_ids in dropped_entity_ids could
be re-used. This caused `take_dropped` to error because the slot had
been overwritten. The fix there caused weak handles to allow upgrading
a reference count from 0, which could resurrect items in
`dropped_entity_ids` which caused them to be dropped twice.

We could allow weak items to upgrade from 0, and delete from
dropped_entity_ids, but that seemed more complicated than necessary.
2023-10-31 13:09:35 +00:00
Antonio Scandurra
bbe2dd1f8f WIP 2023-10-31 14:04:59 +01:00
Antonio Scandurra
14a6199b4b WIP: Make the item module compile again 2023-10-31 13:56:48 +01:00
Antonio Scandurra
e8eea52d0f Allow WeakView<T> to be hashed and compared 2023-10-31 13:34:54 +01:00
Antonio Scandurra
46a99c5c41 Allow View<T> to be hashed and compared 2023-10-31 13:34:29 +01:00
Antonio Scandurra
163fa3ff16 Introduce {Window,View}Context::defer 2023-10-31 13:17:05 +01:00
Kirill Bulatov
6a3974ddbb Remove TODOs 2023-10-31 13:08:18 +02:00
Antonio Scandurra
538a9e1392 WIP 2023-10-31 11:56:55 +01:00
Kirill Bulatov
84c5494949 Fix prettier errors around Zed's settings.json/keymap.json files
Ports https://github.com/zed-industries/zed/pull/3191 to zed2

Deals with zed-industries/community#2191
Fix Zed starting too many prettier installations in the beginning, and not being able to format the config files.
2023-10-31 12:26:49 +02:00
Kirill Bulatov
45e695c906 Fix prettier errors around Zed's settings.json/keymap.json files (#3191)
Deals with https://github.com/zed-industries/community/issues/2191

Fix Zed starting too many prettier installations in the beginning, and
not being able to format the config files.

Release Notes:

- Fixed prettier not being able to format Zed's config files and spawning excessive prettier installations
2023-10-31 12:05:32 +02:00
Kirill Bulatov
6ee9beed73 Enqueue default prettier installations 2023-10-31 11:54:40 +02:00
Antonio Scandurra
00c92ae407 Merge branch 'zed2' into zed2-workspace 2023-10-31 10:20:03 +01:00
Antonio Scandurra
88875fd006 Zed2 entities (#3189)
Adds an `Entity` trait for abstracting over `View`s and `Model`s, and
implements it for the `subscribe()` and `observe()` APIs.

The last commit also includes a fun experiment I added, using the
`Result` type to return the owned model handles back to the caller in
the case of downcast failure, inspired by the `binary_search*` methods.
2023-10-31 10:11:25 +01:00
Kirill Bulatov
c98a811c0b Only process diagnostics if corresponding project is alive
Part of https://github.com/zed-industries/zed/pull/3128 that is possible
to apply now.
2023-10-31 10:40:49 +02:00
Julia
bcf3bac168 Port zed/src/languages to zed2 (#3190)
@SomeoneToIgnore I had to port
https://github.com/zed-industries/zed/pull/3150 to zed2 in the process,
giving you a heads-up
2023-10-30 22:04:54 -04:00
Julia
db34de6be4 Port zed/src/languages to zed2 2023-10-30 21:52:29 -04:00
Mikayla
f5b13071f1 experiment with a way to recover the any entities when downcasting fails 2023-10-30 18:08:38 -07:00
Mikayla
6f1197e00c Change model to downcast with ownership 2023-10-30 18:00:37 -07:00
Mikayla
327a2f9967 Add the entity trait and implement for models, views, subscriptions, and observations 2023-10-30 17:50:21 -07:00
Mikayla
3dadfb8ba8 Merge branch 'zed2' into zed2-workspace 2023-10-30 16:53:21 -07:00
Max Brunsfeld
58446c2715 Merge branch 'zed2-render' into zed2 2023-10-30 15:37:00 -07:00
Max Brunsfeld
d6abd8a2b4 Add missing dev-dependency feature for editor multi_buffer dependency 2023-10-30 15:32:52 -07:00
Max Brunsfeld
30dffbb409 Introduce a Render trait, make views implement it
Don't pass a render function separately from the view.

Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Antonio <as-cii@zed.dev>
2023-10-30 15:19:40 -07:00
Joseph T. Lyons
f33fc1b6fa Remove print statement 2023-10-30 18:14:04 -04:00
Joseph T. Lyons
d219ddbdaf Add script to get crate-level completion status 2023-10-30 18:13:18 -04:00
Joseph T. Lyons
b76ce65a63 Port PR #3131 to zed2 (#3187)
Part of: 

- https://github.com/zed-industries/zed/pull/3174

Release Notes:

- N/A
2023-10-30 17:47:00 -04:00
Marshall Bowers
607813e646 Tweak style for color scale story 2023-10-30 17:45:37 -04:00
Joseph T. Lyons
613afd3f66 Port PR #3131 to zed2 2023-10-30 17:41:26 -04:00
Marshall Bowers
49571127da theme2: Correctly reference the dark alpha scale 2023-10-30 17:35:13 -04:00
Marshall Bowers
609836397b Merge branch 'theme-color-scales' into zed2 2023-10-30 17:31:51 -04:00
Marshall Bowers
a02d806715 Add a story showcasing the color scales 2023-10-30 17:31:15 -04:00
Marshall Bowers
991f58409e Fix alpha channel values for color scales 2023-10-30 17:20:43 -04:00
Marshall Bowers
e0f68c77b0 Add type alias for steps in color scales 2023-10-30 17:08:37 -04:00
Marshall Bowers
b128377cd2 Register all of the color scales 2023-10-30 17:03:33 -04:00
Marshall Bowers
ccccf84867 Define all color scales 2023-10-30 17:00:46 -04:00
Kirill Bulatov
fd6f6cc9f8 Return proper full paths for single file workspaces 2023-10-30 22:33:44 +02:00
Kirill Bulatov
29a32039ba Start message numbering during prettier init, log error message text 2023-10-30 22:26:06 +02:00
Marshall Bowers
7841a56a11 Start work on defining color scales 2023-10-30 16:21:59 -04:00
KCaverly
b34f0c3bee update prettier2, call2 and project2 to use fs2 2023-10-30 16:21:58 -04:00
Kirill Bulatov
033d0ae610 Remember default prettier and its plugin installation 2023-10-30 22:09:36 +02:00
Antonio Scandurra
0128079de0 WIP 2023-10-30 20:36:48 +01:00
Marshall Bowers
78573fb140 Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-30 15:17:16 -04:00
Marshall Bowers
942167e046 Format ui2 2023-10-30 15:17:11 -04:00
Kyle Caverly
0efbc81b0f port ai to zed2 (#3186)
port ai to zed2
2023-10-30 20:09:49 +01:00
KCaverly
c17b246bac updated for model handle rename 2023-10-30 15:04:16 -04:00
Antonio Scandurra
bc4f8fbf4e Rename other references from "handle" to "model"
Co-Authored-By: Max <max@zed.dev>
Co-Authored-By: Mikayla <mikayla@zed.dev>
2023-10-30 19:54:32 +01:00
KCaverly
5ff70f7dba keeping this bad boy green during fmt checks 2023-10-30 14:49:31 -04:00
Marshall Bowers
ba789fc0c4 Remove old theme constructs 2023-10-30 14:47:44 -04:00
KCaverly
d5077d9d0c Merge branch 'zed2' of github.com:zed-industries/zed into zed2-ai 2023-10-30 14:47:13 -04:00
Antonio Scandurra
1a54ac0d69 Rename Handle to Model 2023-10-30 19:44:01 +01:00
KCaverly
04ab68502b port ai crate to ai2, with all tests passing 2023-10-30 14:40:31 -04:00
Marshall Bowers
14d24a9ac6 Remove references to old_theme 2023-10-30 14:36:49 -04:00
Antonio Scandurra
9688937468 WIP 2023-10-30 19:33:23 +01:00
Marshall Bowers
7bacdefa2e Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-30 14:28:27 -04:00
Marshall Bowers
7b4e699d0e Remove themed wrapper 2023-10-30 14:28:25 -04:00
KCaverly
204aba07f6 Merge branch 'main' of github.com:zed-industries/zed into zed2 2023-10-30 13:44:50 -04:00
Piotr Osiewicz
510ab60bd4 zed2-backport: Elixir next ls bad cpu type (#3185) 2023-10-30 18:44:47 +01:00
Piotr Osiewicz
e63a611c81 lsp/next-ls: Fix wrong nls binary being fetched.
CPU types had to be swapped around.

Fixed zed-industries/community#2185
2023-10-30 18:43:11 +01:00
KCaverly
08e9b2e848 added parsing support for <|S| |E|> spans 2023-10-30 13:32:47 -04:00
Piotr Osiewicz
dc8a853842 lsp/next-ls: Fix wrong nls binary being fetched. (#3181)
CPU types had to be swapped around.

Fixed zed-industries/community#2185

Release Notes:
- Fixed Elixir next-ls LSP installation failing due to fetching a binary
for the wrong architecture (zed-industries/community#2185).
2023-10-30 18:27:05 +01:00
Marshall Bowers
b31a004def Add menu2 crate 2023-10-30 12:56:23 -04:00
Antonio Scandurra
b9ce186d21 WIP 2023-10-30 16:54:55 +01:00
Antonio Scandurra
89bcbe3eeb WIP 2023-10-30 16:43:01 +01:00
Marshall Bowers
d3cd5f3ec5 Format theme2 2023-10-30 11:26:30 -04:00
Marshall Bowers
3d8516b25f Convert all themes 2023-10-30 11:22:04 -04:00
Marshall Bowers
7a66ebae71 Emit modules for each theme 2023-10-30 11:21:33 -04:00
Kyle Caverly
4986d4771d Model cleanup (#3157)
Small reorganization for the AI crates. I seperated out the base traits
and providers, to get closer to an abstraction for AI completions as
opposed to OpenAI specific functionality.
2023-10-30 16:15:11 +01:00
KCaverly
142b94bdd4 Merge branch 'main' of github.com:zed-industries/zed into model_cleanup 2023-10-30 11:07:29 -04:00
KCaverly
f3c113fe02 clean up warnings and fix tests in the ai crate 2023-10-30 11:07:24 -04:00
Marshall Bowers
2879d231b1 Revert changes to themes 2023-10-30 11:06:45 -04:00
Marshall Bowers
3591ffe4a7 Emit all themes at once 2023-10-30 11:04:03 -04:00
Marshall Bowers
b8ae949dbe Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-30 10:40:48 -04:00
Marshall Bowers
61cc3b93e3 Factor out ThemePrinter into its own module 2023-10-30 10:40:46 -04:00
Antonio Scandurra
d4d9fcc88c WIP 2023-10-30 15:39:58 +01:00
KCaverly
a2c3971ad6 moved authentication for the semantic index into the EmbeddingProvider 2023-10-30 10:02:27 -04:00
Antonio Scandurra
e2ee9a28bf Implement activate_workspace_for_project 2023-10-30 14:50:50 +01:00
Antonio Scandurra
bd750fbbe2 Merge branch 'zed2' into zed2-workspace 2023-10-30 12:16:34 +01:00
Antonio Scandurra
25e882d72a Remove randomness from GPUI2 block_with_timeout 2023-10-30 12:10:55 +01:00
Kirill Bulatov
b3c3adab50 Port prettier panic fix to gpui2 2023-10-30 13:00:49 +02:00
Kirill Bulatov
bd30ce837d Do not panic when looking for prettier (#3182)
Fixes
https://zed-industries.slack.com/archives/C04S6T1T7TQ/p1698655595438009

Instead of checking FS, derive the prettier path needed and let prettier
invocation fail in logs instead.
2023-10-30 12:59:46 +02:00
Kirill Bulatov
6aca2289eb Do not panic when looking for prettier (#3182)
Fixes
https://zed-industries.slack.com/archives/C04S6T1T7TQ/p1698655595438009

Instead of checking FS, derive the prettier path needed and let prettier
invocation fail in logs instead.
2023-10-30 12:58:47 +02:00
Kirill Bulatov
b46a4b5680 Be more lenient when searching for prettier instance
Do not check FS for existence (we'll error when start running prettier),
simplify the code for looking it up
2023-10-30 12:13:58 +02:00
Kirill Bulatov
249bec3cac Do not panic on prettier search 2023-10-30 12:13:54 +02:00
Kirill Bulatov
f16ff79ff8 Properly log prettier paths 2023-10-30 11:17:11 +02:00
Kirill Bulatov
96bbb5cdea Properly log prettier paths 2023-10-30 11:14:00 +02:00
Joseph T. Lyons
37a561df0a Do not call scroll_to() twice when circularly navigating popover menus (#3180)
The tweaks made to add circular navigation to autocompletion / code
action menus accidentally was calling `scroll_to` twice in some cases -
just fixing that.

Release Notes:

- N/A
2023-10-29 15:02:09 -04:00
Joseph T. Lyons
dd89b2e6d4 Pull duplicate call out of if-else block 2023-10-29 13:54:32 -05:00
Joseph T. Lyons
34747bbbbc Do not call scroll_to twice 2023-10-29 13:47:02 -05:00
KCaverly
1e8b23d8fb replace api_key with ProviderCredential throughout the AssistantPanel 2023-10-28 18:16:45 -04:00
KCaverly
558f54c424 added credential provider to completion provider 2023-10-28 16:35:43 -04:00
Joseph T. Lyons
10b581f250 Port journal to GPUI2 (#3178)
Release Notes:

- N/A
2023-10-28 17:42:42 +02:00
Joseph T. Lyons
6b65d76014 Port journal to GPUI2 2023-10-28 11:37:25 -04:00
Nathan Sobo
e27427dce8 Merge branch 'gpui2-docs' into zed2 2023-10-27 17:07:28 -06:00
Nathan Sobo
f88ca2e7da Add docs for window.rs, but still incomplete 2023-10-27 22:29:59 +02:00
Nathan Sobo
ad7c49e4bb Add doc comments to app.rs 2023-10-27 21:19:48 +02:00
Conrad Irwin
b4225ac82a Port changes from #3118 to zed2 2023-10-27 13:27:55 +02:00
Conrad Irwin
ba189f2af1 Port changes from #3154 to zed2 2023-10-27 13:24:37 +02:00
KCaverly
7af77b1cf9 moved TestCompletionProvider into ai 2023-10-27 12:26:01 +02:00
Conrad Irwin
67ecc2fe04 Comment out failing gpui2 test 2023-10-27 11:24:23 +02:00
Conrad Irwin
af0c010b4a Remove deadlock from gpui2 pasteboard 2023-10-27 11:14:13 +02:00
Conrad Irwin
d2ab0d651e Get cargo test --workspace compiling again 2023-10-27 11:03:30 +02:00
Conrad Irwin
079de6fdf7 Rename last async_iife 2023-10-27 10:56:24 +02:00
Conrad Irwin
4a6a17d866 Merge branch 'main' into zed2 2023-10-27 10:55:15 +02:00
Conrad Irwin
5f5234c5da Fix fs2 tests 2023-10-27 10:51:36 +02:00
Conrad Irwin
c1904b493b Fix cargo fmt 2023-10-27 10:44:57 +02:00
KCaverly
ec9d79b6fe add concept of LanguageModel to CompletionProvider 2023-10-27 08:51:30 +02:00
KCaverly
6c8bb4b05e ensure OpenAIEmbeddingProvider is using the provider credentials 2023-10-27 08:33:35 +02:00
Nathan Sobo
bcdffc9963 Merge branch 'zed2-views' into zed2 2023-10-26 19:41:59 +02:00
Nathan Sobo
a1c3826858 Add View::update which provides a ViewContext 2023-10-26 19:41:42 +02:00
Conrad Irwin
f75eb3f626 Merge branch 'more-signing' 2023-10-26 18:27:58 +02:00
Conrad Irwin
071e9b4871 Revert entitlements change 2023-10-26 18:27:34 +02:00
Conrad Irwin
30e7978dcf Try more signing 2023-10-26 18:27:33 +02:00
Conrad Irwin
adc426b668 v1 2023-10-26 18:19:57 +02:00
Antonio Scandurra
8e3314e680 WIP 2023-10-26 18:17:45 +02:00
Julia
832026a0a2 Limit language server reinstallation attempts (#3177)
Release Notes:

- Fixed a case where a sufficiently broken language server system
configuration could cause an infinite repeated server reinstallation,
consuming resources indefinitely.
2023-10-26 17:20:13 +02:00
Julia
a23e05c20b Limit language server reinstallation attempts
zed2 electric boogaloo
2023-10-26 17:16:04 +02:00
Antonio Scandurra
516236e044 Disable livekit on zed2 2023-10-26 17:15:19 +02:00
Antonio Scandurra
637cff3ebd WIP 2023-10-26 17:15:19 +02:00
Marshall Bowers
452006560e Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-26 17:14:49 +02:00
Julia
8db3b3b4ca Limit language server reinstallation attempts 2023-10-26 17:14:34 +02:00
Joseph T. Lyons
98d03f6e7a Revert "Add activity_indicator2"
This reverts commit 88a3a57789.
2023-10-26 17:13:40 +02:00
Marshall Bowers
560e115656 Pull syntax colors from JSON theme 2023-10-26 17:06:05 +02:00
Marshall Bowers
973ca8d4f0 ui2: Remove dependency on theme crate 2023-10-26 16:50:04 +02:00
Marshall Bowers
692aeff263 ui2: Remove dependency on settings crate 2023-10-26 16:50:04 +02:00
Joseph T. Lyons
88a3a57789 Add activity_indicator2 2023-10-26 16:49:39 +02:00
Marshall Bowers
61694bba6a Remove unneeded constructors for stories 2023-10-26 16:46:49 +02:00
Max Brunsfeld
65045b9c52 Get remaining language2 tests passing 2023-10-26 16:38:50 +02:00
Max Brunsfeld
0eae962abf Represent theme's syntax colors with string keys
Co-authored-by: Marshall Bowers <marshall@zed.dev>
2023-10-26 16:38:50 +02:00
Marshall Bowers
a569c82492 Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-26 15:59:21 +02:00
Marshall Bowers
ed233d583f ui2: Remove ElementExt trait 2023-10-26 15:59:18 +02:00
Max Brunsfeld
b3ad8c1c3e Get most of the language2 tests passing
Co-authored-by: Conrad <conrad@zed.dev>
2023-10-26 15:57:12 +02:00
Max Brunsfeld
3cc91e5742 Add missing seed variable for gpui2 test macro
Co-authored-by: Conrad <conrad@zed.dev>
2023-10-26 15:57:12 +02:00
Marshall Bowers
6784ccd9fe Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-26 15:54:48 +02:00
Marshall Bowers
1887f3b594 Rename S type to V 2023-10-26 15:54:43 +02:00
Max Brunsfeld
8bc2071414 Fix gpui2 bugs
* Compile error for tests that take StdRng
* Dynamic type dowcasting error when emitting events
* Slot error when dropping handles

Co-authored-by: Conrad <conrad@zed.dev>
2023-10-26 15:54:19 +02:00
Antonio Scandurra
58e8012d8c Make zed2 compile again 2023-10-26 15:45:30 +02:00
Marshall Bowers
8a70ef3e8f Remove unused state_type 2023-10-26 15:45:08 +02:00
Marshall Bowers
eb19071d84 ui2: Clean up takes 2023-10-26 15:44:39 +02:00
Marshall Bowers
7b4a895ab9 ui2: Clean up drains 2023-10-26 15:41:29 +02:00
Antonio Scandurra
821fe0f5b5 Merge branch 'zed2' into zed2-workspace 2023-10-26 15:34:55 +02:00
Marshall Bowers
d62c51a4b8 Merge branch 'gpui2-element-renderer' into zed2 2023-10-26 15:23:02 +02:00
Marshall Bowers
fccc4ca85c Initialize element before layout 2023-10-26 15:22:48 +02:00
Marshall Bowers
42095f0673 Remove debug from derive Component proc macro 2023-10-26 15:22:38 +02:00
Marshall Bowers
88ef74ec8f Checkpoint: Compiling after view type removal 2023-10-26 15:20:38 +02:00
Antonio Scandurra
9ea79259d5 Add spawn facilities to AsyncWindowContext 2023-10-26 15:00:44 +02:00
Max Brunsfeld
6fe393db2a Fix compile errors with lsp2
Co-authored-by: Jospeh <joseph@zed.dev>
2023-10-26 14:48:04 +02:00
Max Brunsfeld
69e5ecc015 Enable client tests
* implement Executor::advance_clock

Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by:  Kyle <kyle@zed.dev>
Co-authored-by:  Joseph <joseph@zed.dev>
2023-10-26 14:44:13 +02:00
Antonio Scandurra
d9274416b4 Make activate_workspace_for_project compile
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Co-Authored-By: Kirill Bulatov <kirill@zed.dev>
2023-10-26 14:36:55 +02:00
Marshall Bowers
c9c9db903d Fix Component derive macro 2023-10-26 14:20:25 +02:00
Julia
4539cef6d7 Capture language server stderr during startup/init and log if failure (#3175)
Gives us some more debugging information

Release Notes:
 - N/A
2023-10-26 14:17:29 +02:00
KCaverly
ca82ec8e8e fixed truncation error in fake language model 2023-10-26 14:05:55 +02:00
Julia
0eafb8886d zed2: Capture language server stderr during startup/init and log if failure (#3176)
zed2 electric boogaloo

Release Notes:

- N/A
2023-10-26 13:59:04 +02:00
Kirill Bulatov
27d2accb51 Fix the formatting 2023-10-26 13:52:04 +02:00
Kirill Bulatov
0a04c5734b Update mouse position during file drag and drop 2023-10-26 13:50:35 +02:00
Julia
8a0fb668f7 Capture language server stderr during startup/init and log if failure
zed2 electric boogaloo
2023-10-26 13:50:24 +02:00
Nathan Sobo
f4cff69729 WIP: Macro not working fully yet 2023-10-26 13:18:58 +02:00
Max Brunsfeld
a4b7e3c9f6 Merge branch 'zed2-hangs' into zed2 2023-10-26 12:48:35 +02:00
Conrad Irwin
065d26f5b2 Get RPC2 tests passing
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Kyle <kyle@zed.dev>
2023-10-26 12:47:37 +02:00
Nathan Sobo
0285284ae1 Rename IntoAnyElement trait to Component 2023-10-26 12:46:52 +02:00
Nathan Sobo
8ecfea55cd Replace derive Element with derive IntoAnyElement everywhere 2023-10-26 12:38:23 +02:00
Julia
170ebd8221 Capture language server stderr during startup/init and log if failure 2023-10-26 12:29:22 +02:00
Antonio Scandurra
c8b5b085f4 WIP 2023-10-26 12:27:20 +02:00
Nathan Sobo
315744ec20 Add derive macro for IntoAnyElement 2023-10-26 12:20:46 +02:00
Antonio Scandurra
06c22206af Add install_cli2
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-Authored-By: Kirill <kirill@zed.dev>
2023-10-26 12:09:54 +02:00
Antonio Scandurra
6172cd9015 Merge branch 'zed2-room' into zed2 2023-10-26 11:57:11 +02:00
Antonio Scandurra
3bcae6d7de Add call2
Co-Authored-By: Kirill Bulatov <kirill@zed.dev>
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2023-10-26 11:56:34 +02:00
Nathan Sobo
927278e20d Remove IntoAnyElement bound from Element trait 2023-10-26 11:49:36 +02:00
Conrad Irwin
71ad3e1b20 Add rpc2 2023-10-26 11:48:25 +02:00
Conrad Irwin
693246ba26 Fix fs2 import on zed 2023-10-26 11:41:15 +02:00
Conrad Irwin
b875be9689 Fix settings2 tests 2023-10-26 11:39:32 +02:00
Conrad Irwin
07b9ec29e6 Revert "Fix settings2 crate tests"
This reverts commit 6e9c779c51.
2023-10-26 11:33:58 +02:00
Nathan Sobo
db15db45ce WIP 2023-10-26 11:31:47 +02:00
Conrad Irwin
6e9c779c51 Fix settings2 crate tests 2023-10-26 11:27:23 +02:00
Kirill Bulatov
483ac9491a Start fixing room2 2023-10-26 11:27:12 +02:00
Conrad Irwin
6cf7d0b81c Fix macro some more 2023-10-26 11:27:03 +02:00
Conrad Irwin
6185c935a6 Fix small bugs in gpui2::test 2023-10-26 11:23:07 +02:00
Nathan Sobo
45a8aea0f0 Make FnOnces that render elements IntoAnyElement 2023-10-26 11:21:42 +02:00
KCaverly
3447a9478c updated authentication for embedding provider 2023-10-26 11:18:16 +02:00
Nathan Sobo
db7d12f628 WIP 2023-10-26 10:59:27 +02:00
Marshall Bowers
4266ead958 WIP: Trait bounds 2023-10-26 10:46:02 +02:00
Conrad Irwin
5651ef7ca2 Use quit to end tests 2023-10-26 10:40:04 +02:00
Conrad Irwin
51aa0d6a94 Clearer error on importing both gpui and gpui2 2023-10-26 10:39:52 +02:00
Piotr Osiewicz
bc3572f80e util: Improve error message for failing requests to GH. (#3159)
Release notes:
- N/A

Co-authored-by: Julia Risley <julia@zed.dev>
2023-10-26 10:39:45 +02:00
Piotr Osiewicz
1ec6638c7f vue: use anyhow::ensure instead of asserting on filesystem state (#3173)
Release Notes:
- Fixed a crash on failed assertion in Vue.js language support.
2023-10-26 10:16:21 +02:00
Marshall Bowers
e31a9401a8 Merge branch 'remove-view-state-associated-type' into gpui2-element-renderer 2023-10-26 10:10:17 +02:00
Marshall Bowers
65389a8fac Merge branch 'zed2' into gpui2-element-renderer 2023-10-26 10:10:10 +02:00
Marshall Bowers
9fb9885931 Checkpoint: Compiling 2023-10-26 10:08:39 +02:00
Marshall Bowers
8b972f6d8e WIP: Fix compilation of gpui2 2023-10-26 09:51:33 +02:00
Marshall Bowers
965bfd8439 WIP: Pass in V to Element 2023-10-26 09:45:26 +02:00
Marshall Bowers
9c10152c89 Use Display instead of custom to_string 2023-10-26 09:30:21 +02:00
Marshall Bowers
28ef30f7a2 Removed unused ui2::color module 2023-10-26 09:26:22 +02:00
Conrad Irwin
e6f2288a0c Don't use function_name in vim tests (#3171)
Remove dependency on function name from vim tests.

We want to remove this from gpui2, and it looks like we can!
2023-10-25 23:36:48 +02:00
Conrad Irwin
ffcec011f8 Don't use function_name in vim tests 2023-10-25 23:26:57 +02:00
Marshall Bowers
06bff41818 WIP: ElementRenderer 2023-10-25 21:08:34 +02:00
Antonio Scandurra
c5763cdb99 Fix errors in passing TestAppContext in async gpui2 tests 2023-10-25 21:08:00 +02:00
Antonio Scandurra
43d230cb2d Introduce a gpui2::test macro
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Kyle <kyle@zed.dev>
2023-10-25 21:08:00 +02:00
Marshall Bowers
7ec9cc08c7 Fix z-index targeting for drag and drop 2023-10-25 20:49:40 +02:00
Marshall Bowers
5355007719 Clean up some warnings 2023-10-25 20:40:50 +02:00
Marshall Bowers
b5eae86b67 Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-25 20:38:03 +02:00
Marshall Bowers
e67048ee7b Load themes from settings and rework Settings trait 2023-10-25 20:37:55 +02:00
Antonio Scandurra
5ba04dce2b Assert handles are passed to the right contexts 2023-10-25 19:46:13 +02:00
Piotr Osiewicz
7f6bb3d1eb Extract multi_buffer module out of editor (#3170)
Release Notes:

- N/A
2023-10-25 19:31:47 +02:00
Antonio Scandurra
412c0ff7dc Add fs2
Co-Authored-By: Max <max@zed.dev>
Co-Authored-By: Conrad <conrad.irwin@gmail.com>
Co-Authored-By: Kyle <kyle@zed.dev>
2023-10-25 19:17:50 +02:00
Julia
1936ba5e30 F8 navigation bugs (#3163)
Release Notes:

- Fixed "go to previous hunk" getting suck on deletion.
- Fixed a rare case where "go to (prev) diagnostic" could get stuck with
specifically overlapping diagnostics.
2023-10-25 19:03:45 +02:00
Antonio Scandurra
9986e526e5 Stop depending on gpui in client2 and settings2 2023-10-25 18:47:03 +02:00
Joseph T. Lyons
3460e95899 vcs_menu: Fix a circular view handle in modal picker. (#3168)
Release Notes:

- Fixed a crash in modal branch picker.
2023-10-25 18:44:48 +02:00
Piotr Osiewicz
39480364bd vcs_menu: Fix a circular view handle in modal picker.
Co-authored-by: Julia Risley <julia@zed.dev>
2023-10-25 18:34:14 +02:00
Antonio Scandurra
1b75603f63 Implement os_name, os_version and app_version for TestPlatform
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
Co-Authored-By: Kyle <kyle@zed.dev>
2023-10-25 18:30:06 +02:00
Antonio Scandurra
52f9f90ccb Implement TestAppContext::new
Co-Authored-By: Max <max@zed.dev>
Co-Authored-By: Conrad <conrad@zed.dev>
Co-Authored-By: Kyle <kyle@zed.dev>
2023-10-25 18:28:05 +02:00
Marshall Bowers
98e2490807 Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-25 18:20:22 +02:00
Marshall Bowers
a0fe859d87 Make theme converter spit out valid Rust structs 2023-10-25 18:20:16 +02:00
Antonio Scandurra
51fb33d8ef Allow different app contexts to race
Co-Authored-By: Max <max@zed.dev>
Co-Authored-By: Kyle <kyle@zed.dev>
Co-Authored-By: Conrad <conrad@zed.dev>
2023-10-25 18:11:38 +02:00
Max Brunsfeld
3a369bc207 Name embedded.provisionprofile the same on stable as other channels 2023-10-25 18:02:27 +02:00
Antonio Scandurra
92535ba2c4 Introduce TestAppContext
Co-Authored-By: Max <max@zed.dev>
Co-Authored-By: Conrad Irwin <conrad.irwin@gmail.com>
Co-Authored-By: Kyle Caverly <kyle@zed.dev>
2023-10-25 17:55:20 +02:00
Antonio Scandurra
6f6495ccbf Fix error 2023-10-25 17:41:40 +02:00
Marshall Bowers
08a4e53cfe Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-25 17:38:52 +02:00
Marshall Bowers
c8a86c2dd1 theme2: Add Rosé Pine themes 2023-10-25 17:38:48 +02:00
Max Brunsfeld
841a5ef7b8 collab 0.27.0 2023-10-25 17:38:09 +02:00
Max Brunsfeld
2c5caf91bc Bump RPC version for channels + notifications changes 2023-10-25 17:37:14 +02:00
Antonio Scandurra
3566d920c5 Add deterministic TestDispatcher
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Kyle Caverly <kyle@zed.dev>
2023-10-25 17:33:55 +02:00
Marshall Bowers
cee8175c19 theme2: Add Sandcastle theme 2023-10-25 17:27:25 +02:00
Marshall Bowers
751df45263 Print out Theme structs in theme_converter 2023-10-25 17:24:34 +02:00
Max Brunsfeld
eb8d376274 Avoid unused import in release builds 2023-10-25 17:16:29 +02:00
Mikayla Maki
f67f42779b Rename IIFE to maybe (#3165)
Too good of an idea to forget

Release Notes:

- N/A
2023-10-25 17:09:12 +02:00
Marshall Bowers
6b5947a1fa Start work on theme converter 2023-10-25 16:54:26 +02:00
Marshall Bowers
437d147935 Rename player to players 2023-10-25 16:39:06 +02:00
Marshall Bowers
0867175a4e Remove reference to removed ThemeColor 2023-10-25 16:34:03 +02:00
Marshall Bowers
4fcbc91aca Add note about fixing dead_code and unused_variables warnings in ui2 2023-10-25 16:33:33 +02:00
Marshall Bowers
e1032c5341 Remove ThemeColor in favor of theme2::Theme 2023-10-25 16:32:44 +02:00
KCaverly
71bc35d241 catchup with main 2023-10-25 16:31:00 +02:00
Joseph T. Lyons
c44d1cda9a collab 0.26.0 2023-10-25 16:24:53 +02:00
Mikayla
26a3d41dc7 Change from try (reserved keyword) to maybe 2023-10-25 07:10:21 -07:00
Joseph T. Lyons
71c72d8e08 v0.111.x dev 2023-10-25 16:07:54 +02:00
Marshall Bowers
bb3f59252e Rename theme2 getter to theme 2023-10-25 16:04:49 +02:00
Marshall Bowers
258496700f Rename theme getter to old_theme 2023-10-25 16:02:47 +02:00
Marshall Bowers
8043d0d8a9 Reference theme2 colors in ThemeColor 2023-10-25 15:58:56 +02:00
Max Brunsfeld
90f65ec9fe Remove logic for multiple channel parents (#3162)
This PR simplifies our state management for channels, and logic for
inheriting channel permissions, by removing the ability for channels to
have multiple parent channels.
2023-10-25 15:57:55 +02:00
Conrad Irwin
4f859e0253 link to channel notes (#3167)
Release Notes:

- Add links to channel notes
2023-10-25 15:53:34 +02:00
Marshall Bowers
dd34bb273e Load Theme from theme2 into the storybook 2023-10-25 15:50:50 +02:00
Max Brunsfeld
b5cbfb8f1d Allow moving channels to the root 2023-10-25 15:50:37 +02:00
Max Brunsfeld
32367eba14 Set up UI to allow dragging a channel to the root 2023-10-25 15:39:02 +02:00
Max Brunsfeld
42259a4007 Fix channel dragging
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Joseph <joseph@zed.dev>
2023-10-25 09:41:16 +02:00
Conrad Irwin
70eeefa1f8 Fix channel collapsing 2023-10-25 09:27:17 +02:00
Conrad Irwin
6f173c64b3 Fix tests by re-instating paths in the new format 2023-10-25 09:22:06 +02:00
Conrad Irwin
b8bd070a83 Fix panic by disallowing multiple room joins (#3149)
Release Notes:

- Fixed panic that could occur when switching channels quickly
2023-10-24 23:57:08 +02:00
Joseph T. Lyons
c77376225d Allow completion menus to be cycled (#3164)
Not a huge ask from the community, but something that I run into
frequently is not being able to cycle the auto completion menus past the
beginning / end, so I quickly added it. This matches VS Code behavior:


https://github.com/zed-industries/zed/assets/19867440/bc4606d7-2076-4036-aedc-f3cf5ba349dc

Release Notes:

- Enhanced popover menus with circular navigation
([#632](https://github.com/zed-industries/community/issues/632)).
2023-10-24 23:08:10 +02:00
Mikayla Maki
beb0af9763 Rename IIFE to try
Too good of an idea to forget
2023-10-24 21:13:22 +02:00
Conrad Irwin
1411b98a5d link to channel notes 2023-10-24 19:48:31 +02:00
Joseph T. Lyons
1c5b321058 Allow completion menus to be cycled 2023-10-24 19:29:44 +02:00
Kirill Bulatov
a01b507ef4 Add OS file drop event handler
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-10-24 19:26:06 +02:00
Conrad Irwin
dfc34e582a Fix extra race 2023-10-24 18:54:55 +02:00
Marshall Bowers
5b04f965fa Update Cargo.lock 2023-10-24 18:25:48 +02:00
Kirill Bulatov
77991ad865 Fix compilation 2023-10-24 18:22:26 +02:00
Marshall Bowers
afad2fbfa2 Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-24 17:58:42 +02:00
Marshall Bowers
d6bd000aa8 Rename cx.global_default_mut to cx.global_default 2023-10-24 17:58:14 +02:00
Julia
bfdff4e2e0 When navigating diagnostics, skip diagnostic containing cursor
Slightly unfortunate but prevents an issue with weirdly overlapping
diagnostics causing the cursor to bounce between them
2023-10-24 17:56:56 +02:00
Marshall Bowers
4ca7ddfc42 Finish up ThemeRegistry and remove AnyAssetSource 2023-10-24 17:47:41 +02:00
Marshall Bowers
51c66f508b Merge branch 'zed2' into theme2 2023-10-24 17:29:25 +02:00
Max Brunsfeld
5c03b6a610 Remove logic for multiple channel parents
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Kyle <kyle@zed.dev>
Co-authored-by: Joseph <joseph@zed.dev>
2023-10-24 17:29:23 +02:00
Max Brunsfeld
cc9e92857b Guest roles (#3140)
Release Notes:

- Added a "guest" role to channels, and made that the default when a new
user joins a public channel.
2023-10-24 17:29:14 +02:00
Marshall Bowers
4740d6ed61 Checkpoint 2023-10-24 17:29:03 +02:00
Kirill Bulatov
18930c33fe Make audio2 2023-10-24 17:15:59 +02:00
Marshall Bowers
5fb8321ee0 Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-24 17:00:11 +02:00
Marshall Bowers
09866ec3e9 WIP 2023-10-24 16:59:24 +02:00
Marshall Bowers
9f8aaa4cdb Add AnyAssetSource 2023-10-24 16:59:01 +02:00
Kirill Bulatov
1ad7f3a16d Finish ???-ing project2.rs 2023-10-24 16:35:34 +02:00
Antonio Scandurra
11953e613b Checkpoint 2023-10-24 16:15:20 +02:00
Nate Butler
0f03f8ff8a Tweak notification styles (#3161)
[[PR Description]]

Tweak notification visual styles

Release Notes:

- (Added|Fixed|Improved) ...
([#<public_issue_number_if_exists>](https://github.com/zed-industries/community/issues/<public_issue_number_if_exists>)).
2023-10-24 10:03:24 -04:00
Nate Butler
c8dfccff36 Revert "Add meta_text to style metaline"
This reverts commit beb91fa094.
2023-10-24 09:57:33 -04:00
Nate Butler
beb91fa094 Add meta_text to style metaline 2023-10-24 09:51:26 -04:00
Antonio Scandurra
9aaf7d0c46 Checkpoint 2023-10-24 15:30:16 +02:00
Nate Butler
c9e670397f Give notifications a bit more breathing room by default 2023-10-24 09:25:49 -04:00
Nate Butler
463b24949e Tweak notification styles 2023-10-24 09:22:58 -04:00
Antonio Scandurra
191285a8f1 Checkpoint 2023-10-24 15:18:51 +02:00
Nathan Sobo
9f9137cf76 Remove failed attempt at eliminating static bounds on entities 2023-10-24 15:12:51 +02:00
Nate Butler
9f48cdac83 Lower the default state intensities 2023-10-24 08:41:39 -04:00
Kirill Bulatov
b090cefdde Rework prettier tests (#3160)
Do not infuse `FakeNodeRuntime` with prettier exceptions, rather keep
the default formatter installation method as no-op.
2023-10-24 15:34:55 +03:00
Nate Butler
bfb37bbe94 Merge branch 'n/elevation' into zed2 2023-10-24 08:34:54 -04:00
Marshall Bowers
8117e7933c Add missing bounds to Themed 2023-10-24 14:30:26 +02:00
Kirill Bulatov
e9ce935991 Rework prettier tests
Do not infuse `FakeNodeRuntime` with prettier exceptions, rather keep
the default formatter installation method as no-op.
2023-10-24 14:25:46 +02:00
Nathan Sobo
2285a35016 Merge branch 'fewer-bounds' into zed2 2023-10-24 14:24:06 +02:00
Nathan Sobo
0910760b76 Reduce the need for Send + Sync bounds on generics 2023-10-24 14:20:01 +02:00
Marshall Bowers
cf380a9f62 Remove set_ prefix for List setters 2023-10-24 14:18:51 +02:00
Marshall Bowers
24e21a4c29 Merge branch 'zed2' of github.com:zed-industries/zed into zed2 2023-10-24 14:11:22 +02:00
Marshall Bowers
bb35583998 Merge branch 'gpui2' into zed2 2023-10-24 14:11:13 +02:00
Kirill Bulatov
0e48465adb Add a draft of the mac platform file drag and drop events 2023-10-24 14:09:46 +02:00
Kirill Bulatov
4d5ca37edb Fix the branch compilation 2023-10-24 14:04:45 +02:00
Kyle Caverly
ff497810dd move keychain access into semantic index as opposed to on init (#3158)
remove keychain request during init

Release Notes:

- Move keychain request to inside indexing.
- Move install_default_formatters to a no op during tests
2023-10-24 13:43:10 +02:00
KCaverly
feefb8d063 fixed format! call for prettier:: 2023-10-24 13:37:34 +02:00
KCaverly
0dd45bbf21 fully qualify paths inside conditional compilation methods 2023-10-24 13:35:28 +02:00
Marshall Bowers
23ad0a2c58 Return a Result from load_embedded_fonts 2023-10-24 13:31:01 +02:00
KCaverly
8ffe5a3ec7 move keychain access into semantic index as opposed to on init 2023-10-24 13:26:37 +02:00
Antonio Scandurra
9a53da28bc WIP 2023-10-24 13:10:37 +02:00
Marshall Bowers
f2710f37c5 Fix default font family 2023-10-24 12:49:18 +02:00
Marshall Bowers
785901c75e Load embedded fonts 2023-10-24 12:32:30 +02:00
Marshall Bowers
171db00f6e Fix stack overflow 2023-10-24 11:39:15 +02:00
Marshall Bowers
6f5cf10acb Comment out .state setting 2023-10-24 11:39:10 +02:00
Marshall Bowers
6a532af1fd Swap the parameters to IconButton 2023-10-24 11:26:19 +02:00
Marshall Bowers
47f979d457 Pass IDs to IconButtons instead of generating them 2023-10-24 11:20:31 +02:00
Julia
48cdefe6cf Re-understand that the line just below git deletion is "inside" hunk
Fixes "go to previous hunk" getting stuck on a deletion, never going
further up
2023-10-24 11:17:42 +02:00
Conrad Irwin
3358420f6a fix format 2023-10-24 11:17:17 +02:00
Conrad Irwin
2b95db087b Fix infinite loop in select all (#3154)
[[PR Description]]

Release Notes:

- Fixed an infinite loop in select all matches
([#2170](https://github.com/zed-industries/community/issues/2170)).
2023-10-24 02:58:48 -06:00
Conrad Irwin
aa6990bb6b Fix set_channel_visibility for public channels 2023-10-24 10:55:10 +02:00
Conrad Irwin
0e035c1a95 Fix character selection 2023-10-24 10:50:08 +02:00
Antonio Scandurra
953857f8e3 WIP 2023-10-24 10:31:35 +02:00
Antonio Scandurra
18eb4a7292 WIP 2023-10-24 10:01:19 +02:00
Conrad Irwin
e6087e0ed9 Fix tests 2023-10-24 09:46:46 +02:00
Conrad Irwin
67e590202a vim surround (#3152)
- Fix some bugs with vim objects
- Add | as a bracket and a motion
- Fix neovim tests with angle brackets

Release Notes:

- vim: Fixed `i` and `a` objects with softwrap, and a few other edge
cases
- vim: Added support for `ci"` to find the next quoted string on the
line
- vim: Added support for `|` as a bracket (for languages like ruby and
rust)
- vim: Added support for `<count>|` to jump to a specific column
2023-10-24 01:33:34 -06:00
Piotr Osiewicz
97a0864134 grammars: Update Bash grammar (#3155)
Fixes zed-industries/community#2168

Release Notes:
- Updated Bash (Shell script) Tree-sitter grammar (fixes
zed-industries/community#2168)
2023-10-24 09:16:06 +02:00
Piotr Osiewicz
6c163afb84 bash: Add highlighting of ANSI c string (#3153)
Fixes zed-industries/community#2169

Release Notes:

- Fixed highlighting of ANSI C strings ($'foo') in "Shell script"
language buffers.
2023-10-24 09:15:35 +02:00
Nate Butler
e99d862f3f WIP Button Refactor 2023-10-23 14:50:53 -04:00
Nate Butler
c1c9db2ae2 Add elevation enums + docs 2023-10-23 13:50:39 -04:00
Conrad Irwin
ea4e67fb76 Merge branch 'main' into guest-exp 2023-10-23 17:47:21 +02:00
Antonio Scandurra
4d621f355d WIP 2023-10-23 17:41:22 +02:00
Antonio Scandurra
05cbceec24 WIP 2023-10-23 17:36:49 +02:00
Nate Butler
297cef14ed WIP add Elevation Docs 2023-10-23 11:21:48 -04:00
KCaverly
0dfbfdd164 catchup with main 2023-10-23 17:21:37 +02:00
Nathan Sobo
192b3512fd Merge branch 'gpui2-drag-drop' into zed2 2023-10-23 17:18:07 +02:00
Nate Butler
3a326bfa7e 🤦 Remove references to system_color 2023-10-23 11:05:17 -04:00
Nate Butler
dd55ccef34 Merge branch 'n/d' into zed2 2023-10-23 11:01:36 -04:00
Nate Butler
1e13e273d2 Add ThemeColor interface for UI coloring and remove redundancy 2023-10-23 11:01:04 -04:00
Nate Butler
438cf529bb Remove duplicate ThemeColor defs 2023-10-23 11:00:45 -04:00
Nathan Sobo
ec0b2e5430 Add on_drop listeners 2023-10-23 16:59:16 +02:00
Antonio Scandurra
21d4546a86 WIP 2023-10-23 16:39:30 +02:00
Antonio Scandurra
7832120a4c WIP 2023-10-23 16:38:34 +02:00
Antonio Scandurra
efbf0c828d WIP 2023-10-23 16:38:34 +02:00
Nate Butler
c9d214e8ef Start crate doc 2023-10-23 10:21:30 -04:00
Nathan Sobo
38a7b39070 Don't start dragging until you move to 2px 2023-10-23 16:20:01 +02:00
Nathan Sobo
239b0c2f71 Clear active state when drag starts 2023-10-23 16:10:04 +02:00
Conrad Irwin
6e4e19d8fc Fix infinite loop in select all 2023-10-23 16:08:12 +02:00
Nate Butler
cc445f7cef Start scaffolding out the Copilot Modal UI
Co-Authored-By: Mikayla Maki <mikayla.c.maki@gmail.com>
2023-10-23 10:00:02 -04:00
Nathan Sobo
258fcaea94 Position drag handle relative to cursor 2023-10-23 15:20:33 +02:00
Nathan Sobo
fc927f7406 Checkpoint 2023-10-23 15:14:10 +02:00
Nathan Sobo
d1adce5890 Show red box when dragging 2023-10-23 15:09:22 +02:00
Max Brunsfeld
a5836b0337 Add chat mentions and a notifications panel (#3121)
### Todo

* Displaying notifications
    * [x] show them in panel
    * [x] indicate read/unread status
    * [x] allow requesting more by scrolling down
    * [ ] style the panel
    * [x] style the status bar icon
* Chat mentions
    * [x] highlight mentions when editing message
    * [x] persist mentions
    * [x] highlight mentions when rendering saved messages
* Creating notifications
    * [x] contact request received
    * [x] contact request accepted
    * [x] channel invitation received
    * [x] mentioned in a chat message
* [x] Indicate responses to notifications
* Mark notifications as read
* [x] when viewing a contact request acceptance in the notification
panel
    * [x] responding to contact invite
    * [x] responding to channel invite
    * [x] viewing a channel message mention
* [x] Replace previous notifications with auto-dismissing,
non-interactive toasts

### Release Notes:

- Added a notification panel, which displays notifications about contact
requests and channel invitations.
- Added the ability to `@`-mention users in the chat, so that they will
be notified of your message.
2023-10-23 15:05:05 +02:00
Antonio Scandurra
4e6fb9034d WIP 2023-10-23 14:59:57 +02:00
Max Brunsfeld
4d491ca3a1 Tweak styling of notifications
Co-authored-by: Piotr <piotr@zed.dev>
2023-10-23 14:58:03 +02:00
Max Brunsfeld
2f0eaafc39 Format timestamps more tersely in the notification panel
Co-authored-by: Piotr <piotr@zed.dev>
2023-10-23 14:34:38 +02:00
Nathan Sobo
96f2c4a9de Checkpoint 2023-10-23 14:15:12 +02:00
KCaverly
4e90e45999 move embedding truncation to base model 2023-10-23 14:07:45 +02:00
Max Brunsfeld
8766e5f0d0 Avoid flickering toast when mentioned in already-visible chat channel
Co-authored-by: Piotr <piotr@zed.dev>
2023-10-23 13:48:49 +02:00
Piotr Osiewicz
812ff9a97d Account for markdown styling in mentions offset calculation.
This also means that we can support smart punctuation.

Co-authored-by: Max <max@zed.dev>
2023-10-23 12:50:57 +02:00
Antonio Scandurra
a72434f67b WIP 2023-10-23 12:16:33 +02:00
Antonio Scandurra
c0e8ae5dfa WIP 2023-10-23 11:53:24 +02:00
Antonio Scandurra
0de4a93ec7 WIP 2023-10-23 11:43:08 +02:00
Nathan Sobo
da8919002f Fix runtime errors 2023-10-23 11:34:35 +02:00
Antonio Scandurra
5247f217fd Checkpoint 2023-10-23 11:06:58 +02:00
Antonio Scandurra
56462ef793 Checkpoint 2023-10-23 10:59:29 +02:00
Conrad Irwin
b495669c86 Fix neovim tests with angle brackets 2023-10-22 22:24:35 -06:00
Conrad Irwin
3cf98c4fae Add | as a bracket and a motion
Although vim/nvim doesn't have | as brackets, it's common in langauges like Rust
and Ruby, and I expect it to work.
2023-10-22 22:17:34 -06:00
Conrad Irwin
9589f5573d Fix some bugs with vim objects
- softwrap interaction
- correct selection if cursor is on opening marker
2023-10-22 21:44:34 -06:00
Antonio Scandurra
a0b667a2ca WIP 2023-10-22 19:56:25 +02:00
Antonio Scandurra
e7c04d4aca Checkpoint 2023-10-22 18:56:11 +02:00
Antonio Scandurra
72435af170 Checkpoint 2023-10-22 18:34:45 +02:00
Antonio Scandurra
ce75be91e1 Checkpoint 2023-10-22 18:25:24 +02:00
Antonio Scandurra
db6a3e1783 WIP 2023-10-22 18:01:00 +02:00
Max Brunsfeld
763b13e700 Avoid duplicate acks for messages with mentions 2023-10-22 18:00:02 +02:00
Max Brunsfeld
59adcc1744 Load more notifications when scrolling down 2023-10-22 17:10:21 +02:00
Antonio Scandurra
50bbdd5cab WIP 2023-10-22 16:53:59 +02:00
Antonio Scandurra
5d10dc7e58 WIP 2023-10-22 16:49:14 +02:00
Antonio Scandurra
7171818d24 WIP 2023-10-22 16:36:29 +02:00
Antonio Scandurra
48033463c8 WIP 2023-10-22 16:33:59 +02:00
Antonio Scandurra
6ffeb048b3 WIP 2023-10-22 16:27:23 +02:00
Max Brunsfeld
23400a5a70 Start styling notification panel 2023-10-22 16:03:33 +02:00
Max Brunsfeld
c20e781441 Inherit PATH in zed-local script 2023-10-22 16:03:13 +02:00
KCaverly
2b780ee7b2 add base model to EmbeddingProvider, not yet leveraged for truncation 2023-10-22 15:00:09 +02:00
KCaverly
d1dec8314a move OpenAIEmbeddings to OpenAIEmbeddingProvider in providers folder 2023-10-22 14:46:22 +02:00
KCaverly
d813ae8845 replace OpenAIRequest with more generalized Box<dyn CompletionRequest> 2023-10-22 14:33:19 +02:00
KCaverly
05ae978cb7 move OpenAICompletionProvider to providers location 2023-10-22 13:57:13 +02:00
KCaverly
3712794e56 move OpenAILanguageModel to providers folder 2023-10-22 13:47:28 +02:00
KCaverly
a62baf34f2 rename templates to prompts in ai crate 2023-10-22 13:46:49 +02:00
KCaverly
0b57ab7303 cleaned up truncate vs truncate start 2023-10-22 13:34:22 +02:00
Antonio Scandurra
5423012368 WIP 2023-10-22 13:15:29 +02:00
Max Brunsfeld
234ccbe51f Merge branch 'main' into notifications 2023-10-22 12:25:30 +02:00
Max Brunsfeld
4a0358a513 Mark contact acceptance notifications as read automatically 2023-10-22 12:22:47 +02:00
Antonio Scandurra
f4135e6bcf WIP 2023-10-22 12:21:28 +02:00
Max Brunsfeld
fce09e8c92 Mark chat mention notifications as read when viewing the message 2023-10-22 11:57:10 +02:00
Nathan Sobo
909fbb9538 Checkpoint 2023-10-21 19:07:59 +02:00
Nathan Sobo
89f4718ea1 Checkpoint 2023-10-21 18:48:30 +02:00
Antonio Scandurra
2e2825ae98 WIP 2023-10-21 18:41:09 +02:00
Antonio Scandurra
3740c9d852 WIP 2023-10-21 18:33:08 +02:00
Antonio Scandurra
7bb99c9b9c WIP 2023-10-21 18:30:44 +02:00
Antonio Scandurra
aa3fb28f81 WIP 2023-10-21 18:21:14 +02:00
Antonio Scandurra
b7d30fca2b WIP 2023-10-21 17:52:47 +02:00
Kyle Caverly
ef1a69156d update semantic search to use keychain as fallback (#3151)
Use the keychain for authenticating as fallback when api_key is not
present in environment variables.

Release Notes:

- Add consistency between OPENAI_API_KEY management in Semantic Search
and Assistant
2023-10-21 10:34:32 -04:00
KCaverly
4835c77840 update text for project search if not authenticated 2023-10-21 10:28:54 -04:00
KCaverly
106115676d update semantic search to use keychain as fallback 2023-10-21 10:19:50 -04:00
Antonio Scandurra
e4fe9538d7 Checkpoint 2023-10-21 16:01:47 +02:00
Antonio Scandurra
f3979a9f28 Checkpoint 2023-10-21 15:59:52 +02:00
Piotr Osiewicz
fc37abc356 vcs_menu: Query branches on open instead of per keystroke (#3144)
Release Notes:

- Improved performance of branch picker by querying branches on menu
open instead of querying once per each keystroke. (fixes
zed-industries/community#2161)
2023-10-21 14:01:01 +02:00
Mikayla
b8936e5fca Finish room initialization concurrency test 2023-10-21 03:15:18 -07:00
Mikayla
7e4de2ac16 Restore synchronization 2023-10-21 03:08:25 -07:00
Mikayla
5365fd2149 WIP: Add test for panic, temporarily rollback synchronization changes 2023-10-21 03:05:57 -07:00
Kirill Bulatov
26638748bb Move prettier parsers data into languages from LSP adapters (#3150)
Release Notes:

- Fixed incorrect prettier parsers sometimes being applied to certain
files
2023-10-21 02:22:21 +03:00
Kirill Bulatov
7748848b6e Move prettier parsers data into languages from LSP adapters 2023-10-21 01:14:03 +02:00
Conrad Irwin
0dae0f6027 pixel columns (#3052)
@ForLoveOfCats and I found a few speedups that make this acceptably fast
(able to update ~10k selections in <100ms), so the remaining work here
is to fix the tests, and then ship!

Release notes:
- Updated up/down to work based on pixel positions
([#1966](https://github.com/zed-industries/community/issues/1966))
([#759](https://github.com/zed-industries/community/issues/759))
- vim: Fixed off-by-one in visual block mode
([2123](https://github.com/zed-industries/community/issues/2123))
2023-10-20 15:01:27 -06:00
Conrad Irwin
2de34a905d Hide any circumstantial evidence that this didn't work perfectly first
time
2023-10-20 14:45:37 -06:00
Marshall Bowers
7719ed0d6c Remove unnecessary iterator 2023-10-20 16:34:33 -04:00
Conrad Irwin
fd8e6110b1 Fix panic by disallowing multiple room joins 2023-10-20 14:34:25 -06:00
Conrad Irwin
15fe2627d0 Remove screen sharing indicator (#3148)
Release Notes:

- Removed the screen-sharing indicator from calls. Newer versions of
macOS have a better indicator, and ours panics when you click on it.
2023-10-20 14:33:45 -06:00
Marshall Bowers
cbdd1d6d6c Use children instead of when 2023-10-20 16:30:52 -04:00
Marshall Bowers
080638216a Wire up NotificationsPanel story 2023-10-20 16:30:45 -04:00
Marshall Bowers
4dc2440024 Enable text wrapping for Details 2023-10-20 16:13:54 -04:00
Marshall Bowers
a6d8915b6c Document more styles 2023-10-20 15:59:47 -04:00
Conrad Irwin
f422a3c5d0 Add "workspace: Toggle Vim Mode" (#3147)
Co-Authored-By: Marshall <elliott.codes@gmail.com>

Release Notes:

- vim: Add "Toggle Vim Mode" command
2023-10-20 13:07:51 -06:00
Conrad Irwin
31872227f1 Remove screen sharing indicator
This is now redundant given macOS has the same icon, and it panics when
you click on it :D.
2023-10-20 13:04:45 -06:00
Conrad Irwin
fae5b1e391 Fix build columnar selection logic 2023-10-20 12:55:41 -06:00
Conrad Irwin
43d682f6b8 Handle pixel-down to last line when no trailing newline 2023-10-20 12:46:14 -06:00
Conrad Irwin
352a554c74 Fix bug in vim visual block mode 2023-10-20 11:49:10 -06:00
Conrad Irwin
c7991ef04c Add "workspace: Toggle Vim Mode"
Co-Authored-By: Marshall <elliott.codes@gmail.com>
2023-10-20 11:41:13 -06:00
Conrad Irwin
1c36134cf9 Fix single column vim selections 2023-10-20 11:17:19 -06:00
Conrad Irwin
b596b4153f Fix test 2023-10-20 10:34:09 -06:00
Julia
cc7df91cc6 Whoops (#3146)
Whoops, this is what I get for working past-midnight lol, I never pushed
the last commit for https://github.com/zed-industries/zed/pull/3141 so
this PR remedies that

Release Notes:
- NA
2023-10-20 12:07:33 -04:00
Julia
7c3a8a3774 Add Tailwind autocomplete in ERB, PHP, and Laravel Blade 2023-10-20 12:06:05 -04:00
Julia
808976ee28 Magic incantations for Tailwind autocomplete in more languages (#3141)
Release Notes:
- Added Tailwind autocomplete to Svelte files
([#2029](https://github.com/zed-industries/community/issues/2029)).
- Added Tailwind autocomplete to Phoenix HEEX files
([#2057](https://github.com/zed-industries/community/issues/2057)).
- Added Tailwind autocomplete to Phoenix ~H sigil in Elixir files
([#2057](https://github.com/zed-industries/community/issues/2057)).
- Added Tailwind autocomplete to ERB files
([#2153](https://github.com/zed-industries/community/issues/2153)).
- Added Tailwind autocomplete to PHP files
([#2159](https://github.com/zed-industries/community/issues/2159)).
- Added Tailwind autocomplete to Laravel Blade files
([#2159](https://github.com/zed-industries/community/issues/2159)).
2023-10-20 12:02:55 -04:00
Antonio Scandurra
825c352b6a Checkpoint 2023-10-20 17:58:37 +02:00
Marshall Bowers
b0b7f27f3a Merge branch 'gpui2' of github.com:zed-industries/zed into gpui2 2023-10-20 11:32:11 -04:00
Marshall Bowers
c831c5749a Remove more unneeded Clone bounds 2023-10-20 11:32:10 -04:00
Antonio Scandurra
1409fc0da3 Checkpoint 2023-10-20 17:31:47 +02:00
Marshall Bowers
901af8de3f Remove Clone bound from Avatar 2023-10-20 11:13:13 -04:00
Marshall Bowers
d9a030157e Remove Clone bound from Keybinding 2023-10-20 11:12:37 -04:00
Marshall Bowers
a0996c1807 Remove Clone bound from ChatMessage 2023-10-20 11:10:13 -04:00
Antonio Scandurra
a3dcaf21cb Checkpoint 2023-10-20 16:31:03 +02:00
Antonio Scandurra
8ad7ebf02f Checkpoint 2023-10-20 16:31:00 +02:00
Piotr Osiewicz
e32aa95092 Touch up render function 2023-10-20 15:33:55 +02:00
Piotr Osiewicz
6844bb6510 Highlight mentions in the Saved chat messages 2023-10-20 15:30:36 +02:00
Antonio Scandurra
47aa387b91 Checkpoint 2023-10-20 15:13:53 +02:00
Antonio Scandurra
6150df71b2 Checkpoint 2023-10-20 15:08:54 +02:00
Antonio Scandurra
fd94f2a5b5 Checkpoint 2023-10-20 12:59:02 +02:00
Antonio Scandurra
847a1cb068 Checkpoint 2023-10-20 12:23:22 +02:00
Antonio Scandurra
c1f7c9bb87 Checkpoint 2023-10-20 12:12:06 +02:00
Antonio Scandurra
ac181183cc Checkpoint 2023-10-20 11:46:29 +02:00
Antonio Scandurra
8a11053f1f Checkpoint 2023-10-20 11:44:19 +02:00
Antonio Scandurra
b0acaed02f Checkpoint 2023-10-20 11:08:24 +02:00
Antonio Scandurra
c3a917f8b3 Checkpoint 2023-10-20 11:02:00 +02:00
Antonio Scandurra
766ee836b5 Checkpoint 2023-10-20 11:00:52 +02:00
Antonio Scandurra
68bc22f9cd Checkpoint 2023-10-20 10:55:06 +02:00
Conrad Irwin
e03e5364d2 Wire through LiveKit permissions 2023-10-19 23:23:33 -06:00
Conrad Irwin
aa4b8d7246 Fix notifications for membership changes too 2023-10-19 23:05:06 -06:00
Nate Butler
0609628645 List actions for ListDetailsEntries 2023-10-19 20:17:41 -04:00
Nate Butler
32028fbbb1 Checkpoint – Notifications Panel 2023-10-19 20:04:21 -04:00
Antonio Scandurra
e3d948f60b Checkpoint 2023-10-19 23:56:43 +02:00
Antonio Scandurra
40c6f738b4 Checkpoint 2023-10-19 23:54:17 +02:00
Antonio Scandurra
296fc92721 Checkpoint 2023-10-19 23:47:32 +02:00
Antonio Scandurra
21b4ae3fdc Merge 2023-10-19 23:40:38 +02:00
Antonio Scandurra
d69105bb77 Checkpoint 2023-10-19 23:39:22 +02:00
Antonio Scandurra
4a6c8ff809 Checkpoint 2023-10-19 23:35:09 +02:00
Antonio Scandurra
1f6d9369d6 Checkpoint 2023-10-19 23:30:14 +02:00
Antonio Scandurra
3a70f02cbf Checkpoint 2023-10-19 23:21:26 +02:00
Max Brunsfeld
44cb55fbe9 Fix scrolling to messages on clicking of notifications 2023-10-19 14:04:34 -07:00
Antonio Scandurra
dd7e1c505c Checkpoint 2023-10-19 23:00:19 +02:00
Marshall Bowers
94f0140f62 Assign each IconButton an ID based on the icon 2023-10-19 16:50:33 -04:00
Marshall Bowers
28b29d0985 Give each Tab its own ID 2023-10-19 16:42:21 -04:00
Marshall Bowers
52f2521f6a Wire up active style for Tab 2023-10-19 16:37:54 -04:00
Marshall Bowers
e1e8b63eb5 Remove Clone bound from IconElement 2023-10-19 16:37:15 -04:00
Marshall Bowers
a1aba32209 Remove Clone bound from Button and Details 2023-10-19 16:35:44 -04:00
Marshall Bowers
fa3916d1bf Remove Clone bound for HighlightedLabel 2023-10-19 16:34:08 -04:00
Marshall Bowers
3ac7ef90ef Remove Clone bound for Input 2023-10-19 16:32:48 -04:00
Marshall Bowers
4050bf43c4 Remove Clone bound for Label 2023-10-19 16:31:24 -04:00
Max Brunsfeld
851d7d0bc4 Rename NewNotification proto message to AddNotification 2023-10-19 13:29:14 -07:00
Antonio Scandurra
0fbf84e6bc Checkpoint 2023-10-19 22:28:42 +02:00
Marshall Bowers
d91b423a45 Remove unused Interactive impl for FakeSettings 2023-10-19 16:16:09 -04:00
Marshall Bowers
2bbce2f0fd Merge branch 'gpui2' of github.com:zed-industries/zed into gpui2 2023-10-19 16:14:39 -04:00
Marshall Bowers
1be1bffb29 Wire up active style for Breadcrumb 2023-10-19 16:13:25 -04:00
Marshall Bowers
92542e6b94 Identify IconButton 2023-10-19 16:12:21 -04:00
Kyle Caverly
9c49191031 decrease temperature for inline assist on code content (#3145)
"Temperature" is a parameter in OpenAI GPT models, to control for
randomess in the generated content. To decrease the probability of
either escaping the markdown blocks and creating invalid code, we
decreased temperature for all Non-Prose files. For Markdown or Plain
Text, in which more creativity may be a good thing, we increase the
temperature to allow for more randomness. Along with this, we ask the
generate inline prompt to include only the code and not markdown blocks,
as it appears that lower temperature may decrease the probability of
introducing random markdown blocks.

Release Notes (Internal Only):
- Decrease temperature for inline assist on code content.
2023-10-19 16:11:29 -04:00
Marshall Bowers
3932c1064e Merge branch 'gpui2' into gpui2-theme-to-color 2023-10-19 16:10:44 -04:00
Antonio Scandurra
d446b91117 Checkpoint 2023-10-19 22:10:39 +02:00
Antonio Scandurra
673257bbbc Checkpoint 2023-10-19 22:05:01 +02:00
Antonio Scandurra
180ed7da81 Checkpoint 2023-10-19 22:05:01 +02:00
Antonio Scandurra
38d8ab2285 Checkpoint 2023-10-19 22:05:01 +02:00
Antonio Scandurra
c17a4d8453 Checkpoint 2023-10-19 22:05:01 +02:00
Antonio Scandurra
e74285f6d2 Checkpoint 2023-10-19 22:05:01 +02:00
Max Brunsfeld
33f06d3104 Index notifications to allow faster lookup by kind, entity id 2023-10-19 13:03:27 -07:00
Max Brunsfeld
841cfac1f8 Fix filtering when providing non-admins info about channel members 2023-10-19 12:54:47 -07:00
KCaverly
71fb23f769 decrease temperature for inline assist on code content 2023-10-19 15:44:49 -04:00
Max Brunsfeld
150ed641ae Render read notifications in a different color 2023-10-19 12:40:10 -07:00
Max Brunsfeld
5b90507310 Navigate to chat messages when clicking them in the notification panel 2023-10-19 12:31:45 -07:00
Conrad Irwin
0eff7c6ca9 Add read-only channel notes support
Fix some bugs where ChannelNotes and ChannelChat had old cached channel
instances
2023-10-19 13:20:49 -06:00
Marshall Bowers
2189983323 Add missing Clone bounds 2023-10-19 15:02:00 -04:00
Kyle Caverly
e45491d2f8 Introduction of PromptTemplate and PromptChains (#3139)
(This PR was written 100% by the Inline Assistant)

This PR brings in new components into our ai and assistant crates namely
PromptTemplate and PromptChains. They offer a new way to generate
prompts that allow for a more flexible and dynamic approach than before.

Release Notes:
- Introduced PromptTemplate: an abstract base for individual parts of
the prompt.
- Added PromptChains: manage multiple PromptTemplates, sort them based
on priority and regulate the output size based on tokens.
- Provided new PromptArguments structure to encapsulate arguments needed
for PromptTemplate.
    - Extended repository_context to include PromptCodeSnippet.
2023-10-19 14:44:43 -04:00
Nate Butler
58650b7d2d Checkpoint - Still Broken 2023-10-19 14:38:01 -04:00
KCaverly
19c2df4822 outlined when truncation is taking place in the prompt 2023-10-19 14:33:52 -04:00
Marshall Bowers
d5fc831321 Restore more active styles 2023-10-19 14:23:45 -04:00
Marshall Bowers
743949753a Fix mutual-exclusivity of right panels 2023-10-19 14:19:10 -04:00
Marshall Bowers
184f5f2397 Restore active styles for Inputs 2023-10-19 14:17:35 -04:00
Marshall Bowers
597aa0475e Remove unused import 2023-10-19 14:10:13 -04:00
Marshall Bowers
70984faee2 Merge branch 'gpui2' of github.com:zed-industries/zed into gpui2 2023-10-19 14:06:35 -04:00
Marshall Bowers
e657e4d1d1 Wire up livestream debug toggle 2023-10-19 14:06:31 -04:00
Max Brunsfeld
d62f114c02 Create notifications for mentioned users
Co-authored-by: Piotr <piotr@zed.dev>
2023-10-19 10:52:40 -07:00
Antonio Scandurra
9e20ccc01a Checkpoint 2023-10-19 19:51:05 +02:00
Antonio Scandurra
1343ea66c9 Checkpoint 2023-10-19 19:51:05 +02:00
Antonio Scandurra
2b90b8d6b7 Checkpoint 2023-10-19 19:51:05 +02:00
Antonio Scandurra
90d34c1251 Checkpoint 2023-10-19 19:51:05 +02:00
Antonio Scandurra
93ff79febf Checkpoint 2023-10-19 19:51:05 +02:00
Antonio Scandurra
7fef03a7db Checkpoint 2023-10-19 19:51:05 +02:00
Antonio Scandurra
30269381e8 Checkpoint 2023-10-19 19:51:05 +02:00
Antonio Scandurra
9985f388ac Checkpoint 2023-10-19 19:51:05 +02:00
Marshall Bowers
a869de3b1f Add ability to toggle user settings 2023-10-19 13:38:19 -04:00
Marshall Bowers
4aac733238 Pass the settings to build_child 2023-10-19 13:23:08 -04:00
Marshall Bowers
7ed891e0c6 Merge branch 'gpui2' into gpui2ui-debug-panel 2023-10-19 13:04:37 -04:00
Marshall Bowers
a1f7a97ff5 Pull the settings from the global state 2023-10-19 13:02:32 -04:00
Nate Butler
bca97f7186 Checkpoint – Broken 2023-10-19 12:58:17 -04:00
Marshall Bowers
61e09ff532 Checkpoint: Thread WindowContext through to user_settings 2023-10-19 12:58:17 -04:00
Nate Butler
8e465b4393 Add basic debug panel 2023-10-19 12:09:39 -04:00
Marshall Bowers
b16d37953d Use line_height in z_index stories 2023-10-19 12:06:05 -04:00
Marshall Bowers
f5c76d93bc Add missing Arc for on_click handler 2023-10-19 10:25:54 -04:00
Antonio Scandurra
98c0e00a2c Checkpoint 2023-10-19 15:52:17 +02:00
Antonio Scandurra
3d8e9a593e Checkpoint 2023-10-19 15:44:02 +02:00
Antonio Scandurra
ffa3362e16 Checkpoint 2023-10-19 15:36:37 +02:00
Kirill Bulatov
999e9c3d5d Sort hint request ranges before asserting to avoid flackiness (#3142) 2023-10-19 11:11:47 +03:00
Kirill Bulatov
40104c06e2 Sort hint request ranges before asserting to avoid flackiness 2023-10-19 11:05:47 +03:00
Julia
36731ba6b3 Magic incantations for Tailwind autocomplete in Svelte, Elixir ~H, Heex 2023-10-19 01:54:42 -04:00
Conrad Irwin
9d07561d99 Merge branch 'main' into pixel-columns 2023-10-18 23:00:56 -06:00
Conrad Irwin
3eb8aa8085 Refactor TextLayoutDetails construction 2023-10-18 22:56:11 -06:00
Conrad Irwin
138fa45ecb recert config change 2023-10-18 22:23:38 -06:00
Conrad Irwin
cb76b2a6ad Make vim visual block work better 2023-10-18 22:23:06 -06:00
Conrad Irwin
3853009d92 Refactor to avoid some (mostly hypothetical) races
Tidy up added code to reduce duplicity of X and X_internals.
2023-10-18 21:42:10 -06:00
Max Brunsfeld
5257fb8533 Fix compile error in db seed executable 2023-10-18 18:05:51 -07:00
Max Brunsfeld
ac54d2b927 Fix possibility of extra mention insertion on nonce collision 2023-10-18 18:04:56 -07:00
Nate Butler
e34a488b55 WIP 2023-10-18 20:58:24 -04:00
Max Brunsfeld
b07f9fe3b5 Merge branch 'main' into notifications 2023-10-18 17:20:04 -07:00
Max Brunsfeld
d05404a4df Persist chat mentions 2023-10-18 16:56:03 -07:00
Nate Butler
c22778bd92 Remove debugs 2023-10-18 19:15:17 -04:00
Nate Butler
65828c14fc Use ui_size to build icon button 2023-10-18 19:12:02 -04:00
KCaverly
178a84bcf6 progress on smarter truncation strategy for file context 2023-10-18 17:56:59 -04:00
Conrad Irwin
2b11463567 Fix notifications on channel changes 2023-10-18 15:56:33 -06:00
Nate Butler
7cb00aeb34 Update line heights, buttons to respond to UI scale
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-10-18 17:55:17 -04:00
Nate Butler
7b2782c0f6 Use ui_size to set relative font sizes
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-10-18 17:02:57 -04:00
KCaverly
587fd707ba added smarter error handling for file_context prompts without provided buffers 2023-10-18 16:40:09 -04:00
KCaverly
f59f2eccd5 added dumb truncation strategies to file_context and generate 2023-10-18 16:32:14 -04:00
KCaverly
a0e01e075d fix for error when truncating a length less than the string length 2023-10-18 16:31:29 -04:00
Nate Butler
3f076eeda6 Remove unused code from storybook 2
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-10-18 16:27:34 -04:00
KCaverly
32853c2044 added initial placeholder for truncation without a valid strategy 2023-10-18 16:23:53 -04:00
Nate Butler
a35d350cbd Update storybook2 to run the workspace by default
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-10-18 16:21:04 -04:00
Nate Butler
a6a50113da Merge branch 'n/gpui2ui-settings' into gpui2 2023-10-18 16:17:57 -04:00
Nate Butler
8b637e194e Update approach to settings
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-10-18 16:16:58 -04:00
KCaverly
473067db31 update PromptPriority to accomodate for both Mandatory and Ordered prompts 2023-10-18 15:56:39 -04:00
Nate Butler
289255d67a Update UI elements and implement user settings for customization 2023-10-18 15:42:10 -04:00
Max Brunsfeld
199740902a Fix possibility of infinite loop in selections_with_autoclose_regions (#3138)
Previously, that method could loop forever if the editor's autoclose
regions had unexpected selection ids.

Something must have changed recently that allowed this invariant to be
violated, but regardless, this code should not have relied on that
invariant to terminate like this.
2023-10-18 11:34:35 -07:00
Marshall Bowers
549e78d7b3 Use SharedString for Inputs 2023-10-18 14:28:28 -04:00
KCaverly
aa1825681c update the assistant panel to use new prompt templates 2023-10-18 14:20:12 -04:00
Marshall Bowers
5a42ca6772 Merge branch 'gpui2' of github.com:zed-industries/zed into gpui2 2023-10-18 14:19:29 -04:00
Marshall Bowers
8dad3ad8ea Use SharedString for Lists 2023-10-18 14:19:26 -04:00
Max Brunsfeld
655c9ece2d Fix possibility of infinite loop in selections_with_autoclose_regions
Previously, that method could loop forever if the editor's autoclose
regions had unexpected selection ids.

Co-authored-by: Piotr <piotr@zed.dev>
2023-10-18 11:16:14 -07:00
Antonio Scandurra
159d798c34 Checkpoint 2023-10-18 20:13:19 +02:00
Marshall Bowers
856d23626f Use SharedString for Palette and PaletteItems 2023-10-18 14:03:13 -04:00
Antonio Scandurra
8890636a56 Checkpoint 2023-10-18 19:30:53 +02:00
Joseph T. Lyons
4e68b588be collab 0.25.0 2023-10-18 13:17:17 -04:00
KCaverly
b9bb27512c fix template ordering during prompt chain generation 2023-10-18 13:10:31 -04:00
KCaverly
fa61c1b9c1 add prompt template for generate inline content 2023-10-18 13:03:11 -04:00
Antonio Scandurra
a0634fa79e Checkpoint 2023-10-18 18:39:47 +02:00
Antonio Scandurra
03937a9f89 WIP 2023-10-18 18:39:47 +02:00
Marshall Bowers
24086191af Split Label and HighlightedLabel 2023-10-18 12:37:47 -04:00
Joseph T. Lyons
cf429ba284 v0.110.x dev 2023-10-18 12:31:12 -04:00
KCaverly
178a79fc47 added prompt template for file context without truncation 2023-10-18 12:29:10 -04:00
Marshall Bowers
f0b9e9a89d Use SharedString for Keybindings 2023-10-18 12:26:51 -04:00
Marshall Bowers
6e3393c93f Use SharedString for Buttons 2023-10-18 10:59:42 -04:00
Marshall Bowers
aa41f97e38 Merge branch 'gpui2' of github.com:zed-industries/zed into gpui2 2023-10-18 10:58:54 -04:00
Marshall Bowers
2b53c67789 Use SharedString for Labels 2023-10-18 10:58:50 -04:00
Antonio Scandurra
731ce1721a Checkpoint 2023-10-18 16:55:55 +02:00
Marshall Bowers
8321b9430e Wire up hover styles on Buttons 2023-10-18 10:53:42 -04:00
Marshall Bowers
7f69350e4d Fix typo in doc comment 2023-10-18 10:45:20 -04:00
Marshall Bowers
1a156c1060 Merge branch 'gpui2' of github.com:zed-industries/zed into gpui2 2023-10-18 10:44:43 -04:00
Antonio Scandurra
7149f99f02 Checkpoint 2023-10-18 16:43:20 +02:00
Marshall Bowers
5491398a64 Merge branch 'gpui2' into gpui2-ui 2023-10-18 10:43:15 -04:00
KCaverly
4b8771f3e2 Merge branch 'main' of github.com:zed-industries/zed into prompt_template 2023-10-18 10:42:16 -04:00
Antonio Scandurra
0e4bd485e0 Checkpoint 2023-10-18 16:36:48 +02:00
Antonio Scandurra
fecb27232e Checkpoint 2023-10-18 16:30:48 +02:00
Antonio Scandurra
f58a9bad42 Checkpoint 2023-10-18 16:30:03 +02:00
Antonio Scandurra
f4d50c4dca Checkpoint 2023-10-18 16:27:58 +02:00
Antonio Scandurra
036e266bae Checkpoint 2023-10-18 16:21:52 +02:00
Antonio Scandurra
d98c347902 Checkpoint 2023-10-18 16:13:36 +02:00
Antonio Scandurra
1270bcc6ed Checkpoint 2023-10-18 16:10:58 +02:00
Antonio Scandurra
8914b94577 Checkpoint 2023-10-18 15:46:17 +02:00
Antonio Scandurra
acca8ea786 Checkpoint 2023-10-18 15:24:35 +02:00
Antonio Scandurra
eaef1c8b8e Checkpoint 2023-10-18 15:17:22 +02:00
Antonio Scandurra
0dfe70125b Checkpoint 2023-10-18 14:41:46 +02:00
Antonio Scandurra
5afd83c883 Checkpoint 2023-10-18 14:36:16 +02:00
Mikayla
0ce1ec5d15 Restrict DAG-related functionality, but retain infrastructure for implementing symlinks 2023-10-18 05:28:05 -07:00
Antonio Scandurra
a61b34cab5 Checkpoint 2023-10-18 14:12:50 +02:00
Antonio Scandurra
ad1b96720a Checkpoint 2023-10-18 13:36:26 +02:00
Antonio Scandurra
296a2b8e5d Rename fill to bg 2023-10-18 09:39:23 +02:00
Antonio Scandurra
597a9f9548 Use text color to paint SVGs 2023-10-18 09:39:20 +02:00
Antonio Scandurra
e031718747 Checkpoint 2023-10-18 09:22:49 +02:00
Antonio Scandurra
6452ff203e Checkpoint 2023-10-18 09:15:44 +02:00
Conrad Irwin
70aed4a605 Sync Role as part of channels
Begin to fix guest notifications
2023-10-17 22:48:44 -06:00
Max Brunsfeld
821419ee5b Add a unit test for the mention-searching logic in MessageEditor 2023-10-17 20:15:49 -07:00
Conrad Irwin
72ed8a6dd2 Allow guests to chat 2023-10-17 19:03:02 -06:00
Max Brunsfeld
ee87ac2f9b Start work on chat mentions 2023-10-17 17:59:42 -07:00
Max Brunsfeld
660021f5e5 Fix more issues with the channels panel
* Put the newest notifications at the top
* Have at most 1 notification toast, which is non-interactive,
  but focuses the notification panel on click, and auto-dismisses
  on a timer.
2023-10-17 15:43:06 -07:00
Conrad Irwin
783f05172b Make sure guests join as guests 2023-10-17 15:40:23 -06:00
Marshall Bowers
79e0509bf9 Begin documenting flex styles 2023-10-17 17:32:30 -04:00
KCaverly
02853bbd60 added prompt template for repository context 2023-10-17 17:29:07 -04:00
Marshall Bowers
218922d9f8 Document gap styles 2023-10-17 17:21:52 -04:00
Marshall Bowers
7a2b04a5d1 Document border width styles 2023-10-17 16:47:37 -04:00
Marshall Bowers
dc32e56a9c Document rounded styles 2023-10-17 16:35:21 -04:00
Marshall Bowers
490cc7ded6 Add more placeholder doc strings 2023-10-17 16:24:36 -04:00
KCaverly
a874a09b7e added openai language model tokenizer and LanguageModel trait 2023-10-17 16:21:03 -04:00
Antonio Scandurra
4db0350f06 Checkpoint 2023-10-17 22:16:48 +02:00
Marshall Bowers
edc52e5b28 Tweak grammar 2023-10-17 16:16:38 -04:00
Marshall Bowers
a1a1284696 Document top/right/bottom/left styles 2023-10-17 16:13:55 -04:00
Marshall Bowers
6f849e8f64 Document padding styles 2023-10-17 16:10:30 -04:00
Marshall Bowers
3e32504526 Document .size() 2023-10-17 16:07:52 -04:00
Marshall Bowers
6e84d3cce0 Document margin styles 2023-10-17 16:06:11 -04:00
Marshall Bowers
8c02de6c61 Document width and height styles 2023-10-17 16:06:07 -04:00
Marshall Bowers
f09df31480 Emit doc strings for custom value setters 2023-10-17 16:01:36 -04:00
Antonio Scandurra
a8697df9e3 Checkpoint 2023-10-17 21:54:28 +02:00
Marshall Bowers
6f30d6b4d0 Add placeholder doc strings for style prefixes 2023-10-17 15:53:54 -04:00
Antonio Scandurra
61490fbaa8 Checkpoint 2023-10-17 21:40:24 +02:00
Antonio Scandurra
4ce7f059c3 Checkpoint 2023-10-17 21:37:09 +02:00
Antonio Scandurra
deb0e57c49 Checkpoint 2023-10-17 21:11:52 +02:00
Max Brunsfeld
52834dbf21 Add notifications integration test 2023-10-17 11:21:38 -07:00
Max Brunsfeld
f2d36a47ae Generalize notifications' actor id to entity id
This way, we can retrieve channel invite notifications when
responding to the invites.
2023-10-17 10:34:50 -07:00
Antonio Scandurra
19c1a54fea WIP 2023-10-17 18:45:01 +02:00
Antonio Scandurra
850d43c1e8 WIP 2023-10-17 18:37:53 +02:00
Antonio Scandurra
ec368c8102 WIP 2023-10-17 18:28:58 +02:00
Max Brunsfeld
f225039d36 Display invite response buttons inline in notification panel 2023-10-17 09:12:55 -07:00
KCaverly
ad92fe49c7 implement initial concept of prompt chain 2023-10-17 11:58:45 -04:00
Antonio Scandurra
c04171abf6 WIP 2023-10-17 13:32:49 +02:00
Antonio Scandurra
488d08b43c WIP 2023-10-17 12:46:50 +02:00
Antonio Scandurra
18abb068b1 Checkpoint 2023-10-17 11:35:48 +02:00
Antonio Scandurra
cec5280013 Checkpoint 2023-10-17 11:31:13 +02:00
Antonio Scandurra
c126ff10a7 Checkpoint 2023-10-17 11:21:02 +02:00
Antonio Scandurra
bb348c1353 Checkpoint 2023-10-17 11:20:11 +02:00
Antonio Scandurra
fb1e7eef6b Checkpoint 2023-10-17 11:08:48 +02:00
Antonio Scandurra
ac5b32c491 Checkpoint 2023-10-17 10:14:22 +02:00
Antonio Scandurra
b526fc070d Merge branch 'gpui2-text-wrap' into gpui2 2023-10-17 09:03:16 +02:00
Antonio Scandurra
88ae4679d1 Checkpoint 2023-10-17 09:03:01 +02:00
Antonio Scandurra
9e7a579365 Checkpoint 2023-10-17 08:57:20 +02:00
Antonio Scandurra
b040ae8d4d Checkpoint 2023-10-17 08:52:26 +02:00
Antonio Scandurra
c6e20aed9b Checkpoint 2023-10-17 08:32:33 +02:00
Nathan Sobo
695a24d8a7 Checkpoint 2023-10-17 08:26:12 +02:00
Nathan Sobo
2472142532 Checkpoint 2023-10-17 06:09:03 +02:00
Nathan Sobo
bf49f55c95 Include length in run to not use tuples 2023-10-17 05:15:00 +02:00
Nathan Sobo
0df1eb71cb Use cloned 2023-10-17 05:08:56 +02:00
KCaverly
500af6d775 progress on prompt chains 2023-10-16 18:47:10 -04:00
Marshall Bowers
c8b452d411 Merge branch 'gpui2-ui' into gpui2 2023-10-16 16:54:40 -04:00
Marshall Bowers
708034d1d3 Call is_toggled as a method 2023-10-16 15:55:43 -04:00
Max Brunsfeld
c66385f0f9 Add an empty state to the notification panel 2023-10-16 12:54:44 -07:00
Max Brunsfeld
522b76e452 Merge branch 'main' into notifications 2023-10-16 12:37:52 -07:00
Nathan Sobo
3127c78bc7 Fix compile error 2023-10-16 20:19:04 +02:00
Nathan Sobo
938dd8b9ca Checkpoint 2023-10-16 20:16:35 +02:00
Nathan Sobo
847376cd8f WIP 2023-10-16 20:15:41 +02:00
Nathan Sobo
1a3650ef2a Get everything rendering again 2023-10-16 20:15:24 +02:00
Nate Butler
129273036a Add notifications panel to workspace UI structure 2023-10-16 13:11:52 -04:00
Nate Butler
97d77440e7 Simplify static panes for now 2023-10-16 13:07:15 -04:00
KCaverly
40755961ea added initial template outline 2023-10-16 11:54:32 -04:00
Max Brunsfeld
ff245c61d2 Reduce duplication in notification queries 2023-10-13 17:10:46 -07:00
Max Brunsfeld
cb7b011d6b Avoid creating duplicate invite notifications 2023-10-13 16:57:28 -07:00
Max Brunsfeld
5a0afcc835 Simplify notification serialization 2023-10-13 16:09:46 -07:00
Max Brunsfeld
83fb8d20b7 Remove contact notifications when cancelling a contact request 2023-10-13 16:09:46 -07:00
Marshall Bowers
5e43c332f1 Merge branch 'gpui2-ui' into gpui2 2023-10-13 17:44:28 -04:00
Marshall Bowers
6891e86621 Add state to BufferSearch 2023-10-13 17:44:21 -04:00
Marshall Bowers
3c1ec2e9ca Add rudimentary UI for BufferSearch 2023-10-13 17:36:27 -04:00
Marshall Bowers
49caeeafce Merge branch 'gpui2-ui' into gpui2 2023-10-13 17:20:54 -04:00
Marshall Bowers
349ad7858b Add placeholder BufferSearch 2023-10-13 17:20:44 -04:00
Marshall Bowers
c70f220db3 Wire up buffer search toggle for EditorPane 2023-10-13 17:14:09 -04:00
Nate Butler
39e3ddb080 Update bell.svg 2023-10-13 15:00:32 -04:00
Nate Butler
603765732e Checkpoint 2023-10-13 14:50:37 -04:00
Nathan Sobo
297b6b282c Make all geometry types Default to support movement-based refinement 2023-10-13 12:41:00 -06:00
Max Brunsfeld
e590b43545 Merge branch 'main' into notifications 2023-10-13 11:31:53 -07:00
Max Brunsfeld
bc6ba5f547 Bump protocol version 2023-10-13 11:23:39 -07:00
Max Brunsfeld
8db86dcebf Connect notification panel to notification toasts 2023-10-13 11:21:45 -07:00
Antonio Scandurra
fedb787b4f WIP 2023-10-13 19:06:03 +02:00
Antonio Scandurra
90f226193c Checkpoint 2023-10-13 19:06:03 +02:00
Marshall Bowers
e477fa7a93 Wire up call controls in the TitleBar 2023-10-13 12:46:35 -04:00
Marshall Bowers
f3679b37a2 Change TitleBar to a view 2023-10-13 12:21:51 -04:00
Nate Butler
b30b1d145c Refactor button rendering to use ThemeColor instead of direct theme calls 2023-10-13 11:47:13 -04:00
Nate Butler
e902d5d917 Add example NotificationToast to workspace 2023-10-13 11:47:05 -04:00
Nate Butler
8bd4107423 Fix toast contents not filling container 2023-10-13 11:46:48 -04:00
Nate Butler
7ba305e033 Hook up buttons in NotificationToast
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-10-13 11:03:59 -04:00
Nate Butler
caa0eb6e29 Add missing derive Element
Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
2023-10-13 10:47:39 -04:00
Nate Butler
c6d831a564 Update NotificationToast implementation and use in Workspace component 2023-10-13 10:35:30 -04:00
Nate Butler
943c02bf79 Refactor NotificationToast structure to include primary and secondary actions 2023-10-13 10:20:26 -04:00
Nate Butler
c32b081029 Add notification toast component and remove ToastVariant from toast.rs 2023-10-13 10:05:50 -04:00
Max Brunsfeld
034e9935d4 Remove old contact request notification mechanism, use notification instead 2023-10-12 17:42:32 -07:00
Max Brunsfeld
3241128840 Make notification db representation more flexible 2023-10-12 17:42:32 -07:00
Max Brunsfeld
fed3ffb681 Set up notification store for integration tests 2023-10-12 17:42:30 -07:00
Max Brunsfeld
1e1256dbdd Set RUST_LOG to info by default in zed-local script 2023-10-12 17:41:09 -07:00
Max Brunsfeld
69c65597d9 Fix use statement order 2023-10-12 17:41:09 -07:00
Max Brunsfeld
d1756b621f Start work on notification panel 2023-10-12 17:41:09 -07:00
Max Brunsfeld
50cf25ae97 Add notification doc comments 2023-10-12 17:41:09 -07:00
Max Brunsfeld
cf6ce0dbad Start work on storing notifications in the database 2023-10-12 17:41:07 -07:00
Marshall Bowers
44a30e269e Restore elevation docs 2023-10-12 18:18:44 -04:00
Marshall Bowers
ef18aaa66f Merge branch 'main' into gpui2 2023-10-12 17:43:05 -04:00
Marshall Bowers
36bca4f0d6 Restore click events on Buttons using on_mouse_down 2023-10-12 16:56:48 -04:00
Marshall Bowers
6e5ad75c5c Use Workspace::view to construct the view 2023-10-12 16:52:32 -04:00
Marshall Bowers
79a61c28d7 Remove global WorkspaceState 2023-10-12 16:23:10 -04:00
Marshall Bowers
e900ea20b7 Fix toggling of left panel 2023-10-12 16:12:09 -04:00
Marshall Bowers
8496d02fe1 Hold the story view in the StoryWrapper 2023-10-12 16:11:59 -04:00
Marshall Bowers
fc94c4ea40 Render stories as Views 2023-10-12 16:06:54 -04:00
Marshall Bowers
c90d976d7a Remove debug logging in Element derive macro 2023-10-12 15:52:42 -04:00
Marshall Bowers
d320d3a8bf Remove hacky children 2023-10-12 15:50:09 -04:00
Marshall Bowers
24bab48043 Use new children approach for Toolbar 2023-10-12 15:47:26 -04:00
Marshall Bowers
30979caf25 Use new children approach for Panes and Toasts 2023-10-12 15:37:50 -04:00
Nathan Sobo
ce8533f83b Checkpoint 2023-10-12 13:27:46 -06:00
Antonio Scandurra
2044ccdc0b WIP 2023-10-12 19:40:13 +02:00
Antonio Scandurra
ca35573ad5 WIP 2023-10-12 19:30:00 +02:00
Marshall Bowers
6dbe983461 Checkpoint: Back to a compiling state 2023-10-12 12:22:23 -04:00
Marshall Bowers
262f5886a4 Checkpoint 2023-10-12 12:18:35 -04:00
Marshall Bowers
207d843aee Fix issues in storybook2 2023-10-12 10:44:18 -04:00
Marshall Bowers
a6b872bb0c Temporarily disable click handlers 2023-10-12 10:44:11 -04:00
Marshall Bowers
8cd112110e Reconcile with upstream changes 2023-10-12 10:40:47 -04:00
Marshall Bowers
9581279919 Fix some merge errors 2023-10-12 10:27:50 -04:00
Marshall Bowers
002458f4c8 Merge branch 'gpui2' into gpui2-ui 2023-10-12 10:27:43 -04:00
Antonio Scandurra
564a8bdc19 Checkpoint 2023-10-12 14:58:31 +02:00
Antonio Scandurra
1f84cdb88c Checkpoint 2023-10-12 14:49:06 +02:00
Antonio Scandurra
80c0a6ead3 Checkpoint 2023-10-12 13:25:49 +02:00
Antonio Scandurra
23f11fcd5e Merge branch 'main' into gpui2 2023-10-12 10:55:17 +02:00
Nathan Sobo
3dad0d9811 Add group_active 2023-10-11 21:48:21 -06:00
Nathan Sobo
d920f7edc1 Add group hovers 2023-10-11 21:34:08 -06:00
Nathan Sobo
f37b83a0ea WIP 2023-10-11 17:18:39 -06:00
Nate Butler
12573ed2e7 Refine project panel, list item 2023-10-11 19:15:27 -04:00
Nathan Sobo
93c233b1cf Checkpoint 2023-10-11 13:22:40 -06:00
Nathan Sobo
47b64a5074 Checkpoint 2023-10-11 12:51:56 -06:00
Nathan Sobo
e2da2b232e Checkpoint 2023-10-11 11:40:42 -06:00
Marshall Bowers
5477b87774 Hook up assistant panel 2023-10-11 12:38:06 -04:00
Marshall Bowers
7478e63ea0 Simplify state interactions 2023-10-11 12:32:05 -04:00
Marshall Bowers
922d1462a8 Merge branch 'gpui2-ui' of github.com:zed-industries/zed into gpui2-ui 2023-10-11 12:24:34 -04:00
Marshall Bowers
8f410d5e2e Add support for switching between the project and collab panels 2023-10-11 12:24:33 -04:00
Nate Butler
0d8c743dfe Refine project panel, list 2023-10-11 12:22:24 -04:00
Marshall Bowers
b6a9c58994 Push language selector handler down into StatusBar 2023-10-11 12:11:22 -04:00
Marshall Bowers
382693a199 Adjust icon color based on whether the various components are open 2023-10-11 12:09:08 -04:00
Marshall Bowers
acf2c2c6a5 Add ability to toggle the terminal 2023-10-11 12:01:17 -04:00
Antonio Scandurra
006f840570 Checkpoint 2023-10-11 17:53:29 +02:00
Antonio Scandurra
457df8d3f3 Start and stop display link on the main thread 2023-10-11 16:38:54 +02:00
Antonio Scandurra
b6e4208ea8 Checkpoint 2023-10-11 15:08:28 +02:00
Antonio Scandurra
56fba5541a Checkpoint 2023-10-11 14:19:04 +02:00
Antonio Scandurra
a69dbafe3c Checkpoint 2023-10-11 12:47:19 +02:00
Antonio Scandurra
a9c69bf774 Checkpoint 2023-10-11 12:45:09 +02:00
Antonio Scandurra
b6a3d9ce59 Checkpoint 2023-10-11 11:03:08 +02:00
Antonio Scandurra
eebbc807e5 Checkpoint 2023-10-11 10:45:57 +02:00
Antonio Scandurra
0fb7364235 Checkpoint 2023-10-11 09:17:25 +02:00
Nathan Sobo
f1cc62c21f WIP 2023-10-10 22:49:47 -06:00
Nathan Sobo
f53b63eaf6 Checkpoint 2023-10-10 22:14:47 -06:00
Marshall Bowers
a69f93d214 Wire up toggling of project and chat panels 2023-10-10 18:35:20 -04:00
Marshall Bowers
8e1638b773 Add working toggle for LanguageSelector 2023-10-10 18:21:44 -04:00
Marshall Bowers
95ef61bc45 Thread click handler through from workspace to language selector 2023-10-10 18:02:08 -04:00
Marshall Bowers
c142676b20 Add click handlers to some of the buttons in the StatusBar 2023-10-10 17:26:53 -04:00
Marshall Bowers
be843227a1 Add on_click to IconButton 2023-10-10 17:26:33 -04:00
Marshall Bowers
48d9b49ada Wire up click handlers on Buttons 2023-10-10 17:19:18 -04:00
Marshall Bowers
f2ee61553f Colocate element stories with their elements 2023-10-10 16:00:04 -04:00
Marshall Bowers
30088afa89 Colocate component stories with their components 2023-10-10 15:52:58 -04:00
Marshall Bowers
b1d88ced61 Add an example of colocating a story for a UI component with its definition 2023-10-10 15:30:16 -04:00
Marshall Bowers
5b7ca6435c Comment out overridden widths 2023-10-10 15:17:44 -04:00
Marshall Bowers
a6ae6b0752 Merge branch 'gpui2' into gpui2-ui 2023-10-10 15:12:59 -04:00
Nathan Sobo
61b8ad38bd Remove state erasure for now 2023-10-10 12:44:40 -06:00
Nathan Sobo
e714653478 Checkpoint 2023-10-10 12:42:44 -06:00
Nathan Sobo
d70b4f04f6 Checkpoint 2023-10-10 12:41:28 -06:00
Antonio Scandurra
9eff99de49 --amend 2023-10-10 20:02:34 +02:00
Antonio Scandurra
4855b8f3de WIP 2023-10-10 20:02:23 +02:00
Antonio Scandurra
84ad2cb827 Checkpoint 2023-10-10 19:48:32 +02:00
Marshall Bowers
8f7f38536d Re-enable hover styles 2023-10-10 11:48:25 -04:00
Antonio Scandurra
97edec6e72 WIP 2023-10-10 17:31:42 +02:00
Marshall Bowers
40d58c9bc3 Use Self::State in children_any and child_any 2023-10-10 11:26:18 -04:00
Marshall Bowers
f76c9041bb Merge branch 'gpui2' into marshall/gpui2-playground 2023-10-10 11:24:45 -04:00
Antonio Scandurra
96fbf9fd06 Checkpoint 2023-10-10 16:47:09 +02:00
Antonio Scandurra
48a12be538 WIP 2023-10-10 15:03:47 +02:00
Antonio Scandurra
012a7743ad Checkpoint 2023-10-10 14:43:55 +02:00
Antonio Scandurra
678235023f Checkpoint 2023-10-10 13:07:53 +02:00
Antonio Scandurra
a4afb72535 Checkpoint: beziers 2023-10-10 13:01:35 +02:00
Conrad Irwin
ab050d1890 Use Horizontal ranges everywhere 2023-10-09 21:48:50 -06:00
Conrad Irwin
002e2cc42c Round better for up/down 2023-10-09 21:48:32 -06:00
Conrad Irwin
ef7e2c5d86 Get the project running! 2023-10-09 21:48:31 -06:00
Conrad Irwin
e7badb38e9 Refactor to pass a TextLayoutDetails around 2023-10-09 21:47:58 -06:00
Conrad Irwin
dacc8cb5f4 Begin to use pixels for column selection
For zed-industries/community#759
For zed-industries/community#1966

Co-Authored-By: Julia <floc@unpromptedtirade.com>
2023-10-09 21:47:58 -06:00
Conrad Irwin
a801a4aeef Remove some unnecessary Eqs 2023-10-09 21:47:58 -06:00
Nathan Sobo
fe60f264c4 Checkpoint 2023-10-09 21:46:49 -06:00
Nathan Sobo
dfdb691f73 Checkpoint 2023-10-09 21:30:14 -06:00
Nathan Sobo
9fe5836240 Move events module up 2023-10-09 21:19:56 -06:00
Nathan Sobo
8074e6b46a Add basic mouse event handling 2023-10-09 21:17:56 -06:00
Nathan Sobo
f763ed9a7e Checkpoint 2023-10-09 19:54:29 -06:00
Marshall Bowers
08f4576aa6 Rename helper style 2023-10-09 18:17:01 -04:00
Marshall Bowers
7610028a89 Add a story showcasing z-index 2023-10-09 18:00:49 -04:00
Marshall Bowers
0d903f4d0d Clean up theme loading 2023-10-09 17:00:10 -04:00
Marshall Bowers
312f3d2ab9 Change how the default theme gets determined 2023-10-09 16:53:28 -04:00
Marshall Bowers
def67295e5 Add theme loading 2023-10-09 16:37:20 -04:00
Marshall Bowers
613973d2b1 Add support for switching between the two hardcoded themes 2023-10-09 15:52:57 -04:00
Antonio Scandurra
7b610f8dd8 WIP 2023-10-09 19:50:48 +02:00
Marshall Bowers
8b3a357949 Add note about CSS hack 2023-10-09 13:39:08 -04:00
Marshall Bowers
f73708d725 Add a Toast in the bottom-right corner 2023-10-09 13:32:19 -04:00
Marshall Bowers
d3c79c7078 Add div.z_index 2023-10-09 13:19:32 -04:00
Antonio Scandurra
d889cdecde Checkpoint 2023-10-09 19:13:57 +02:00
Marshall Bowers
2654942b3c Use command modifier for example keybindings in CommandPalette 2023-10-09 12:51:57 -04:00
Marshall Bowers
ed2c8cdc25 Add strikethrough support back to Label 2023-10-09 12:33:52 -04:00
Marshall Bowers
19434afe0a Add back negative margins, now that they're supported again 2023-10-09 12:33:30 -04:00
Marshall Bowers
a7c4ae530d Update gpui3_macros::style_helpers! based on its gpui2 equivalent 2023-10-09 12:31:22 -04:00
Marshall Bowers
42e9800bde Add Details component 2023-10-09 11:55:27 -04:00
Marshall Bowers
d956bd3743 Add RecentProjects component 2023-10-09 11:47:22 -04:00
Marshall Bowers
100a4731e2 Add ThemeSelector component 2023-10-09 11:44:08 -04:00
Marshall Bowers
000ae27aff Add LanguageSelector component 2023-10-09 11:39:42 -04:00
Marshall Bowers
06b0707aa9 Add MultiBuffer component 2023-10-09 11:36:09 -04:00
Marshall Bowers
ac93449788 Remove unused Arc import 2023-10-09 11:32:10 -04:00
Marshall Bowers
02d32de044 Add Toast component 2023-10-09 11:31:56 -04:00
Marshall Bowers
333e3e4f01 Add ContextMenu component 2023-10-09 11:25:33 -04:00
Marshall Bowers
f7721d0523 Add CommandPalette component 2023-10-09 11:20:10 -04:00
Marshall Bowers
e5473fc51a Add Palette component 2023-10-09 11:15:50 -04:00
Marshall Bowers
a08ceadd1a Rename view_type to state_type 2023-10-09 11:11:03 -04:00
Marshall Bowers
dc2ddfb42c Add Keybinding component 2023-10-09 11:09:44 -04:00
Marshall Bowers
4eeed14d34 Add CollabPanel component 2023-10-09 11:04:53 -04:00
Antonio Scandurra
6a4c2a0d40 WIP 2023-10-09 16:02:55 +02:00
Marshall Bowers
8814ea8241 Time compute_layout 2023-10-07 12:23:25 -04:00
Marshall Bowers
8f6649e29e Merge branch 'gpui2' into marshall/gpui2-playground 2023-10-07 12:16:48 -04:00
Marshall Bowers
73360d37f7 Merge branch 'main' into gpui2 2023-10-07 12:15:23 -04:00
Marshall Bowers
eb642551ac Add TitleBar component and wire up to the workspace 2023-10-07 12:10:39 -04:00
Marshall Bowers
f33d41af63 Add Facepile and PlayerStack components 2023-10-07 12:02:42 -04:00
Marshall Bowers
5e7954f152 Add TrafficLights component 2023-10-07 11:55:10 -04:00
Marshall Bowers
9e79ad5a62 Add ChatPanel component 2023-10-07 11:50:41 -04:00
Marshall Bowers
0dcbc47e15 Remove duplicate module declaration 2023-10-07 11:42:50 -04:00
Marshall Bowers
b8b8fe6120 Add Button component 2023-10-07 11:41:48 -04:00
Marshall Bowers
ff066ef177 Add EditorPane component and wire up in the workspace 2023-10-07 11:33:11 -04:00
Marshall Bowers
63e834ce73 Add Toolbar component 2023-10-07 11:21:09 -04:00
Marshall Bowers
b118e60160 Add Breadcrumb component 2023-10-07 11:18:06 -04:00
Marshall Bowers
00e8531898 Add TabBar component 2023-10-07 11:13:54 -04:00
Marshall Bowers
7c8d662315 Increase storybook window size 2023-10-07 11:09:21 -04:00
Marshall Bowers
2f6d67cad6 Update Cargo.lock 2023-10-07 10:56:21 -04:00
Marshall Bowers
f5e5b44bc1 Merge branch 'gpui2' into marshall/gpui2-playground 2023-10-07 10:54:17 -04:00
Marshall Bowers
f795177ab6 Fix icon paths 2023-10-07 10:51:19 -04:00
Marshall Bowers
a4bde421db Revert changes to gpui2 crate 2023-10-07 10:50:50 -04:00
Marshall Bowers
f6a4151f60 Merge branch 'main' into gpui2 2023-10-07 10:50:05 -04:00
Marshall Bowers
82577b4acc Add Terminal component 2023-10-06 18:50:49 -04:00
Marshall Bowers
8db7f7ed37 Add Tab component 2023-10-06 18:43:25 -04:00
Marshall Bowers
d5ffd4a1fb Add Pane and PaneGroup components 2023-10-06 18:37:28 -04:00
Marshall Bowers
b53579858a Add StatusBar component 2023-10-06 18:25:55 -04:00
Marshall Bowers
28d504d7d3 Add WorkspaceElement component 2023-10-06 18:19:12 -04:00
Marshall Bowers
56c2ac048d Add ProjectPanel component 2023-10-06 17:58:23 -04:00
Marshall Bowers
208d5df106 Add Buffer component 2023-10-06 17:47:10 -04:00
Marshall Bowers
d09f53c380 Add AssistantPanel component 2023-10-06 17:24:52 -04:00
Marshall Bowers
696aee3891 Add IconButton component 2023-10-06 17:16:00 -04:00
Marshall Bowers
bcad2f4e9e Move UI out of storybook2 and into ui2 2023-10-06 17:07:59 -04:00
Marshall Bowers
1cf5cdbeca Add ui2 crate 2023-10-06 16:52:05 -04:00
Marshall Bowers
8e94f3902b Merge branch 'marshall/merge-main-into-gpui2' into marshall/gpui2-playground 2023-10-06 16:47:40 -04:00
Marshall Bowers
88a6a41c7c Revert changes to gpui2 crate 2023-10-06 15:49:53 -04:00
Marshall Bowers
d37785c214 Fix icon paths 2023-10-06 15:46:02 -04:00
Marshall Bowers
b369a6dc2a Merge branch 'main' into marshall/merge-main-into-gpui2 2023-10-06 15:41:18 -04:00
Marshall Bowers
5ee6814947 Fix compile errors 2023-10-06 13:54:37 -04:00
Marshall Bowers
65cd4f5838 Restore Sized bound on StyleHelpers 2023-10-06 13:45:56 -04:00
Marshall Bowers
7fd35d68bb Merge branch 'gpui2' into marshall/gpui2-playground 2023-10-06 13:45:11 -04:00
Marshall Bowers
ad8187b151 Merge branch 'main' into marshall/gpui2-playground 2023-10-06 13:33:04 -04:00
Marshall Bowers
79ad5c08e4 Add profiling information for compute_layout 2023-10-06 10:48:25 -04:00
Antonio Scandurra
ca6eb5511c Checkpoint: underlines 2023-10-06 15:34:37 +02:00
Nathan Sobo
65c7765c07 Checkpoint 2023-10-05 21:02:26 -06:00
Nathan Sobo
e99f6c03c1 Synchronize access when starting and stopping display links
Hoping this prevents panics we were observing when starting.
2023-10-05 20:46:26 -06:00
Nathan Sobo
6f7c305308 Checkpoint 2023-10-05 14:42:29 -06:00
Antonio Scandurra
fe3ef08f39 Checkpoint! 2023-10-05 09:34:54 -06:00
Antonio Scandurra
657a25178d Checkpoint 2023-10-05 17:00:37 +02:00
Antonio Scandurra
f3560caf93 Checkpoint 2023-10-05 15:34:57 +02:00
Antonio Scandurra
2e056e9b0b WIP 2023-10-05 15:30:47 +02:00
Antonio Scandurra
92bda1231e Use content mask for quad as well 2023-10-05 12:11:28 +02:00
Antonio Scandurra
7643bd61fd Checkpoint 2023-10-05 10:59:50 +02:00
Antonio Scandurra
bf73b40529 Draw only once on next frame callbacks 2023-10-05 10:57:16 +02:00
Nathan Sobo
ed20397a2b Checkpoint 2023-10-05 00:13:17 -06:00
Nathan Sobo
1c70ca2214 Checkpoint 2023-10-05 00:08:45 -06:00
Nathan Sobo
77b9a7aa5a Checkpoint 2023-10-04 23:59:21 -06:00
Nathan Sobo
0d0c760d94 Checkpoint 2023-10-04 23:03:00 -06:00
Nathan Sobo
177e385bb9 Checkpoint: Fix a crash 2023-10-04 22:59:01 -06:00
Nathan Sobo
699a5d2944 Checkpoint 2023-10-04 20:35:24 -06:00
Marshall Bowers
45d08c70f0 Add .when to Elements 2023-10-04 18:33:28 -04:00
Marshall Bowers
77feecc623 Add List component 2023-10-04 18:25:43 -04:00
Marshall Bowers
332f3f5617 Merge branch 'gpui2' into marshall/gpui2-playground 2023-10-04 17:32:21 -04:00
Nathan Sobo
c8bc68c267 Checkpoint 2023-10-04 15:08:04 -06:00
Nathan Sobo
02d6b91b73 Checkpoint 2023-10-04 15:05:04 -06:00
Nathan Sobo
e68b24f839 Checkpoint 2023-10-04 13:43:21 -06:00
Marshall Bowers
339ba7986f Add Avatar element 2023-10-04 15:34:14 -04:00
Antonio Scandurra
ebc80597d5 WIP 2023-10-04 20:09:55 +02:00
Antonio Scandurra
d28c81571c Checkpoint 2023-10-04 19:59:24 +02:00
Antonio Scandurra
dc9a260425 Checkpoint 2023-10-04 19:53:29 +02:00
Marshall Bowers
249e6fe637 Add Icon element 2023-10-04 13:46:45 -04:00
Marshall Bowers
e84b8747a1 Add storybook CLI 2023-10-04 13:33:28 -04:00
Marshall Bowers
0323a60d85 Remove unneeded theme function
This also fixes the panic when trying to declare the `GPUIApplication` class.
2023-10-04 13:11:02 -04:00
Marshall Bowers
a05cbf8169 Begin setting up stories 2023-10-04 12:49:06 -04:00
Antonio Scandurra
5aa45607eb Checkpoint 2023-10-04 18:38:08 +02:00
Antonio Scandurra
133c3a330c Checkpoint 2023-10-04 17:59:29 +02:00
Antonio Scandurra
f9646208e9 Checkpoint 2023-10-04 17:48:28 +02:00
Marshall Bowers
4b793f44ef Wire up hacky children for Panel 2023-10-04 11:22:33 -04:00
Marshall Bowers
aae4f00a4b Render Panel 2023-10-04 10:58:23 -04:00
Marshall Bowers
366a4918c3 Fix icon paths 2023-10-04 10:52:39 -04:00
Antonio Scandurra
bc1801fb03 Checkpoint 2023-10-04 16:42:28 +02:00
Marshall Bowers
25cd12cf33 Fix icon name 2023-10-04 10:41:21 -04:00
Marshall Bowers
90e22da930 Render workspace 2023-10-04 10:37:29 -04:00
Marshall Bowers
e6c7e57711 Merge branch 'gpui2' into marshall/gpui2-playground 2023-10-04 10:33:40 -04:00
Antonio Scandurra
d385bc9cce Allow tinting images grayscale 2023-10-04 15:27:51 +02:00
Antonio Scandurra
1816ab95a0 Checkpoint: start rendering images 2023-10-04 15:03:21 +02:00
Antonio Scandurra
5c750b6880 Checkpoint: emojis rendering 2023-10-04 12:41:21 +02:00
Antonio Scandurra
cd1c137542 WIP 2023-10-04 11:53:20 +02:00
Antonio Scandurra
4cf2ba20c2 Checkpoint: render SVGs 2023-10-04 10:51:47 +02:00
Antonio Scandurra
a1ee2db6d1 Use Courier for now, to avoid panicking 2023-10-04 08:48:05 +02:00
Nathan Sobo
25a2554bdd Checkpoint 2023-10-03 21:23:32 -06:00
Nathan Sobo
1e0ff65337 Checkpoint 2023-10-03 20:19:59 -06:00
Nathan Sobo
da211bef96 Checkpoint 2023-10-03 20:04:17 -06:00
Nathan Sobo
7f9e3bc787 Checkpoint 2023-10-03 17:58:11 -06:00
Nathan Sobo
d995192dde Checkpoint: Get basic workspace rendering 2023-10-03 17:39:03 -06:00
Nathan Sobo
c57e19c8fa Checkpoint: Glyphs rendering how I'd like 2023-10-03 17:29:36 -06:00
Nathan Sobo
550d9a9f71 Checkpoint 2023-10-03 16:17:25 -06:00
Nathan Sobo
4208ac2958 WIP 2023-10-03 15:17:45 -06:00
Nathan Sobo
45429b5400 WIP 2023-10-03 14:25:29 -06:00
Nathan Sobo
d3916b84c9 Checkpoint 2023-10-03 13:55:53 -06:00
Nathan Sobo
3b27d41c72 Checkpoint 2023-10-03 13:52:10 -06:00
Nathan Sobo
a8c1958c75 Checkpoint 2023-10-03 13:03:29 -06:00
Nathan Sobo
3698e89b88 Checkpoint 2023-10-03 11:16:42 -06:00
Antonio Scandurra
bfa211fb02 Checkpoint 2023-10-03 18:04:45 +02:00
Antonio Scandurra
dc40ac854a WIP 2023-10-03 17:53:44 +02:00
Antonio Scandurra
2b6d041cb6 Checkpoint 2023-10-03 17:36:12 +02:00
Antonio Scandurra
8a58733d91 Checkpoint 2023-10-03 16:53:49 +02:00
Antonio Scandurra
e49b411205 Checkpoint 2023-10-03 16:30:41 +02:00
Antonio Scandurra
08464ee26e Checkpoint 2023-10-03 15:23:49 +02:00
Antonio Scandurra
12ba10bc2c Checkpoint 2023-10-03 14:48:08 +02:00
Nathan Sobo
dcaf4c905f Checkpoint 2023-10-03 05:57:15 -06:00
Nathan Sobo
6046ed4f5c Checkpoint 2023-10-03 05:51:59 -06:00
Marshall Bowers
30afc8b1d2 WIP: Panel 2023-10-02 20:16:55 -04:00
Marshall Bowers
74ac6eb8a3 Begin building out new ui crate in storybook2 2023-10-02 18:59:44 -04:00
Marshall Bowers
9a9a35bf40 Move Sized bound up onto StyleHelpers 2023-10-02 18:46:25 -04:00
Marshall Bowers
d14dc35efe Merge branch 'gpui2' into marshall/gpui2-playground 2023-10-02 18:36:22 -04:00
Marshall Bowers
77e67c19fe Fix deadlock when obtaining the font ID 2023-10-02 16:10:41 -04:00
Nathan Sobo
91582257fb WIP 2023-10-02 14:02:28 -06:00
Nathan Sobo
66ef5549e9 Checkpoint 2023-10-02 13:34:07 -06:00
Nathan Sobo
79e1e1a747 Checkpoint 2023-10-02 13:16:10 -06:00
Nathan Sobo
0b13c0a437 Checkpoint 2023-10-02 12:47:45 -06:00
Nathan Sobo
4212a45767 WIP 2023-09-30 10:01:59 -06:00
Nathan Sobo
ef01a64826 Fix infinite loop 2023-09-30 09:43:52 -06:00
Marshall Bowers
46b4118b9e Checkpoint: Things are running, but with a stack overflow 2023-09-29 22:57:17 -04:00
Marshall Bowers
c7fc5f3ab7 Checkpoint: Fix downcasting 2023-09-29 22:53:24 -04:00
Marshall Bowers
f50a23accd Adjust window dimensions
Since resizing freezes the window.
2023-09-29 21:55:34 -04:00
Marshall Bowers
43a1296150 Checkpoint: Storybook window showing 2023-09-29 21:51:27 -04:00
Marshall Bowers
3b38641f98 Fix stack overflow by removing Deref and DerefMut impls 2023-09-29 21:21:08 -04:00
Marshall Bowers
8cac89d17c Checkpoint: Compiling 2023-09-29 20:51:52 -04:00
Marshall Bowers
963f179d7f Checkpoint: Cast through std::mem::transmute 2023-09-29 19:41:31 -04:00
Marshall Bowers
103183f494 WIP: Parameterize over thread 2023-09-29 19:20:18 -04:00
Nathan Sobo
c1a35a29a8 WIP 2023-09-29 14:34:40 -06:00
Nathan Sobo
7a6c27cf24 WIP 2023-09-29 14:04:58 -06:00
Nathan Sobo
dcc314f088 Checkpoint 2023-09-29 13:22:53 -06:00
Nathan Sobo
3f50779a17 Checkpoint 2023-09-28 12:02:52 -06:00
Nathan Sobo
5ab1034698 Checkpoint 2023-09-28 01:16:47 -06:00
Nathan Sobo
13ba450c4c Checkpoint 2023-09-28 00:46:15 -06:00
Nathan Sobo
c5470d4050 Checkpoint 2023-09-27 23:24:07 -06:00
Nathan Sobo
7e49c7d782 Checkpoint 2023-09-27 23:19:32 -06:00
Nathan Sobo
769a04517f Checkpoint - No warnings 2023-09-27 23:10:22 -06:00
Nathan Sobo
1ee70a0146 Checkpoint 2023-09-27 23:05:39 -06:00
Nathan Sobo
8be8047b8d Checkpoint 2023-09-27 22:02:48 -06:00
Nathan Sobo
7524f7fbe8 Checkpoint 2023-09-27 21:25:06 -06:00
Nathan Sobo
9fefb1d898 Checkpoint 2023-09-27 21:14:09 -06:00
Nathan Sobo
49672bfc5f Checkpoint 2023-09-27 17:51:12 -06:00
Nathan Sobo
b364d404a9 Checkpoint 2023-09-27 17:25:04 -06:00
Nathan Sobo
96f9c67e77 Checkpoint 2023-09-27 17:17:30 -06:00
Nathan Sobo
e9a84a21e4 Checkpoint 2023-09-27 15:35:51 -06:00
Antonio Scandurra
58dadad8ec WIP 2023-09-26 13:42:58 -06:00
Antonio Scandurra
bfe2205ecb Checkpoint 2023-09-26 11:34:41 -06:00
Antonio Scandurra
04d3ea9563 Checkpoint 2023-09-26 11:29:44 -06:00
Antonio Scandurra
15567493ba WIP 2023-09-25 11:55:05 -06:00
Antonio Scandurra
a1e080d495 Checkpoint 2023-09-25 11:48:51 -06:00
Antonio Scandurra
45540a00ee Checkpoint 2023-09-24 17:12:59 -06:00
Antonio Scandurra
55f4aa3b34 Checkpoint 2023-09-24 16:52:33 -06:00
Antonio Scandurra
a7803570dc Checkpoint 2023-09-23 17:26:22 -06:00
Antonio Scandurra
b516ea2fe2 Checkpoint 2023-09-23 15:56:40 -06:00
Antonio Scandurra
1fa45c69d6 Checkpoint 2023-09-23 15:52:16 -06:00
Antonio Scandurra
c4abd93b9b WIP 2023-09-23 15:24:01 -06:00
Antonio Scandurra
91c1768939 Checkpoint 2023-09-23 15:03:05 -06:00
Antonio Scandurra
1a5d6aa498 Checkpoint 2023-09-23 14:20:07 -06:00
Antonio Scandurra
fb69f3d45f Checkpoint
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-09-23 12:21:52 -06:00
Antonio Scandurra
3fbe93f029 Checkpoint
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-09-23 11:06:10 -06:00
Antonio Scandurra
df388d9f33 Checkpoint 2023-09-23 09:10:33 -06:00
Antonio Scandurra
6a95f9e349 WIP 2023-09-22 16:31:26 -06:00
Antonio Scandurra
a237aa8164 Checkpoint
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-09-22 14:53:25 -06:00
Antonio Scandurra
3dc1e917bf Checkpoint
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-09-22 14:40:39 -06:00
Antonio Scandurra
d1791a999d Checkpoint
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-09-22 13:30:51 -06:00
Antonio Scandurra
e4e9da7673 Checkpoint
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-09-22 12:44:37 -06:00
Antonio Scandurra
343c426307 Checkpoint 2023-09-22 10:02:11 -06:00
Nathan Sobo
e979d75cb8 WIP 2023-09-22 08:34:43 -06:00
Nathan Sobo
d120d0cf2e Checkpoint 2023-09-21 14:10:53 -06:00
Nathan Sobo
a0416e9c6d WIP 2023-09-21 13:46:31 -06:00
Nathan Sobo
a53c0b9472 WIP 2023-09-21 13:39:54 -06:00
Nathan Sobo
8573c6e8c6 WIP 2023-09-21 12:18:09 -06:00
Nathan Sobo
dfeb702544 WIP - Next: implement Element derive macro 2023-09-20 22:26:46 -06:00
Nathan Sobo
6d2b27689d WIP 2023-09-20 20:40:30 -06:00
Nathan Sobo
a8bb3dd9a3 WIP 2023-09-20 20:28:32 -06:00
Nathan Sobo
44608517c1 WIP 2023-09-20 14:32:55 -06:00
Nathan Sobo
5b0e333967 Checkpoint 2023-09-20 12:16:26 -06:00
Nathan Sobo
83dae46ec6 Checkpoint 2023-09-20 10:17:29 -06:00
Nathan Sobo
7885eaf974 Checkpoint 2023-09-19 21:55:49 -06:00
Nathan Sobo
37d0f06e07 Checkpoint 2023-09-19 20:55:13 -06:00
Nathan Sobo
8406c0d9a3 Checkpoint 2023-09-19 13:27:57 -06:00
Nathan Sobo
e762f7f3c0 Checkpoint 2023-09-19 13:09:00 -06:00
Nathan Sobo
89519b1521 WIP 2023-09-19 08:46:02 -06:00
Nathan Sobo
df9a05ba92 Checkpoint 2023-09-18 17:40:47 -06:00
Nathan Sobo
0a2a5be71c Checkpoint 2023-09-14 21:42:56 -06:00
Nathan Sobo
4fd4f44bb7 Checkpoint 2023-09-14 18:51:03 -06:00
Nathan Sobo
378b2fbd9e WIP 2023-09-14 16:52:04 -06:00
Nathan Sobo
1f9b52d5e1 Checkpoint 2023-09-14 16:19:48 -06:00
Nathan Sobo
b30bb56483 Checkpoint 2023-09-14 16:14:42 -06:00
Nathan Sobo
ba22da00bf Checkpoint 2023-09-14 15:49:54 -06:00
Nathan Sobo
cee5ddee53 Checkpoint 2023-09-14 15:34:39 -06:00
Nathan Sobo
c74c60a629 Slotmaps 2023-09-14 15:21:49 -06:00
Nathan Sobo
e4f8fe941e Checkpoint 2023-09-14 14:47:02 -06:00
Nathan Sobo
b9e1ca1385 Checkpoint 2023-09-14 14:42:04 -06:00
Nathan Sobo
1c20a8cd31 Checkpoint 2023-09-13 11:07:24 -06:00
Nathan Sobo
1adb7fa58c Checkpoint 2023-09-13 09:28:04 -06:00
Nathan Sobo
dcf6059a15 Checkpoint 2023-09-13 08:55:14 -06:00
Nathan Sobo
8a6e9f90be Checkpoint 2023-09-13 08:13:45 -06:00
Nathan Sobo
77af33ba5d WIP 2023-09-13 00:03:56 -06:00
Nathan Sobo
faabed1df0 Checkpoint 2023-09-12 21:34:03 -06:00
Nathan Sobo
cae5c76bed Checkpoint 2023-09-12 21:07:35 -06:00
Nathan Sobo
53b698adb6 Checkpoint 2023-09-12 20:40:05 -06:00
Nathan Sobo
dc2733998e WIP 2023-09-12 12:43:08 -06:00
Nathan Sobo
5dad97779a WIP 2023-09-12 07:34:42 -06:00
Nathan Sobo
3ba8857491 Checkpoint 2023-09-11 12:58:55 -06:00
1097 changed files with 310274 additions and 9850 deletions

View File

@@ -0,0 +1,15 @@
name: 'Check formatting'
description: 'Checks code formatting use cargo fmt'
runs:
using: "composite"
steps:
- name: Install Rust
shell: bash -euxo pipefail {0}
run: |
rustup set profile minimal
rustup update stable
- name: cargo fmt
shell: bash -euxo pipefail {0}
run: cargo fmt --all -- --check

30
.github/actions/run_tests/action.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: "Run tests"
description: "Runs the tests"
runs:
using: "composite"
steps:
- name: Install Rust
shell: bash -euxo pipefail {0}
run: |
rustup set profile minimal
rustup update stable
rustup target add wasm32-wasi
cargo install cargo-nextest
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: "18"
- name: Limit target directory size
shell: bash -euxo pipefail {0}
run: script/clear-target-dir-if-larger-than 100
- name: Run check
shell: bash -euxo pipefail {0}
run: cargo check --tests --workspace
- name: Run tests
shell: bash -euxo pipefail {0}
run: cargo nextest run --workspace --no-fail-fast

View File

@@ -23,19 +23,17 @@ jobs:
- self-hosted
- test
steps:
- name: Install Rust
run: |
rustup set profile minimal
rustup update stable
- name: Set up default .cargo/config.toml
run: printf "[build]\nrustflags = [\"-D\", \"warnings\"]" > $HOME/.cargo/config.toml
- name: Checkout repo
uses: actions/checkout@v3
with:
clean: false
submodules: 'recursive'
submodules: "recursive"
- name: cargo fmt
run: cargo fmt --all -- --check
- name: Run rustfmt
uses: ./.github/actions/check_formatting
tests:
name: Run tests
@@ -43,35 +41,15 @@ jobs:
- self-hosted
- test
needs: rustfmt
env:
RUSTFLAGS: -D warnings
steps:
- name: Install Rust
run: |
rustup set profile minimal
rustup update stable
rustup target add wasm32-wasi
cargo install cargo-nextest
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Checkout repo
uses: actions/checkout@v3
with:
clean: false
submodules: 'recursive'
- name: Limit target directory size
run: script/clear-target-dir-if-larger-than 70
- name: Run check
run: cargo check --workspace
submodules: "recursive"
- name: Run tests
run: cargo nextest run --workspace --no-fail-fast
uses: ./.github/actions/run_tests
- name: Build collab
run: cargo build -p collab
@@ -79,9 +57,6 @@ jobs:
- name: Build other binaries
run: cargo build --workspace --bins --all-features
- name: Generate license file
run: script/generate-licenses
bundle:
name: Bundle app
runs-on:
@@ -106,16 +81,16 @@ jobs:
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: '18'
node-version: "18"
- name: Checkout repo
uses: actions/checkout@v3
with:
clean: false
submodules: 'recursive'
submodules: "recursive"
- name: Limit target directory size
run: script/clear-target-dir-if-larger-than 70
run: script/clear-target-dir-if-larger-than 100
- name: Determine version and release channel
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
@@ -133,6 +108,8 @@ jobs:
expected_tag_name="v${version}";;
preview)
expected_tag_name="v${version}-pre";;
nightly)
expected_tag_name="v${version}-nightly";;
*)
echo "can't publish a release on channel ${channel}"
exit 1;;
@@ -157,7 +134,9 @@ jobs:
- uses: softprops/action-gh-release@v1
name: Upload app bundle to release
if: ${{ env.RELEASE_CHANNEL }}
# TODO kb seems that zed.dev relies on GitHub releases for release version tracking.
# Find alternatives for `nightly` or just go on with more releases?
if: ${{ env.RELEASE_CHANNEL == 'preview' || env.RELEASE_CHANNEL == 'stable' }}
with:
draft: true
prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}

View File

@@ -6,26 +6,27 @@ jobs:
discord_release:
runs-on: ubuntu-latest
steps:
- name: Get release URL
id: get-release-url
run: |
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
URL="https://zed.dev/releases/preview/latest"
else
URL="https://zed.dev/releases/stable/latest"
fi
echo "::set-output name=URL::$URL"
- name: Get content
uses: 2428392/gh-truncate-string-action@v1.2.0
id: get-content
with:
stringToTruncate: |
📣 Zed [${{ github.event.release.tag_name }}](${{ steps.get-release-url.outputs.URL }}) was just released!
- name: Get release URL
id: get-release-url
run: |
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
URL="https://zed.dev/releases/preview/latest"
else
URL="https://zed.dev/releases/stable/latest"
fi
echo "::set-output name=URL::$URL"
- name: Get content
uses: 2428392/gh-truncate-string-action@v1.3.0
id: get-content
with:
stringToTruncate: |
📣 Zed [${{ github.event.release.tag_name }}](${{ steps.get-release-url.outputs.URL }}) was just released!
${{ github.event.release.body }}
maxLength: 2000
- name: Discord Webhook Action
uses: tsickert/discord-webhook@v5.3.0
with:
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
content: ${{ steps.get-content.outputs.string }}
${{ github.event.release.body }}
maxLength: 2000
truncationSymbol: "..."
- name: Discord Webhook Action
uses: tsickert/discord-webhook@v5.3.0
with:
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
content: ${{ steps.get-content.outputs.string }}

98
.github/workflows/release_nightly.yml vendored Normal file
View File

@@ -0,0 +1,98 @@
name: Release Nightly
on:
schedule:
# Fire every night at 1:00am
- cron: "0 1 * * *"
push:
tags:
- "nightly"
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
RUST_BACKTRACE: 1
jobs:
rustfmt:
name: Check formatting
runs-on:
- self-hosted
- test
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
clean: false
submodules: "recursive"
- name: Run rustfmt
uses: ./.github/actions/check_formatting
tests:
name: Run tests
runs-on:
- self-hosted
- test
needs: rustfmt
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
clean: false
submodules: "recursive"
- name: Run tests
uses: ./.github/actions/run_tests
bundle:
name: Bundle app
runs-on:
- self-hosted
- bundle
needs: tests
env:
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
steps:
- name: Install Rust
run: |
rustup set profile minimal
rustup update stable
rustup target add aarch64-apple-darwin
rustup target add x86_64-apple-darwin
rustup target add wasm32-wasi
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: "18"
- name: Checkout repo
uses: actions/checkout@v3
with:
clean: false
submodules: "recursive"
- name: Limit target directory size
run: script/clear-target-dir-if-larger-than 100
- name: Set release channel to nightly
run: |
set -eu
version=$(git rev-parse --short HEAD)
echo "Publishing version: ${version} on release channel nightly"
echo "nightly" > crates/zed/RELEASE_CHANNEL
- name: Generate license file
run: script/generate-licenses
- name: Create app bundle
run: script/bundle -2
- name: Upload Zed Nightly
run: script/upload-nightly

1634
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,82 +4,122 @@ members = [
"crates/ai",
"crates/assistant",
"crates/audio",
"crates/audio2",
"crates/auto_update",
"crates/auto_update2",
"crates/breadcrumbs",
"crates/call",
"crates/call2",
"crates/channel",
"crates/channel2",
"crates/cli",
"crates/client",
"crates/client2",
"crates/clock",
"crates/collab",
"crates/collab2",
"crates/collab_ui",
"crates/collab_ui2",
"crates/collections",
"crates/command_palette",
"crates/command_palette2",
"crates/component_test",
"crates/context_menu",
"crates/copilot",
"crates/copilot2",
"crates/copilot_button",
"crates/db",
"crates/db2",
"crates/refineable",
"crates/refineable/derive_refineable",
"crates/diagnostics",
"crates/diagnostics2",
"crates/drag_and_drop",
"crates/editor",
"crates/feature_flags",
"crates/feature_flags2",
"crates/feedback",
"crates/file_finder",
"crates/fs",
"crates/fs2",
"crates/fsevent",
"crates/fuzzy",
"crates/fuzzy2",
"crates/git",
"crates/go_to_line",
"crates/go_to_line2",
"crates/gpui",
"crates/gpui_macros",
"crates/gpui2",
"crates/gpui2_macros",
"crates/install_cli",
"crates/install_cli2",
"crates/journal",
"crates/journal2",
"crates/language",
"crates/language2",
"crates/language_selector",
"crates/language_tools",
"crates/live_kit_client",
"crates/live_kit_server",
"crates/lsp",
"crates/lsp2",
"crates/media",
"crates/menu",
"crates/menu2",
"crates/multi_buffer",
"crates/multi_buffer2",
"crates/node_runtime",
"crates/notifications",
"crates/notifications2",
"crates/outline",
"crates/picker",
"crates/picker2",
"crates/plugin",
"crates/plugin_macros",
"crates/plugin_runtime",
"crates/prettier",
"crates/prettier2",
"crates/project",
"crates/project2",
"crates/project_panel",
"crates/project_panel2",
"crates/project_symbols",
"crates/recent_projects",
"crates/rope",
"crates/rpc",
"crates/rpc2",
"crates/search",
"crates/search2",
"crates/settings",
"crates/settings2",
"crates/snippet",
"crates/sqlez",
"crates/sqlez_macros",
"crates/feature_flags",
"crates/rich_text",
"crates/storybook2",
"crates/sum_tree",
"crates/terminal",
"crates/terminal2",
"crates/terminal_view2",
"crates/text",
"crates/theme",
"crates/theme2",
"crates/theme_importer",
"crates/theme_selector",
"crates/ui2",
"crates/util",
"crates/semantic_index",
"crates/story",
"crates/vim",
"crates/vcs_menu",
"crates/workspace",
"crates/workspace2",
"crates/welcome",
"crates/xtask",
"crates/zed",
"crates/zed-actions"
"crates/zed2",
"crates/zed-actions",
"crates/zed_actions2"
]
default-members = ["crates/zed"]
resolver = "2"
@@ -87,7 +127,10 @@ resolver = "2"
[workspace.dependencies]
anyhow = { version = "1.0.57" }
async-trait = { version = "0.1" }
ctor = { version = "0.1" }
# TODO: Switch back to the published version of `ctor` once:
# 1. A new version of `ctor` is published with this change: https://github.com/mmastrac/rust-ctor/pull/295
# 2. We've confirmed it's fine to update to the latest version of `ctor` (we're currently on v0.1.20).
ctor = { git = "https://github.com/zed-industries/rust-ctor", rev = "7f824cf6a7943885a649b579f33f9ac53f0d1db6" }
derive_more = { version = "0.99.17" }
env_logger = { version = "0.9" }
futures = { version = "0.3" }
@@ -112,18 +155,20 @@ serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
smallvec = { version = "1.6", features = ["union"] }
smol = { version = "1.2" }
strum = { version = "0.25.0", features = ["derive"] }
sysinfo = "0.29.10"
tempdir = { version = "0.3.7" }
thiserror = { version = "1.0.29" }
time = { version = "0.3", features = ["serde", "serde-well-known"] }
toml = { version = "0.5" }
tiktoken-rs = "0.5.7"
tree-sitter = "0.20"
unindent = { version = "0.1.7" }
pretty_assertions = "1.3.0"
git2 = { version = "0.15", default-features = false}
uuid = { version = "1.1.2", features = ["v4"] }
tree-sitter-bash = { git = "https://github.com/tree-sitter/tree-sitter-bash", rev = "1b0321ee85701d5036c334a6f04761cdc672e64c" }
tree-sitter-bash = { git = "https://github.com/tree-sitter/tree-sitter-bash", rev = "7331995b19b8f8aba2d5e26deb51d2195c18bc94" }
tree-sitter-c = "0.20.1"
tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev="f44509141e7e483323d2ec178f2d2e6c0fc041c1" }
tree-sitter-css = { git = "https://github.com/tree-sitter/tree-sitter-css", rev = "769203d0f9abe1a9a691ac2b9fe4bb4397a73c51" }
@@ -149,7 +194,7 @@ tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml",
tree-sitter-lua = "0.0.14"
tree-sitter-nix = { git = "https://github.com/nix-community/tree-sitter-nix", rev = "66e3e9ce9180ae08fc57372061006ef83f0abde7" }
tree-sitter-nu = { git = "https://github.com/nushell/tree-sitter-nu", rev = "786689b0562b9799ce53e824cb45a1a2a04dc673"}
tree-sitter-vue = {git = "https://github.com/zed-industries/tree-sitter-vue", rev = "95b2890"}
tree-sitter-vue = {git = "https://github.com/zed-industries/tree-sitter-vue", rev = "9b6cb221ccb8d0b956fcb17e9a1efac2feefeb58"}
[patch.crates-io]
tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "35a6052fbcafc5e5fc0f9415b8652be7dcaf7222" }
async-task = { git = "https://github.com/zed-industries/async-task", rev = "341b57d6de98cdfd7b418567b8de2022ca993a6e" }
@@ -164,6 +209,9 @@ core-graphics = { git = "https://github.com/servo/core-foundation-rs", rev = "07
[profile.dev]
split-debuginfo = "unpacked"
[profile.dev.package.taffy]
opt-level = 3
[profile.release]
debug = true
lto = "thin"

1
assets/icons/at-sign.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-at-sign"><circle cx="12" cy="12" r="4"/><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"/></svg>

After

Width:  |  Height:  |  Size: 300 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-off"><path d="M8.7 3A6 6 0 0 1 18 8a21.3 21.3 0 0 0 .6 5"/><path d="M17 17H3s3-2 3-9a4.67 4.67 0 0 1 .3-1.7"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/><path d="m2 2 20 20"/></svg>

After

Width:  |  Height:  |  Size: 387 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-ring"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/><path d="M4 2C2.8 3.7 2 5.7 2 8"/><path d="M22 8c0-2.3-.8-4.3-2-6"/></svg>

After

Width:  |  Height:  |  Size: 382 B

1
assets/icons/bell.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>

After

Width:  |  Height:  |  Size: 309 B

1
assets/icons/dash.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-minus"><path d="M5 12h14"/></svg>

After

Width:  |  Height:  |  Size: 229 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail-open"><path d="M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z"/><path d="m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10"/></svg>

After

Width:  |  Height:  |  Size: 390 B

View File

@@ -1,6 +1 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2.45563 12.3438H11.5444C11.9137 12.3438 12.1556 11.9571 11.994 11.625L10.2346 8.00952C9.77174 7.05841 8.89104 6.37821 7.85383 6.17077C7.29019 6.05804 6.70981 6.05804 6.14617 6.17077C5.10896 6.37821 4.22826 7.05841 3.76542 8.00952L2.00603 11.625C1.84442 11.9571 2.08628 12.3438 2.45563 12.3438Z" fill="#001A33" fill-opacity="0.157"/>
<path d="M9.5 6.5L11.994 11.625C12.1556 11.9571 11.9137 12.3438 11.5444 12.3438H2.45563C2.08628 12.3438 1.84442 11.9571 2.00603 11.625L4.5 6.5" stroke="#11181C" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7 7L7 2" stroke="#11181C" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="7" cy="9.24219" r="0.75" fill="#11181C"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-alert-triangle"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>

Before

Width:  |  Height:  |  Size: 835 B

After

Width:  |  Height:  |  Size: 351 B

View File

@@ -370,42 +370,15 @@
{
"context": "Pane",
"bindings": {
"ctrl-1": [
"pane::ActivateItem",
0
],
"ctrl-2": [
"pane::ActivateItem",
1
],
"ctrl-3": [
"pane::ActivateItem",
2
],
"ctrl-4": [
"pane::ActivateItem",
3
],
"ctrl-5": [
"pane::ActivateItem",
4
],
"ctrl-6": [
"pane::ActivateItem",
5
],
"ctrl-7": [
"pane::ActivateItem",
6
],
"ctrl-8": [
"pane::ActivateItem",
7
],
"ctrl-9": [
"pane::ActivateItem",
8
],
"ctrl-1": ["pane::ActivateItem", 0],
"ctrl-2": ["pane::ActivateItem", 1],
"ctrl-3": ["pane::ActivateItem", 2],
"ctrl-4": ["pane::ActivateItem", 3],
"ctrl-5": ["pane::ActivateItem", 4],
"ctrl-6": ["pane::ActivateItem", 5],
"ctrl-7": ["pane::ActivateItem", 6],
"ctrl-8": ["pane::ActivateItem", 7],
"ctrl-9": ["pane::ActivateItem", 8],
"ctrl-0": "pane::ActivateLastItem",
"ctrl--": "pane::GoBack",
"ctrl-_": "pane::GoForward",
@@ -416,42 +389,15 @@
{
"context": "Workspace",
"bindings": {
"cmd-1": [
"workspace::ActivatePane",
0
],
"cmd-2": [
"workspace::ActivatePane",
1
],
"cmd-3": [
"workspace::ActivatePane",
2
],
"cmd-4": [
"workspace::ActivatePane",
3
],
"cmd-5": [
"workspace::ActivatePane",
4
],
"cmd-6": [
"workspace::ActivatePane",
5
],
"cmd-7": [
"workspace::ActivatePane",
6
],
"cmd-8": [
"workspace::ActivatePane",
7
],
"cmd-9": [
"workspace::ActivatePane",
8
],
"cmd-1": ["workspace::ActivatePane", 0],
"cmd-2": ["workspace::ActivatePane", 1],
"cmd-3": ["workspace::ActivatePane", 2],
"cmd-4": ["workspace::ActivatePane", 3],
"cmd-5": ["workspace::ActivatePane", 4],
"cmd-6": ["workspace::ActivatePane", 5],
"cmd-7": ["workspace::ActivatePane", 6],
"cmd-8": ["workspace::ActivatePane", 7],
"cmd-9": ["workspace::ActivatePane", 8],
"cmd-b": "workspace::ToggleLeftDock",
"cmd-r": "workspace::ToggleRightDock",
"cmd-j": "workspace::ToggleBottomDock",
@@ -494,38 +440,14 @@
},
{
"bindings": {
"cmd-k cmd-left": [
"workspace::ActivatePaneInDirection",
"Left"
],
"cmd-k cmd-right": [
"workspace::ActivatePaneInDirection",
"Right"
],
"cmd-k cmd-up": [
"workspace::ActivatePaneInDirection",
"Up"
],
"cmd-k cmd-down": [
"workspace::ActivatePaneInDirection",
"Down"
],
"cmd-k shift-left": [
"workspace::SwapPaneInDirection",
"Left"
],
"cmd-k shift-right": [
"workspace::SwapPaneInDirection",
"Right"
],
"cmd-k shift-up": [
"workspace::SwapPaneInDirection",
"Up"
],
"cmd-k shift-down": [
"workspace::SwapPaneInDirection",
"Down"
]
"cmd-k cmd-left": ["workspace::ActivatePaneInDirection", "Left"],
"cmd-k cmd-right": ["workspace::ActivatePaneInDirection", "Right"],
"cmd-k cmd-up": ["workspace::ActivatePaneInDirection", "Up"],
"cmd-k cmd-down": ["workspace::ActivatePaneInDirection", "Down"],
"cmd-k shift-left": ["workspace::SwapPaneInDirection", "Left"],
"cmd-k shift-right": ["workspace::SwapPaneInDirection", "Right"],
"cmd-k shift-up": ["workspace::SwapPaneInDirection", "Up"],
"cmd-k shift-down": ["workspace::SwapPaneInDirection", "Down"]
}
},
// Bindings from Atom
@@ -627,14 +549,6 @@
"space": "collab_panel::InsertSpace"
}
},
{
"context": "(CollabPanel && not_editing) > Editor",
"bindings": {
"cmd-c": "collab_panel::StartLinkChannel",
"cmd-x": "collab_panel::StartMoveChannel",
"cmd-v": "collab_panel::MoveOrLinkToSelected"
}
},
{
"context": "ChannelModal",
"bindings": {
@@ -655,57 +569,21 @@
"cmd-v": "terminal::Paste",
"cmd-k": "terminal::Clear",
// Some nice conveniences
"cmd-backspace": [
"terminal::SendText",
"\u0015"
],
"cmd-right": [
"terminal::SendText",
"\u0005"
],
"cmd-left": [
"terminal::SendText",
"\u0001"
],
"cmd-backspace": ["terminal::SendText", "\u0015"],
"cmd-right": ["terminal::SendText", "\u0005"],
"cmd-left": ["terminal::SendText", "\u0001"],
// Terminal.app compatibility
"alt-left": [
"terminal::SendText",
"\u001bb"
],
"alt-right": [
"terminal::SendText",
"\u001bf"
],
"alt-left": ["terminal::SendText", "\u001bb"],
"alt-right": ["terminal::SendText", "\u001bf"],
// There are conflicting bindings for these keys in the global context.
// these bindings override them, remove at your own risk:
"up": [
"terminal::SendKeystroke",
"up"
],
"pageup": [
"terminal::SendKeystroke",
"pageup"
],
"down": [
"terminal::SendKeystroke",
"down"
],
"pagedown": [
"terminal::SendKeystroke",
"pagedown"
],
"escape": [
"terminal::SendKeystroke",
"escape"
],
"enter": [
"terminal::SendKeystroke",
"enter"
],
"ctrl-c": [
"terminal::SendKeystroke",
"ctrl-c"
]
"up": ["terminal::SendKeystroke", "up"],
"pageup": ["terminal::SendKeystroke", "pageup"],
"down": ["terminal::SendKeystroke", "down"],
"pagedown": ["terminal::SendKeystroke", "pagedown"],
"escape": ["terminal::SendKeystroke", "escape"],
"enter": ["terminal::SendKeystroke", "enter"],
"ctrl-c": ["terminal::SendKeystroke", "ctrl-c"]
}
}
]

View File

@@ -10,6 +10,7 @@
"bindings": {
"ctrl->": "zed::IncreaseBufferFontSize",
"ctrl-<": "zed::DecreaseBufferFontSize",
"ctrl-shift-j": "editor::JoinLines",
"cmd-d": "editor::DuplicateLine",
"cmd-backspace": "editor::DeleteLine",
"cmd-pagedown": "editor::MovePageDown",
@@ -18,7 +19,7 @@
"cmd-alt-enter": "editor::NewlineAbove",
"shift-enter": "editor::NewlineBelow",
"cmd--": "editor::Fold",
"cmd-=": "editor::UnfoldLines",
"cmd-+": "editor::UnfoldLines",
"alt-shift-g": "editor::SplitSelectionIntoLines",
"ctrl-g": [
"editor::SelectNext",

View File

@@ -39,6 +39,7 @@
"w": "vim::NextWordStart",
"{": "vim::StartOfParagraph",
"}": "vim::EndOfParagraph",
"|": "vim::GoToColumn",
"shift-w": [
"vim::NextWordStart",
{
@@ -97,14 +98,8 @@
"ctrl-o": "pane::GoBack",
"ctrl-i": "pane::GoForward",
"ctrl-]": "editor::GoToDefinition",
"escape": [
"vim::SwitchMode",
"Normal"
],
"ctrl+[": [
"vim::SwitchMode",
"Normal"
],
"escape": ["vim::SwitchMode", "Normal"],
"ctrl+[": ["vim::SwitchMode", "Normal"],
"v": "vim::ToggleVisual",
"shift-v": "vim::ToggleVisualLine",
"ctrl-v": "vim::ToggleVisualBlock",
@@ -233,123 +228,36 @@
}
],
// Count support
"1": [
"vim::Number",
1
],
"2": [
"vim::Number",
2
],
"3": [
"vim::Number",
3
],
"4": [
"vim::Number",
4
],
"5": [
"vim::Number",
5
],
"6": [
"vim::Number",
6
],
"7": [
"vim::Number",
7
],
"8": [
"vim::Number",
8
],
"9": [
"vim::Number",
9
],
"1": ["vim::Number", 1],
"2": ["vim::Number", 2],
"3": ["vim::Number", 3],
"4": ["vim::Number", 4],
"5": ["vim::Number", 5],
"6": ["vim::Number", 6],
"7": ["vim::Number", 7],
"8": ["vim::Number", 8],
"9": ["vim::Number", 9],
// window related commands (ctrl-w X)
"ctrl-w left": [
"workspace::ActivatePaneInDirection",
"Left"
],
"ctrl-w right": [
"workspace::ActivatePaneInDirection",
"Right"
],
"ctrl-w up": [
"workspace::ActivatePaneInDirection",
"Up"
],
"ctrl-w down": [
"workspace::ActivatePaneInDirection",
"Down"
],
"ctrl-w h": [
"workspace::ActivatePaneInDirection",
"Left"
],
"ctrl-w l": [
"workspace::ActivatePaneInDirection",
"Right"
],
"ctrl-w k": [
"workspace::ActivatePaneInDirection",
"Up"
],
"ctrl-w j": [
"workspace::ActivatePaneInDirection",
"Down"
],
"ctrl-w ctrl-h": [
"workspace::ActivatePaneInDirection",
"Left"
],
"ctrl-w ctrl-l": [
"workspace::ActivatePaneInDirection",
"Right"
],
"ctrl-w ctrl-k": [
"workspace::ActivatePaneInDirection",
"Up"
],
"ctrl-w ctrl-j": [
"workspace::ActivatePaneInDirection",
"Down"
],
"ctrl-w shift-left": [
"workspace::SwapPaneInDirection",
"Left"
],
"ctrl-w shift-right": [
"workspace::SwapPaneInDirection",
"Right"
],
"ctrl-w shift-up": [
"workspace::SwapPaneInDirection",
"Up"
],
"ctrl-w shift-down": [
"workspace::SwapPaneInDirection",
"Down"
],
"ctrl-w shift-h": [
"workspace::SwapPaneInDirection",
"Left"
],
"ctrl-w shift-l": [
"workspace::SwapPaneInDirection",
"Right"
],
"ctrl-w shift-k": [
"workspace::SwapPaneInDirection",
"Up"
],
"ctrl-w shift-j": [
"workspace::SwapPaneInDirection",
"Down"
],
"ctrl-w left": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-w right": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-w up": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-w down": ["workspace::ActivatePaneInDirection", "Down"],
"ctrl-w h": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-w l": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-w k": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-w j": ["workspace::ActivatePaneInDirection", "Down"],
"ctrl-w ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-w ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-w ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-w ctrl-j": ["workspace::ActivatePaneInDirection", "Down"],
"ctrl-w shift-left": ["workspace::SwapPaneInDirection", "Left"],
"ctrl-w shift-right": ["workspace::SwapPaneInDirection", "Right"],
"ctrl-w shift-up": ["workspace::SwapPaneInDirection", "Up"],
"ctrl-w shift-down": ["workspace::SwapPaneInDirection", "Down"],
"ctrl-w shift-h": ["workspace::SwapPaneInDirection", "Left"],
"ctrl-w shift-l": ["workspace::SwapPaneInDirection", "Right"],
"ctrl-w shift-k": ["workspace::SwapPaneInDirection", "Up"],
"ctrl-w shift-j": ["workspace::SwapPaneInDirection", "Down"],
"ctrl-w g t": "pane::ActivateNextItem",
"ctrl-w ctrl-g t": "pane::ActivateNextItem",
"ctrl-w g shift-t": "pane::ActivatePrevItem",
@@ -371,14 +279,8 @@
"ctrl-w ctrl-q": "pane::CloseAllItems",
"ctrl-w o": "workspace::CloseInactiveTabsAndPanes",
"ctrl-w ctrl-o": "workspace::CloseInactiveTabsAndPanes",
"ctrl-w n": [
"workspace::NewFileInDirection",
"Up"
],
"ctrl-w ctrl-n": [
"workspace::NewFileInDirection",
"Up"
]
"ctrl-w n": ["workspace::NewFileInDirection", "Up"],
"ctrl-w ctrl-n": ["workspace::NewFileInDirection", "Up"]
}
},
{
@@ -393,21 +295,12 @@
"context": "Editor && vim_mode == normal && vim_operator == none && !VimWaiting",
"bindings": {
".": "vim::Repeat",
"c": [
"vim::PushOperator",
"Change"
],
"c": ["vim::PushOperator", "Change"],
"shift-c": "vim::ChangeToEndOfLine",
"d": [
"vim::PushOperator",
"Delete"
],
"d": ["vim::PushOperator", "Delete"],
"shift-d": "vim::DeleteToEndOfLine",
"shift-j": "vim::JoinLines",
"y": [
"vim::PushOperator",
"Yank"
],
"y": ["vim::PushOperator", "Yank"],
"shift-y": "vim::YankLine",
"i": "vim::InsertBefore",
"shift-i": "vim::InsertFirstNonWhitespace",
@@ -443,10 +336,7 @@
"backwards": true
}
],
"r": [
"vim::PushOperator",
"Replace"
],
"r": ["vim::PushOperator", "Replace"],
"s": "vim::Substitute",
"shift-s": "vim::SubstituteLine",
"> >": "editor::Indent",
@@ -458,10 +348,7 @@
{
"context": "Editor && VimCount",
"bindings": {
"0": [
"vim::Number",
0
]
"0": ["vim::Number", 0]
}
},
{
@@ -497,12 +384,15 @@
"'": "vim::Quotes",
"`": "vim::BackQuotes",
"\"": "vim::DoubleQuotes",
"|": "vim::VerticalBars",
"(": "vim::Parentheses",
")": "vim::Parentheses",
"b": "vim::Parentheses",
"[": "vim::SquareBrackets",
"]": "vim::SquareBrackets",
"{": "vim::CurlyBrackets",
"}": "vim::CurlyBrackets",
"shift-b": "vim::CurlyBrackets",
"<": "vim::AngleBrackets",
">": "vim::AngleBrackets"
}
@@ -548,22 +438,10 @@
"shift-i": "vim::InsertBefore",
"shift-a": "vim::InsertAfter",
"shift-j": "vim::JoinLines",
"r": [
"vim::PushOperator",
"Replace"
],
"ctrl-c": [
"vim::SwitchMode",
"Normal"
],
"escape": [
"vim::SwitchMode",
"Normal"
],
"ctrl+[": [
"vim::SwitchMode",
"Normal"
],
"r": ["vim::PushOperator", "Replace"],
"ctrl-c": ["vim::SwitchMode", "Normal"],
"escape": ["vim::SwitchMode", "Normal"],
"ctrl+[": ["vim::SwitchMode", "Normal"],
">": "editor::Indent",
"<": "editor::Outdent",
"i": [
@@ -602,14 +480,8 @@
"bindings": {
"tab": "vim::Tab",
"enter": "vim::Enter",
"escape": [
"vim::SwitchMode",
"Normal"
],
"ctrl+[": [
"vim::SwitchMode",
"Normal"
]
"escape": ["vim::SwitchMode", "Normal"],
"ctrl+[": ["vim::SwitchMode", "Normal"]
}
},
{

View File

@@ -35,6 +35,15 @@
// "custom": 2
// },
"buffer_line_height": "comfortable",
// The name of a font to use for rendering text in the UI
"ui_font_family": "Zed Mono",
// The OpenType features to enable for text in the UI
"ui_font_features": {
// Disable ligatures:
"calt": false
},
// The default font size for text in the UI
"ui_font_size": 16,
// The factor to grow the active pane by. Defaults to 1.0
// which gives the same size as all other panes.
"active_pane_magnification": 1.0,
@@ -102,6 +111,16 @@
"selections": true
},
"relative_line_numbers": false,
// When to populate a new search's query based on the text under the cursor.
// This setting can take the following three values:
//
// 1. Always populate the search query with the word under the cursor (default).
// "always"
// 2. Only populate the search query when there is text selected
// "selection"
// 3. Never populate the search query
// "never"
"seed_search_query_from_cursor": "always",
// Inlay hint related settings
"inlay_hints": {
// Global switch to toggle hints on and off, switched off by default.
@@ -142,6 +161,14 @@
// Default width of the channels panel.
"default_width": 240
},
"notification_panel": {
// Whether to show the collaboration panel button in the status bar.
"button": true,
// Where to dock channels panel. Can be 'left' or 'right'.
"dock": "right",
// Default width of the channels panel.
"default_width": 380
},
"assistant": {
// Whether to show the assistant panel button in the status bar.
"button": true,
@@ -156,7 +183,8 @@
//
// 1. "gpt-3.5-turbo-0613""
// 2. "gpt-4-0613""
"default_open_ai_model": "gpt-4-0613"
// 3. "gpt-4-1106-preview"
"default_open_ai_model": "gpt-4-1106-preview"
},
// Whether the screen sharing icon is shown in the os status bar.
"show_call_status_icon": true,
@@ -191,7 +219,7 @@
"ensure_final_newline_on_save": true,
// Whether or not to perform a buffer format before saving
"format_on_save": "on",
// How to perform a buffer format. This setting can take two values:
// How to perform a buffer format. This setting can take 4 values:
//
// 1. Format code using the current language server:
// "formatter": "language_server"
@@ -240,6 +268,19 @@
// Whether to show warnings or not by default.
"include_warnings": true
},
// Add files or globs of files that will be excluded by Zed entirely:
// they will be skipped during FS scan(s), file tree and file search
// will lack the corresponding file entries.
"file_scan_exclusions": [
"**/.git",
"**/.svn",
"**/.hg",
"**/CVS",
"**/.DS_Store",
"**/Thumbs.db",
"**/.classpath",
"**/.settings"
],
// Git gutter behavior configuration.
"git": {
// Control whether the git gutter is shown. May take 2 values:
@@ -252,9 +293,7 @@
"copilot": {
// The set of glob patterns for which copilot should be disabled
// in any matching file.
"disabled_globs": [
".env"
]
"disabled_globs": [".env"]
},
// Settings specific to journaling
"journal": {
@@ -363,12 +402,7 @@
// Default directories to search for virtual environments, relative
// to the current working directory. We recommend overriding this
// in your project's settings, rather than globally.
"directories": [
".env",
"env",
".venv",
"venv"
],
"directories": [".env", "env", ".venv", "venv"],
// Can also be 'csh', 'fish', and `nushell`
"activate_script": "default"
}

View File

@@ -7,5 +7,6 @@
// custom settings, run the `open default settings` command
// from the command palette or from `Zed` application menu.
{
"buffer_font_size": 15
"ui_font_size": 16,
"buffer_font_size": 16
}

View File

@@ -0,0 +1,7 @@
Copyright (c) 2017 eliverlara@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,369 @@
{
"name": "Andromeda Bordered",
"type": "dark",
"colors": {
"focusBorder": "#746f77",
"foreground": "#D5CED9",
"widget.shadow": "#14151A",
"selection.background": "#746f77",
"errorForeground": "#FC644D",
"button.background": "#00e8c5cc",
"button.hoverBackground": "#07d4b6cc",
"dropdown.background": "#2b303b",
"dropdown.border": "#363c49",
"input.background": "#2b303b",
"input.placeholderForeground": "#746f77",
"inputOption.activeBorder": "#C668BA",
"inputValidation.errorBackground": "#D65343",
"inputValidation.errorBorder": "#D65343",
"inputValidation.infoBackground": "#3A6395",
"inputValidation.infoBorder": "#3A6395",
"inputValidation.warningBackground": "#DE9237",
"inputValidation.warningBorder": "#DE9237",
"scrollbar.shadow": "#23262E",
"scrollbarSlider.activeBackground": "#3A3F4CCC",
"scrollbarSlider.background": "#3A3F4C77",
"scrollbarSlider.hoverBackground": "#3A3F4CAA",
"badge.background": "#00b0ff",
"badge.foreground": "#20232B",
"progressBar.background": "#C668BA",
"list.activeSelectionBackground": "#23262E",
"list.activeSelectionForeground": "#00e8c6",
"list.dropBackground": "#3a404e",
"list.focusBackground": "#282b35",
"list.focusForeground": "#eee",
"list.hoverBackground": "#23262E",
"list.hoverForeground": "#eee",
"list.inactiveSelectionBackground": "#23262E",
"list.inactiveSelectionForeground": "#00e8c6",
"activityBar.background": "#20232B",
"activityBar.dropBackground": "#3a404e",
"activityBar.foreground": "#BAAFC0",
"activityBarBadge.background": "#00b0ff",
"activityBarBadge.foreground": "#20232B",
"activityBar.border": "#1B1D23",
"sideBar.background": "#23262E",
"sideBarSectionHeader.background": "#23262E",
"sideBarTitle.foreground": "#00e8c6",
"sideBar.foreground": "#999999",
"sideBar.border": "#1B1D23",
"editorGroup.background": "#23262E",
"editorGroup.dropBackground": "#495061d7",
"editorGroupHeader.tabsBackground": "#23262E",
"tab.activeBackground": "#262A33",
"tab.inactiveBackground": "#23262E",
"tab.activeForeground": "#00e8c6",
"tab.inactiveForeground": "#746f77",
"editor.background": "#262A33",
"editor.foreground": "#D5CED9",
"editorLineNumber.foreground": "#746f77",
"editorCursor.foreground": "#FFF",
"editor.selectionBackground": "#3D4352",
"editor.selectionHighlightBackground": "#4F435580",
"editor.wordHighlightBackground": "#4F4355",
"editor.wordHighlightStrongBackground": "#db45a280",
"editor.findMatchBackground": "#f39d1256",
"editor.findMatchHighlightBackground": "#59b8b377",
"editor.findMatchBorder": "#f39d12b6",
"editor.hoverHighlightBackground": "#373941",
"editor.lineHighlightBackground": "#2e323d",
"editor.lineHighlightBorder": "#2e323d",
"editorLink.activeForeground": "#3B79C7",
"editor.rangeHighlightBackground": "#372F3C",
"editorWhitespace.foreground": "#333844",
"editorIndentGuide.background": "#333844",
"editorIndentGuide.activeBackground": "#585C66",
"editorRuler.foreground": "#4F4355",
"editorCodeLens.foreground": "#746f77",
"editorBracketMatch.background": "#746f77",
"editorBracketMatch.border": "#746f77",
"editorOverviewRuler.border": "#1B1D23",
"editorError.foreground": "#FC644D",
"editorWarning.foreground": "#FF9F2E",
"editorGutter.modifiedBackground": "#5BC0EBBB",
"editorGutter.addedBackground": "#9BC53DBB",
"editorGutter.deletedBackground": "#FC644DBB",
"diffEditor.insertedTextBackground": "#29BF1220",
"diffEditor.removedTextBackground": "#F21B3F20",
"editorWidget.background": "#20232A",
"editorSuggestWidget.background": "#20232A",
"editorSuggestWidget.border": "#372F3C",
"editorSuggestWidget.selectedBackground": "#373941",
"editorHoverWidget.background": "#373941",
"editorHoverWidget.border": "#00e8c5cc",
"debugExceptionWidget.background": "#FF9F2E60",
"debugExceptionWidget.border": "#FF9F2E60",
"minimapSlider.background": "#58607460",
"minimapSlider.hoverBackground": "#60698060",
"minimapSlider.activeBackground": "#60698060",
"peekView.border": "#23262E",
"peekViewEditor.background": "#1A1C22",
"peekViewEditor.matchHighlightBackground": "#FF9F2E60",
"peekViewResult.background": "#1A1C22",
"peekViewResult.matchHighlightBackground": "#FF9F2E60",
"peekViewResult.selectionBackground": "#23262E",
"peekViewTitle.background": "#1A1C22",
"peekViewTitleDescription.foreground": "#746f77",
"merge.currentHeaderBackground": "#F92672",
"merge.currentContentBackground": "#F9267240",
"merge.incomingHeaderBackground": "#3B79C7BB",
"merge.incomingContentBackground": "#3B79C740",
"panel.background": "#23262E",
"panel.border": "#1B1D23",
"panelTitle.activeBorder": "#23262E",
"panelTitle.inactiveForeground": "#746f77",
"statusBar.background": "#23262E",
"statusBar.debuggingBackground": "#FC644D",
"statusBar.noFolderBackground": "#23262E",
"statusBarItem.activeBackground": "#00e8c5cc",
"statusBarItem.hoverBackground": "#07d4b5b0",
"statusBarItem.prominentBackground": "#07d4b5b0",
"statusBarItem.prominentHoverBackground": "#00e8c5cc",
"terminal.ansiRed":"#ee5d43",
"terminal.ansiGreen":"#96E072",
"terminal.ansiYellow":"#FFE66D",
"terminal.ansiBlue":"#7cb7ff",
"terminal.ansiMagenta":"#ff00aa",
"terminal.ansiCyan":"#00e8c6",
"terminal.ansiBrightRed":"#ee5d43",
"terminal.ansiBrightGreen":"#96E072",
"terminal.ansiBrightYellow":"#FFE66D",
"terminal.ansiBrightBlue":"#7cb7ff",
"terminal.ansiBrightMagenta":"#ff00aa",
"terminal.ansiBrightCyan":"#00e8c6",
"terminalCursor.background": "#23262E",
"terminalCursor.foreground": "#FFE66D",
"titleBar.activeBackground": "#23262E",
"notification.background": "#2d313b",
"notification.buttonBackground": "#00e8c5cc",
"notification.buttonHoverBackground": "#07d4b5b0",
"notification.infoBackground": "#00b0ff",
"notification.warningBackground": "#FF9F2E",
"notification.errorBackground": "#FC644D",
"extensionButton.prominentBackground": "#07d4b6cc",
"extensionButton.prominentHoverBackground": "#07d4b5b0",
"pickerGroup.border": "#4F4355",
"pickerGroup.foreground": "#746f77",
"debugToolBar.background": "#20232A",
"walkThrough.embeddedEditorBackground": "#23262E",
"gitDecoration.ignoredResourceForeground": "#555555"
},
"tokenColors": [
{
"settings": {
"foreground": "#D5CED9",
"background": "#23262E"
}
},
{
"name": "Comment color",
"scope": [
"comment",
"markup.quote.markdown",
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#A0A1A7cc"
}
},
{
"name": "Text Color",
"scope": [
"meta.template.expression.js",
"constant.name.attribute.tag.jade",
"punctuation.definition.metadata.markdown",
"punctuation.definition.string.end.markdown",
"punctuation.definition.string.begin.markdown"
],
"settings": {
"foreground": "#D5CED9"
}
},
{
"name": "Cyan",
"scope": [
"variable",
"support.variable",
"entity.name.tag.yaml",
"constant.character.entity.html",
"source.css entity.name.tag.reference",
"beginning.punctuation.definition.list.markdown",
"source.css entity.other.attribute-name.parent-selector",
"meta.structure.dictionary.json support.type.property-name"
],
"settings": {
"foreground": "#00e8c6"
}
},
{
"name": "Orange",
"scope": [
"markup.bold",
"constant.numeric",
"meta.group.regexp",
"constant.other.php",
"support.constant.ext.php",
"constant.other.class.php",
"support.constant.core.php",
"fenced_code.block.language",
"constant.other.caps.python",
"entity.other.attribute-name",
"support.type.exception.python",
"source.css keyword.other.unit",
"variable.other.object.property.js.jsx", "variable.other.object.js"
],
"settings": {
"foreground": "#f39c12"
}
},
{
"name": "Yellow",
"scope": [
"markup.list",
"text.xml string",
"entity.name.type",
"support.function",
"entity.other.attribute-name",
"meta.at-rule.extend",
"entity.name.function",
"entity.other.inherited-class",
"entity.other.keyframe-offset.css",
"text.html.markdown string.quoted",
"meta.function-call.generic.python",
"meta.at-rule.extend support.constant",
"entity.other.attribute-name.class.jade",
"source.css entity.other.attribute-name",
"text.xml punctuation.definition.string"
],
"settings": {
"foreground": "#FFE66D"
}
},
{
"name": "Pink",
"scope": [
"markup.heading",
"variable.language.this.js",
"variable.language.special.self.python"
],
"settings": {
"foreground": "#ff00aa"
}
},
{
"name": "Hot Pink",
"scope": [
"punctuation.definition.interpolation",
"punctuation.section.embedded.end.php",
"punctuation.section.embedded.end.ruby",
"punctuation.section.embedded.begin.php",
"punctuation.section.embedded.begin.ruby",
"punctuation.definition.template-expression",
"entity.name.tag"
],
"settings": {
"foreground": "#f92672"
}
},
{
"name": "Purple",
"scope": [
"storage",
"keyword",
"meta.link",
"meta.image",
"markup.italic",
"source.js support.type"
],
"settings": {
"foreground": "#c74ded"
}
},
{
"name": "Blue",
"scope": [
"string.regexp",
"markup.changed"
],
"settings": {
"foreground": "#7cb7ff"
}
},
{
"name": "Red",
"scope": [
"constant",
"support.class",
"keyword.operator",
"support.constant",
"text.html.markdown string",
"source.css support.function",
"source.php support.function",
"support.function.magic.python",
"entity.other.attribute-name.id",
"markup.deleted"
],
"settings": {
"foreground": "#ee5d43"
}
},
{
"name": "Green",
"scope": [
"string",
"text.html.php string",
"markup.inline.raw",
"markup.inserted",
"punctuation.definition.string",
"punctuation.definition.markdown",
"text.html meta.embedded source.js string",
"text.html.php punctuation.definition.string",
"text.html meta.embedded source.js punctuation.definition.string",
"text.html punctuation.definition.string",
"text.html string"
],
"settings": {
"foreground": "#96E072"
}
},
{
"name": "Font Underline",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"fontStyle": "underline"
}
}
]
}

View File

@@ -0,0 +1,367 @@
{
"name": "Andromeda",
"type": "dark",
"colors": {
"focusBorder": "#746f77",
"foreground": "#D5CED9",
"widget.shadow": "#14151A",
"selection.background": "#746f77",
"errorForeground": "#FC644D",
"button.background": "#00e8c5cc",
"button.hoverBackground": "#07d4b6cc",
"dropdown.background": "#2b303b",
"dropdown.border": "#363c49",
"input.background": "#2b303b",
"input.placeholderForeground": "#746f77",
"inputOption.activeBorder": "#C668BA",
"inputValidation.errorBackground": "#D65343",
"inputValidation.errorBorder": "#D65343",
"inputValidation.infoBackground": "#3A6395",
"inputValidation.infoBorder": "#3A6395",
"inputValidation.warningBackground": "#DE9237",
"inputValidation.warningBorder": "#DE9237",
"scrollbar.shadow": "#23262E",
"scrollbarSlider.activeBackground": "#3A3F4CCC",
"scrollbarSlider.background": "#3A3F4C77",
"scrollbarSlider.hoverBackground": "#3A3F4CAA",
"badge.background": "#00b0ff",
"badge.foreground": "#20232B",
"progressBar.background": "#C668BA",
"list.activeSelectionBackground": "#23262E",
"list.activeSelectionForeground": "#00e8c6",
"list.dropBackground": "#3a404e",
"list.focusBackground": "#282b35",
"list.focusForeground": "#eee",
"list.hoverBackground": "#23262E",
"list.hoverForeground": "#eee",
"list.inactiveSelectionBackground": "#23262E",
"list.inactiveSelectionForeground": "#00e8c6",
"activityBar.background": "#23262E",
"activityBar.dropBackground": "#3a404e",
"activityBar.foreground": "#BAAFC0",
"activityBarBadge.background": "#00b0ff",
"activityBarBadge.foreground": "#20232B",
"sideBar.background": "#23262E",
"sideBarSectionHeader.background": "#23262E",
"sideBarTitle.foreground": "#00e8c6",
"sideBar.foreground": "#999999",
"editorGroup.background": "#23262E",
"editorGroup.dropBackground": "#495061d7",
"editorGroupHeader.tabsBackground": "#23262E",
"tab.activeBackground": "#23262e",
"tab.inactiveBackground": "#23262E",
"tab.activeForeground": "#00e8c6",
"tab.inactiveForeground": "#746f77",
"editor.background": "#23262E",
"editor.foreground": "#D5CED9",
"editorLineNumber.foreground": "#746f77",
"editorCursor.foreground": "#FFF",
"editor.selectionBackground": "#3D4352",
"editor.selectionHighlightBackground": "#4F435580",
"editor.wordHighlightBackground": "#4F4355",
"editor.wordHighlightStrongBackground": "#db45a280",
"editor.findMatchBackground": "#f39d1256",
"editor.findMatchHighlightBackground": "#59b8b377",
"editor.findMatchBorder": "#f39d12b6",
"editor.hoverHighlightBackground": "#373941",
"editor.lineHighlightBackground": "#2e323d",
"editor.lineHighlightBorder": "#2e323d",
"editorLink.activeForeground": "#3B79C7",
"editor.rangeHighlightBackground": "#372F3C",
"editorWhitespace.foreground": "#333844",
"editorIndentGuide.background": "#333844",
"editorIndentGuide.activeBackground": "#585C66",
"editorRuler.foreground": "#4F4355",
"editorCodeLens.foreground": "#746f77",
"editorBracketMatch.background": "#746f77",
"editorBracketMatch.border": "#746f77",
"editorOverviewRuler.border": "#1B1D23",
"editorError.foreground": "#FC644D",
"editorWarning.foreground": "#FF9F2E",
"editorGutter.modifiedBackground": "#5BC0EBBB",
"editorGutter.addedBackground": "#9BC53DBB",
"editorGutter.deletedBackground": "#FC644DBB",
"diffEditor.insertedTextBackground": "#29BF1220",
"diffEditor.removedTextBackground": "#F21B3F20",
"editorWidget.background": "#20232A",
"editorSuggestWidget.background": "#20232A",
"editorSuggestWidget.border": "#372F3C",
"editorSuggestWidget.selectedBackground": "#373941",
"editorHoverWidget.background": "#373941",
"editorHoverWidget.border": "#00e8c5cc",
"debugExceptionWidget.background": "#FF9F2E60",
"debugExceptionWidget.border": "#FF9F2E60",
"minimapSlider.background": "#58607460",
"minimapSlider.hoverBackground": "#60698060",
"minimapSlider.activeBackground": "#60698060",
"peekView.border": "#23262E",
"peekViewEditor.background": "#1A1C22",
"peekViewEditor.matchHighlightBackground": "#FF9F2E60",
"peekViewResult.background": "#1A1C22",
"peekViewResult.matchHighlightBackground": "#FF9F2E60",
"peekViewResult.selectionBackground": "#23262E",
"peekViewTitle.background": "#1A1C22",
"peekViewTitleDescription.foreground": "#746f77",
"merge.currentHeaderBackground": "#F92672",
"merge.currentContentBackground": "#F9267240",
"merge.incomingHeaderBackground": "#3B79C7BB",
"merge.incomingContentBackground": "#3B79C740",
"panel.background": "#23262E",
"panel.border": "#1B1D23",
"panelTitle.activeBorder": "#23262E",
"panelTitle.inactiveForeground": "#746f77",
"statusBar.background": "#23262E",
"statusBar.debuggingBackground": "#FC644D",
"statusBar.noFolderBackground": "#23262E",
"statusBarItem.activeBackground": "#00e8c5cc",
"statusBarItem.hoverBackground": "#07d4b5b0",
"statusBarItem.prominentBackground": "#07d4b5b0",
"statusBarItem.prominentHoverBackground": "#00e8c5cc",
"terminal.ansiRed":"#ee5d43",
"terminal.ansiGreen":"#96E072",
"terminal.ansiYellow":"#FFE66D",
"terminal.ansiBlue":"#7cb7ff",
"terminal.ansiMagenta":"#ff00aa",
"terminal.ansiCyan":"#00e8c6",
"terminal.ansiBrightRed":"#ee5d43",
"terminal.ansiBrightGreen":"#96E072",
"terminal.ansiBrightYellow":"#FFE66D",
"terminal.ansiBrightBlue":"#7cb7ff",
"terminal.ansiBrightMagenta":"#ff00aa",
"terminal.ansiBrightCyan":"#00e8c6",
"terminalCursor.background": "#23262E",
"terminalCursor.foreground": "#FFE66D",
"titleBar.activeBackground": "#23262E",
"notification.background": "#2d313b",
"notification.buttonBackground": "#00e8c5cc",
"notification.buttonHoverBackground": "#07d4b5b0",
"notification.infoBackground": "#00b0ff",
"notification.warningBackground": "#FF9F2E",
"notification.errorBackground": "#FC644D",
"extensionButton.prominentBackground": "#07d4b6cc",
"extensionButton.prominentHoverBackground": "#07d4b5b0",
"pickerGroup.border": "#4F4355",
"pickerGroup.foreground": "#746f77",
"debugToolBar.background": "#20232A",
"walkThrough.embeddedEditorBackground": "#23262E",
"gitDecoration.ignoredResourceForeground": "#555555"
},
"tokenColors": [
{
"settings": {
"foreground": "#D5CED9",
"background": "#23262E"
}
},
{
"name": "Comment color",
"scope": [
"comment",
"markup.quote.markdown",
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#A0A1A7cc"
}
},
{
"name": "Text Color",
"scope": [
"meta.template.expression.js",
"constant.name.attribute.tag.jade",
"punctuation.definition.metadata.markdown",
"punctuation.definition.string.end.markdown",
"punctuation.definition.string.begin.markdown"
],
"settings": {
"foreground": "#D5CED9"
}
},
{
"name": "Cyan",
"scope": [
"variable",
"support.variable",
"entity.name.tag.yaml",
"constant.character.entity.html",
"source.css entity.name.tag.reference",
"beginning.punctuation.definition.list.markdown",
"source.css entity.other.attribute-name.parent-selector",
"meta.structure.dictionary.json support.type.property-name"
],
"settings": {
"foreground": "#00e8c6"
}
},
{
"name": "Orange",
"scope": [
"markup.bold",
"constant.numeric",
"meta.group.regexp",
"constant.other.php",
"support.constant.ext.php",
"constant.other.class.php",
"support.constant.core.php",
"fenced_code.block.language",
"constant.other.caps.python",
"entity.other.attribute-name",
"support.type.exception.python",
"source.css keyword.other.unit",
"variable.other.object.property.js.jsx", "variable.other.object.js"
],
"settings": {
"foreground": "#f39c12"
}
},
{
"name": "Yellow",
"scope": [
"markup.list",
"text.xml string",
"entity.name.type",
"support.function",
"entity.other.attribute-name",
"meta.at-rule.extend",
"entity.name.function",
"entity.other.inherited-class",
"entity.other.keyframe-offset.css",
"text.html.markdown string.quoted",
"meta.function-call.generic.python",
"meta.at-rule.extend support.constant",
"entity.other.attribute-name.class.jade",
"source.css entity.other.attribute-name",
"text.xml punctuation.definition.string"
],
"settings": {
"foreground": "#FFE66D"
}
},
{
"name": "Pink",
"scope": [
"markup.heading",
"variable.language.this.js",
"variable.language.special.self.python"
],
"settings": {
"foreground": "#ff00aa"
}
},
{
"name": "Hot Pink",
"scope": [
"punctuation.definition.interpolation",
"punctuation.section.embedded.end.php",
"punctuation.section.embedded.end.ruby",
"punctuation.section.embedded.begin.php",
"punctuation.section.embedded.begin.ruby",
"punctuation.definition.template-expression",
"entity.name.tag"
],
"settings": {
"foreground": "#f92672"
}
},
{
"name": "Purple",
"scope": [
"storage",
"keyword",
"meta.link",
"meta.image",
"markup.italic",
"source.js support.type"
],
"settings": {
"foreground": "#c74ded"
}
},
{
"name": "Blue",
"scope": [
"string.regexp",
"markup.changed"
],
"settings": {
"foreground": "#7cb7ff"
}
},
{
"name": "Red",
"scope": [
"constant",
"support.class",
"keyword.operator",
"support.constant",
"text.html.markdown string",
"source.css support.function",
"source.php support.function",
"support.function.magic.python",
"entity.other.attribute-name.id",
"markup.deleted"
],
"settings": {
"foreground": "#ee5d43"
}
},
{
"name": "Green",
"scope": [
"string",
"text.html.php string",
"markup.inline.raw",
"markup.inserted",
"punctuation.definition.string",
"punctuation.definition.markdown",
"text.html meta.embedded source.js string",
"text.html.php punctuation.definition.string",
"text.html meta.embedded source.js punctuation.definition.string",
"text.html punctuation.definition.string",
"text.html string"
],
"settings": {
"foreground": "#96E072"
}
},
{
"name": "Font Underline",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"fontStyle": "underline"
}
}
]
}

View File

@@ -0,0 +1,16 @@
{
"name": "Andromeda",
"author": "Eliver Lara (EliverLara)",
"themes": [
{
"name": "Andromeda",
"file_name": "andromeda.json",
"appearance": "dark"
},
{
"name": "Andromeda Bordered",
"file_name": "andromeda-bordered.json",
"appearance": "dark"
}
]
}

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016 Ike Ku
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,847 @@
{
"type": "dark",
"colors": {
"focusBorder": "#e6b450b3",
"foreground": "#565b66",
"widget.shadow": "#00000080",
"selection.background": "#409fff4d",
"icon.foreground": "#565b66",
"errorForeground": "#d95757",
"descriptionForeground": "#565b66",
"textBlockQuote.background": "#0f131a",
"textLink.foreground": "#e6b450",
"textLink.activeForeground": "#e6b450",
"textPreformat.foreground": "#bfbdb6",
"button.background": "#e6b450",
"button.foreground": "#734d00",
"button.hoverBackground": "#e1af4b",
"button.secondaryBackground": "#565b6633",
"button.secondaryForeground": "#bfbdb6",
"button.secondaryHoverBackground": "#565b6680",
"dropdown.background": "#0d1017",
"dropdown.foreground": "#565b66",
"dropdown.border": "#565b6645",
"input.background": "#0d1017",
"input.border": "#565b6645",
"input.foreground": "#bfbdb6",
"input.placeholderForeground": "#565b6680",
"inputOption.activeBorder": "#e6b4504d",
"inputOption.activeBackground": "#e6b45033",
"inputOption.activeForeground": "#e6b450",
"inputValidation.errorBackground": "#0d1017",
"inputValidation.errorBorder": "#d95757",
"inputValidation.infoBackground": "#0b0e14",
"inputValidation.infoBorder": "#39bae6",
"inputValidation.warningBackground": "#0b0e14",
"inputValidation.warningBorder": "#ffb454",
"scrollbar.shadow": "#1e232b00",
"scrollbarSlider.background": "#565b6666",
"scrollbarSlider.hoverBackground": "#565b6699",
"scrollbarSlider.activeBackground": "#565b66b3",
"badge.background": "#e6b45033",
"badge.foreground": "#e6b450",
"progressBar.background": "#e6b450",
"list.activeSelectionBackground": "#47526640",
"list.activeSelectionForeground": "#bfbdb6",
"list.focusBackground": "#47526640",
"list.focusForeground": "#bfbdb6",
"list.focusOutline": "#47526640",
"list.highlightForeground": "#e6b450",
"list.deemphasizedForeground": "#d95757",
"list.hoverBackground": "#47526640",
"list.inactiveSelectionBackground": "#47526633",
"list.inactiveSelectionForeground": "#565b66",
"list.invalidItemForeground": "#565b664d",
"list.errorForeground": "#d95757",
"tree.indentGuidesStroke": "#6c738080",
"listFilterWidget.background": "#0f131a",
"listFilterWidget.outline": "#e6b450",
"listFilterWidget.noMatchesOutline": "#d95757",
"list.filterMatchBackground": "#5f4c7266",
"list.filterMatchBorder": "#6c598066",
"activityBar.background": "#0b0e14",
"activityBar.foreground": "#565b66cc",
"activityBar.inactiveForeground": "#565b6699",
"activityBar.border": "#0b0e14",
"activityBar.activeBorder": "#e6b450",
"activityBarBadge.background": "#e6b450",
"activityBarBadge.foreground": "#734d00",
"sideBar.background": "#0b0e14",
"sideBar.border": "#0b0e14",
"sideBarTitle.foreground": "#565b66",
"sideBarSectionHeader.background": "#0b0e14",
"sideBarSectionHeader.foreground": "#565b66",
"sideBarSectionHeader.border": "#0b0e14",
"minimap.background": "#0b0e14",
"minimap.selectionHighlight": "#409fff4d",
"minimap.errorHighlight": "#d95757",
"minimap.findMatchHighlight": "#6c5980",
"minimapGutter.addedBackground": "#7fd962",
"minimapGutter.modifiedBackground": "#73b8ff",
"minimapGutter.deletedBackground": "#f26d78",
"editorGroup.border": "#1e232b",
"editorGroup.background": "#0f131a",
"editorGroupHeader.noTabsBackground": "#0b0e14",
"editorGroupHeader.tabsBackground": "#0b0e14",
"editorGroupHeader.tabsBorder": "#0b0e14",
"tab.activeBackground": "#0b0e14",
"tab.activeForeground": "#bfbdb6",
"tab.border": "#0b0e14",
"tab.activeBorder": "#e6b450",
"tab.unfocusedActiveBorder": "#565b66",
"tab.inactiveBackground": "#0b0e14",
"tab.inactiveForeground": "#565b66",
"tab.unfocusedActiveForeground": "#565b66",
"tab.unfocusedInactiveForeground": "#565b66",
"editor.background": "#0b0e14",
"editor.foreground": "#bfbdb6",
"editorLineNumber.foreground": "#6c738099",
"editorLineNumber.activeForeground": "#6c7380e6",
"editorCursor.foreground": "#e6b450",
"editor.inactiveSelectionBackground": "#409fff21",
"editor.selectionBackground": "#409fff4d",
"editor.selectionHighlightBackground": "#7fd96226",
"editor.selectionHighlightBorder": "#7fd96200",
"editor.wordHighlightBackground": "#73b8ff14",
"editor.wordHighlightStrongBackground": "#7fd96214",
"editor.wordHighlightBorder": "#73b8ff80",
"editor.wordHighlightStrongBorder": "#7fd96280",
"editor.findMatchBackground": "#6c5980",
"editor.findMatchBorder": "#6c5980",
"editor.findMatchHighlightBackground": "#6c598066",
"editor.findMatchHighlightBorder": "#5f4c7266",
"editor.findRangeHighlightBackground": "#6c598040",
"editor.rangeHighlightBackground": "#6c598033",
"editor.lineHighlightBackground": "#131721",
"editorLink.activeForeground": "#e6b450",
"editorWhitespace.foreground": "#6c738099",
"editorIndentGuide.background": "#6c738033",
"editorIndentGuide.activeBackground": "#6c738080",
"editorRuler.foreground": "#6c738033",
"editorCodeLens.foreground": "#acb6bf8c",
"editorBracketMatch.background": "#6c73804d",
"editorBracketMatch.border": "#6c73804d",
"editor.snippetTabstopHighlightBackground": "#7fd96233",
"editorOverviewRuler.border": "#1e232b",
"editorOverviewRuler.modifiedForeground": "#73b8ff",
"editorOverviewRuler.addedForeground": "#7fd962",
"editorOverviewRuler.deletedForeground": "#f26d78",
"editorOverviewRuler.errorForeground": "#d95757",
"editorOverviewRuler.warningForeground": "#e6b450",
"editorOverviewRuler.bracketMatchForeground": "#6c7380b3",
"editorOverviewRuler.wordHighlightForeground": "#73b8ff66",
"editorOverviewRuler.wordHighlightStrongForeground": "#7fd96266",
"editorOverviewRuler.findMatchForeground": "#6c5980",
"editorError.foreground": "#d95757",
"editorWarning.foreground": "#e6b450",
"editorGutter.modifiedBackground": "#73b8ffcc",
"editorGutter.addedBackground": "#7fd962cc",
"editorGutter.deletedBackground": "#f26d78cc",
"diffEditor.insertedTextBackground": "#7fd9621f",
"diffEditor.removedTextBackground": "#f26d781f",
"diffEditor.diagonalFill": "#1e232b",
"editorWidget.background": "#0f131a",
"editorWidget.border": "#1e232b",
"editorHoverWidget.background": "#0f131a",
"editorHoverWidget.border": "#1e232b",
"editorSuggestWidget.background": "#0f131a",
"editorSuggestWidget.border": "#1e232b",
"editorSuggestWidget.highlightForeground": "#e6b450",
"editorSuggestWidget.selectedBackground": "#47526640",
"debugExceptionWidget.border": "#1e232b",
"debugExceptionWidget.background": "#0f131a",
"editorMarkerNavigation.background": "#0f131a",
"peekView.border": "#47526640",
"peekViewTitle.background": "#47526640",
"peekViewTitleDescription.foreground": "#565b66",
"peekViewTitleLabel.foreground": "#bfbdb6",
"peekViewEditor.background": "#0f131a",
"peekViewEditor.matchHighlightBackground": "#6c598066",
"peekViewEditor.matchHighlightBorder": "#5f4c7266",
"peekViewResult.background": "#0f131a",
"peekViewResult.fileForeground": "#bfbdb6",
"peekViewResult.lineForeground": "#565b66",
"peekViewResult.matchHighlightBackground": "#6c598066",
"peekViewResult.selectionBackground": "#47526640",
"panel.background": "#0b0e14",
"panel.border": "#1e232b",
"panelTitle.activeBorder": "#e6b450",
"panelTitle.activeForeground": "#bfbdb6",
"panelTitle.inactiveForeground": "#565b66",
"statusBar.background": "#0b0e14",
"statusBar.foreground": "#565b66",
"statusBar.border": "#0b0e14",
"statusBar.debuggingBackground": "#f29668",
"statusBar.debuggingForeground": "#0d1017",
"statusBar.noFolderBackground": "#0f131a",
"statusBarItem.activeBackground": "#565b6633",
"statusBarItem.hoverBackground": "#565b6633",
"statusBarItem.prominentBackground": "#1e232b",
"statusBarItem.prominentHoverBackground": "#00000030",
"statusBarItem.remoteBackground": "#e6b450",
"statusBarItem.remoteForeground": "#734d00",
"titleBar.activeBackground": "#0b0e14",
"titleBar.activeForeground": "#bfbdb6",
"titleBar.inactiveBackground": "#0b0e14",
"titleBar.inactiveForeground": "#565b66",
"titleBar.border": "#0b0e14",
"extensionButton.prominentForeground": "#734d00",
"extensionButton.prominentBackground": "#e6b450",
"extensionButton.prominentHoverBackground": "#e1af4b",
"pickerGroup.border": "#1e232b",
"pickerGroup.foreground": "#565b6680",
"debugToolBar.background": "#0f131a",
"debugIcon.breakpointForeground": "#f29668",
"debugIcon.breakpointDisabledForeground": "#f2966880",
"debugConsoleInputIcon.foreground": "#e6b450",
"welcomePage.tileBackground": "#0b0e14",
"welcomePage.tileShadow": "#00000080",
"welcomePage.progress.background": "#131721",
"welcomePage.buttonBackground": "#e6b45066",
"walkThrough.embeddedEditorBackground": "#0f131a",
"gitDecoration.modifiedResourceForeground": "#73b8ffb3",
"gitDecoration.deletedResourceForeground": "#f26d78b3",
"gitDecoration.untrackedResourceForeground": "#7fd962b3",
"gitDecoration.ignoredResourceForeground": "#565b6680",
"gitDecoration.conflictingResourceForeground": "",
"gitDecoration.submoduleResourceForeground": "#d2a6ffb3",
"settings.headerForeground": "#bfbdb6",
"settings.modifiedItemIndicator": "#73b8ff",
"keybindingLabel.background": "#565b661a",
"keybindingLabel.foreground": "#bfbdb6",
"keybindingLabel.border": "#bfbdb61a",
"keybindingLabel.bottomBorder": "#bfbdb61a",
"terminal.background": "#0b0e14",
"terminal.foreground": "#bfbdb6",
"terminal.ansiBlack": "#1e232b",
"terminal.ansiRed": "#ea6c73",
"terminal.ansiGreen": "#7fd962",
"terminal.ansiYellow": "#f9af4f",
"terminal.ansiBlue": "#53bdfa",
"terminal.ansiMagenta": "#cda1fa",
"terminal.ansiCyan": "#90e1c6",
"terminal.ansiWhite": "#c7c7c7",
"terminal.ansiBrightBlack": "#686868",
"terminal.ansiBrightRed": "#f07178",
"terminal.ansiBrightGreen": "#aad94c",
"terminal.ansiBrightYellow": "#ffb454",
"terminal.ansiBrightBlue": "#59c2ff",
"terminal.ansiBrightMagenta": "#d2a6ff",
"terminal.ansiBrightCyan": "#95e6cb",
"terminal.ansiBrightWhite": "#ffffff"
},
"tokenColors": [
{
"settings": {
"background": "#0b0e14",
"foreground": "#bfbdb6"
}
},
{
"name": "Comment",
"scope": [
"comment"
],
"settings": {
"fontStyle": "italic",
"foreground": "#acb6bf8c"
}
},
{
"name": "String",
"scope": [
"string",
"constant.other.symbol"
],
"settings": {
"foreground": "#aad94c"
}
},
{
"name": "Regular Expressions and Escape Characters",
"scope": [
"string.regexp",
"constant.character",
"constant.other"
],
"settings": {
"foreground": "#95e6cb"
}
},
{
"name": "Number",
"scope": [
"constant.numeric"
],
"settings": {
"foreground": "#d2a6ff"
}
},
{
"name": "Built-in constants",
"scope": [
"constant.language"
],
"settings": {
"foreground": "#d2a6ff"
}
},
{
"name": "Variable",
"scope": [
"variable",
"variable.parameter.function-call"
],
"settings": {
"foreground": "#bfbdb6"
}
},
{
"name": "Member Variable",
"scope": [
"variable.member"
],
"settings": {
"foreground": "#f07178"
}
},
{
"name": "Language variable",
"scope": [
"variable.language"
],
"settings": {
"fontStyle": "italic",
"foreground": "#39bae6"
}
},
{
"name": "Storage",
"scope": [
"storage"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Keyword",
"scope": [
"keyword"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Operators",
"scope": [
"keyword.operator"
],
"settings": {
"foreground": "#f29668"
}
},
{
"name": "Separators like ; or ,",
"scope": [
"punctuation.separator",
"punctuation.terminator"
],
"settings": {
"foreground": "#bfbdb6b3"
}
},
{
"name": "Punctuation",
"scope": [
"punctuation.section"
],
"settings": {
"foreground": "#bfbdb6"
}
},
{
"name": "Accessor",
"scope": [
"punctuation.accessor"
],
"settings": {
"foreground": "#f29668"
}
},
{
"name": "JavaScript/TypeScript interpolation punctuation",
"scope": [
"punctuation.definition.template-expression"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Ruby interpolation punctuation",
"scope": [
"punctuation.section.embedded"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Interpolation text",
"scope": [
"meta.embedded"
],
"settings": {
"foreground": "#bfbdb6"
}
},
{
"name": "Types fixes",
"scope": [
"source.java storage.type",
"source.haskell storage.type",
"source.c storage.type"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "Inherited class type",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Lambda arrow",
"scope": [
"storage.type.function"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Java primitive variable types",
"scope": [
"source.java storage.type.primitive"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Function name",
"scope": [
"entity.name.function"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Function arguments",
"scope": [
"variable.parameter",
"meta.parameter"
],
"settings": {
"foreground": "#d2a6ff"
}
},
{
"name": "Function call",
"scope": [
"variable.function",
"variable.annotation",
"meta.function-call.generic",
"support.function.go"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Library function",
"scope": [
"support.function",
"support.macro"
],
"settings": {
"foreground": "#f07178"
}
},
{
"name": "Imports and packages",
"scope": [
"entity.name.import",
"entity.name.package"
],
"settings": {
"foreground": "#aad94c"
}
},
{
"name": "Entity name",
"scope": [
"entity.name"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "Tag",
"scope": [
"entity.name.tag",
"meta.tag.sgml"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "JSX Component",
"scope": [
"support.class.component"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "Tag start/end",
"scope": [
"punctuation.definition.tag.end",
"punctuation.definition.tag.begin",
"punctuation.definition.tag"
],
"settings": {
"foreground": "#39bae680"
}
},
{
"name": "Tag attribute",
"scope": [
"entity.other.attribute-name"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Library constant",
"scope": [
"support.constant"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f29668"
}
},
{
"name": "Library class/type",
"scope": [
"support.type",
"support.class",
"source.go storage.type"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Decorators/annotation",
"scope": [
"meta.decorator variable.other",
"meta.decorator punctuation.decorator",
"storage.type.annotation"
],
"settings": {
"foreground": "#e6b673"
}
},
{
"name": "Invalid",
"scope": [
"invalid"
],
"settings": {
"foreground": "#d95757"
}
},
{
"name": "diff.header",
"scope": [
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#c594c5"
}
},
{
"name": "Ruby class methods",
"scope": [
"source.ruby variable.other.readwrite"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "CSS tag names",
"scope": [
"source.css entity.name.tag",
"source.sass entity.name.tag",
"source.scss entity.name.tag",
"source.less entity.name.tag",
"source.stylus entity.name.tag"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "CSS browser prefix",
"scope": [
"source.css support.type",
"source.sass support.type",
"source.scss support.type",
"source.less support.type",
"source.stylus support.type"
],
"settings": {
"foreground": "#acb6bf8c"
}
},
{
"name": "CSS Properties",
"scope": [
"support.type.property-name"
],
"settings": {
"fontStyle": "normal",
"foreground": "#39bae6"
}
},
{
"name": "Search Results Numbers",
"scope": [
"constant.numeric.line-number.find-in-files - match"
],
"settings": {
"foreground": "#acb6bf8c"
}
},
{
"name": "Search Results Match Numbers",
"scope": [
"constant.numeric.line-number.match"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Search Results Lines",
"scope": [
"entity.name.filename.find-in-files"
],
"settings": {
"foreground": "#aad94c"
}
},
{
"scope": [
"message.error"
],
"settings": {
"foreground": "#d95757"
}
},
{
"name": "Markup heading",
"scope": [
"markup.heading",
"markup.heading entity.name"
],
"settings": {
"fontStyle": "bold",
"foreground": "#aad94c"
}
},
{
"name": "Markup links",
"scope": [
"markup.underline.link",
"string.other.link"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Markup Italic",
"scope": [
"markup.italic"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f07178"
}
},
{
"name": "Markup Bold",
"scope": [
"markup.bold"
],
"settings": {
"fontStyle": "bold",
"foreground": "#f07178"
}
},
{
"name": "Markup Bold/italic",
"scope": [
"markup.italic markup.bold",
"markup.bold markup.italic"
],
"settings": {
"fontStyle": "bold italic"
}
},
{
"name": "Markup Code",
"scope": [
"markup.raw"
],
"settings": {
"background": "#bfbdb605"
}
},
{
"name": "Markup Code Inline",
"scope": [
"markup.raw.inline"
],
"settings": {
"background": "#bfbdb60f"
}
},
{
"name": "Markdown Separator",
"scope": [
"meta.separator"
],
"settings": {
"fontStyle": "bold",
"background": "#bfbdb60f",
"foreground": "#acb6bf8c"
}
},
{
"name": "Markup Blockquote",
"scope": [
"markup.quote"
],
"settings": {
"foreground": "#95e6cb",
"fontStyle": "italic"
}
},
{
"name": "Markup List Bullet",
"scope": [
"markup.list punctuation.definition.list.begin"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Markup added",
"scope": [
"markup.inserted"
],
"settings": {
"foreground": "#7fd962"
}
},
{
"name": "Markup modified",
"scope": [
"markup.changed"
],
"settings": {
"foreground": "#73b8ff"
}
},
{
"name": "Markup removed",
"scope": [
"markup.deleted"
],
"settings": {
"foreground": "#f26d78"
}
},
{
"name": "Markup Strike",
"scope": [
"markup.strike"
],
"settings": {
"foreground": "#e6b673"
}
},
{
"name": "Markup Table",
"scope": [
"markup.table"
],
"settings": {
"background": "#bfbdb60f",
"foreground": "#39bae6"
}
},
{
"name": "Markup Raw Inline",
"scope": [
"text.html.markdown markup.inline.raw"
],
"settings": {
"foreground": "#f29668"
}
},
{
"name": "Markdown - Line Break",
"scope": [
"text.html.markdown meta.dummy.line-break"
],
"settings": {
"background": "#acb6bf8c",
"foreground": "#acb6bf8c"
}
},
{
"name": "Markdown - Raw Block Fenced",
"scope": [
"punctuation.definition.markdown"
],
"settings": {
"background": "#bfbdb6",
"foreground": "#acb6bf8c"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"parameter.label": "#bfbdb6"
}
}

View File

@@ -0,0 +1,847 @@
{
"type": "light",
"colors": {
"focusBorder": "#ffaa33b3",
"foreground": "#8a9199",
"widget.shadow": "#00000026",
"selection.background": "#035bd626",
"icon.foreground": "#8a9199",
"errorForeground": "#e65050",
"descriptionForeground": "#8a9199",
"textBlockQuote.background": "#f3f4f5",
"textLink.foreground": "#ffaa33",
"textLink.activeForeground": "#ffaa33",
"textPreformat.foreground": "#5c6166",
"button.background": "#ffaa33",
"button.foreground": "#804a00",
"button.hoverBackground": "#f9a52e",
"button.secondaryBackground": "#8a919933",
"button.secondaryForeground": "#5c6166",
"button.secondaryHoverBackground": "#8a919980",
"dropdown.background": "#fcfcfc",
"dropdown.foreground": "#8a9199",
"dropdown.border": "#8a919945",
"input.background": "#fcfcfc",
"input.border": "#8a919945",
"input.foreground": "#5c6166",
"input.placeholderForeground": "#8a919980",
"inputOption.activeBorder": "#f4a0284d",
"inputOption.activeBackground": "#ffaa3333",
"inputOption.activeForeground": "#f4a028",
"inputValidation.errorBackground": "#fcfcfc",
"inputValidation.errorBorder": "#e65050",
"inputValidation.infoBackground": "#f8f9fa",
"inputValidation.infoBorder": "#55b4d4",
"inputValidation.warningBackground": "#f8f9fa",
"inputValidation.warningBorder": "#f2ae49",
"scrollbar.shadow": "#6b7d8f00",
"scrollbarSlider.background": "#8a919966",
"scrollbarSlider.hoverBackground": "#8a919999",
"scrollbarSlider.activeBackground": "#8a9199b3",
"badge.background": "#ffaa3333",
"badge.foreground": "#f4a028",
"progressBar.background": "#ffaa33",
"list.activeSelectionBackground": "#56728f1f",
"list.activeSelectionForeground": "#5c6166",
"list.focusBackground": "#56728f1f",
"list.focusForeground": "#5c6166",
"list.focusOutline": "#56728f1f",
"list.highlightForeground": "#ffaa33",
"list.deemphasizedForeground": "#e65050",
"list.hoverBackground": "#56728f1f",
"list.inactiveSelectionBackground": "#6b7d8f1f",
"list.inactiveSelectionForeground": "#8a9199",
"list.invalidItemForeground": "#8a91994d",
"list.errorForeground": "#e65050",
"tree.indentGuidesStroke": "#8a919959",
"listFilterWidget.background": "#f3f4f5",
"listFilterWidget.outline": "#ffaa33",
"listFilterWidget.noMatchesOutline": "#e65050",
"list.filterMatchBackground": "#ddcaef73",
"list.filterMatchBorder": "#ecd9ff73",
"activityBar.background": "#f8f9fa",
"activityBar.foreground": "#8a9199cc",
"activityBar.inactiveForeground": "#8a919999",
"activityBar.border": "#f8f9fa",
"activityBar.activeBorder": "#ffaa33",
"activityBarBadge.background": "#ffaa33",
"activityBarBadge.foreground": "#f8f9fa",
"sideBar.background": "#f8f9fa",
"sideBar.border": "#f8f9fa",
"sideBarTitle.foreground": "#8a9199",
"sideBarSectionHeader.background": "#f8f9fa",
"sideBarSectionHeader.foreground": "#8a9199",
"sideBarSectionHeader.border": "#f8f9fa",
"minimap.background": "#f8f9fa",
"minimap.selectionHighlight": "#035bd626",
"minimap.errorHighlight": "#e65050",
"minimap.findMatchHighlight": "#ecd9ff",
"minimapGutter.addedBackground": "#6cbf43",
"minimapGutter.modifiedBackground": "#478acc",
"minimapGutter.deletedBackground": "#ff7383",
"editorGroup.border": "#6b7d8f1f",
"editorGroup.background": "#f3f4f5",
"editorGroupHeader.noTabsBackground": "#f8f9fa",
"editorGroupHeader.tabsBackground": "#f8f9fa",
"editorGroupHeader.tabsBorder": "#f8f9fa",
"tab.activeBackground": "#f8f9fa",
"tab.activeForeground": "#5c6166",
"tab.border": "#f8f9fa",
"tab.activeBorder": "#ffaa33",
"tab.unfocusedActiveBorder": "#8a9199",
"tab.inactiveBackground": "#f8f9fa",
"tab.inactiveForeground": "#8a9199",
"tab.unfocusedActiveForeground": "#8a9199",
"tab.unfocusedInactiveForeground": "#8a9199",
"editor.background": "#f8f9fa",
"editor.foreground": "#5c6166",
"editorLineNumber.foreground": "#8a919966",
"editorLineNumber.activeForeground": "#8a9199cc",
"editorCursor.foreground": "#ffaa33",
"editor.inactiveSelectionBackground": "#035bd612",
"editor.selectionBackground": "#035bd626",
"editor.selectionHighlightBackground": "#6cbf4326",
"editor.selectionHighlightBorder": "#6cbf4300",
"editor.wordHighlightBackground": "#478acc14",
"editor.wordHighlightStrongBackground": "#6cbf4314",
"editor.wordHighlightBorder": "#478acc80",
"editor.wordHighlightStrongBorder": "#6cbf4380",
"editor.findMatchBackground": "#ecd9ff",
"editor.findMatchBorder": "#ecd9ff",
"editor.findMatchHighlightBackground": "#ecd9ff73",
"editor.findMatchHighlightBorder": "#ddcaef73",
"editor.findRangeHighlightBackground": "#ecd9ff40",
"editor.rangeHighlightBackground": "#ecd9ff33",
"editor.lineHighlightBackground": "#8a91991a",
"editorLink.activeForeground": "#ffaa33",
"editorWhitespace.foreground": "#8a919966",
"editorIndentGuide.background": "#8a91992e",
"editorIndentGuide.activeBackground": "#8a919959",
"editorRuler.foreground": "#8a91992e",
"editorCodeLens.foreground": "#787b8099",
"editorBracketMatch.background": "#8a91994d",
"editorBracketMatch.border": "#8a91994d",
"editor.snippetTabstopHighlightBackground": "#6cbf4333",
"editorOverviewRuler.border": "#6b7d8f1f",
"editorOverviewRuler.modifiedForeground": "#478acc",
"editorOverviewRuler.addedForeground": "#6cbf43",
"editorOverviewRuler.deletedForeground": "#ff7383",
"editorOverviewRuler.errorForeground": "#e65050",
"editorOverviewRuler.warningForeground": "#ffaa33",
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
"editorOverviewRuler.wordHighlightForeground": "#478acc66",
"editorOverviewRuler.wordHighlightStrongForeground": "#6cbf4366",
"editorOverviewRuler.findMatchForeground": "#ecd9ff",
"editorError.foreground": "#e65050",
"editorWarning.foreground": "#ffaa33",
"editorGutter.modifiedBackground": "#478acccc",
"editorGutter.addedBackground": "#6cbf43cc",
"editorGutter.deletedBackground": "#ff7383cc",
"diffEditor.insertedTextBackground": "#6cbf431f",
"diffEditor.removedTextBackground": "#ff73831f",
"diffEditor.diagonalFill": "#6b7d8f1f",
"editorWidget.background": "#f3f4f5",
"editorWidget.border": "#6b7d8f1f",
"editorHoverWidget.background": "#f3f4f5",
"editorHoverWidget.border": "#6b7d8f1f",
"editorSuggestWidget.background": "#f3f4f5",
"editorSuggestWidget.border": "#6b7d8f1f",
"editorSuggestWidget.highlightForeground": "#ffaa33",
"editorSuggestWidget.selectedBackground": "#56728f1f",
"debugExceptionWidget.border": "#6b7d8f1f",
"debugExceptionWidget.background": "#f3f4f5",
"editorMarkerNavigation.background": "#f3f4f5",
"peekView.border": "#56728f1f",
"peekViewTitle.background": "#56728f1f",
"peekViewTitleDescription.foreground": "#8a9199",
"peekViewTitleLabel.foreground": "#5c6166",
"peekViewEditor.background": "#f3f4f5",
"peekViewEditor.matchHighlightBackground": "#ecd9ff73",
"peekViewEditor.matchHighlightBorder": "#ddcaef73",
"peekViewResult.background": "#f3f4f5",
"peekViewResult.fileForeground": "#5c6166",
"peekViewResult.lineForeground": "#8a9199",
"peekViewResult.matchHighlightBackground": "#ecd9ff73",
"peekViewResult.selectionBackground": "#56728f1f",
"panel.background": "#f8f9fa",
"panel.border": "#6b7d8f1f",
"panelTitle.activeBorder": "#ffaa33",
"panelTitle.activeForeground": "#5c6166",
"panelTitle.inactiveForeground": "#8a9199",
"statusBar.background": "#f8f9fa",
"statusBar.foreground": "#8a9199",
"statusBar.border": "#f8f9fa",
"statusBar.debuggingBackground": "#ed9366",
"statusBar.debuggingForeground": "#fcfcfc",
"statusBar.noFolderBackground": "#f3f4f5",
"statusBarItem.activeBackground": "#8a919933",
"statusBarItem.hoverBackground": "#8a919933",
"statusBarItem.prominentBackground": "#6b7d8f1f",
"statusBarItem.prominentHoverBackground": "#00000030",
"statusBarItem.remoteBackground": "#ffaa33",
"statusBarItem.remoteForeground": "#804a00",
"titleBar.activeBackground": "#f8f9fa",
"titleBar.activeForeground": "#5c6166",
"titleBar.inactiveBackground": "#f8f9fa",
"titleBar.inactiveForeground": "#8a9199",
"titleBar.border": "#f8f9fa",
"extensionButton.prominentForeground": "#804a00",
"extensionButton.prominentBackground": "#ffaa33",
"extensionButton.prominentHoverBackground": "#f9a52e",
"pickerGroup.border": "#6b7d8f1f",
"pickerGroup.foreground": "#8a919980",
"debugToolBar.background": "#f3f4f5",
"debugIcon.breakpointForeground": "#ed9366",
"debugIcon.breakpointDisabledForeground": "#ed936680",
"debugConsoleInputIcon.foreground": "#ffaa33",
"welcomePage.tileBackground": "#f8f9fa",
"welcomePage.tileShadow": "#00000026",
"welcomePage.progress.background": "#8a91991a",
"welcomePage.buttonBackground": "#ffaa3366",
"walkThrough.embeddedEditorBackground": "#f3f4f5",
"gitDecoration.modifiedResourceForeground": "#478accb3",
"gitDecoration.deletedResourceForeground": "#ff7383b3",
"gitDecoration.untrackedResourceForeground": "#6cbf43b3",
"gitDecoration.ignoredResourceForeground": "#8a919980",
"gitDecoration.conflictingResourceForeground": "",
"gitDecoration.submoduleResourceForeground": "#a37accb3",
"settings.headerForeground": "#5c6166",
"settings.modifiedItemIndicator": "#478acc",
"keybindingLabel.background": "#8a91991a",
"keybindingLabel.foreground": "#5c6166",
"keybindingLabel.border": "#5c61661a",
"keybindingLabel.bottomBorder": "#5c61661a",
"terminal.background": "#f8f9fa",
"terminal.foreground": "#5c6166",
"terminal.ansiBlack": "#000000",
"terminal.ansiRed": "#ea6c6d",
"terminal.ansiGreen": "#6cbf43",
"terminal.ansiYellow": "#eca944",
"terminal.ansiBlue": "#3199e1",
"terminal.ansiMagenta": "#9e75c7",
"terminal.ansiCyan": "#46ba94",
"terminal.ansiWhite": "#c7c7c7",
"terminal.ansiBrightBlack": "#686868",
"terminal.ansiBrightRed": "#f07171",
"terminal.ansiBrightGreen": "#86b300",
"terminal.ansiBrightYellow": "#f2ae49",
"terminal.ansiBrightBlue": "#399ee6",
"terminal.ansiBrightMagenta": "#a37acc",
"terminal.ansiBrightCyan": "#4cbf99",
"terminal.ansiBrightWhite": "#d1d1d1"
},
"tokenColors": [
{
"settings": {
"background": "#f8f9fa",
"foreground": "#5c6166"
}
},
{
"name": "Comment",
"scope": [
"comment"
],
"settings": {
"fontStyle": "italic",
"foreground": "#787b8099"
}
},
{
"name": "String",
"scope": [
"string",
"constant.other.symbol"
],
"settings": {
"foreground": "#86b300"
}
},
{
"name": "Regular Expressions and Escape Characters",
"scope": [
"string.regexp",
"constant.character",
"constant.other"
],
"settings": {
"foreground": "#4cbf99"
}
},
{
"name": "Number",
"scope": [
"constant.numeric"
],
"settings": {
"foreground": "#a37acc"
}
},
{
"name": "Built-in constants",
"scope": [
"constant.language"
],
"settings": {
"foreground": "#a37acc"
}
},
{
"name": "Variable",
"scope": [
"variable",
"variable.parameter.function-call"
],
"settings": {
"foreground": "#5c6166"
}
},
{
"name": "Member Variable",
"scope": [
"variable.member"
],
"settings": {
"foreground": "#f07171"
}
},
{
"name": "Language variable",
"scope": [
"variable.language"
],
"settings": {
"fontStyle": "italic",
"foreground": "#55b4d4"
}
},
{
"name": "Storage",
"scope": [
"storage"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Keyword",
"scope": [
"keyword"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Operators",
"scope": [
"keyword.operator"
],
"settings": {
"foreground": "#ed9366"
}
},
{
"name": "Separators like ; or ,",
"scope": [
"punctuation.separator",
"punctuation.terminator"
],
"settings": {
"foreground": "#5c6166b3"
}
},
{
"name": "Punctuation",
"scope": [
"punctuation.section"
],
"settings": {
"foreground": "#5c6166"
}
},
{
"name": "Accessor",
"scope": [
"punctuation.accessor"
],
"settings": {
"foreground": "#ed9366"
}
},
{
"name": "JavaScript/TypeScript interpolation punctuation",
"scope": [
"punctuation.definition.template-expression"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Ruby interpolation punctuation",
"scope": [
"punctuation.section.embedded"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Interpolation text",
"scope": [
"meta.embedded"
],
"settings": {
"foreground": "#5c6166"
}
},
{
"name": "Types fixes",
"scope": [
"source.java storage.type",
"source.haskell storage.type",
"source.c storage.type"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "Inherited class type",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Lambda arrow",
"scope": [
"storage.type.function"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Java primitive variable types",
"scope": [
"source.java storage.type.primitive"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Function name",
"scope": [
"entity.name.function"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Function arguments",
"scope": [
"variable.parameter",
"meta.parameter"
],
"settings": {
"foreground": "#a37acc"
}
},
{
"name": "Function call",
"scope": [
"variable.function",
"variable.annotation",
"meta.function-call.generic",
"support.function.go"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Library function",
"scope": [
"support.function",
"support.macro"
],
"settings": {
"foreground": "#f07171"
}
},
{
"name": "Imports and packages",
"scope": [
"entity.name.import",
"entity.name.package"
],
"settings": {
"foreground": "#86b300"
}
},
{
"name": "Entity name",
"scope": [
"entity.name"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "Tag",
"scope": [
"entity.name.tag",
"meta.tag.sgml"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "JSX Component",
"scope": [
"support.class.component"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "Tag start/end",
"scope": [
"punctuation.definition.tag.end",
"punctuation.definition.tag.begin",
"punctuation.definition.tag"
],
"settings": {
"foreground": "#55b4d480"
}
},
{
"name": "Tag attribute",
"scope": [
"entity.other.attribute-name"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Library constant",
"scope": [
"support.constant"
],
"settings": {
"fontStyle": "italic",
"foreground": "#ed9366"
}
},
{
"name": "Library class/type",
"scope": [
"support.type",
"support.class",
"source.go storage.type"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Decorators/annotation",
"scope": [
"meta.decorator variable.other",
"meta.decorator punctuation.decorator",
"storage.type.annotation"
],
"settings": {
"foreground": "#e6ba7e"
}
},
{
"name": "Invalid",
"scope": [
"invalid"
],
"settings": {
"foreground": "#e65050"
}
},
{
"name": "diff.header",
"scope": [
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#c594c5"
}
},
{
"name": "Ruby class methods",
"scope": [
"source.ruby variable.other.readwrite"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "CSS tag names",
"scope": [
"source.css entity.name.tag",
"source.sass entity.name.tag",
"source.scss entity.name.tag",
"source.less entity.name.tag",
"source.stylus entity.name.tag"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "CSS browser prefix",
"scope": [
"source.css support.type",
"source.sass support.type",
"source.scss support.type",
"source.less support.type",
"source.stylus support.type"
],
"settings": {
"foreground": "#787b8099"
}
},
{
"name": "CSS Properties",
"scope": [
"support.type.property-name"
],
"settings": {
"fontStyle": "normal",
"foreground": "#55b4d4"
}
},
{
"name": "Search Results Numbers",
"scope": [
"constant.numeric.line-number.find-in-files - match"
],
"settings": {
"foreground": "#787b8099"
}
},
{
"name": "Search Results Match Numbers",
"scope": [
"constant.numeric.line-number.match"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Search Results Lines",
"scope": [
"entity.name.filename.find-in-files"
],
"settings": {
"foreground": "#86b300"
}
},
{
"scope": [
"message.error"
],
"settings": {
"foreground": "#e65050"
}
},
{
"name": "Markup heading",
"scope": [
"markup.heading",
"markup.heading entity.name"
],
"settings": {
"fontStyle": "bold",
"foreground": "#86b300"
}
},
{
"name": "Markup links",
"scope": [
"markup.underline.link",
"string.other.link"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Markup Italic",
"scope": [
"markup.italic"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f07171"
}
},
{
"name": "Markup Bold",
"scope": [
"markup.bold"
],
"settings": {
"fontStyle": "bold",
"foreground": "#f07171"
}
},
{
"name": "Markup Bold/italic",
"scope": [
"markup.italic markup.bold",
"markup.bold markup.italic"
],
"settings": {
"fontStyle": "bold italic"
}
},
{
"name": "Markup Code",
"scope": [
"markup.raw"
],
"settings": {
"background": "#5c616605"
}
},
{
"name": "Markup Code Inline",
"scope": [
"markup.raw.inline"
],
"settings": {
"background": "#5c61660f"
}
},
{
"name": "Markdown Separator",
"scope": [
"meta.separator"
],
"settings": {
"fontStyle": "bold",
"background": "#5c61660f",
"foreground": "#787b8099"
}
},
{
"name": "Markup Blockquote",
"scope": [
"markup.quote"
],
"settings": {
"foreground": "#4cbf99",
"fontStyle": "italic"
}
},
{
"name": "Markup List Bullet",
"scope": [
"markup.list punctuation.definition.list.begin"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Markup added",
"scope": [
"markup.inserted"
],
"settings": {
"foreground": "#6cbf43"
}
},
{
"name": "Markup modified",
"scope": [
"markup.changed"
],
"settings": {
"foreground": "#478acc"
}
},
{
"name": "Markup removed",
"scope": [
"markup.deleted"
],
"settings": {
"foreground": "#ff7383"
}
},
{
"name": "Markup Strike",
"scope": [
"markup.strike"
],
"settings": {
"foreground": "#e6ba7e"
}
},
{
"name": "Markup Table",
"scope": [
"markup.table"
],
"settings": {
"background": "#5c61660f",
"foreground": "#55b4d4"
}
},
{
"name": "Markup Raw Inline",
"scope": [
"text.html.markdown markup.inline.raw"
],
"settings": {
"foreground": "#ed9366"
}
},
{
"name": "Markdown - Line Break",
"scope": [
"text.html.markdown meta.dummy.line-break"
],
"settings": {
"background": "#787b8099",
"foreground": "#787b8099"
}
},
{
"name": "Markdown - Raw Block Fenced",
"scope": [
"punctuation.definition.markdown"
],
"settings": {
"background": "#5c6166",
"foreground": "#787b8099"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"parameter.label": "#5c6166"
}
}

View File

@@ -0,0 +1,847 @@
{
"type": "dark",
"colors": {
"focusBorder": "#ffcc66b3",
"foreground": "#707a8c",
"widget.shadow": "#12151cb3",
"selection.background": "#409fff40",
"icon.foreground": "#707a8c",
"errorForeground": "#ff6666",
"descriptionForeground": "#707a8c",
"textBlockQuote.background": "#1c212b",
"textLink.foreground": "#ffcc66",
"textLink.activeForeground": "#ffcc66",
"textPreformat.foreground": "#cccac2",
"button.background": "#ffcc66",
"button.foreground": "#805500",
"button.hoverBackground": "#fac761",
"button.secondaryBackground": "#707a8c33",
"button.secondaryForeground": "#cccac2",
"button.secondaryHoverBackground": "#707a8c80",
"dropdown.background": "#242936",
"dropdown.foreground": "#707a8c",
"dropdown.border": "#707a8c45",
"input.background": "#242936",
"input.border": "#707a8c45",
"input.foreground": "#cccac2",
"input.placeholderForeground": "#707a8c80",
"inputOption.activeBorder": "#ffcc664d",
"inputOption.activeBackground": "#ffcc6633",
"inputOption.activeForeground": "#ffcc66",
"inputValidation.errorBackground": "#242936",
"inputValidation.errorBorder": "#ff6666",
"inputValidation.infoBackground": "#1f2430",
"inputValidation.infoBorder": "#5ccfe6",
"inputValidation.warningBackground": "#1f2430",
"inputValidation.warningBorder": "#ffd173",
"scrollbar.shadow": "#171b2400",
"scrollbarSlider.background": "#707a8c66",
"scrollbarSlider.hoverBackground": "#707a8c99",
"scrollbarSlider.activeBackground": "#707a8cb3",
"badge.background": "#ffcc6633",
"badge.foreground": "#ffcc66",
"progressBar.background": "#ffcc66",
"list.activeSelectionBackground": "#63759926",
"list.activeSelectionForeground": "#cccac2",
"list.focusBackground": "#63759926",
"list.focusForeground": "#cccac2",
"list.focusOutline": "#63759926",
"list.highlightForeground": "#ffcc66",
"list.deemphasizedForeground": "#ff6666",
"list.hoverBackground": "#63759926",
"list.inactiveSelectionBackground": "#69758c1f",
"list.inactiveSelectionForeground": "#707a8c",
"list.invalidItemForeground": "#707a8c4d",
"list.errorForeground": "#ff6666",
"tree.indentGuidesStroke": "#8a919959",
"listFilterWidget.background": "#1c212b",
"listFilterWidget.outline": "#ffcc66",
"listFilterWidget.noMatchesOutline": "#ff6666",
"list.filterMatchBackground": "#5c467266",
"list.filterMatchBorder": "#69538066",
"activityBar.background": "#1f2430",
"activityBar.foreground": "#707a8ccc",
"activityBar.inactiveForeground": "#707a8c99",
"activityBar.border": "#1f2430",
"activityBar.activeBorder": "#ffcc66",
"activityBarBadge.background": "#ffcc66",
"activityBarBadge.foreground": "#805500",
"sideBar.background": "#1f2430",
"sideBar.border": "#1f2430",
"sideBarTitle.foreground": "#707a8c",
"sideBarSectionHeader.background": "#1f2430",
"sideBarSectionHeader.foreground": "#707a8c",
"sideBarSectionHeader.border": "#1f2430",
"minimap.background": "#1f2430",
"minimap.selectionHighlight": "#409fff40",
"minimap.errorHighlight": "#ff6666",
"minimap.findMatchHighlight": "#695380",
"minimapGutter.addedBackground": "#87d96c",
"minimapGutter.modifiedBackground": "#80bfff",
"minimapGutter.deletedBackground": "#f27983",
"editorGroup.border": "#171b24",
"editorGroup.background": "#1c212b",
"editorGroupHeader.noTabsBackground": "#1f2430",
"editorGroupHeader.tabsBackground": "#1f2430",
"editorGroupHeader.tabsBorder": "#1f2430",
"tab.activeBackground": "#1f2430",
"tab.activeForeground": "#cccac2",
"tab.border": "#1f2430",
"tab.activeBorder": "#ffcc66",
"tab.unfocusedActiveBorder": "#707a8c",
"tab.inactiveBackground": "#1f2430",
"tab.inactiveForeground": "#707a8c",
"tab.unfocusedActiveForeground": "#707a8c",
"tab.unfocusedInactiveForeground": "#707a8c",
"editor.background": "#1f2430",
"editor.foreground": "#cccac2",
"editorLineNumber.foreground": "#8a919966",
"editorLineNumber.activeForeground": "#8a9199cc",
"editorCursor.foreground": "#ffcc66",
"editor.inactiveSelectionBackground": "#409fff21",
"editor.selectionBackground": "#409fff40",
"editor.selectionHighlightBackground": "#87d96c26",
"editor.selectionHighlightBorder": "#87d96c00",
"editor.wordHighlightBackground": "#80bfff14",
"editor.wordHighlightStrongBackground": "#87d96c14",
"editor.wordHighlightBorder": "#80bfff80",
"editor.wordHighlightStrongBorder": "#87d96c80",
"editor.findMatchBackground": "#695380",
"editor.findMatchBorder": "#695380",
"editor.findMatchHighlightBackground": "#69538066",
"editor.findMatchHighlightBorder": "#5c467266",
"editor.findRangeHighlightBackground": "#69538040",
"editor.rangeHighlightBackground": "#69538033",
"editor.lineHighlightBackground": "#1a1f29",
"editorLink.activeForeground": "#ffcc66",
"editorWhitespace.foreground": "#8a919966",
"editorIndentGuide.background": "#8a91992e",
"editorIndentGuide.activeBackground": "#8a919959",
"editorRuler.foreground": "#8a91992e",
"editorCodeLens.foreground": "#b8cfe680",
"editorBracketMatch.background": "#8a91994d",
"editorBracketMatch.border": "#8a91994d",
"editor.snippetTabstopHighlightBackground": "#87d96c33",
"editorOverviewRuler.border": "#171b24",
"editorOverviewRuler.modifiedForeground": "#80bfff",
"editorOverviewRuler.addedForeground": "#87d96c",
"editorOverviewRuler.deletedForeground": "#f27983",
"editorOverviewRuler.errorForeground": "#ff6666",
"editorOverviewRuler.warningForeground": "#ffcc66",
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
"editorOverviewRuler.wordHighlightForeground": "#80bfff66",
"editorOverviewRuler.wordHighlightStrongForeground": "#87d96c66",
"editorOverviewRuler.findMatchForeground": "#695380",
"editorError.foreground": "#ff6666",
"editorWarning.foreground": "#ffcc66",
"editorGutter.modifiedBackground": "#80bfffcc",
"editorGutter.addedBackground": "#87d96ccc",
"editorGutter.deletedBackground": "#f27983cc",
"diffEditor.insertedTextBackground": "#87d96c1f",
"diffEditor.removedTextBackground": "#f279831f",
"diffEditor.diagonalFill": "#171b24",
"editorWidget.background": "#1c212b",
"editorWidget.border": "#171b24",
"editorHoverWidget.background": "#1c212b",
"editorHoverWidget.border": "#171b24",
"editorSuggestWidget.background": "#1c212b",
"editorSuggestWidget.border": "#171b24",
"editorSuggestWidget.highlightForeground": "#ffcc66",
"editorSuggestWidget.selectedBackground": "#63759926",
"debugExceptionWidget.border": "#171b24",
"debugExceptionWidget.background": "#1c212b",
"editorMarkerNavigation.background": "#1c212b",
"peekView.border": "#63759926",
"peekViewTitle.background": "#63759926",
"peekViewTitleDescription.foreground": "#707a8c",
"peekViewTitleLabel.foreground": "#cccac2",
"peekViewEditor.background": "#1c212b",
"peekViewEditor.matchHighlightBackground": "#69538066",
"peekViewEditor.matchHighlightBorder": "#5c467266",
"peekViewResult.background": "#1c212b",
"peekViewResult.fileForeground": "#cccac2",
"peekViewResult.lineForeground": "#707a8c",
"peekViewResult.matchHighlightBackground": "#69538066",
"peekViewResult.selectionBackground": "#63759926",
"panel.background": "#1f2430",
"panel.border": "#171b24",
"panelTitle.activeBorder": "#ffcc66",
"panelTitle.activeForeground": "#cccac2",
"panelTitle.inactiveForeground": "#707a8c",
"statusBar.background": "#1f2430",
"statusBar.foreground": "#707a8c",
"statusBar.border": "#1f2430",
"statusBar.debuggingBackground": "#f29e74",
"statusBar.debuggingForeground": "#242936",
"statusBar.noFolderBackground": "#1c212b",
"statusBarItem.activeBackground": "#707a8c33",
"statusBarItem.hoverBackground": "#707a8c33",
"statusBarItem.prominentBackground": "#171b24",
"statusBarItem.prominentHoverBackground": "#00000030",
"statusBarItem.remoteBackground": "#ffcc66",
"statusBarItem.remoteForeground": "#805500",
"titleBar.activeBackground": "#1f2430",
"titleBar.activeForeground": "#cccac2",
"titleBar.inactiveBackground": "#1f2430",
"titleBar.inactiveForeground": "#707a8c",
"titleBar.border": "#1f2430",
"extensionButton.prominentForeground": "#805500",
"extensionButton.prominentBackground": "#ffcc66",
"extensionButton.prominentHoverBackground": "#fac761",
"pickerGroup.border": "#171b24",
"pickerGroup.foreground": "#707a8c80",
"debugToolBar.background": "#1c212b",
"debugIcon.breakpointForeground": "#f29e74",
"debugIcon.breakpointDisabledForeground": "#f29e7480",
"debugConsoleInputIcon.foreground": "#ffcc66",
"welcomePage.tileBackground": "#1f2430",
"welcomePage.tileShadow": "#12151cb3",
"welcomePage.progress.background": "#1a1f29",
"welcomePage.buttonBackground": "#ffcc6666",
"walkThrough.embeddedEditorBackground": "#1c212b",
"gitDecoration.modifiedResourceForeground": "#80bfffb3",
"gitDecoration.deletedResourceForeground": "#f27983b3",
"gitDecoration.untrackedResourceForeground": "#87d96cb3",
"gitDecoration.ignoredResourceForeground": "#707a8c80",
"gitDecoration.conflictingResourceForeground": "",
"gitDecoration.submoduleResourceForeground": "#dfbfffb3",
"settings.headerForeground": "#cccac2",
"settings.modifiedItemIndicator": "#80bfff",
"keybindingLabel.background": "#707a8c1a",
"keybindingLabel.foreground": "#cccac2",
"keybindingLabel.border": "#cccac21a",
"keybindingLabel.bottomBorder": "#cccac21a",
"terminal.background": "#1f2430",
"terminal.foreground": "#cccac2",
"terminal.ansiBlack": "#171b24",
"terminal.ansiRed": "#ed8274",
"terminal.ansiGreen": "#87d96c",
"terminal.ansiYellow": "#facc6e",
"terminal.ansiBlue": "#6dcbfa",
"terminal.ansiMagenta": "#dabafa",
"terminal.ansiCyan": "#90e1c6",
"terminal.ansiWhite": "#c7c7c7",
"terminal.ansiBrightBlack": "#686868",
"terminal.ansiBrightRed": "#f28779",
"terminal.ansiBrightGreen": "#d5ff80",
"terminal.ansiBrightYellow": "#ffd173",
"terminal.ansiBrightBlue": "#73d0ff",
"terminal.ansiBrightMagenta": "#dfbfff",
"terminal.ansiBrightCyan": "#95e6cb",
"terminal.ansiBrightWhite": "#ffffff"
},
"tokenColors": [
{
"settings": {
"background": "#1f2430",
"foreground": "#cccac2"
}
},
{
"name": "Comment",
"scope": [
"comment"
],
"settings": {
"fontStyle": "italic",
"foreground": "#b8cfe680"
}
},
{
"name": "String",
"scope": [
"string",
"constant.other.symbol"
],
"settings": {
"foreground": "#d5ff80"
}
},
{
"name": "Regular Expressions and Escape Characters",
"scope": [
"string.regexp",
"constant.character",
"constant.other"
],
"settings": {
"foreground": "#95e6cb"
}
},
{
"name": "Number",
"scope": [
"constant.numeric"
],
"settings": {
"foreground": "#dfbfff"
}
},
{
"name": "Built-in constants",
"scope": [
"constant.language"
],
"settings": {
"foreground": "#dfbfff"
}
},
{
"name": "Variable",
"scope": [
"variable",
"variable.parameter.function-call"
],
"settings": {
"foreground": "#cccac2"
}
},
{
"name": "Member Variable",
"scope": [
"variable.member"
],
"settings": {
"foreground": "#f28779"
}
},
{
"name": "Language variable",
"scope": [
"variable.language"
],
"settings": {
"fontStyle": "italic",
"foreground": "#5ccfe6"
}
},
{
"name": "Storage",
"scope": [
"storage"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Keyword",
"scope": [
"keyword"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Operators",
"scope": [
"keyword.operator"
],
"settings": {
"foreground": "#f29e74"
}
},
{
"name": "Separators like ; or ,",
"scope": [
"punctuation.separator",
"punctuation.terminator"
],
"settings": {
"foreground": "#cccac2b3"
}
},
{
"name": "Punctuation",
"scope": [
"punctuation.section"
],
"settings": {
"foreground": "#cccac2"
}
},
{
"name": "Accessor",
"scope": [
"punctuation.accessor"
],
"settings": {
"foreground": "#f29e74"
}
},
{
"name": "JavaScript/TypeScript interpolation punctuation",
"scope": [
"punctuation.definition.template-expression"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Ruby interpolation punctuation",
"scope": [
"punctuation.section.embedded"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Interpolation text",
"scope": [
"meta.embedded"
],
"settings": {
"foreground": "#cccac2"
}
},
{
"name": "Types fixes",
"scope": [
"source.java storage.type",
"source.haskell storage.type",
"source.c storage.type"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "Inherited class type",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Lambda arrow",
"scope": [
"storage.type.function"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Java primitive variable types",
"scope": [
"source.java storage.type.primitive"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Function name",
"scope": [
"entity.name.function"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Function arguments",
"scope": [
"variable.parameter",
"meta.parameter"
],
"settings": {
"foreground": "#dfbfff"
}
},
{
"name": "Function call",
"scope": [
"variable.function",
"variable.annotation",
"meta.function-call.generic",
"support.function.go"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Library function",
"scope": [
"support.function",
"support.macro"
],
"settings": {
"foreground": "#f28779"
}
},
{
"name": "Imports and packages",
"scope": [
"entity.name.import",
"entity.name.package"
],
"settings": {
"foreground": "#d5ff80"
}
},
{
"name": "Entity name",
"scope": [
"entity.name"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "Tag",
"scope": [
"entity.name.tag",
"meta.tag.sgml"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "JSX Component",
"scope": [
"support.class.component"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "Tag start/end",
"scope": [
"punctuation.definition.tag.end",
"punctuation.definition.tag.begin",
"punctuation.definition.tag"
],
"settings": {
"foreground": "#5ccfe680"
}
},
{
"name": "Tag attribute",
"scope": [
"entity.other.attribute-name"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Library constant",
"scope": [
"support.constant"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f29e74"
}
},
{
"name": "Library class/type",
"scope": [
"support.type",
"support.class",
"source.go storage.type"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Decorators/annotation",
"scope": [
"meta.decorator variable.other",
"meta.decorator punctuation.decorator",
"storage.type.annotation"
],
"settings": {
"foreground": "#ffdfb3"
}
},
{
"name": "Invalid",
"scope": [
"invalid"
],
"settings": {
"foreground": "#ff6666"
}
},
{
"name": "diff.header",
"scope": [
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#c594c5"
}
},
{
"name": "Ruby class methods",
"scope": [
"source.ruby variable.other.readwrite"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "CSS tag names",
"scope": [
"source.css entity.name.tag",
"source.sass entity.name.tag",
"source.scss entity.name.tag",
"source.less entity.name.tag",
"source.stylus entity.name.tag"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "CSS browser prefix",
"scope": [
"source.css support.type",
"source.sass support.type",
"source.scss support.type",
"source.less support.type",
"source.stylus support.type"
],
"settings": {
"foreground": "#b8cfe680"
}
},
{
"name": "CSS Properties",
"scope": [
"support.type.property-name"
],
"settings": {
"fontStyle": "normal",
"foreground": "#5ccfe6"
}
},
{
"name": "Search Results Numbers",
"scope": [
"constant.numeric.line-number.find-in-files - match"
],
"settings": {
"foreground": "#b8cfe680"
}
},
{
"name": "Search Results Match Numbers",
"scope": [
"constant.numeric.line-number.match"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Search Results Lines",
"scope": [
"entity.name.filename.find-in-files"
],
"settings": {
"foreground": "#d5ff80"
}
},
{
"scope": [
"message.error"
],
"settings": {
"foreground": "#ff6666"
}
},
{
"name": "Markup heading",
"scope": [
"markup.heading",
"markup.heading entity.name"
],
"settings": {
"fontStyle": "bold",
"foreground": "#d5ff80"
}
},
{
"name": "Markup links",
"scope": [
"markup.underline.link",
"string.other.link"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Markup Italic",
"scope": [
"markup.italic"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f28779"
}
},
{
"name": "Markup Bold",
"scope": [
"markup.bold"
],
"settings": {
"fontStyle": "bold",
"foreground": "#f28779"
}
},
{
"name": "Markup Bold/italic",
"scope": [
"markup.italic markup.bold",
"markup.bold markup.italic"
],
"settings": {
"fontStyle": "bold italic"
}
},
{
"name": "Markup Code",
"scope": [
"markup.raw"
],
"settings": {
"background": "#cccac205"
}
},
{
"name": "Markup Code Inline",
"scope": [
"markup.raw.inline"
],
"settings": {
"background": "#cccac20f"
}
},
{
"name": "Markdown Separator",
"scope": [
"meta.separator"
],
"settings": {
"fontStyle": "bold",
"background": "#cccac20f",
"foreground": "#b8cfe680"
}
},
{
"name": "Markup Blockquote",
"scope": [
"markup.quote"
],
"settings": {
"foreground": "#95e6cb",
"fontStyle": "italic"
}
},
{
"name": "Markup List Bullet",
"scope": [
"markup.list punctuation.definition.list.begin"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Markup added",
"scope": [
"markup.inserted"
],
"settings": {
"foreground": "#87d96c"
}
},
{
"name": "Markup modified",
"scope": [
"markup.changed"
],
"settings": {
"foreground": "#80bfff"
}
},
{
"name": "Markup removed",
"scope": [
"markup.deleted"
],
"settings": {
"foreground": "#f27983"
}
},
{
"name": "Markup Strike",
"scope": [
"markup.strike"
],
"settings": {
"foreground": "#ffdfb3"
}
},
{
"name": "Markup Table",
"scope": [
"markup.table"
],
"settings": {
"background": "#cccac20f",
"foreground": "#5ccfe6"
}
},
{
"name": "Markup Raw Inline",
"scope": [
"text.html.markdown markup.inline.raw"
],
"settings": {
"foreground": "#f29e74"
}
},
{
"name": "Markdown - Line Break",
"scope": [
"text.html.markdown meta.dummy.line-break"
],
"settings": {
"background": "#b8cfe680",
"foreground": "#b8cfe680"
}
},
{
"name": "Markdown - Raw Block Fenced",
"scope": [
"punctuation.definition.markdown"
],
"settings": {
"background": "#cccac2",
"foreground": "#b8cfe680"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"parameter.label": "#cccac2"
}
}

View File

@@ -0,0 +1,21 @@
{
"name": "Ayu",
"author": "dempfi (Ike Ku)",
"themes": [
{
"name": "Ayu Light",
"file_name": "ayu-light.json",
"appearance": "light"
},
{
"name": "Ayu Mirage",
"file_name": "ayu-mirage.json",
"appearance": "dark"
},
{
"name": "Ayu Dark",
"file_name": "ayu-dark.json",
"appearance": "dark"
}
]
}

View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 Dracula Theme
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
{
"name": "Dracula",
"author": "Zeno Rocha",
"themes": [
{
"name": "Dracula",
"file_name": "dracula.json",
"appearance": "dark"
}
]
}

View File

@@ -0,0 +1 @@
MIT/X11

View File

@@ -0,0 +1,36 @@
{
"name": "Gruvbox",
"author": "morhetz",
"themes": [
{
"name": "Gruvbox Dark Hard",
"file_name": "gruvbox-dark-hard.json",
"appearance": "dark"
},
{
"name": "Gruvbox Dark Medium",
"file_name": "gruvbox-dark-medium.json",
"appearance": "dark"
},
{
"name": "Gruvbox Dark Soft",
"file_name": "gruvbox-dark-soft.json",
"appearance": "dark"
},
{
"name": "Gruvbox Light Hard",
"file_name": "gruvbox-light-hard.json",
"appearance": "light"
},
{
"name": "Gruvbox Light Medium",
"file_name": "gruvbox-light-medium.json",
"appearance": "light"
},
{
"name": "Gruvbox Light Soft",
"file_name": "gruvbox-light-soft.json",
"appearance": "light"
}
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 Sarah Drasner
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,16 @@
{
"name": "Night Owl",
"author": "Sarah Drasner (sdras)",
"themes": [
{
"name": "Night Owl",
"file_name": "night-owl.json",
"appearance": "dark"
},
{
"name": "Night Owl Light",
"file_name": "night-owl-light.json",
"appearance": "light"
}
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
MIT License
Copyright (c) 2018 Liviu Schera
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,61 @@
{
"name": "Noctis",
"author": "Liviu Schera (liviuschera)",
"themes": [
{
"name": "Noctis Azureus",
"file_name": "azureus.json",
"appearance": "dark"
},
{
"name": "Noctis Bordo",
"file_name": "bordo.json",
"appearance": "dark"
},
{
"name": "Noctus Hibernus",
"file_name": "hibernus.json",
"appearance": "light"
},
{
"name": "Noctis Lilac",
"file_name": "lilac.json",
"appearance": "dark"
},
{
"name": "Noctis Lux",
"file_name": "lux.json",
"appearance": "light"
},
{
"name": "Noctis Minimus",
"file_name": "minimus.json",
"appearance": "dark"
},
{
"name": "Noctis",
"file_name": "noctis.json",
"appearance": "dark"
},
{
"name": "Noctis Obscuro",
"file_name": "obscuro.json",
"appearance": "dark"
},
{
"name": "Noctis Sereno",
"file_name": "obscuro.json",
"appearance": "dark"
},
{
"name": "Noctis Uva",
"file_name": "uva.json",
"appearance": "dark"
},
{
"name": "Noctis Viola",
"file_name": "viola.json",
"appearance": "dark"
}
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,21 @@
MIT License (MIT)
Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,11 @@
{
"name": "Nord",
"author": "Sven Greb (svengreb)",
"themes": [
{
"name": "Nord",
"file_name": "nord.json",
"appearance": "dark"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
Copyright (c) 2017-present Olaolu Olawuyi
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,21 @@
{
"name": "Palenight",
"author": "Olaolu Olawuyi (whizkydee)",
"themes": [
{
"name": "Palenight",
"file_name": "palenight.json",
"appearance": "dark"
},
{
"name": "Palenight Operator",
"file_name": "palenight-operator.json",
"appearance": "dark"
},
{
"name": "Palenight (Mild Contrast)",
"file_name": "palenight-mild-contrast.json",
"appearance": "dark"
}
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Rosé Pine
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,21 @@
{
"name": "Rose Pine",
"author": "Rosé Pine",
"themes": [
{
"name": "Rose Pine",
"file_name": "rose-pine.json",
"appearance": "dark"
},
{
"name": "Rose Pine Moon",
"file_name": "rose-pine-moon.json",
"appearance": "dark"
},
{
"name": "Rose Pine Dawn",
"file_name": "rose-pine-dawn.json",
"appearance": "light"
}
]
}

View File

@@ -0,0 +1,680 @@
{
"name": "Rosé Pine Dawn",
"type": "light",
"colors": {
"activityBar.activeBorder": "#575279",
"activityBar.background": "#faf4ed",
"activityBar.dropBorder": "#f2e9e1",
"activityBar.foreground": "#575279",
"activityBar.inactiveForeground": "#797593",
"activityBarBadge.background": "#d7827e",
"activityBarBadge.foreground": "#faf4ed",
"badge.background": "#d7827e",
"badge.foreground": "#faf4ed",
"banner.background": "#fffaf3",
"banner.foreground": "#575279",
"banner.iconForeground": "#797593",
"breadcrumb.activeSelectionForeground": "#d7827e",
"breadcrumb.background": "#faf4ed",
"breadcrumb.focusForeground": "#797593",
"breadcrumb.foreground": "#9893a5",
"breadcrumbPicker.background": "#fffaf3",
"button.background": "#d7827e",
"button.foreground": "#faf4ed",
"button.hoverBackground": "#d7827ee6",
"button.secondaryBackground": "#fffaf3",
"button.secondaryForeground": "#575279",
"button.secondaryHoverBackground": "#f2e9e1",
"charts.blue": "#56949f",
"charts.foreground": "#575279",
"charts.green": "#286983",
"charts.lines": "#797593",
"charts.orange": "#d7827e",
"charts.purple": "#907aa9",
"charts.red": "#b4637a",
"charts.yellow": "#ea9d34",
"checkbox.background": "#fffaf3",
"checkbox.border": "#6e6a8614",
"checkbox.foreground": "#575279",
"debugExceptionWidget.background": "#fffaf3",
"debugExceptionWidget.border": "#6e6a8614",
"debugIcon.breakpointCurrentStackframeForeground": "#797593",
"debugIcon.breakpointDisabledForeground": "#797593",
"debugIcon.breakpointForeground": "#797593",
"debugIcon.breakpointStackframeForeground": "#797593",
"debugIcon.breakpointUnverifiedForeground": "#797593",
"debugIcon.continueForeground": "#797593",
"debugIcon.disconnectForeground": "#797593",
"debugIcon.pauseForeground": "#797593",
"debugIcon.restartForeground": "#797593",
"debugIcon.startForeground": "#797593",
"debugIcon.stepBackForeground": "#797593",
"debugIcon.stepIntoForeground": "#797593",
"debugIcon.stepOutForeground": "#797593",
"debugIcon.stepOverForeground": "#797593",
"debugIcon.stopForeground": "#b4637a",
"debugToolBar.background": "#fffaf3",
"debugToolBar.border": "#f2e9e1",
"descriptionForeground": "#797593",
"diffEditor.border": "#f2e9e1",
"diffEditor.diagonalFill": "#6e6a8626",
"diffEditor.insertedLineBackground": "#56949f26",
"diffEditor.insertedTextBackground": "#56949f26",
"diffEditor.removedLineBackground": "#b4637a26",
"diffEditor.removedTextBackground": "#b4637a26",
"diffEditorOverview.insertedForeground": "#56949f80",
"diffEditorOverview.removedForeground": "#b4637a80",
"dropdown.background": "#fffaf3",
"dropdown.border": "#6e6a8614",
"dropdown.foreground": "#575279",
"dropdown.listBackground": "#fffaf3",
"editor.background": "#faf4ed",
"editor.findMatchBackground": "#6e6a8626",
"editor.findMatchHighlightBackground": "#6e6a8626",
"editor.findRangeHighlightBackground": "#6e6a8626",
"editor.findRangeHighlightBorder": "#000000",
"editor.focusedStackFrameHighlightBackground": "#6e6a8614",
"editor.foldBackground": "#fffaf3",
"editor.foreground": "#575279",
"editor.hoverHighlightBackground": "#000000",
"editor.inactiveSelectionBackground": "#6e6a860d",
"editor.inlineValuesBackground": "#000000",
"editor.inlineValuesForeground": "#797593",
"editor.lineHighlightBackground": "#6e6a860d",
"editor.lineHighlightBorder": "#000000",
"editor.linkedEditingBackground": "#fffaf3",
"editor.rangeHighlightBackground": "#6e6a860d",
"editor.selectionBackground": "#6e6a8614",
"editor.selectionForeground": "#575279",
"editor.selectionHighlightBackground": "#6e6a8614",
"editor.selectionHighlightBorder": "#faf4ed",
"editor.snippetFinalTabstopHighlightBackground": "#6e6a8614",
"editor.snippetFinalTabstopHighlightBorder": "#fffaf3",
"editor.snippetTabstopHighlightBackground": "#6e6a8614",
"editor.snippetTabstopHighlightBorder": "#fffaf3",
"editor.stackFrameHighlightBackground": "#6e6a8614",
"editor.symbolHighlightBackground": "#6e6a8614",
"editor.symbolHighlightBorder": "#000000",
"editor.wordHighlightBackground": "#6e6a8614",
"editor.wordHighlightBorder": "#000000",
"editor.wordHighlightStrongBackground": "#6e6a8614",
"editor.wordHighlightStrongBorder": "#6e6a8614",
"editorBracketHighlight.foreground1": "#b4637a80",
"editorBracketHighlight.foreground2": "#28698380",
"editorBracketHighlight.foreground3": "#ea9d3480",
"editorBracketHighlight.foreground4": "#56949f80",
"editorBracketHighlight.foreground5": "#d7827e80",
"editorBracketHighlight.foreground6": "#907aa980",
"editorBracketMatch.background": "#000000",
"editorBracketMatch.border": "#797593",
"editorBracketPairGuide.activeBackground1": "#286983",
"editorBracketPairGuide.activeBackground2": "#d7827e",
"editorBracketPairGuide.activeBackground3": "#907aa9",
"editorBracketPairGuide.activeBackground4": "#56949f",
"editorBracketPairGuide.activeBackground5": "#ea9d34",
"editorBracketPairGuide.activeBackground6": "#b4637a",
"editorBracketPairGuide.background1": "#28698380",
"editorBracketPairGuide.background2": "#d7827e80",
"editorBracketPairGuide.background3": "#907aa980",
"editorBracketPairGuide.background4": "#56949f80",
"editorBracketPairGuide.background5": "#ea9d3480",
"editorBracketPairGuide.background6": "#b4637a80",
"editorCodeLens.foreground": "#d7827e",
"editorCursor.background": "#575279",
"editorCursor.foreground": "#9893a5",
"editorError.border": "#000000",
"editorError.foreground": "#b4637a",
"editorGhostText.foreground": "#797593",
"editorGroup.border": "#000000",
"editorGroup.dropBackground": "#fffaf3",
"editorGroup.emptyBackground": "#000000",
"editorGroup.focusedEmptyBorder": "#000000",
"editorGroupHeader.noTabsBackground": "#000000",
"editorGroupHeader.tabsBackground": "#000000",
"editorGroupHeader.tabsBorder": "#000000",
"editorGutter.addedBackground": "#56949f",
"editorGutter.background": "#faf4ed",
"editorGutter.commentRangeForeground": "#797593",
"editorGutter.deletedBackground": "#b4637a",
"editorGutter.foldingControlForeground": "#907aa9",
"editorGutter.modifiedBackground": "#d7827e",
"editorHint.border": "#000000",
"editorHint.foreground": "#797593",
"editorHoverWidget.background": "#fffaf3",
"editorHoverWidget.border": "#9893a580",
"editorHoverWidget.foreground": "#797593",
"editorHoverWidget.highlightForeground": "#575279",
"editorHoverWidget.statusBarBackground": "#000000",
"editorIndentGuide.activeBackground": "#9893a5",
"editorIndentGuide.background": "#6e6a8626",
"editorInfo.border": "#f2e9e1",
"editorInfo.foreground": "#56949f",
"editorInlayHint.background": "#f2e9e1",
"editorInlayHint.foreground": "#797593",
"editorInlayHint.parameterBackground": "#f2e9e1",
"editorInlayHint.parameterForeground": "#907aa9",
"editorInlayHint.typeBackground": "#f2e9e1",
"editorInlayHint.typeForeground": "#56949f",
"editorLightBulb.foreground": "#286983",
"editorLightBulbAutoFix.foreground": "#d7827e",
"editorLineNumber.activeForeground": "#575279",
"editorLineNumber.foreground": "#797593",
"editorLink.activeForeground": "#d7827e",
"editorMarkerNavigation.background": "#fffaf3",
"editorMarkerNavigationError.background": "#fffaf3",
"editorMarkerNavigationInfo.background": "#fffaf3",
"editorMarkerNavigationWarning.background": "#fffaf3",
"editorOverviewRuler.addedForeground": "#56949f80",
"editorOverviewRuler.background": "#faf4ed",
"editorOverviewRuler.border": "#6e6a8626",
"editorOverviewRuler.bracketMatchForeground": "#797593",
"editorOverviewRuler.commonContentForeground": "#6e6a860d",
"editorOverviewRuler.currentContentForeground": "#6e6a8614",
"editorOverviewRuler.deletedForeground": "#b4637a80",
"editorOverviewRuler.errorForeground": "#b4637a80",
"editorOverviewRuler.findMatchForeground": "#6e6a8626",
"editorOverviewRuler.incomingContentForeground": "#907aa980",
"editorOverviewRuler.infoForeground": "#56949f80",
"editorOverviewRuler.modifiedForeground": "#d7827e80",
"editorOverviewRuler.rangeHighlightForeground": "#6e6a8626",
"editorOverviewRuler.selectionHighlightForeground": "#6e6a8626",
"editorOverviewRuler.warningForeground": "#ea9d3480",
"editorOverviewRuler.wordHighlightForeground": "#6e6a8614",
"editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8626",
"editorPane.background": "#000000",
"editorRuler.foreground": "#6e6a8626",
"editorSuggestWidget.background": "#fffaf3",
"editorSuggestWidget.border": "#000000",
"editorSuggestWidget.focusHighlightForeground": "#d7827e",
"editorSuggestWidget.foreground": "#797593",
"editorSuggestWidget.highlightForeground": "#d7827e",
"editorSuggestWidget.selectedBackground": "#6e6a8614",
"editorSuggestWidget.selectedForeground": "#575279",
"editorSuggestWidget.selectedIconForeground": "#575279",
"editorUnnecessaryCode.border": "#000000",
"editorUnnecessaryCode.opacity": "#57527980",
"editorWarning.border": "#000000",
"editorWarning.foreground": "#ea9d34",
"editorWhitespace.foreground": "#9893a5",
"editorWidget.background": "#fffaf3",
"editorWidget.border": "#f2e9e1",
"editorWidget.foreground": "#797593",
"editorWidget.resizeBorder": "#9893a5",
"errorForeground": "#b4637a",
"extensionBadge.remoteBackground": "#907aa9",
"extensionBadge.remoteForeground": "#faf4ed",
"extensionButton.prominentBackground": "#d7827e",
"extensionButton.prominentForeground": "#faf4ed",
"extensionButton.prominentHoverBackground": "#d7827ee6",
"extensionIcon.preReleaseForeground": "#286983",
"extensionIcon.starForeground": "#d7827e",
"extensionIcon.verifiedForeground": "#907aa9",
"focusBorder": "#6e6a8614",
"foreground": "#575279",
"gitDecoration.addedResourceForeground": "#56949f",
"gitDecoration.conflictingResourceForeground": "#b4637a",
"gitDecoration.deletedResourceForeground": "#797593",
"gitDecoration.ignoredResourceForeground": "#9893a5",
"gitDecoration.modifiedResourceForeground": "#d7827e",
"gitDecoration.renamedResourceForeground": "#286983",
"gitDecoration.stageDeletedResourceForeground": "#b4637a",
"gitDecoration.stageModifiedResourceForeground": "#907aa9",
"gitDecoration.submoduleResourceForeground": "#ea9d34",
"gitDecoration.untrackedResourceForeground": "#ea9d34",
"icon.foreground": "#797593",
"input.background": "#f2e9e180",
"input.border": "#6e6a8614",
"input.foreground": "#575279",
"input.placeholderForeground": "#797593",
"inputOption.activeBackground": "#d7827e26",
"inputOption.activeForeground": "#d7827e",
"inputValidation.errorBackground": "#fffaf3",
"inputValidation.errorBorder": "#6e6a8626",
"inputValidation.errorForeground": "#b4637a",
"inputValidation.infoBackground": "#fffaf3",
"inputValidation.infoBorder": "#6e6a8626",
"inputValidation.infoForeground": "#56949f",
"inputValidation.warningBackground": "#fffaf3",
"inputValidation.warningBorder": "#6e6a8626",
"inputValidation.warningForeground": "#56949f80",
"keybindingLabel.background": "#f2e9e1",
"keybindingLabel.border": "#6e6a8626",
"keybindingLabel.bottomBorder": "#6e6a8626",
"keybindingLabel.foreground": "#907aa9",
"keybindingTable.headerBackground": "#f2e9e1",
"keybindingTable.rowsBackground": "#fffaf3",
"list.activeSelectionBackground": "#6e6a8614",
"list.activeSelectionForeground": "#575279",
"list.deemphasizedForeground": "#797593",
"list.dropBackground": "#fffaf3",
"list.errorForeground": "#b4637a",
"list.filterMatchBackground": "#fffaf3",
"list.filterMatchBorder": "#d7827e",
"list.focusBackground": "#6e6a8626",
"list.focusForeground": "#575279",
"list.focusOutline": "#6e6a8614",
"list.highlightForeground": "#d7827e",
"list.hoverBackground": "#6e6a860d",
"list.hoverForeground": "#575279",
"list.inactiveFocusBackground": "#6e6a860d",
"list.inactiveSelectionBackground": "#fffaf3",
"list.inactiveSelectionForeground": "#575279",
"list.invalidItemForeground": "#b4637a",
"list.warningForeground": "#ea9d34",
"listFilterWidget.background": "#fffaf3",
"listFilterWidget.noMatchesOutline": "#b4637a",
"listFilterWidget.outline": "#f2e9e1",
"menu.background": "#fffaf3",
"menu.border": "#6e6a860d",
"menu.foreground": "#575279",
"menu.selectionBackground": "#6e6a8614",
"menu.selectionBorder": "#f2e9e1",
"menu.selectionForeground": "#575279",
"menu.separatorBackground": "#6e6a8626",
"menubar.selectionBackground": "#6e6a8614",
"menubar.selectionBorder": "#6e6a860d",
"menubar.selectionForeground": "#575279",
"merge.border": "#f2e9e1",
"merge.commonContentBackground": "#6e6a8614",
"merge.commonHeaderBackground": "#6e6a8614",
"merge.currentContentBackground": "#ea9d3480",
"merge.currentHeaderBackground": "#ea9d3480",
"merge.incomingContentBackground": "#56949f80",
"merge.incomingHeaderBackground": "#56949f80",
"minimap.background": "#fffaf3",
"minimap.errorHighlight": "#b4637a80",
"minimap.findMatchHighlight": "#6e6a8614",
"minimap.selectionHighlight": "#6e6a8614",
"minimap.warningHighlight": "#ea9d3480",
"minimapGutter.addedBackground": "#56949f",
"minimapGutter.deletedBackground": "#b4637a",
"minimapGutter.modifiedBackground": "#d7827e",
"minimapSlider.activeBackground": "#6e6a8626",
"minimapSlider.background": "#6e6a8614",
"minimapSlider.hoverBackground": "#6e6a8614",
"notebook.cellBorderColor": "#56949f80",
"notebook.cellEditorBackground": "#fffaf3",
"notebook.cellHoverBackground": "#f2e9e180",
"notebook.focusedCellBackground": "#6e6a860d",
"notebook.focusedCellBorder": "#56949f",
"notebook.outputContainerBackgroundColor": "#6e6a860d",
"notificationCenter.border": "#6e6a8614",
"notificationCenterHeader.background": "#fffaf3",
"notificationCenterHeader.foreground": "#797593",
"notificationLink.foreground": "#907aa9",
"notifications.background": "#fffaf3",
"notifications.border": "#6e6a8614",
"notifications.foreground": "#575279",
"notificationsErrorIcon.foreground": "#b4637a",
"notificationsInfoIcon.foreground": "#56949f",
"notificationsWarningIcon.foreground": "#ea9d34",
"notificationToast.border": "#6e6a8614",
"panel.background": "#fffaf3",
"panel.border": "#000000",
"panel.dropBorder": "#f2e9e1",
"panelInput.border": "#fffaf3",
"panelSection.dropBackground": "#6e6a8614",
"panelSectionHeader.background": "#fffaf3",
"panelSectionHeader.foreground": "#575279",
"panelTitle.activeBorder": "#6e6a8626",
"panelTitle.activeForeground": "#575279",
"panelTitle.inactiveForeground": "#797593",
"peekView.border": "#f2e9e1",
"peekViewEditor.background": "#fffaf3",
"peekViewEditor.matchHighlightBackground": "#6e6a8626",
"peekViewResult.background": "#fffaf3",
"peekViewResult.fileForeground": "#797593",
"peekViewResult.lineForeground": "#797593",
"peekViewResult.matchHighlightBackground": "#6e6a8626",
"peekViewResult.selectionBackground": "#6e6a8614",
"peekViewResult.selectionForeground": "#575279",
"peekViewTitle.background": "#f2e9e1",
"peekViewTitleDescription.foreground": "#797593",
"pickerGroup.border": "#6e6a8626",
"pickerGroup.foreground": "#907aa9",
"ports.iconRunningProcessForeground": "#d7827e",
"problemsErrorIcon.foreground": "#b4637a",
"problemsInfoIcon.foreground": "#56949f",
"problemsWarningIcon.foreground": "#ea9d34",
"progressBar.background": "#d7827e",
"quickInput.background": "#fffaf3",
"quickInput.foreground": "#797593",
"quickInputList.focusBackground": "#6e6a8614",
"quickInputList.focusForeground": "#575279",
"quickInputList.focusIconForeground": "#575279",
"scrollbar.shadow": "#fffaf34d",
"scrollbarSlider.activeBackground": "#28698380",
"scrollbarSlider.background": "#6e6a8614",
"scrollbarSlider.hoverBackground": "#6e6a8626",
"searchEditor.findMatchBackground": "#6e6a8614",
"selection.background": "#6e6a8626",
"settings.focusedRowBackground": "#fffaf3",
"settings.headerForeground": "#575279",
"settings.modifiedItemIndicator": "#d7827e",
"settings.focusedRowBorder": "#6e6a8614",
"settings.rowHoverBackground": "#fffaf3",
"sideBar.background": "#faf4ed",
"sideBar.dropBackground": "#fffaf3",
"sideBar.foreground": "#797593",
"sideBarSectionHeader.background": "#000000",
"sideBarSectionHeader.border": "#6e6a8614",
"statusBar.background": "#faf4ed",
"statusBar.debuggingBackground": "#907aa9",
"statusBar.debuggingForeground": "#faf4ed",
"statusBar.foreground": "#797593",
"statusBar.noFolderBackground": "#faf4ed",
"statusBar.noFolderForeground": "#797593",
"statusBarItem.activeBackground": "#6e6a8626",
"statusBarItem.hoverBackground": "#6e6a8614",
"statusBarItem.prominentBackground": "#f2e9e1",
"statusBarItem.prominentForeground": "#575279",
"statusBarItem.prominentHoverBackground": "#6e6a8614",
"statusBarItem.remoteBackground": "#faf4ed",
"statusBarItem.remoteForeground": "#ea9d34",
"statusBarItem.errorBackground": "#faf4ed",
"statusBarItem.errorForeground": "#b4637a",
"symbolIcon.arrayForeground": "#797593",
"symbolIcon.classForeground": "#797593",
"symbolIcon.colorForeground": "#797593",
"symbolIcon.constantForeground": "#797593",
"symbolIcon.constructorForeground": "#797593",
"symbolIcon.enumeratorForeground": "#797593",
"symbolIcon.enumeratorMemberForeground": "#797593",
"symbolIcon.eventForeground": "#797593",
"symbolIcon.fieldForeground": "#797593",
"symbolIcon.fileForeground": "#797593",
"symbolIcon.folderForeground": "#797593",
"symbolIcon.functionForeground": "#797593",
"symbolIcon.interfaceForeground": "#797593",
"symbolIcon.keyForeground": "#797593",
"symbolIcon.keywordForeground": "#797593",
"symbolIcon.methodForeground": "#797593",
"symbolIcon.moduleForeground": "#797593",
"symbolIcon.namespaceForeground": "#797593",
"symbolIcon.nullForeground": "#797593",
"symbolIcon.numberForeground": "#797593",
"symbolIcon.objectForeground": "#797593",
"symbolIcon.operatorForeground": "#797593",
"symbolIcon.packageForeground": "#797593",
"symbolIcon.propertyForeground": "#797593",
"symbolIcon.referenceForeground": "#797593",
"symbolIcon.snippetForeground": "#797593",
"symbolIcon.stringForeground": "#797593",
"symbolIcon.structForeground": "#797593",
"symbolIcon.textForeground": "#797593",
"symbolIcon.typeParameterForeground": "#797593",
"symbolIcon.unitForeground": "#797593",
"symbolIcon.variableForeground": "#797593",
"tab.activeBackground": "#6e6a860d",
"tab.activeForeground": "#575279",
"tab.activeModifiedBorder": "#56949f",
"tab.border": "#000000",
"tab.hoverBackground": "#6e6a8614",
"tab.inactiveBackground": "#000000",
"tab.inactiveForeground": "#797593",
"tab.inactiveModifiedBorder": "#56949f80",
"tab.lastPinnedBorder": "#9893a5",
"tab.unfocusedActiveBackground": "#000000",
"tab.unfocusedHoverBackground": "#000000",
"tab.unfocusedInactiveBackground": "#000000",
"tab.unfocusedInactiveModifiedBorder": "#56949f80",
"terminal.ansiBlack": "#f2e9e1",
"terminal.ansiBlue": "#56949f",
"terminal.ansiBrightBlack": "#797593",
"terminal.ansiBrightBlue": "#56949f",
"terminal.ansiBrightCyan": "#d7827e",
"terminal.ansiBrightGreen": "#286983",
"terminal.ansiBrightMagenta": "#907aa9",
"terminal.ansiBrightRed": "#b4637a",
"terminal.ansiBrightWhite": "#575279",
"terminal.ansiBrightYellow": "#ea9d34",
"terminal.ansiCyan": "#d7827e",
"terminal.ansiGreen": "#286983",
"terminal.ansiMagenta": "#907aa9",
"terminal.ansiRed": "#b4637a",
"terminal.ansiWhite": "#575279",
"terminal.ansiYellow": "#ea9d34",
"terminal.dropBackground": "#6e6a8614",
"terminal.foreground": "#575279",
"terminal.selectionBackground": "#6e6a8614",
"terminal.tab.activeBorder": "#575279",
"terminalCursor.background": "#575279",
"terminalCursor.foreground": "#9893a5",
"textBlockQuote.background": "#fffaf3",
"textBlockQuote.border": "#6e6a8614",
"textCodeBlock.background": "#fffaf3",
"textLink.activeForeground": "#907aa9e6",
"textLink.foreground": "#907aa9",
"textPreformat.foreground": "#ea9d34",
"textSeparator.foreground": "#797593",
"titleBar.activeBackground": "#faf4ed",
"titleBar.activeForeground": "#797593",
"titleBar.inactiveBackground": "#fffaf3",
"titleBar.inactiveForeground": "#797593",
"toolbar.activeBackground": "#6e6a8626",
"toolbar.hoverBackground": "#6e6a8614",
"tree.indentGuidesStroke": "#797593",
"walkThrough.embeddedEditorBackground": "#faf4ed",
"welcomePage.background": "#faf4ed",
"welcomePage.buttonBackground": "#fffaf3",
"welcomePage.buttonHoverBackground": "#f2e9e1",
"widget.shadow": "#fffaf34d",
"window.activeBorder": "#fffaf3",
"window.inactiveBorder": "#fffaf3"
},
"tokenColors": [
{
"scope": ["comment"],
"settings": {
"foreground": "#9893a5",
"fontStyle": "italic"
}
},
{
"scope": ["constant"],
"settings": {
"foreground": "#286983"
}
},
{
"scope": ["constant.numeric", "constant.language"],
"settings": {
"foreground": "#d7827e"
}
},
{
"scope": ["entity.name"],
"settings": {
"foreground": "#d7827e"
}
},
{
"scope": [
"entity.name.section",
"entity.name.tag",
"entity.name.namespace",
"entity.name.type"
],
"settings": {
"foreground": "#56949f"
}
},
{
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
"settings": {
"foreground": "#907aa9",
"fontStyle": "italic"
}
},
{
"scope": ["invalid"],
"settings": {
"foreground": "#b4637a"
}
},
{
"scope": ["invalid.deprecated"],
"settings": {
"foreground": "#797593"
}
},
{
"scope": ["keyword"],
"settings": {
"foreground": "#286983"
}
},
{
"scope": ["markup.inserted.diff"],
"settings": {
"foreground": "#56949f"
}
},
{
"scope": ["markup.deleted.diff"],
"settings": {
"foreground": "#b4637a"
}
},
{
"scope": "markup.heading",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "markup.bold.markdown",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "markup.italic.markdown",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": ["meta.diff.range"],
"settings": {
"foreground": "#907aa9"
}
},
{
"scope": ["meta.tag", "meta.brace"],
"settings": {
"foreground": "#575279"
}
},
{
"scope": ["meta.import", "meta.export"],
"settings": {
"foreground": "#286983"
}
},
{
"scope": "meta.directive.vue",
"settings": {
"foreground": "#907aa9",
"fontStyle": "italic"
}
},
{
"scope": "meta.property-name.css",
"settings": {
"foreground": "#56949f"
}
},
{
"scope": "meta.property-value.css",
"settings": {
"foreground": "#ea9d34"
}
},
{
"scope": "meta.tag.other.html",
"settings": {
"foreground": "#797593"
}
},
{
"scope": ["punctuation"],
"settings": {
"foreground": "#797593"
}
},
{
"scope": ["punctuation.accessor"],
"settings": {
"foreground": "#286983"
}
},
{
"scope": ["punctuation.definition.string"],
"settings": {
"foreground": "#ea9d34"
}
},
{
"scope": ["punctuation.definition.tag"],
"settings": {
"foreground": "#9893a5"
}
},
{
"scope": ["storage.type", "storage.modifier"],
"settings": {
"foreground": "#286983"
}
},
{
"scope": ["string"],
"settings": {
"foreground": "#ea9d34"
}
},
{
"scope": ["support"],
"settings": {
"foreground": "#56949f"
}
},
{
"scope": ["support.constant"],
"settings": {
"foreground": "#ea9d34"
}
},
{
"scope": ["support.function"],
"settings": {
"foreground": "#b4637a",
"fontStyle": "italic"
}
},
{
"scope": ["variable"],
"settings": {
"foreground": "#d7827e",
"fontStyle": "italic"
}
},
{
"scope": [
"variable.other",
"variable.language",
"variable.function",
"variable.argument"
],
"settings": {
"foreground": "#575279"
}
},
{
"scope": ["variable.parameter"],
"settings": {
"foreground": "#907aa9"
}
}
]
}

View File

@@ -0,0 +1,680 @@
{
"name": "Rosé Pine Moon",
"type": "dark",
"colors": {
"activityBar.activeBorder": "#e0def4",
"activityBar.background": "#232136",
"activityBar.dropBorder": "#393552",
"activityBar.foreground": "#e0def4",
"activityBar.inactiveForeground": "#908caa",
"activityBarBadge.background": "#ea9a97",
"activityBarBadge.foreground": "#232136",
"badge.background": "#ea9a97",
"badge.foreground": "#232136",
"banner.background": "#2a273f",
"banner.foreground": "#e0def4",
"banner.iconForeground": "#908caa",
"breadcrumb.activeSelectionForeground": "#ea9a97",
"breadcrumb.background": "#232136",
"breadcrumb.focusForeground": "#908caa",
"breadcrumb.foreground": "#6e6a86",
"breadcrumbPicker.background": "#2a273f",
"button.background": "#ea9a97",
"button.foreground": "#232136",
"button.hoverBackground": "#ea9a97e6",
"button.secondaryBackground": "#2a273f",
"button.secondaryForeground": "#e0def4",
"button.secondaryHoverBackground": "#393552",
"charts.blue": "#9ccfd8",
"charts.foreground": "#e0def4",
"charts.green": "#3e8fb0",
"charts.lines": "#908caa",
"charts.orange": "#ea9a97",
"charts.purple": "#c4a7e7",
"charts.red": "#eb6f92",
"charts.yellow": "#f6c177",
"checkbox.background": "#2a273f",
"checkbox.border": "#817c9c26",
"checkbox.foreground": "#e0def4",
"debugExceptionWidget.background": "#2a273f",
"debugExceptionWidget.border": "#817c9c26",
"debugIcon.breakpointCurrentStackframeForeground": "#908caa",
"debugIcon.breakpointDisabledForeground": "#908caa",
"debugIcon.breakpointForeground": "#908caa",
"debugIcon.breakpointStackframeForeground": "#908caa",
"debugIcon.breakpointUnverifiedForeground": "#908caa",
"debugIcon.continueForeground": "#908caa",
"debugIcon.disconnectForeground": "#908caa",
"debugIcon.pauseForeground": "#908caa",
"debugIcon.restartForeground": "#908caa",
"debugIcon.startForeground": "#908caa",
"debugIcon.stepBackForeground": "#908caa",
"debugIcon.stepIntoForeground": "#908caa",
"debugIcon.stepOutForeground": "#908caa",
"debugIcon.stepOverForeground": "#908caa",
"debugIcon.stopForeground": "#eb6f92",
"debugToolBar.background": "#2a273f",
"debugToolBar.border": "#393552",
"descriptionForeground": "#908caa",
"diffEditor.border": "#393552",
"diffEditor.diagonalFill": "#817c9c4d",
"diffEditor.insertedLineBackground": "#9ccfd826",
"diffEditor.insertedTextBackground": "#9ccfd826",
"diffEditor.removedLineBackground": "#eb6f9226",
"diffEditor.removedTextBackground": "#eb6f9226",
"diffEditorOverview.insertedForeground": "#9ccfd880",
"diffEditorOverview.removedForeground": "#eb6f9280",
"dropdown.background": "#2a273f",
"dropdown.border": "#817c9c26",
"dropdown.foreground": "#e0def4",
"dropdown.listBackground": "#2a273f",
"editor.background": "#232136",
"editor.findMatchBackground": "#817c9c4d",
"editor.findMatchHighlightBackground": "#817c9c4d",
"editor.findRangeHighlightBackground": "#817c9c4d",
"editor.findRangeHighlightBorder": "#000000",
"editor.focusedStackFrameHighlightBackground": "#817c9c26",
"editor.foldBackground": "#2a273f",
"editor.foreground": "#e0def4",
"editor.hoverHighlightBackground": "#000000",
"editor.inactiveSelectionBackground": "#817c9c14",
"editor.inlineValuesBackground": "#000000",
"editor.inlineValuesForeground": "#908caa",
"editor.lineHighlightBackground": "#817c9c14",
"editor.lineHighlightBorder": "#000000",
"editor.linkedEditingBackground": "#2a273f",
"editor.rangeHighlightBackground": "#817c9c14",
"editor.selectionBackground": "#817c9c26",
"editor.selectionForeground": "#e0def4",
"editor.selectionHighlightBackground": "#817c9c26",
"editor.selectionHighlightBorder": "#232136",
"editor.snippetFinalTabstopHighlightBackground": "#817c9c26",
"editor.snippetFinalTabstopHighlightBorder": "#2a273f",
"editor.snippetTabstopHighlightBackground": "#817c9c26",
"editor.snippetTabstopHighlightBorder": "#2a273f",
"editor.stackFrameHighlightBackground": "#817c9c26",
"editor.symbolHighlightBackground": "#817c9c26",
"editor.symbolHighlightBorder": "#000000",
"editor.wordHighlightBackground": "#817c9c26",
"editor.wordHighlightBorder": "#000000",
"editor.wordHighlightStrongBackground": "#817c9c26",
"editor.wordHighlightStrongBorder": "#817c9c26",
"editorBracketHighlight.foreground1": "#eb6f9280",
"editorBracketHighlight.foreground2": "#3e8fb080",
"editorBracketHighlight.foreground3": "#f6c17780",
"editorBracketHighlight.foreground4": "#9ccfd880",
"editorBracketHighlight.foreground5": "#ea9a9780",
"editorBracketHighlight.foreground6": "#c4a7e780",
"editorBracketMatch.background": "#000000",
"editorBracketMatch.border": "#908caa",
"editorBracketPairGuide.activeBackground1": "#3e8fb0",
"editorBracketPairGuide.activeBackground2": "#ea9a97",
"editorBracketPairGuide.activeBackground3": "#c4a7e7",
"editorBracketPairGuide.activeBackground4": "#9ccfd8",
"editorBracketPairGuide.activeBackground5": "#f6c177",
"editorBracketPairGuide.activeBackground6": "#eb6f92",
"editorBracketPairGuide.background1": "#3e8fb080",
"editorBracketPairGuide.background2": "#ea9a9780",
"editorBracketPairGuide.background3": "#c4a7e780",
"editorBracketPairGuide.background4": "#9ccfd880",
"editorBracketPairGuide.background5": "#f6c17780",
"editorBracketPairGuide.background6": "#eb6f9280",
"editorCodeLens.foreground": "#ea9a97",
"editorCursor.background": "#e0def4",
"editorCursor.foreground": "#6e6a86",
"editorError.border": "#000000",
"editorError.foreground": "#eb6f92",
"editorGhostText.foreground": "#908caa",
"editorGroup.border": "#000000",
"editorGroup.dropBackground": "#2a273f",
"editorGroup.emptyBackground": "#000000",
"editorGroup.focusedEmptyBorder": "#000000",
"editorGroupHeader.noTabsBackground": "#000000",
"editorGroupHeader.tabsBackground": "#000000",
"editorGroupHeader.tabsBorder": "#000000",
"editorGutter.addedBackground": "#9ccfd8",
"editorGutter.background": "#232136",
"editorGutter.commentRangeForeground": "#908caa",
"editorGutter.deletedBackground": "#eb6f92",
"editorGutter.foldingControlForeground": "#c4a7e7",
"editorGutter.modifiedBackground": "#ea9a97",
"editorHint.border": "#000000",
"editorHint.foreground": "#908caa",
"editorHoverWidget.background": "#2a273f",
"editorHoverWidget.border": "#6e6a8680",
"editorHoverWidget.foreground": "#908caa",
"editorHoverWidget.highlightForeground": "#e0def4",
"editorHoverWidget.statusBarBackground": "#000000",
"editorIndentGuide.activeBackground": "#6e6a86",
"editorIndentGuide.background": "#817c9c4d",
"editorInfo.border": "#393552",
"editorInfo.foreground": "#9ccfd8",
"editorInlayHint.background": "#393552",
"editorInlayHint.foreground": "#908caa",
"editorInlayHint.parameterBackground": "#393552",
"editorInlayHint.parameterForeground": "#c4a7e7",
"editorInlayHint.typeBackground": "#393552",
"editorInlayHint.typeForeground": "#9ccfd8",
"editorLightBulb.foreground": "#3e8fb0",
"editorLightBulbAutoFix.foreground": "#ea9a97",
"editorLineNumber.activeForeground": "#e0def4",
"editorLineNumber.foreground": "#908caa",
"editorLink.activeForeground": "#ea9a97",
"editorMarkerNavigation.background": "#2a273f",
"editorMarkerNavigationError.background": "#2a273f",
"editorMarkerNavigationInfo.background": "#2a273f",
"editorMarkerNavigationWarning.background": "#2a273f",
"editorOverviewRuler.addedForeground": "#9ccfd880",
"editorOverviewRuler.background": "#232136",
"editorOverviewRuler.border": "#817c9c4d",
"editorOverviewRuler.bracketMatchForeground": "#908caa",
"editorOverviewRuler.commonContentForeground": "#817c9c14",
"editorOverviewRuler.currentContentForeground": "#817c9c26",
"editorOverviewRuler.deletedForeground": "#eb6f9280",
"editorOverviewRuler.errorForeground": "#eb6f9280",
"editorOverviewRuler.findMatchForeground": "#817c9c4d",
"editorOverviewRuler.incomingContentForeground": "#c4a7e780",
"editorOverviewRuler.infoForeground": "#9ccfd880",
"editorOverviewRuler.modifiedForeground": "#ea9a9780",
"editorOverviewRuler.rangeHighlightForeground": "#817c9c4d",
"editorOverviewRuler.selectionHighlightForeground": "#817c9c4d",
"editorOverviewRuler.warningForeground": "#f6c17780",
"editorOverviewRuler.wordHighlightForeground": "#817c9c26",
"editorOverviewRuler.wordHighlightStrongForeground": "#817c9c4d",
"editorPane.background": "#000000",
"editorRuler.foreground": "#817c9c4d",
"editorSuggestWidget.background": "#2a273f",
"editorSuggestWidget.border": "#000000",
"editorSuggestWidget.focusHighlightForeground": "#ea9a97",
"editorSuggestWidget.foreground": "#908caa",
"editorSuggestWidget.highlightForeground": "#ea9a97",
"editorSuggestWidget.selectedBackground": "#817c9c26",
"editorSuggestWidget.selectedForeground": "#e0def4",
"editorSuggestWidget.selectedIconForeground": "#e0def4",
"editorUnnecessaryCode.border": "#000000",
"editorUnnecessaryCode.opacity": "#e0def480",
"editorWarning.border": "#000000",
"editorWarning.foreground": "#f6c177",
"editorWhitespace.foreground": "#6e6a86",
"editorWidget.background": "#2a273f",
"editorWidget.border": "#393552",
"editorWidget.foreground": "#908caa",
"editorWidget.resizeBorder": "#6e6a86",
"errorForeground": "#eb6f92",
"extensionBadge.remoteBackground": "#c4a7e7",
"extensionBadge.remoteForeground": "#232136",
"extensionButton.prominentBackground": "#ea9a97",
"extensionButton.prominentForeground": "#232136",
"extensionButton.prominentHoverBackground": "#ea9a97e6",
"extensionIcon.preReleaseForeground": "#3e8fb0",
"extensionIcon.starForeground": "#ea9a97",
"extensionIcon.verifiedForeground": "#c4a7e7",
"focusBorder": "#817c9c26",
"foreground": "#e0def4",
"gitDecoration.addedResourceForeground": "#9ccfd8",
"gitDecoration.conflictingResourceForeground": "#eb6f92",
"gitDecoration.deletedResourceForeground": "#908caa",
"gitDecoration.ignoredResourceForeground": "#6e6a86",
"gitDecoration.modifiedResourceForeground": "#ea9a97",
"gitDecoration.renamedResourceForeground": "#3e8fb0",
"gitDecoration.stageDeletedResourceForeground": "#eb6f92",
"gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
"gitDecoration.submoduleResourceForeground": "#f6c177",
"gitDecoration.untrackedResourceForeground": "#f6c177",
"icon.foreground": "#908caa",
"input.background": "#39355280",
"input.border": "#817c9c26",
"input.foreground": "#e0def4",
"input.placeholderForeground": "#908caa",
"inputOption.activeBackground": "#ea9a9726",
"inputOption.activeForeground": "#ea9a97",
"inputValidation.errorBackground": "#2a273f",
"inputValidation.errorBorder": "#817c9c4d",
"inputValidation.errorForeground": "#eb6f92",
"inputValidation.infoBackground": "#2a273f",
"inputValidation.infoBorder": "#817c9c4d",
"inputValidation.infoForeground": "#9ccfd8",
"inputValidation.warningBackground": "#2a273f",
"inputValidation.warningBorder": "#817c9c4d",
"inputValidation.warningForeground": "#9ccfd880",
"keybindingLabel.background": "#393552",
"keybindingLabel.border": "#817c9c4d",
"keybindingLabel.bottomBorder": "#817c9c4d",
"keybindingLabel.foreground": "#c4a7e7",
"keybindingTable.headerBackground": "#393552",
"keybindingTable.rowsBackground": "#2a273f",
"list.activeSelectionBackground": "#817c9c26",
"list.activeSelectionForeground": "#e0def4",
"list.deemphasizedForeground": "#908caa",
"list.dropBackground": "#2a273f",
"list.errorForeground": "#eb6f92",
"list.filterMatchBackground": "#2a273f",
"list.filterMatchBorder": "#ea9a97",
"list.focusBackground": "#817c9c4d",
"list.focusForeground": "#e0def4",
"list.focusOutline": "#817c9c26",
"list.highlightForeground": "#ea9a97",
"list.hoverBackground": "#817c9c14",
"list.hoverForeground": "#e0def4",
"list.inactiveFocusBackground": "#817c9c14",
"list.inactiveSelectionBackground": "#2a273f",
"list.inactiveSelectionForeground": "#e0def4",
"list.invalidItemForeground": "#eb6f92",
"list.warningForeground": "#f6c177",
"listFilterWidget.background": "#2a273f",
"listFilterWidget.noMatchesOutline": "#eb6f92",
"listFilterWidget.outline": "#393552",
"menu.background": "#2a273f",
"menu.border": "#817c9c14",
"menu.foreground": "#e0def4",
"menu.selectionBackground": "#817c9c26",
"menu.selectionBorder": "#393552",
"menu.selectionForeground": "#e0def4",
"menu.separatorBackground": "#817c9c4d",
"menubar.selectionBackground": "#817c9c26",
"menubar.selectionBorder": "#817c9c14",
"menubar.selectionForeground": "#e0def4",
"merge.border": "#393552",
"merge.commonContentBackground": "#817c9c26",
"merge.commonHeaderBackground": "#817c9c26",
"merge.currentContentBackground": "#f6c17780",
"merge.currentHeaderBackground": "#f6c17780",
"merge.incomingContentBackground": "#9ccfd880",
"merge.incomingHeaderBackground": "#9ccfd880",
"minimap.background": "#2a273f",
"minimap.errorHighlight": "#eb6f9280",
"minimap.findMatchHighlight": "#817c9c26",
"minimap.selectionHighlight": "#817c9c26",
"minimap.warningHighlight": "#f6c17780",
"minimapGutter.addedBackground": "#9ccfd8",
"minimapGutter.deletedBackground": "#eb6f92",
"minimapGutter.modifiedBackground": "#ea9a97",
"minimapSlider.activeBackground": "#817c9c4d",
"minimapSlider.background": "#817c9c26",
"minimapSlider.hoverBackground": "#817c9c26",
"notebook.cellBorderColor": "#9ccfd880",
"notebook.cellEditorBackground": "#2a273f",
"notebook.cellHoverBackground": "#39355280",
"notebook.focusedCellBackground": "#817c9c14",
"notebook.focusedCellBorder": "#9ccfd8",
"notebook.outputContainerBackgroundColor": "#817c9c14",
"notificationCenter.border": "#817c9c26",
"notificationCenterHeader.background": "#2a273f",
"notificationCenterHeader.foreground": "#908caa",
"notificationLink.foreground": "#c4a7e7",
"notifications.background": "#2a273f",
"notifications.border": "#817c9c26",
"notifications.foreground": "#e0def4",
"notificationsErrorIcon.foreground": "#eb6f92",
"notificationsInfoIcon.foreground": "#9ccfd8",
"notificationsWarningIcon.foreground": "#f6c177",
"notificationToast.border": "#817c9c26",
"panel.background": "#2a273f",
"panel.border": "#000000",
"panel.dropBorder": "#393552",
"panelInput.border": "#2a273f",
"panelSection.dropBackground": "#817c9c26",
"panelSectionHeader.background": "#2a273f",
"panelSectionHeader.foreground": "#e0def4",
"panelTitle.activeBorder": "#817c9c4d",
"panelTitle.activeForeground": "#e0def4",
"panelTitle.inactiveForeground": "#908caa",
"peekView.border": "#393552",
"peekViewEditor.background": "#2a273f",
"peekViewEditor.matchHighlightBackground": "#817c9c4d",
"peekViewResult.background": "#2a273f",
"peekViewResult.fileForeground": "#908caa",
"peekViewResult.lineForeground": "#908caa",
"peekViewResult.matchHighlightBackground": "#817c9c4d",
"peekViewResult.selectionBackground": "#817c9c26",
"peekViewResult.selectionForeground": "#e0def4",
"peekViewTitle.background": "#393552",
"peekViewTitleDescription.foreground": "#908caa",
"pickerGroup.border": "#817c9c4d",
"pickerGroup.foreground": "#c4a7e7",
"ports.iconRunningProcessForeground": "#ea9a97",
"problemsErrorIcon.foreground": "#eb6f92",
"problemsInfoIcon.foreground": "#9ccfd8",
"problemsWarningIcon.foreground": "#f6c177",
"progressBar.background": "#ea9a97",
"quickInput.background": "#2a273f",
"quickInput.foreground": "#908caa",
"quickInputList.focusBackground": "#817c9c26",
"quickInputList.focusForeground": "#e0def4",
"quickInputList.focusIconForeground": "#e0def4",
"scrollbar.shadow": "#2a273f4d",
"scrollbarSlider.activeBackground": "#3e8fb080",
"scrollbarSlider.background": "#817c9c26",
"scrollbarSlider.hoverBackground": "#817c9c4d",
"searchEditor.findMatchBackground": "#817c9c26",
"selection.background": "#817c9c4d",
"settings.focusedRowBackground": "#2a273f",
"settings.headerForeground": "#e0def4",
"settings.modifiedItemIndicator": "#ea9a97",
"settings.focusedRowBorder": "#817c9c26",
"settings.rowHoverBackground": "#2a273f",
"sideBar.background": "#232136",
"sideBar.dropBackground": "#2a273f",
"sideBar.foreground": "#908caa",
"sideBarSectionHeader.background": "#000000",
"sideBarSectionHeader.border": "#817c9c26",
"statusBar.background": "#232136",
"statusBar.debuggingBackground": "#c4a7e7",
"statusBar.debuggingForeground": "#232136",
"statusBar.foreground": "#908caa",
"statusBar.noFolderBackground": "#232136",
"statusBar.noFolderForeground": "#908caa",
"statusBarItem.activeBackground": "#817c9c4d",
"statusBarItem.hoverBackground": "#817c9c26",
"statusBarItem.prominentBackground": "#393552",
"statusBarItem.prominentForeground": "#e0def4",
"statusBarItem.prominentHoverBackground": "#817c9c26",
"statusBarItem.remoteBackground": "#232136",
"statusBarItem.remoteForeground": "#f6c177",
"statusBarItem.errorBackground": "#232136",
"statusBarItem.errorForeground": "#eb6f92",
"symbolIcon.arrayForeground": "#908caa",
"symbolIcon.classForeground": "#908caa",
"symbolIcon.colorForeground": "#908caa",
"symbolIcon.constantForeground": "#908caa",
"symbolIcon.constructorForeground": "#908caa",
"symbolIcon.enumeratorForeground": "#908caa",
"symbolIcon.enumeratorMemberForeground": "#908caa",
"symbolIcon.eventForeground": "#908caa",
"symbolIcon.fieldForeground": "#908caa",
"symbolIcon.fileForeground": "#908caa",
"symbolIcon.folderForeground": "#908caa",
"symbolIcon.functionForeground": "#908caa",
"symbolIcon.interfaceForeground": "#908caa",
"symbolIcon.keyForeground": "#908caa",
"symbolIcon.keywordForeground": "#908caa",
"symbolIcon.methodForeground": "#908caa",
"symbolIcon.moduleForeground": "#908caa",
"symbolIcon.namespaceForeground": "#908caa",
"symbolIcon.nullForeground": "#908caa",
"symbolIcon.numberForeground": "#908caa",
"symbolIcon.objectForeground": "#908caa",
"symbolIcon.operatorForeground": "#908caa",
"symbolIcon.packageForeground": "#908caa",
"symbolIcon.propertyForeground": "#908caa",
"symbolIcon.referenceForeground": "#908caa",
"symbolIcon.snippetForeground": "#908caa",
"symbolIcon.stringForeground": "#908caa",
"symbolIcon.structForeground": "#908caa",
"symbolIcon.textForeground": "#908caa",
"symbolIcon.typeParameterForeground": "#908caa",
"symbolIcon.unitForeground": "#908caa",
"symbolIcon.variableForeground": "#908caa",
"tab.activeBackground": "#817c9c14",
"tab.activeForeground": "#e0def4",
"tab.activeModifiedBorder": "#9ccfd8",
"tab.border": "#000000",
"tab.hoverBackground": "#817c9c26",
"tab.inactiveBackground": "#000000",
"tab.inactiveForeground": "#908caa",
"tab.inactiveModifiedBorder": "#9ccfd880",
"tab.lastPinnedBorder": "#6e6a86",
"tab.unfocusedActiveBackground": "#000000",
"tab.unfocusedHoverBackground": "#000000",
"tab.unfocusedInactiveBackground": "#000000",
"tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
"terminal.ansiBlack": "#393552",
"terminal.ansiBlue": "#9ccfd8",
"terminal.ansiBrightBlack": "#908caa",
"terminal.ansiBrightBlue": "#9ccfd8",
"terminal.ansiBrightCyan": "#ea9a97",
"terminal.ansiBrightGreen": "#3e8fb0",
"terminal.ansiBrightMagenta": "#c4a7e7",
"terminal.ansiBrightRed": "#eb6f92",
"terminal.ansiBrightWhite": "#e0def4",
"terminal.ansiBrightYellow": "#f6c177",
"terminal.ansiCyan": "#ea9a97",
"terminal.ansiGreen": "#3e8fb0",
"terminal.ansiMagenta": "#c4a7e7",
"terminal.ansiRed": "#eb6f92",
"terminal.ansiWhite": "#e0def4",
"terminal.ansiYellow": "#f6c177",
"terminal.dropBackground": "#817c9c26",
"terminal.foreground": "#e0def4",
"terminal.selectionBackground": "#817c9c26",
"terminal.tab.activeBorder": "#e0def4",
"terminalCursor.background": "#e0def4",
"terminalCursor.foreground": "#6e6a86",
"textBlockQuote.background": "#2a273f",
"textBlockQuote.border": "#817c9c26",
"textCodeBlock.background": "#2a273f",
"textLink.activeForeground": "#c4a7e7e6",
"textLink.foreground": "#c4a7e7",
"textPreformat.foreground": "#f6c177",
"textSeparator.foreground": "#908caa",
"titleBar.activeBackground": "#232136",
"titleBar.activeForeground": "#908caa",
"titleBar.inactiveBackground": "#2a273f",
"titleBar.inactiveForeground": "#908caa",
"toolbar.activeBackground": "#817c9c4d",
"toolbar.hoverBackground": "#817c9c26",
"tree.indentGuidesStroke": "#908caa",
"walkThrough.embeddedEditorBackground": "#232136",
"welcomePage.background": "#232136",
"welcomePage.buttonBackground": "#2a273f",
"welcomePage.buttonHoverBackground": "#393552",
"widget.shadow": "#2a273f4d",
"window.activeBorder": "#2a273f",
"window.inactiveBorder": "#2a273f"
},
"tokenColors": [
{
"scope": ["comment"],
"settings": {
"foreground": "#6e6a86",
"fontStyle": "italic"
}
},
{
"scope": ["constant"],
"settings": {
"foreground": "#3e8fb0"
}
},
{
"scope": ["constant.numeric", "constant.language"],
"settings": {
"foreground": "#ea9a97"
}
},
{
"scope": ["entity.name"],
"settings": {
"foreground": "#ea9a97"
}
},
{
"scope": [
"entity.name.section",
"entity.name.tag",
"entity.name.namespace",
"entity.name.type"
],
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
"settings": {
"foreground": "#c4a7e7",
"fontStyle": "italic"
}
},
{
"scope": ["invalid"],
"settings": {
"foreground": "#eb6f92"
}
},
{
"scope": ["invalid.deprecated"],
"settings": {
"foreground": "#908caa"
}
},
{
"scope": ["keyword"],
"settings": {
"foreground": "#3e8fb0"
}
},
{
"scope": ["markup.inserted.diff"],
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": ["markup.deleted.diff"],
"settings": {
"foreground": "#eb6f92"
}
},
{
"scope": "markup.heading",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "markup.bold.markdown",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "markup.italic.markdown",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": ["meta.diff.range"],
"settings": {
"foreground": "#c4a7e7"
}
},
{
"scope": ["meta.tag", "meta.brace"],
"settings": {
"foreground": "#e0def4"
}
},
{
"scope": ["meta.import", "meta.export"],
"settings": {
"foreground": "#3e8fb0"
}
},
{
"scope": "meta.directive.vue",
"settings": {
"foreground": "#c4a7e7",
"fontStyle": "italic"
}
},
{
"scope": "meta.property-name.css",
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": "meta.property-value.css",
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": "meta.tag.other.html",
"settings": {
"foreground": "#908caa"
}
},
{
"scope": ["punctuation"],
"settings": {
"foreground": "#908caa"
}
},
{
"scope": ["punctuation.accessor"],
"settings": {
"foreground": "#3e8fb0"
}
},
{
"scope": ["punctuation.definition.string"],
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": ["punctuation.definition.tag"],
"settings": {
"foreground": "#6e6a86"
}
},
{
"scope": ["storage.type", "storage.modifier"],
"settings": {
"foreground": "#3e8fb0"
}
},
{
"scope": ["string"],
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": ["support"],
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": ["support.constant"],
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": ["support.function"],
"settings": {
"foreground": "#eb6f92",
"fontStyle": "italic"
}
},
{
"scope": ["variable"],
"settings": {
"foreground": "#ea9a97",
"fontStyle": "italic"
}
},
{
"scope": [
"variable.other",
"variable.language",
"variable.function",
"variable.argument"
],
"settings": {
"foreground": "#e0def4"
}
},
{
"scope": ["variable.parameter"],
"settings": {
"foreground": "#c4a7e7"
}
}
]
}

View File

@@ -0,0 +1,680 @@
{
"name": "Rosé Pine",
"type": "dark",
"colors": {
"activityBar.activeBorder": "#e0def4",
"activityBar.background": "#191724",
"activityBar.dropBorder": "#26233a",
"activityBar.foreground": "#e0def4",
"activityBar.inactiveForeground": "#908caa",
"activityBarBadge.background": "#ebbcba",
"activityBarBadge.foreground": "#191724",
"badge.background": "#ebbcba",
"badge.foreground": "#191724",
"banner.background": "#1f1d2e",
"banner.foreground": "#e0def4",
"banner.iconForeground": "#908caa",
"breadcrumb.activeSelectionForeground": "#ebbcba",
"breadcrumb.background": "#191724",
"breadcrumb.focusForeground": "#908caa",
"breadcrumb.foreground": "#6e6a86",
"breadcrumbPicker.background": "#1f1d2e",
"button.background": "#ebbcba",
"button.foreground": "#191724",
"button.hoverBackground": "#ebbcbae6",
"button.secondaryBackground": "#1f1d2e",
"button.secondaryForeground": "#e0def4",
"button.secondaryHoverBackground": "#26233a",
"charts.blue": "#9ccfd8",
"charts.foreground": "#e0def4",
"charts.green": "#31748f",
"charts.lines": "#908caa",
"charts.orange": "#ebbcba",
"charts.purple": "#c4a7e7",
"charts.red": "#eb6f92",
"charts.yellow": "#f6c177",
"checkbox.background": "#1f1d2e",
"checkbox.border": "#6e6a8633",
"checkbox.foreground": "#e0def4",
"debugExceptionWidget.background": "#1f1d2e",
"debugExceptionWidget.border": "#6e6a8633",
"debugIcon.breakpointCurrentStackframeForeground": "#908caa",
"debugIcon.breakpointDisabledForeground": "#908caa",
"debugIcon.breakpointForeground": "#908caa",
"debugIcon.breakpointStackframeForeground": "#908caa",
"debugIcon.breakpointUnverifiedForeground": "#908caa",
"debugIcon.continueForeground": "#908caa",
"debugIcon.disconnectForeground": "#908caa",
"debugIcon.pauseForeground": "#908caa",
"debugIcon.restartForeground": "#908caa",
"debugIcon.startForeground": "#908caa",
"debugIcon.stepBackForeground": "#908caa",
"debugIcon.stepIntoForeground": "#908caa",
"debugIcon.stepOutForeground": "#908caa",
"debugIcon.stepOverForeground": "#908caa",
"debugIcon.stopForeground": "#eb6f92",
"debugToolBar.background": "#1f1d2e",
"debugToolBar.border": "#26233a",
"descriptionForeground": "#908caa",
"diffEditor.border": "#26233a",
"diffEditor.diagonalFill": "#6e6a8666",
"diffEditor.insertedLineBackground": "#9ccfd826",
"diffEditor.insertedTextBackground": "#9ccfd826",
"diffEditor.removedLineBackground": "#eb6f9226",
"diffEditor.removedTextBackground": "#eb6f9226",
"diffEditorOverview.insertedForeground": "#9ccfd880",
"diffEditorOverview.removedForeground": "#eb6f9280",
"dropdown.background": "#1f1d2e",
"dropdown.border": "#6e6a8633",
"dropdown.foreground": "#e0def4",
"dropdown.listBackground": "#1f1d2e",
"editor.background": "#191724",
"editor.findMatchBackground": "#6e6a8666",
"editor.findMatchHighlightBackground": "#6e6a8666",
"editor.findRangeHighlightBackground": "#6e6a8666",
"editor.findRangeHighlightBorder": "#000000",
"editor.focusedStackFrameHighlightBackground": "#6e6a8633",
"editor.foldBackground": "#1f1d2e",
"editor.foreground": "#e0def4",
"editor.hoverHighlightBackground": "#000000",
"editor.inactiveSelectionBackground": "#6e6a861a",
"editor.inlineValuesBackground": "#000000",
"editor.inlineValuesForeground": "#908caa",
"editor.lineHighlightBackground": "#6e6a861a",
"editor.lineHighlightBorder": "#000000",
"editor.linkedEditingBackground": "#1f1d2e",
"editor.rangeHighlightBackground": "#6e6a861a",
"editor.selectionBackground": "#6e6a8633",
"editor.selectionForeground": "#e0def4",
"editor.selectionHighlightBackground": "#6e6a8633",
"editor.selectionHighlightBorder": "#191724",
"editor.snippetFinalTabstopHighlightBackground": "#6e6a8633",
"editor.snippetFinalTabstopHighlightBorder": "#1f1d2e",
"editor.snippetTabstopHighlightBackground": "#6e6a8633",
"editor.snippetTabstopHighlightBorder": "#1f1d2e",
"editor.stackFrameHighlightBackground": "#6e6a8633",
"editor.symbolHighlightBackground": "#6e6a8633",
"editor.symbolHighlightBorder": "#000000",
"editor.wordHighlightBackground": "#6e6a8633",
"editor.wordHighlightBorder": "#000000",
"editor.wordHighlightStrongBackground": "#6e6a8633",
"editor.wordHighlightStrongBorder": "#6e6a8633",
"editorBracketHighlight.foreground1": "#eb6f9280",
"editorBracketHighlight.foreground2": "#31748f80",
"editorBracketHighlight.foreground3": "#f6c17780",
"editorBracketHighlight.foreground4": "#9ccfd880",
"editorBracketHighlight.foreground5": "#ebbcba80",
"editorBracketHighlight.foreground6": "#c4a7e780",
"editorBracketMatch.background": "#000000",
"editorBracketMatch.border": "#908caa",
"editorBracketPairGuide.activeBackground1": "#31748f",
"editorBracketPairGuide.activeBackground2": "#ebbcba",
"editorBracketPairGuide.activeBackground3": "#c4a7e7",
"editorBracketPairGuide.activeBackground4": "#9ccfd8",
"editorBracketPairGuide.activeBackground5": "#f6c177",
"editorBracketPairGuide.activeBackground6": "#eb6f92",
"editorBracketPairGuide.background1": "#31748f80",
"editorBracketPairGuide.background2": "#ebbcba80",
"editorBracketPairGuide.background3": "#c4a7e780",
"editorBracketPairGuide.background4": "#9ccfd880",
"editorBracketPairGuide.background5": "#f6c17780",
"editorBracketPairGuide.background6": "#eb6f9280",
"editorCodeLens.foreground": "#ebbcba",
"editorCursor.background": "#e0def4",
"editorCursor.foreground": "#6e6a86",
"editorError.border": "#000000",
"editorError.foreground": "#eb6f92",
"editorGhostText.foreground": "#908caa",
"editorGroup.border": "#000000",
"editorGroup.dropBackground": "#1f1d2e",
"editorGroup.emptyBackground": "#000000",
"editorGroup.focusedEmptyBorder": "#000000",
"editorGroupHeader.noTabsBackground": "#000000",
"editorGroupHeader.tabsBackground": "#000000",
"editorGroupHeader.tabsBorder": "#000000",
"editorGutter.addedBackground": "#9ccfd8",
"editorGutter.background": "#191724",
"editorGutter.commentRangeForeground": "#908caa",
"editorGutter.deletedBackground": "#eb6f92",
"editorGutter.foldingControlForeground": "#c4a7e7",
"editorGutter.modifiedBackground": "#ebbcba",
"editorHint.border": "#000000",
"editorHint.foreground": "#908caa",
"editorHoverWidget.background": "#1f1d2e",
"editorHoverWidget.border": "#6e6a8680",
"editorHoverWidget.foreground": "#908caa",
"editorHoverWidget.highlightForeground": "#e0def4",
"editorHoverWidget.statusBarBackground": "#000000",
"editorIndentGuide.activeBackground": "#6e6a86",
"editorIndentGuide.background": "#6e6a8666",
"editorInfo.border": "#26233a",
"editorInfo.foreground": "#9ccfd8",
"editorInlayHint.background": "#26233a",
"editorInlayHint.foreground": "#908caa",
"editorInlayHint.parameterBackground": "#26233a",
"editorInlayHint.parameterForeground": "#c4a7e7",
"editorInlayHint.typeBackground": "#26233a",
"editorInlayHint.typeForeground": "#9ccfd8",
"editorLightBulb.foreground": "#31748f",
"editorLightBulbAutoFix.foreground": "#ebbcba",
"editorLineNumber.activeForeground": "#e0def4",
"editorLineNumber.foreground": "#908caa",
"editorLink.activeForeground": "#ebbcba",
"editorMarkerNavigation.background": "#1f1d2e",
"editorMarkerNavigationError.background": "#1f1d2e",
"editorMarkerNavigationInfo.background": "#1f1d2e",
"editorMarkerNavigationWarning.background": "#1f1d2e",
"editorOverviewRuler.addedForeground": "#9ccfd880",
"editorOverviewRuler.background": "#191724",
"editorOverviewRuler.border": "#6e6a8666",
"editorOverviewRuler.bracketMatchForeground": "#908caa",
"editorOverviewRuler.commonContentForeground": "#6e6a861a",
"editorOverviewRuler.currentContentForeground": "#6e6a8633",
"editorOverviewRuler.deletedForeground": "#eb6f9280",
"editorOverviewRuler.errorForeground": "#eb6f9280",
"editorOverviewRuler.findMatchForeground": "#6e6a8666",
"editorOverviewRuler.incomingContentForeground": "#c4a7e780",
"editorOverviewRuler.infoForeground": "#9ccfd880",
"editorOverviewRuler.modifiedForeground": "#ebbcba80",
"editorOverviewRuler.rangeHighlightForeground": "#6e6a8666",
"editorOverviewRuler.selectionHighlightForeground": "#6e6a8666",
"editorOverviewRuler.warningForeground": "#f6c17780",
"editorOverviewRuler.wordHighlightForeground": "#6e6a8633",
"editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8666",
"editorPane.background": "#000000",
"editorRuler.foreground": "#6e6a8666",
"editorSuggestWidget.background": "#1f1d2e",
"editorSuggestWidget.border": "#000000",
"editorSuggestWidget.focusHighlightForeground": "#ebbcba",
"editorSuggestWidget.foreground": "#908caa",
"editorSuggestWidget.highlightForeground": "#ebbcba",
"editorSuggestWidget.selectedBackground": "#6e6a8633",
"editorSuggestWidget.selectedForeground": "#e0def4",
"editorSuggestWidget.selectedIconForeground": "#e0def4",
"editorUnnecessaryCode.border": "#000000",
"editorUnnecessaryCode.opacity": "#e0def480",
"editorWarning.border": "#000000",
"editorWarning.foreground": "#f6c177",
"editorWhitespace.foreground": "#6e6a86",
"editorWidget.background": "#1f1d2e",
"editorWidget.border": "#26233a",
"editorWidget.foreground": "#908caa",
"editorWidget.resizeBorder": "#6e6a86",
"errorForeground": "#eb6f92",
"extensionBadge.remoteBackground": "#c4a7e7",
"extensionBadge.remoteForeground": "#191724",
"extensionButton.prominentBackground": "#ebbcba",
"extensionButton.prominentForeground": "#191724",
"extensionButton.prominentHoverBackground": "#ebbcbae6",
"extensionIcon.preReleaseForeground": "#31748f",
"extensionIcon.starForeground": "#ebbcba",
"extensionIcon.verifiedForeground": "#c4a7e7",
"focusBorder": "#6e6a8633",
"foreground": "#e0def4",
"gitDecoration.addedResourceForeground": "#9ccfd8",
"gitDecoration.conflictingResourceForeground": "#eb6f92",
"gitDecoration.deletedResourceForeground": "#908caa",
"gitDecoration.ignoredResourceForeground": "#6e6a86",
"gitDecoration.modifiedResourceForeground": "#ebbcba",
"gitDecoration.renamedResourceForeground": "#31748f",
"gitDecoration.stageDeletedResourceForeground": "#eb6f92",
"gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
"gitDecoration.submoduleResourceForeground": "#f6c177",
"gitDecoration.untrackedResourceForeground": "#f6c177",
"icon.foreground": "#908caa",
"input.background": "#26233a80",
"input.border": "#6e6a8633",
"input.foreground": "#e0def4",
"input.placeholderForeground": "#908caa",
"inputOption.activeBackground": "#ebbcba26",
"inputOption.activeForeground": "#ebbcba",
"inputValidation.errorBackground": "#1f1d2e",
"inputValidation.errorBorder": "#6e6a8666",
"inputValidation.errorForeground": "#eb6f92",
"inputValidation.infoBackground": "#1f1d2e",
"inputValidation.infoBorder": "#6e6a8666",
"inputValidation.infoForeground": "#9ccfd8",
"inputValidation.warningBackground": "#1f1d2e",
"inputValidation.warningBorder": "#6e6a8666",
"inputValidation.warningForeground": "#9ccfd880",
"keybindingLabel.background": "#26233a",
"keybindingLabel.border": "#6e6a8666",
"keybindingLabel.bottomBorder": "#6e6a8666",
"keybindingLabel.foreground": "#c4a7e7",
"keybindingTable.headerBackground": "#26233a",
"keybindingTable.rowsBackground": "#1f1d2e",
"list.activeSelectionBackground": "#6e6a8633",
"list.activeSelectionForeground": "#e0def4",
"list.deemphasizedForeground": "#908caa",
"list.dropBackground": "#1f1d2e",
"list.errorForeground": "#eb6f92",
"list.filterMatchBackground": "#1f1d2e",
"list.filterMatchBorder": "#ebbcba",
"list.focusBackground": "#6e6a8666",
"list.focusForeground": "#e0def4",
"list.focusOutline": "#6e6a8633",
"list.highlightForeground": "#ebbcba",
"list.hoverBackground": "#6e6a861a",
"list.hoverForeground": "#e0def4",
"list.inactiveFocusBackground": "#6e6a861a",
"list.inactiveSelectionBackground": "#1f1d2e",
"list.inactiveSelectionForeground": "#e0def4",
"list.invalidItemForeground": "#eb6f92",
"list.warningForeground": "#f6c177",
"listFilterWidget.background": "#1f1d2e",
"listFilterWidget.noMatchesOutline": "#eb6f92",
"listFilterWidget.outline": "#26233a",
"menu.background": "#1f1d2e",
"menu.border": "#6e6a861a",
"menu.foreground": "#e0def4",
"menu.selectionBackground": "#6e6a8633",
"menu.selectionBorder": "#26233a",
"menu.selectionForeground": "#e0def4",
"menu.separatorBackground": "#6e6a8666",
"menubar.selectionBackground": "#6e6a8633",
"menubar.selectionBorder": "#6e6a861a",
"menubar.selectionForeground": "#e0def4",
"merge.border": "#26233a",
"merge.commonContentBackground": "#6e6a8633",
"merge.commonHeaderBackground": "#6e6a8633",
"merge.currentContentBackground": "#f6c17780",
"merge.currentHeaderBackground": "#f6c17780",
"merge.incomingContentBackground": "#9ccfd880",
"merge.incomingHeaderBackground": "#9ccfd880",
"minimap.background": "#1f1d2e",
"minimap.errorHighlight": "#eb6f9280",
"minimap.findMatchHighlight": "#6e6a8633",
"minimap.selectionHighlight": "#6e6a8633",
"minimap.warningHighlight": "#f6c17780",
"minimapGutter.addedBackground": "#9ccfd8",
"minimapGutter.deletedBackground": "#eb6f92",
"minimapGutter.modifiedBackground": "#ebbcba",
"minimapSlider.activeBackground": "#6e6a8666",
"minimapSlider.background": "#6e6a8633",
"minimapSlider.hoverBackground": "#6e6a8633",
"notebook.cellBorderColor": "#9ccfd880",
"notebook.cellEditorBackground": "#1f1d2e",
"notebook.cellHoverBackground": "#26233a80",
"notebook.focusedCellBackground": "#6e6a861a",
"notebook.focusedCellBorder": "#9ccfd8",
"notebook.outputContainerBackgroundColor": "#6e6a861a",
"notificationCenter.border": "#6e6a8633",
"notificationCenterHeader.background": "#1f1d2e",
"notificationCenterHeader.foreground": "#908caa",
"notificationLink.foreground": "#c4a7e7",
"notifications.background": "#1f1d2e",
"notifications.border": "#6e6a8633",
"notifications.foreground": "#e0def4",
"notificationsErrorIcon.foreground": "#eb6f92",
"notificationsInfoIcon.foreground": "#9ccfd8",
"notificationsWarningIcon.foreground": "#f6c177",
"notificationToast.border": "#6e6a8633",
"panel.background": "#1f1d2e",
"panel.border": "#000000",
"panel.dropBorder": "#26233a",
"panelInput.border": "#1f1d2e",
"panelSection.dropBackground": "#6e6a8633",
"panelSectionHeader.background": "#1f1d2e",
"panelSectionHeader.foreground": "#e0def4",
"panelTitle.activeBorder": "#6e6a8666",
"panelTitle.activeForeground": "#e0def4",
"panelTitle.inactiveForeground": "#908caa",
"peekView.border": "#26233a",
"peekViewEditor.background": "#1f1d2e",
"peekViewEditor.matchHighlightBackground": "#6e6a8666",
"peekViewResult.background": "#1f1d2e",
"peekViewResult.fileForeground": "#908caa",
"peekViewResult.lineForeground": "#908caa",
"peekViewResult.matchHighlightBackground": "#6e6a8666",
"peekViewResult.selectionBackground": "#6e6a8633",
"peekViewResult.selectionForeground": "#e0def4",
"peekViewTitle.background": "#26233a",
"peekViewTitleDescription.foreground": "#908caa",
"pickerGroup.border": "#6e6a8666",
"pickerGroup.foreground": "#c4a7e7",
"ports.iconRunningProcessForeground": "#ebbcba",
"problemsErrorIcon.foreground": "#eb6f92",
"problemsInfoIcon.foreground": "#9ccfd8",
"problemsWarningIcon.foreground": "#f6c177",
"progressBar.background": "#ebbcba",
"quickInput.background": "#1f1d2e",
"quickInput.foreground": "#908caa",
"quickInputList.focusBackground": "#6e6a8633",
"quickInputList.focusForeground": "#e0def4",
"quickInputList.focusIconForeground": "#e0def4",
"scrollbar.shadow": "#1f1d2e4d",
"scrollbarSlider.activeBackground": "#31748f80",
"scrollbarSlider.background": "#6e6a8633",
"scrollbarSlider.hoverBackground": "#6e6a8666",
"searchEditor.findMatchBackground": "#6e6a8633",
"selection.background": "#6e6a8666",
"settings.focusedRowBackground": "#1f1d2e",
"settings.headerForeground": "#e0def4",
"settings.modifiedItemIndicator": "#ebbcba",
"settings.focusedRowBorder": "#6e6a8633",
"settings.rowHoverBackground": "#1f1d2e",
"sideBar.background": "#191724",
"sideBar.dropBackground": "#1f1d2e",
"sideBar.foreground": "#908caa",
"sideBarSectionHeader.background": "#000000",
"sideBarSectionHeader.border": "#6e6a8633",
"statusBar.background": "#191724",
"statusBar.debuggingBackground": "#c4a7e7",
"statusBar.debuggingForeground": "#191724",
"statusBar.foreground": "#908caa",
"statusBar.noFolderBackground": "#191724",
"statusBar.noFolderForeground": "#908caa",
"statusBarItem.activeBackground": "#6e6a8666",
"statusBarItem.hoverBackground": "#6e6a8633",
"statusBarItem.prominentBackground": "#26233a",
"statusBarItem.prominentForeground": "#e0def4",
"statusBarItem.prominentHoverBackground": "#6e6a8633",
"statusBarItem.remoteBackground": "#191724",
"statusBarItem.remoteForeground": "#f6c177",
"statusBarItem.errorBackground": "#191724",
"statusBarItem.errorForeground": "#eb6f92",
"symbolIcon.arrayForeground": "#908caa",
"symbolIcon.classForeground": "#908caa",
"symbolIcon.colorForeground": "#908caa",
"symbolIcon.constantForeground": "#908caa",
"symbolIcon.constructorForeground": "#908caa",
"symbolIcon.enumeratorForeground": "#908caa",
"symbolIcon.enumeratorMemberForeground": "#908caa",
"symbolIcon.eventForeground": "#908caa",
"symbolIcon.fieldForeground": "#908caa",
"symbolIcon.fileForeground": "#908caa",
"symbolIcon.folderForeground": "#908caa",
"symbolIcon.functionForeground": "#908caa",
"symbolIcon.interfaceForeground": "#908caa",
"symbolIcon.keyForeground": "#908caa",
"symbolIcon.keywordForeground": "#908caa",
"symbolIcon.methodForeground": "#908caa",
"symbolIcon.moduleForeground": "#908caa",
"symbolIcon.namespaceForeground": "#908caa",
"symbolIcon.nullForeground": "#908caa",
"symbolIcon.numberForeground": "#908caa",
"symbolIcon.objectForeground": "#908caa",
"symbolIcon.operatorForeground": "#908caa",
"symbolIcon.packageForeground": "#908caa",
"symbolIcon.propertyForeground": "#908caa",
"symbolIcon.referenceForeground": "#908caa",
"symbolIcon.snippetForeground": "#908caa",
"symbolIcon.stringForeground": "#908caa",
"symbolIcon.structForeground": "#908caa",
"symbolIcon.textForeground": "#908caa",
"symbolIcon.typeParameterForeground": "#908caa",
"symbolIcon.unitForeground": "#908caa",
"symbolIcon.variableForeground": "#908caa",
"tab.activeBackground": "#6e6a861a",
"tab.activeForeground": "#e0def4",
"tab.activeModifiedBorder": "#9ccfd8",
"tab.border": "#000000",
"tab.hoverBackground": "#6e6a8633",
"tab.inactiveBackground": "#000000",
"tab.inactiveForeground": "#908caa",
"tab.inactiveModifiedBorder": "#9ccfd880",
"tab.lastPinnedBorder": "#6e6a86",
"tab.unfocusedActiveBackground": "#000000",
"tab.unfocusedHoverBackground": "#000000",
"tab.unfocusedInactiveBackground": "#000000",
"tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
"terminal.ansiBlack": "#26233a",
"terminal.ansiBlue": "#9ccfd8",
"terminal.ansiBrightBlack": "#908caa",
"terminal.ansiBrightBlue": "#9ccfd8",
"terminal.ansiBrightCyan": "#ebbcba",
"terminal.ansiBrightGreen": "#31748f",
"terminal.ansiBrightMagenta": "#c4a7e7",
"terminal.ansiBrightRed": "#eb6f92",
"terminal.ansiBrightWhite": "#e0def4",
"terminal.ansiBrightYellow": "#f6c177",
"terminal.ansiCyan": "#ebbcba",
"terminal.ansiGreen": "#31748f",
"terminal.ansiMagenta": "#c4a7e7",
"terminal.ansiRed": "#eb6f92",
"terminal.ansiWhite": "#e0def4",
"terminal.ansiYellow": "#f6c177",
"terminal.dropBackground": "#6e6a8633",
"terminal.foreground": "#e0def4",
"terminal.selectionBackground": "#6e6a8633",
"terminal.tab.activeBorder": "#e0def4",
"terminalCursor.background": "#e0def4",
"terminalCursor.foreground": "#6e6a86",
"textBlockQuote.background": "#1f1d2e",
"textBlockQuote.border": "#6e6a8633",
"textCodeBlock.background": "#1f1d2e",
"textLink.activeForeground": "#c4a7e7e6",
"textLink.foreground": "#c4a7e7",
"textPreformat.foreground": "#f6c177",
"textSeparator.foreground": "#908caa",
"titleBar.activeBackground": "#191724",
"titleBar.activeForeground": "#908caa",
"titleBar.inactiveBackground": "#1f1d2e",
"titleBar.inactiveForeground": "#908caa",
"toolbar.activeBackground": "#6e6a8666",
"toolbar.hoverBackground": "#6e6a8633",
"tree.indentGuidesStroke": "#908caa",
"walkThrough.embeddedEditorBackground": "#191724",
"welcomePage.background": "#191724",
"welcomePage.buttonBackground": "#1f1d2e",
"welcomePage.buttonHoverBackground": "#26233a",
"widget.shadow": "#1f1d2e4d",
"window.activeBorder": "#1f1d2e",
"window.inactiveBorder": "#1f1d2e"
},
"tokenColors": [
{
"scope": ["comment"],
"settings": {
"foreground": "#6e6a86",
"fontStyle": "italic"
}
},
{
"scope": ["constant"],
"settings": {
"foreground": "#31748f"
}
},
{
"scope": ["constant.numeric", "constant.language"],
"settings": {
"foreground": "#ebbcba"
}
},
{
"scope": ["entity.name"],
"settings": {
"foreground": "#ebbcba"
}
},
{
"scope": [
"entity.name.section",
"entity.name.tag",
"entity.name.namespace",
"entity.name.type"
],
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
"settings": {
"foreground": "#c4a7e7",
"fontStyle": "italic"
}
},
{
"scope": ["invalid"],
"settings": {
"foreground": "#eb6f92"
}
},
{
"scope": ["invalid.deprecated"],
"settings": {
"foreground": "#908caa"
}
},
{
"scope": ["keyword"],
"settings": {
"foreground": "#31748f"
}
},
{
"scope": ["markup.inserted.diff"],
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": ["markup.deleted.diff"],
"settings": {
"foreground": "#eb6f92"
}
},
{
"scope": "markup.heading",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "markup.bold.markdown",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": "markup.italic.markdown",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": ["meta.diff.range"],
"settings": {
"foreground": "#c4a7e7"
}
},
{
"scope": ["meta.tag", "meta.brace"],
"settings": {
"foreground": "#e0def4"
}
},
{
"scope": ["meta.import", "meta.export"],
"settings": {
"foreground": "#31748f"
}
},
{
"scope": "meta.directive.vue",
"settings": {
"foreground": "#c4a7e7",
"fontStyle": "italic"
}
},
{
"scope": "meta.property-name.css",
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": "meta.property-value.css",
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": "meta.tag.other.html",
"settings": {
"foreground": "#908caa"
}
},
{
"scope": ["punctuation"],
"settings": {
"foreground": "#908caa"
}
},
{
"scope": ["punctuation.accessor"],
"settings": {
"foreground": "#31748f"
}
},
{
"scope": ["punctuation.definition.string"],
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": ["punctuation.definition.tag"],
"settings": {
"foreground": "#6e6a86"
}
},
{
"scope": ["storage.type", "storage.modifier"],
"settings": {
"foreground": "#31748f"
}
},
{
"scope": ["string"],
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": ["support"],
"settings": {
"foreground": "#9ccfd8"
}
},
{
"scope": ["support.constant"],
"settings": {
"foreground": "#f6c177"
}
},
{
"scope": ["support.function"],
"settings": {
"foreground": "#eb6f92",
"fontStyle": "italic"
}
},
{
"scope": ["variable"],
"settings": {
"foreground": "#ebbcba",
"fontStyle": "italic"
}
},
{
"scope": [
"variable.other",
"variable.language",
"variable.function",
"variable.argument"
],
"settings": {
"foreground": "#e0def4"
}
},
{
"scope": ["variable.parameter"],
"settings": {
"foreground": "#c4a7e7"
}
}
]
}

View File

@@ -0,0 +1,19 @@
Copyright (c) 2011 Ethan Schoonover
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,558 @@
{
"type": "dark",
"colors": {
"errorForeground": "#ffeaea",
"focusBorder": "#2aa19899",
"selection.background": "#2aa19899",
"input.background": "#003847",
"input.foreground": "#93a1a1",
"inputOption.activeBorder": "#2aa19899",
"input.placeholderForeground": "#93a1a1aa",
"inputValidation.infoBackground": "#052730",
"inputValidation.infoBorder": "#363b5f",
"inputValidation.warningBackground": "#5d5938",
"inputValidation.warningBorder": "#9d8a5e",
"inputValidation.errorBackground": "#571b26",
"inputValidation.errorBorder": "#a92049",
"dropdown.background": "#00212b",
"dropdown.border": "#2aa19899",
"list.focusBackground": "#005a6f",
"list.activeSelectionBackground": "#005a6f",
"list.inactiveSelectionBackground": "#00445488",
"list.hoverBackground": "#004454aa",
"list.dropBackground": "#00445488",
"list.highlightForeground": "#1ebcc5",
"pickerGroup.foreground": "#2aa19899",
"pickerGroup.border": "#2aa19899",
"button.background": "#2aa19899",
"badge.background": "#047aa6",
"progressBar.background": "#047aa6",
"editor.background": "#002b36",
"editorWidget.background": "#00212b",
"editor.selectionBackground": "#073642",
"editor.selectionHighlightBackground": "#005a6faa",
"editorHoverWidget.background": "#004052",
"editor.lineHighlightBackground": "#073642",
"editorCursor.foreground": "#839496",
"editorWhitespace.foreground": "#93a1a180",
"editorLineNumber.foreground": "#566c74",
"editorLineNumber.activeForeground": "#6e8a93",
"editorGutter.background": "#073642",
"editorMarkerNavigationError.background": "#ab395b",
"editorMarkerNavigationWarning.background": "#5b7e7a",
"editor.wordHighlightBackground": "#004454aa",
"editor.wordHighlightStrongBackground": "#005a6faa",
"peekViewTitle.background": "#00212b",
"peekView.border": "#003847",
"peekViewResult.background": "#00212b",
"peekViewEditor.background": "#10192c",
"peekViewEditorGutter.background": "#073642",
"peekViewEditor.matchHighlightBackground": "#7744aa40",
"tab.activeBackground": "#002b37",
"tab.inactiveBackground": "#004052",
"tab.border": "#003847",
"tab.activeForeground": "#d6dbdb",
"tab.inactiveForeground": "#93a1a1",
"editorGroup.background": "#011b23",
"editorGroupHeader.tabsBackground": "#004052",
"editorGroup.border": "#00212b",
"editorGroup.dropBackground": "#2aa19844",
"panel.border": "#003847",
"statusBar.foreground": "#93a1a1",
"statusBar.background": "#00212b",
"statusBar.noFolderBackground": "#00212b",
"statusBarItem.prominentBackground": "#003847",
"statusBarItem.prominentHoverBackground": "#003847",
"activityBar.background": "#003847",
"sideBar.background": "#00212b",
"sideBarTitle.foreground": "#93a1a1",
"titleBar.activeBackground": "#002c39",
"terminal.foreground": "#839496",
"statusBar.debuggingBackground": "#00212b",
"debugExceptionWidget.border": "#ab395b",
"debugExceptionWidget.background": "#00212b",
"debugToolBar.background": "#00212b",
"terminal.ansiBlack": "#073642",
"terminal.ansiRed": "#dc322f",
"terminal.ansiGreen": "#859900",
"terminal.ansiYellow": "#b58900",
"terminal.ansiBlue": "#268bd2",
"terminal.ansiMagenta": "#d33682",
"terminal.ansiCyan": "#2aa198",
"terminal.ansiWhite": "#839496",
"terminal.ansiBrightBlack": "#586e75",
"terminal.ansiBrightRed": "#cb4b16",
"terminal.ansiBrightGreen": "#859900",
"terminal.ansiBrightYellow": "#657b83",
"terminal.ansiBrightBlue": "#839496",
"terminal.ansiBrightMagenta": "#6c71c4",
"terminal.ansiBrightCyan": "#93a1a1",
"terminal.ansiBrightWhite": "#839496",
"editorBracketHighlight.foreground1": "#268bd2",
"editorBracketHighlight.foreground2": "#b58900",
"editorBracketHighlight.foreground3": "#d33682"
},
"tokenColors": [
{
"settings": {
"foreground": "#bbbbbbff",
"background": "#002b36ff"
}
},
{
"scope": ["meta.embedded", "source.groovy.embedded"],
"settings": {
"background": "#002B36",
"foreground": "#93A1A1"
}
},
{
"name": "Comment",
"scope": "comment",
"settings": {
"fontStyle": "italic",
"foreground": "#657B83"
}
},
{
"name": "String",
"scope": "string",
"settings": {
"foreground": "#2AA198"
}
},
{
"name": "Regexp",
"scope": "string.regexp",
"settings": {
"foreground": "#D30102"
}
},
{
"name": "Number",
"scope": "constant.numeric",
"settings": {
"foreground": "#D33682"
}
},
{
"name": "Variable",
"scope": ["variable.language", "variable.other"],
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Keyword",
"scope": "keyword",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Storage",
"scope": "storage",
"settings": {
"fontStyle": "bold",
"foreground": "#93A1A1"
}
},
{
"name": "Class name",
"scope": ["entity.name.class", "entity.name.type"],
"settings": {
"fontStyle": "",
"foreground": "#CB4B16"
}
},
{
"name": "Function name",
"scope": "entity.name.function",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Variable start",
"scope": "punctuation.definition.variable",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Embedded code markers",
"scope": [
"punctuation.section.embedded.begin",
"punctuation.section.embedded.end"
],
"settings": {
"foreground": "#D30102"
}
},
{
"name": "Built-in constant",
"scope": ["constant.language", "meta.preprocessor"],
"settings": {
"foreground": "#B58900"
}
},
{
"name": "Support.construct",
"scope": ["support.function.construct", "keyword.other.new"],
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "User-defined constant",
"scope": ["constant.character", "constant.other"],
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "Inherited class",
"scope": "entity.other.inherited-class",
"settings": {
"foreground": "#6C71C4"
}
},
{
"name": "Function argument",
"scope": "variable.parameter",
"settings": {}
},
{
"name": "Tag name",
"scope": "entity.name.tag",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Tag start/end",
"scope": "punctuation.definition.tag",
"settings": {
"foreground": "#657B83"
}
},
{
"name": "Tag attribute",
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#93A1A1"
}
},
{
"name": "Library function",
"scope": "support.function",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Continuation",
"scope": "punctuation.separator.continuation",
"settings": {
"foreground": "#D30102"
}
},
{
"name": "Library constant",
"scope": "support.constant",
"settings": {}
},
{
"name": "Library class/type",
"scope": ["support.type", "support.class"],
"settings": {
"foreground": "#859900"
}
},
{
"name": "Library Exception",
"scope": "support.type.exception",
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "Library variable",
"scope": "support.other.variable",
"settings": {}
},
{
"name": "Invalid",
"scope": "invalid",
"settings": {}
},
{
"name": "diff: header",
"scope": ["meta.diff", "meta.diff.header"],
"settings": {
"background": "#b58900",
"fontStyle": "italic",
"foreground": "#E0EDDD"
}
},
{
"name": "diff: deleted",
"scope": "markup.deleted",
"settings": {
"background": "#eee8d5",
"fontStyle": "",
"foreground": "#dc322f"
}
},
{
"name": "diff: changed",
"scope": "markup.changed",
"settings": {
"background": "#eee8d5",
"fontStyle": "",
"foreground": "#cb4b16"
}
},
{
"name": "diff: inserted",
"scope": "markup.inserted",
"settings": {
"background": "#eee8d5",
"foreground": "#219186"
}
},
{
"name": "Markup Quote",
"scope": "markup.quote",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Markup Lists",
"scope": "markup.list",
"settings": {
"foreground": "#B58900"
}
},
{
"name": "Markup Styling",
"scope": ["markup.bold", "markup.italic"],
"settings": {
"foreground": "#D33682"
}
},
{
"name": "Markup Inline",
"scope": "markup.inline.raw",
"settings": {
"fontStyle": "",
"foreground": "#2AA198"
}
},
{
"name": "Markup Headings",
"scope": "markup.heading",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Markup Setext Header",
"scope": "markup.heading.setext",
"settings": {
"fontStyle": "",
"foreground": "#268BD2"
}
},
{
"scope": "token.info-token",
"settings": {
"foreground": "#6796e6"
}
},
{
"scope": "token.warn-token",
"settings": {
"foreground": "#cd9731"
}
},
{
"scope": "token.error-token",
"settings": {
"foreground": "#f44747"
}
},
{
"scope": "token.debug-token",
"settings": {
"foreground": "#b267e6"
}
},
{
"scope": "variable.object.property",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "variable.parameter",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "support.type",
"settings": {
"fontStyle": ""
}
},
{
"scope": "storage.type.function",
"settings": {
"fontStyle": ""
}
},
{
"scope": "entity.other.inherited-class",
"settings": {
"foreground": "#b58900"
}
},
{
"scope": "storage.modifier",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "keyword.control.import",
"settings": {
"foreground": "#D33682"
}
},
{
"scope": "storage.modifier.async",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "meta.import",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "source.ts",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "meta.function-call",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "entity.name.type",
"settings": {
"foreground": "#b58900"
}
},
{
"scope": "entity.name.function",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "variable.other",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "storage.modifier.tsx",
"settings": {
"foreground": "#859900"
}
},
{
"scope": "entity.name.type.class.python",
"settings": {
"foreground": "#268BD2"
}
},
{
"scope": "support.type.python",
"settings": {
"foreground": "#268BD2"
}
},
{
"scope": "source.python",
"settings": {
"foreground": "#839496"
}
},
{
"scope": "keyword.control.import",
"settings": {
"foreground": "#cb4b16"
}
},
{
"scope": "keyword.control.from",
"settings": {
"foreground": "#cb4b16"
}
},
{
"scope": "constant.language.python",
"settings": {
"foreground": "#268BD2"
}
},
{
"scope": "entity.name.function.python",
"settings": {
"foreground": "#268BD2"
}
},
{
"scope": "punctuation.separator.dictionary.key-value.json, punctuation.separator.array.json, punctuation.separator.dictionary.pair.json",
"settings": {
"foreground": "#657B83"
}
},
{
"scope": "storage.type.ts",
"settings": {
"foreground": "#268BD2"
}
},
{
"scope": "support.type.primitive",
"settings": {
"foreground": "#b58900"
}
},
{
"scope": "punctuation.definition.dictionary.begin.json, punctuation.definition.dictionary.end.json, punctuation.definition.array.begin.json, punctuation.definition.array.end.json",
"settings": {
"foreground": "#DC3272"
}
}
]
}

View File

@@ -0,0 +1,16 @@
{
"name": "Solarized",
"author": "Ethan Schoonover (altercation)",
"themes": [
{
"name": "Solarized Dark",
"file_name": "dark.json",
"appearance": "dark"
},
{
"name": "Solarized Light",
"file_name": "light.json",
"appearance": "light"
}
]
}

View File

@@ -0,0 +1,591 @@
{
"type": "light",
"colors": {
"focusBorder": "#d3af86",
"selection.background": "#ccc4b0",
"input.background": "#ddd6c1",
"input.foreground": "#586e75",
"inputOption.activeBorder": "#d3af86",
"input.placeholderForeground": "#586e75aa",
"dropdown.background": "#eee8d5",
"dropdown.border": "#d3af86",
"list.focusBackground": "#dfca8866",
"list.activeSelectionBackground": "#dfca88",
"list.activeSelectionForeground": "#6c6c6c",
"list.inactiveSelectionBackground": "#d1cbb8",
"list.hoverBackground": "#dfca8844",
"list.highlightForeground": "#b58900",
"pickerGroup.foreground": "#2aa19899",
"pickerGroup.border": "#2aa19899",
"button.background": "#ac9d57",
"badge.background": "#b58900aa",
"progressBar.background": "#b58900",
"editor.background": "#fdf6e3",
"editorWidget.background": "#eee8d5",
"editor.selectionBackground": "#eee8d5",
"editorHoverWidget.background": "#ccc4b0",
"editor.lineHighlightBackground": "#eee8d5",
"editorCursor.foreground": "#657b83",
"editorWhitespace.foreground": "#586e7580",
"editorLineNumber.foreground": "#9ca8a6",
"editorLineNumber.activeForeground": "#6f7776",
"editorGutter.background": "#eee8d5",
"peekViewTitle.background": "#eee8d5",
"peekView.border": "#b58900",
"peekViewResult.background": "#eee8d5",
"peekViewEditor.background": "#fffbf2",
"peekViewEditor.matchHighlightBackground": "#7744aa40",
"tab.activeBackground": "#fdf6e3",
"tab.inactiveBackground": "#d3cbb7",
"tab.border": "#ddd6c1",
"tab.inactiveForeground": "#586e75",
"editorGroup.background": "#fffbf2",
"editorGroupHeader.tabsBackground": "#d9d2c2",
"editorGroup.border": "#ddd6c1",
"editorGroup.dropBackground": "#ddd6c1aa",
"panel.border": "#ddd6c1",
"statusBar.foreground": "#586e75",
"statusBar.background": "#eee8d5",
"statusBar.noFolderBackground": "#eee8d5",
"statusBarItem.prominentBackground": "#ddd6c1",
"statusBarItem.prominentHoverBackground": "#ddd6c199",
"activityBar.background": "#ddd6c1",
"activityBar.foreground": "#584c27",
"activityBar.dropBackground": "#eee8d5",
"activityBarBadge.background": "#b58900",
"sideBar.background": "#eee8d5",
"sideBarTitle.foreground": "#586e75",
"titleBar.activeBackground": "#eee8d5",
"terminal.foreground": "#657b83",
"statusBar.debuggingBackground": "#eee8d5",
"debugExceptionWidget.border": "#ab395b",
"debugExceptionWidget.background": "#ddd6c1",
"debugToolBar.background": "#ddd6c1",
"extensionButton.prominentBackground": "#b58900",
"extensionButton.prominentHoverBackground": "#584c27aa",
"terminal.ansiBlack": "#657b83",
"terminal.ansiRed": "#dc322f",
"terminal.ansiGreen": "#859900",
"terminal.ansiYellow": "#b58900",
"terminal.ansiBlue": "#268bd2",
"terminal.ansiMagenta": "#d33682",
"terminal.ansiCyan": "#2aa198",
"terminal.ansiWhite": "#eee8d5",
"terminal.ansiBrightBlack": "#657b83",
"terminal.ansiBrightRed": "#cb4b16",
"terminal.ansiBrightGreen": "#859900",
"terminal.ansiBrightYellow": "#657b83",
"terminal.ansiBrightBlue": "#839496",
"terminal.ansiBrightMagenta": "#6c71c4",
"terminal.ansiBrightCyan": "#93a1a1",
"terminal.ansiBrightWhite": "#eee8d5",
"editorBracketHighlight.foreground1": "#268bd2",
"editorBracketHighlight.foreground2": "#b58900",
"editorBracketHighlight.foreground3": "#d33682"
},
"tokenColors": [
{
"settings": {
"foreground": "#333333ff",
"background": "#fdf6e3ff"
}
},
{
"scope": [
"meta.embedded",
"source.groovy.embedded"
],
"settings": {
"background": "#FDF6E3",
"foreground": "#657B83"
}
},
{
"name": "Comment",
"scope": "comment",
"settings": {
"fontStyle": "italic",
"foreground": "#93A1A1"
}
},
{
"name": "String",
"scope": "string",
"settings": {
"foreground": "#2AA198"
}
},
{
"name": "Regexp",
"scope": "string.regexp",
"settings": {
"foreground": "#D30102"
}
},
{
"name": "Number",
"scope": "constant.numeric",
"settings": {
"foreground": "#D33682"
}
},
{
"name": "Variable",
"scope": [
"variable.language",
"variable.other"
],
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Keyword",
"scope": "keyword",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Storage",
"scope": "storage",
"settings": {
"fontStyle": "bold",
"foreground": "#073642"
}
},
{
"name": "Class name",
"scope": [
"entity.name.class",
"entity.name.type"
],
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Function name",
"scope": "entity.name.function",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Variable start",
"scope": "punctuation.definition.variable",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Embedded code markers",
"scope": [
"punctuation.section.embedded.begin",
"punctuation.section.embedded.end"
],
"settings": {
"foreground": "#D30102"
}
},
{
"name": "Built-in constant",
"scope": [
"constant.language",
"meta.preprocessor"
],
"settings": {
"foreground": "#B58900"
}
},
{
"name": "Support.construct",
"scope": [
"support.function.construct",
"keyword.other.new"
],
"settings": {
"foreground": "#D30102"
}
},
{
"name": "User-defined constant",
"scope": [
"constant.character",
"constant.other"
],
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "Inherited class",
"scope": "entity.other.inherited-class",
"settings": {}
},
{
"name": "Function argument",
"scope": "variable.parameter",
"settings": {}
},
{
"name": "Tag name",
"scope": "entity.name.tag",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Tag start/end",
"scope": [
"punctuation.definition.tag.begin",
"punctuation.definition.tag.end"
],
"settings": {
"foreground": "#93A1A1"
}
},
{
"name": "Tag attribute",
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#93A1A1"
}
},
{
"name": "Library function",
"scope": "support.function",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Continuation",
"scope": "punctuation.separator.continuation",
"settings": {
"foreground": "#D30102"
}
},
{
"name": "Library constant",
"scope": "support.constant",
"settings": {}
},
{
"name": "Library class/type",
"scope": [
"support.type",
"support.class"
],
"settings": {
"foreground": "#859900"
}
},
{
"name": "Library Exception",
"scope": "support.type.exception",
"settings": {
"foreground": "#CB4B16"
}
},
{
"name": "Library variable",
"scope": "support.other.variable",
"settings": {}
},
{
"name": "Invalid",
"scope": "invalid",
"settings": {}
},
{
"name": "diff: header",
"scope": [
"meta.diff",
"meta.diff.header"
],
"settings": {
"background": "#b58900",
"fontStyle": "italic",
"foreground": "#E0EDDD"
}
},
{
"name": "diff: deleted",
"scope": "markup.deleted",
"settings": {
"background": "#eee8d5",
"fontStyle": "",
"foreground": "#dc322f"
}
},
{
"name": "diff: changed",
"scope": "markup.changed",
"settings": {
"background": "#eee8d5",
"fontStyle": "",
"foreground": "#cb4b16"
}
},
{
"name": "diff: inserted",
"scope": "markup.inserted",
"settings": {
"background": "#eee8d5",
"foreground": "#219186"
}
},
{
"name": "Markup Quote",
"scope": "markup.quote",
"settings": {
"foreground": "#859900"
}
},
{
"name": "Markup Lists",
"scope": "markup.list",
"settings": {
"foreground": "#B58900"
}
},
{
"name": "Markup Styling",
"scope": [
"markup.bold",
"markup.italic"
],
"settings": {
"foreground": "#D33682"
}
},
{
"name": "Markup Inline",
"scope": "markup.inline.raw",
"settings": {
"fontStyle": "",
"foreground": "#2AA198"
}
},
{
"name": "Markup Headings",
"scope": "markup.heading",
"settings": {
"foreground": "#268BD2"
}
},
{
"name": "Markup Setext Header",
"scope": "markup.heading.setext",
"settings": {
"fontStyle": "",
"foreground": "#268BD2"
}
},
{
"scope": "token.info-token",
"settings": {
"foreground": "#316bcd"
}
},
{
"scope": "token.warn-token",
"settings": {
"foreground": "#cd9731"
}
},
{
"scope": "token.error-token",
"settings": {
"foreground": "#cd3131"
}
},
{
"scope": "token.debug-token",
"settings": {
"foreground": "#800080"
}
},
{
"scope": "storage.modifier",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "keyword.control.import",
"settings": {
"foreground": "#D33682"
}
},
{
"scope": "storage.modifier.async",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "meta.import",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "source.ts",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "meta.function-call",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "entity.name.type",
"settings": {
"foreground": "#b58900"
}
},
{
"scope": "entity.name.function",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "variable.other",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "storage.modifier.tsx",
"settings": {
"foreground": "#859900"
}
},
{
"scope": "storage.modifier",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "keyword.control.import",
"settings": {
"foreground": "#D33682"
}
},
{
"scope": "storage.modifier.async",
"settings": {
"foreground": "#859900ff",
"fontStyle": ""
}
},
{
"scope": "meta.import",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "source.ts",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "meta.function-call",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "entity.name.type",
"settings": {
"foreground": "#b58900"
}
},
{
"scope": "entity.name.function",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "variable.other",
"settings": {
"foreground": "#657b83"
}
},
{
"scope": "storage.modifier.tsx",
"settings": {
"foreground": "#859900"
}
},
{
"scope": "punctuation.separator.dictionary.key-value.json, punctuation.separator.array.json, punctuation.separator.dictionary.pair.json",
"settings": {
"foreground": "#657B83"
}
},
{
"scope": "storage.type",
"settings": {
"foreground": "#268BD2"
}
},
{
"scope": "punctuation.definition.dictionary.begin.json, punctuation.definition.dictionary.end.json, punctuation.definition.array.begin.json, punctuation.definition.array.end.json",
"settings": {
"foreground": "#DC3272"
}
},
{
"scope": "support.type.primitive",
"settings": {
"foreground": "#b58900"
}
},
{
"scope": "keyword.control.import",
"settings": {
"foreground": "#cb4b16"
}
},
{
"scope": "keyword.control.from",
"settings": {
"foreground": "#cb4b16"
}
},
{
"scope": "source",
"settings": {
"foreground": "#657b83"
}
}
]
}

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Robb Owen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,11 @@
{
"name": "Synthwave 84",
"author": "Robb Owen (robb0wen)",
"themes": [
{
"name": "Synthwave 84",
"file_name": "synthwave.json",
"appearance": "dark"
}
]
}

View File

@@ -0,0 +1,841 @@
{
"name": "SynthWave 84",
"type": "dark",
"semanticHighlighting": true,
"colors": {
"focusBorder": "#1f212b",
"foreground": "#ffffff",
"widget.shadow": "#2a2139",
"selection.background": "#ffffff20",
"errorForeground": "#fe4450",
"textLink.activeForeground": "#ff7edb",
"textLink.foreground": "#f97e72",
"button.background": "#614D85",
"dropdown.background": "#232530",
"dropdown.listBackground": "#2a2139",
"input.background": "#2a2139",
"inputOption.activeBorder": "#ff7edb99",
"inputValidation.errorBackground": "#fe445080",
"inputValidation.errorBorder": "#fe445000",
"scrollbar.shadow": "#2a2139",
"scrollbarSlider.activeBackground": "#9d8bca20",
"scrollbarSlider.background": "#9d8bca30",
"scrollbarSlider.hoverBackground": "#9d8bca50",
"badge.foreground": "#ffffff",
"badge.background": "#2a2139",
"progressBar.background": "#f97e72",
"list.activeSelectionBackground": "#ffffff20",
"list.activeSelectionForeground": "#ffffff",
"list.dropBackground": "#34294f66",
"list.focusBackground": "#ffffff20",
"list.focusForeground": "#ffffff",
"list.highlightForeground": "#f97e72",
"list.hoverBackground": "#37294d99",
"list.hoverForeground": "#ffffff",
"list.inactiveSelectionBackground": "#ffffff20",
"list.inactiveSelectionForeground": "#ffffff",
"list.inactiveFocusBackground": "#2a213999",
"list.errorForeground": "#fe4450E6",
"list.warningForeground": "#72f1b8bb",
"activityBar.background": "#171520",
"activityBar.dropBackground": "#34294f66",
"activityBar.foreground": "#ffffffCC",
"activityBarBadge.background": "#f97e72",
"activityBarBadge.foreground": "#2a2139",
"sideBar.background": "#241b2f",
"sideBar.foreground": "#ffffff99",
"sideBar.dropBackground": "#34294f4c",
"sideBarSectionHeader.background": "#241b2f",
"sideBarSectionHeader.foreground": "#ffffffca",
"menu.background": "#463465",
"editorGroup.border": "#495495",
"editorGroup.dropBackground": "#4954954a",
"editorGroupHeader.tabsBackground": "#241b2f",
"tab.border": "#241b2f00",
"tab.activeBorder": "#880088",
"tab.inactiveBackground": "#262335",
"editor.background": "#262335",
"editorLineNumber.foreground": "#ffffff73",
"editorLineNumber.activeForeground": "#ffffffcc",
"editorCursor.background": "#241b2f",
"editorCursor.foreground": "#f97e72",
"editor.selectionBackground": "#ffffff20",
"editor.selectionHighlightBackground": "#ffffff20",
"editor.wordHighlightBackground": "#34294f88",
"editor.wordHighlightStrongBackground": "#34294f88",
"editor.findMatchBackground": "#D18616bb",
"editor.findMatchHighlightBackground": "#D1861655",
"editor.findRangeHighlightBackground": "#34294f1a",
"editor.hoverHighlightBackground": "#463564",
"editor.lineHighlightBorder": "#7059AB66",
"editor.rangeHighlightBackground": "#49549539",
"editorIndentGuide.background": "#444251",
"editorIndentGuide.activeBackground": "#A148AB80",
"editorRuler.foreground": "#A148AB80",
"editorCodeLens.foreground": "#ffffff7c",
"editorBracketMatch.background": "#34294f66",
"editorBracketMatch.border": "#495495",
"editorOverviewRuler.border": "#34294fb3",
"editorOverviewRuler.findMatchForeground": "#D1861699",
"editorOverviewRuler.modifiedForeground": "#b893ce99",
"editorOverviewRuler.addedForeground": "#09f7a099",
"editorOverviewRuler.deletedForeground": "#fe445099",
"editorOverviewRuler.errorForeground": "#fe4450dd",
"editorOverviewRuler.warningForeground": "#72f1b8cc",
"editorError.foreground": "#fe4450",
"editorWarning.foreground": "#72f1b8cc",
"editorGutter.modifiedBackground": "#b893ce8f",
"editorGutter.addedBackground": "#206d4bd6",
"editorGutter.deletedBackground": "#fa2e46a4",
"diffEditor.insertedTextBackground": "#0beb9935",
"diffEditor.removedTextBackground": "#fe445035",
"editorWidget.background": "#171520DC",
"editorWidget.border": "#ffffff22",
"editorWidget.resizeBorder": "#ffffff44",
"editorSuggestWidget.highlightForeground": "#f97e72",
"editorSuggestWidget.selectedBackground": "#ffffff36",
"peekView.border": "#495495",
"peekViewEditor.background": "#232530",
"peekViewEditor.matchHighlightBackground": "#D18616bb",
"peekViewResult.background": "#232530",
"peekViewResult.matchHighlightBackground": "#D1861655",
"peekViewResult.selectionBackground": "#2a213980",
"peekViewTitle.background": "#232530",
"panelTitle.activeBorder": "#f97e72",
"statusBar.background": "#241b2f",
"statusBar.foreground": "#ffffff80",
"statusBar.debuggingBackground": "#f97e72",
"statusBar.debuggingForeground": "#08080f",
"statusBar.noFolderBackground": "#241b2f",
"statusBarItem.prominentBackground": "#2a2139",
"statusBarItem.prominentHoverBackground": "#34294f",
"titleBar.activeBackground": "#241b2f",
"titleBar.inactiveBackground": "#241b2f",
"extensionButton.prominentBackground": "#f97e72",
"extensionButton.prominentHoverBackground": "#ff7edb",
"pickerGroup.foreground": "#f97e72ea",
"terminal.foreground": "#ffffff",
"terminal.ansiBlue": "#03edf9",
"terminal.ansiBrightBlue": "#03edf9",
"terminal.ansiBrightCyan": "#03edf9",
"terminal.ansiBrightGreen": "#72f1b8",
"terminal.ansiBrightMagenta": "#ff7edb",
"terminal.ansiBrightRed": "#fe4450",
"terminal.ansiBrightYellow": "#fede5d",
"terminal.ansiCyan": "#03edf9",
"terminal.ansiGreen": "#72f1b8",
"terminal.ansiMagenta": "#ff7edb",
"terminal.ansiRed": "#fe4450",
"terminal.ansiYellow": "#f3e70f",
"terminal.selectionBackground": "#ffffff20",
"terminalCursor.background": "#ffffff",
"terminalCursor.foreground": "#03edf9",
"debugToolBar.background": "#463465",
"walkThrough.embeddedEditorBackground": "#232530",
"gitDecoration.modifiedResourceForeground": "#b893ceee",
"gitDecoration.deletedResourceForeground": "#fe4450",
"gitDecoration.addedResourceForeground": "#72f1b8cc",
"gitDecoration.untrackedResourceForeground": "#72f1b8",
"gitDecoration.ignoredResourceForeground": "#ffffff59",
"minimapGutter.addedBackground": "#09f7a099",
"minimapGutter.modifiedBackground": "#b893ce",
"minimapGutter.deletedBackground": "#fe4450",
"breadcrumbPicker.background": "#232530"
},
"tokenColors": [
{
"name": "Comment",
"scope": [
"comment",
"string.quoted.docstring.multi.python",
"string.quoted.docstring.multi.python punctuation.definition.string.begin.python",
"string.quoted.docstring.multi.python punctuation.definition.string.end.python"
],
"settings": {
"foreground": "#848bbd",
"fontStyle": "italic"
}
},
{
"name": "String",
"scope": [
"string.quoted",
"string.template",
"punctuation.definition.string"
],
"settings": {
"foreground": "#ff8b39"
}
},
{
"name": "Punctuation within templates",
"scope": "string.template meta.embedded.line",
"settings": {
"foreground": "#b6b1b1"
}
},
{
"name": "Variable",
"scope": ["variable", "entity.name.variable"],
"settings": {
"foreground": "#ff7edb"
}
},
{
"name": "Language variable",
"scope": "variable.language",
"settings": {
"foreground": "#fe4450",
"fontStyle": "bold"
}
},
{
"name": "Parameter",
"scope": "variable.parameter",
"settings": {
"fontStyle": "italic"
}
},
{
"name": "Storage (declaration or modifier keyword)",
"scope": ["storage.type", "storage.modifier"],
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Constant",
"scope": "constant",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Regex",
"scope": "string.regexp",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Number",
"scope": "constant.numeric",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Language constant (boolean, null)",
"scope": "constant.language",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Character escape",
"scope": "constant.character.escape",
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Entity",
"scope": "entity.name",
"settings": {
"foreground": "#fe4450"
}
},
{
"name": "HTML or XML tag",
"scope": "entity.name.tag",
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "HTML or XML tag brackets",
"scope": ["punctuation.definition.tag"],
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Tag attribute",
"scope": "entity.other.attribute-name",
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Tag attribute HTML",
"scope": "entity.other.attribute-name.html",
"settings": {
"foreground": "#fede5d",
"fontStyle": "italic"
}
},
{
"name": "Class",
"scope": ["entity.name.type", "meta.attribute.class.html"],
"settings": {
"foreground": "#fe4450"
}
},
{
"name": "Inherited class",
"scope": "entity.other.inherited-class",
"settings": {
"foreground": "#D50"
}
},
{
"name": "Function",
"scope": ["entity.name.function", "variable.function"],
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "JS Export",
"scope": ["keyword.control.export.js", "keyword.control.import.js"],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "JS Numerics",
"scope": ["constant.numeric.decimal.js"],
"settings": {
"foreground": "#2EE2FA"
}
},
{
"name": "Keyword",
"scope": "keyword",
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Control keyword",
"scope": "keyword.control",
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Operator",
"scope": "keyword.operator",
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Special operator",
"scope": [
"keyword.operator.new",
"keyword.operator.expression",
"keyword.operator.logical"
],
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Unit",
"scope": "keyword.other.unit",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Support",
"scope": "support",
"settings": {
"foreground": "#fe4450"
}
},
{
"name": "Support function",
"scope": "support.function",
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Support variable",
"scope": "support.variable",
"settings": {
"foreground": "#ff7edb"
}
},
{
"name": "Object literal key / property",
"scope": ["meta.object-literal.key", "support.type.property-name"],
"settings": {
"foreground": "#ff7edb"
}
},
{
"name": "Key-value separator",
"scope": "punctuation.separator.key-value",
"settings": {
"foreground": "#b6b1b1"
}
},
{
"name": "Embedded punctuation",
"scope": "punctuation.section.embedded",
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Template expression",
"scope": [
"punctuation.definition.template-expression.begin",
"punctuation.definition.template-expression.end"
],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "CSS property",
"scope": [
"support.type.property-name.css",
"support.type.property-name.json"
],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "JS Switch control",
"scope": "switch-block.expr.js",
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "JS object path",
"scope": "variable.other.constant.property.js, variable.other.property.js",
"settings": {
"foreground": "#2ee2fa"
}
},
{
"name": "Color",
"scope": "constant.other.color",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Font names",
"scope": "support.constant.font-name",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "CSS #id",
"scope": "entity.other.attribute-name.id",
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Pseudo CSS",
"scope": [
"entity.other.attribute-name.pseudo-element",
"entity.other.attribute-name.pseudo-class"
],
"settings": {
"foreground": "#D50"
}
},
{
"name": "CSS support functions (rgb)",
"scope": "support.function.misc.css",
"settings": {
"foreground": "#fe4450"
}
},
{
"name": "Markup heading",
"scope": ["markup.heading", "entity.name.section"],
"settings": {
"foreground": "#ff7edb"
}
},
{
"name": "Markup text",
"scope": ["text.html", "keyword.operator.assignment"],
"settings": {
"foreground": "#ffffffee"
}
},
{
"name": "Markup quote",
"scope": "markup.quote",
"settings": {
"foreground": "#b6b1b1cc",
"fontStyle": "italic"
}
},
{
"name": "Markup list",
"scope": "beginning.punctuation.definition.list",
"settings": {
"foreground": "#ff7edb"
}
},
{
"name": "Markup link",
"scope": "markup.underline.link",
"settings": {
"foreground": "#D50"
}
},
{
"name": "Markup link description",
"scope": "string.other.link.description",
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Python function call",
"scope": "meta.function-call.generic.python",
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Python variable params",
"scope": "variable.parameter.function-call.python",
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "C# storage type",
"scope": "storage.type.cs",
"settings": {
"foreground": "#fe4450"
}
},
{
"name": "C# local variable",
"scope": "entity.name.variable.local.cs",
"settings": {
"foreground": "#ff7edb"
}
},
{
"name": "C# properties and fields",
"scope": [
"entity.name.variable.field.cs",
"entity.name.variable.property.cs"
],
"settings": {
"foreground": "#ff7edb"
}
},
{
"name": "C placeholder",
"scope": "constant.other.placeholder.c",
"settings": {
"foreground": "#72f1b8",
"fontStyle": "italic"
}
},
{
"name": "C preprocessors",
"scope": [
"keyword.control.directive.include.c",
"keyword.control.directive.define.c"
],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "C storage modifier",
"scope": "storage.modifier.c",
"settings": {
"foreground": "#fe4450"
}
},
{
"name": "C++ operators",
"scope": "source.cpp keyword.operator",
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "C++ placeholder",
"scope": "constant.other.placeholder.cpp",
"settings": {
"foreground": "#72f1b8",
"fontStyle": "italic"
}
},
{
"name": "C++ include",
"scope": [
"keyword.control.directive.include.cpp",
"keyword.control.directive.define.cpp"
],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "C++ constant modifier",
"scope": "storage.modifier.specifier.const.cpp",
"settings": {
"foreground": "#fe4450"
}
},
{
"name": "Elixir Classes",
"scope": [
"source.elixir support.type.elixir",
"source.elixir meta.module.elixir entity.name.class.elixir"
],
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Elixir Functions",
"scope": "source.elixir entity.name.function",
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "Elixir Constants",
"scope": [
"source.elixir constant.other.symbol.elixir",
"source.elixir constant.other.keywords.elixir"
],
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Elixir String Punctuation",
"scope": "source.elixir punctuation.definition.string",
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "Elixir",
"scope": [
"source.elixir variable.other.readwrite.module.elixir",
"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir"
],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "Elixir Binary Punctuation",
"scope": "source.elixir .punctuation.binary.elixir",
"settings": {
"foreground": "#ff7edb",
"fontStyle": "italic"
}
},
{
"name": "Clojure Globals",
"scope": ["entity.global.clojure"],
"settings": {
"foreground": "#36f9f6",
"fontStyle": "bold"
}
},
{
"name": "Clojure Storage",
"scope": ["storage.control.clojure"],
"settings": {
"foreground": "#36f9f6",
"fontStyle": "italic"
}
},
{
"name": "Clojure Metadata",
"scope": ["meta.metadata.simple.clojure", "meta.metadata.map.clojure"],
"settings": {
"foreground": "#fe4450",
"fontStyle": "italic"
}
},
{
"name": "Clojure Macros, Quoted",
"scope": ["meta.quoted-expression.clojure"],
"settings": {
"fontStyle": "italic"
}
},
{
"name": "Clojure Symbols",
"scope": ["meta.symbol.clojure"],
"settings": {
"foreground": "#ff7edbff"
}
},
{
"name": "Go basic",
"scope": "source.go",
"settings": {
"foreground": "#ff7edbff"
}
},
{
"name": "Go Function Calls",
"scope": "source.go meta.function-call.go",
"settings": {
"foreground": "#36f9f6"
}
},
{
"name": "Go Keywords",
"scope": [
"source.go keyword.package.go",
"source.go keyword.import.go",
"source.go keyword.function.go",
"source.go keyword.type.go",
"source.go keyword.const.go",
"source.go keyword.var.go",
"source.go keyword.map.go",
"source.go keyword.channel.go",
"source.go keyword.control.go"
],
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Go interfaces",
"scope": [
"source.go storage.type",
"source.go keyword.struct.go",
"source.go keyword.interface.go"
],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "Go Constants e.g. nil, string format (%s, %d, etc.)",
"scope": [
"source.go constant.language.go",
"source.go constant.other.placeholder.go",
"source.go variable"
],
"settings": {
"foreground": "#2EE2FA"
}
},
{
"name": "Markdown links and image paths",
"scope": [
"markup.underline.link.markdown",
"markup.inline.raw.string.markdown"
],
"settings": {
"foreground": "#72f1b8",
"fontStyle": "italic"
}
},
{
"name": "Markdown links and image paths",
"scope": ["string.other.link.title.markdown"],
"settings": {
"foreground": "#fede5d"
}
},
{
"name": "Markdown headings",
"scope": ["markup.heading.markdown", "entity.name.section.markdown"],
"settings": {
"foreground": "#ff7edb",
"fontStyle": "bold"
}
},
{
"name": "Markdown italic",
"scope": ["markup.italic.markdown"],
"settings": {
"foreground": "#2EE2FA",
"fontStyle": "italic"
}
},
{
"name": "Markdown bold",
"scope": ["markup.bold.markdown"],
"settings": {
"foreground": "#2EE2FA",
"fontStyle": "bold"
}
},
{
"name": "Markdown quotes",
"scope": [
"punctuation.definition.quote.begin.markdown",
"markup.quote.markdown"
],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "Basic source colours",
"scope": ["source.dart", "source.python", "source.scala"],
"settings": {
"foreground": "#ff7edbff"
}
},
{
"name": "Dart strings",
"scope": ["string.interpolated.single.dart"],
"settings": {
"foreground": "#f97e72"
}
},
{
"name": "Dart variable params",
"scope": ["variable.parameter.dart"],
"settings": {
"foreground": "#72f1b8"
}
},
{
"name": "Dart numerics",
"scope": ["constant.numeric.dart"],
"settings": {
"foreground": "#2EE2FA"
}
},
{
"name": "Scala variable params",
"scope": ["variable.parameter.scala"],
"settings": {
"foreground": "#2EE2FA"
}
},
{
"name": "Scala",
"scope": ["meta.template.expression.scala"],
"settings": {
"foreground": "#72f1b8"
}
}
]
}

View File

@@ -8,9 +8,13 @@ publish = false
path = "src/ai.rs"
doctest = false
[features]
test-support = []
[dependencies]
gpui = { path = "../gpui" }
util = { path = "../util" }
language = { path = "../language" }
async-trait.workspace = true
anyhow.workspace = true
futures.workspace = true
@@ -25,7 +29,7 @@ postage.workspace = true
rand.workspace = true
log.workspace = true
parse_duration = "2.1.1"
tiktoken-rs = "0.5.0"
tiktoken-rs.workspace = true
matrixmultiply = "0.3.7"
rusqlite = { version = "0.29.0", features = ["blob", "array", "modern_sqlite"] }
bincode = "1.3.3"

View File

@@ -1,2 +1,8 @@
pub mod auth;
pub mod completion;
pub mod embedding;
pub mod models;
pub mod prompts;
pub mod providers;
#[cfg(any(test, feature = "test-support"))]
pub mod test;

15
crates/ai/src/auth.rs Normal file
View File

@@ -0,0 +1,15 @@
use gpui::AppContext;
#[derive(Clone, Debug)]
pub enum ProviderCredential {
Credentials { api_key: String },
NoCredentials,
NotNeeded,
}
pub trait CredentialProvider: Send + Sync {
fn has_credentials(&self) -> bool;
fn retrieve_credentials(&self, cx: &AppContext) -> ProviderCredential;
fn save_credentials(&self, cx: &AppContext, credential: ProviderCredential);
fn delete_credentials(&self, cx: &AppContext);
}

View File

@@ -1,212 +1,23 @@
use anyhow::{anyhow, Result};
use futures::{
future::BoxFuture, io::BufReader, stream::BoxStream, AsyncBufReadExt, AsyncReadExt, FutureExt,
Stream, StreamExt,
};
use gpui::executor::Background;
use isahc::{http::StatusCode, Request, RequestExt};
use serde::{Deserialize, Serialize};
use std::{
fmt::{self, Display},
io,
sync::Arc,
};
use anyhow::Result;
use futures::{future::BoxFuture, stream::BoxStream};
pub const OPENAI_API_URL: &'static str = "https://api.openai.com/v1";
use crate::{auth::CredentialProvider, models::LanguageModel};
#[derive(Clone, Copy, Serialize, Deserialize, Debug, Eq, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum Role {
User,
Assistant,
System,
pub trait CompletionRequest: Send + Sync {
fn data(&self) -> serde_json::Result<String>;
}
impl Role {
pub fn cycle(&mut self) {
*self = match self {
Role::User => Role::Assistant,
Role::Assistant => Role::System,
Role::System => Role::User,
}
}
}
impl Display for Role {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Role::User => write!(f, "User"),
Role::Assistant => write!(f, "Assistant"),
Role::System => write!(f, "System"),
}
}
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
pub struct RequestMessage {
pub role: Role,
pub content: String,
}
#[derive(Debug, Default, Serialize)]
pub struct OpenAIRequest {
pub model: String,
pub messages: Vec<RequestMessage>,
pub stream: bool,
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
pub struct ResponseMessage {
pub role: Option<Role>,
pub content: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct OpenAIUsage {
pub prompt_tokens: u32,
pub completion_tokens: u32,
pub total_tokens: u32,
}
#[derive(Deserialize, Debug)]
pub struct ChatChoiceDelta {
pub index: u32,
pub delta: ResponseMessage,
pub finish_reason: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct OpenAIResponseStreamEvent {
pub id: Option<String>,
pub object: String,
pub created: u32,
pub model: String,
pub choices: Vec<ChatChoiceDelta>,
pub usage: Option<OpenAIUsage>,
}
pub async fn stream_completion(
api_key: String,
executor: Arc<Background>,
mut request: OpenAIRequest,
) -> Result<impl Stream<Item = Result<OpenAIResponseStreamEvent>>> {
request.stream = true;
let (tx, rx) = futures::channel::mpsc::unbounded::<Result<OpenAIResponseStreamEvent>>();
let json_data = serde_json::to_string(&request)?;
let mut response = Request::post(format!("{OPENAI_API_URL}/chat/completions"))
.header("Content-Type", "application/json")
.header("Authorization", format!("Bearer {}", api_key))
.body(json_data)?
.send_async()
.await?;
let status = response.status();
if status == StatusCode::OK {
executor
.spawn(async move {
let mut lines = BufReader::new(response.body_mut()).lines();
fn parse_line(
line: Result<String, io::Error>,
) -> Result<Option<OpenAIResponseStreamEvent>> {
if let Some(data) = line?.strip_prefix("data: ") {
let event = serde_json::from_str(&data)?;
Ok(Some(event))
} else {
Ok(None)
}
}
while let Some(line) = lines.next().await {
if let Some(event) = parse_line(line).transpose() {
let done = event.as_ref().map_or(false, |event| {
event
.choices
.last()
.map_or(false, |choice| choice.finish_reason.is_some())
});
if tx.unbounded_send(event).is_err() {
break;
}
if done {
break;
}
}
}
anyhow::Ok(())
})
.detach();
Ok(rx)
} else {
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
#[derive(Deserialize)]
struct OpenAIResponse {
error: OpenAIError,
}
#[derive(Deserialize)]
struct OpenAIError {
message: String,
}
match serde_json::from_str::<OpenAIResponse>(&body) {
Ok(response) if !response.error.message.is_empty() => Err(anyhow!(
"Failed to connect to OpenAI API: {}",
response.error.message,
)),
_ => Err(anyhow!(
"Failed to connect to OpenAI API: {} {}",
response.status(),
body,
)),
}
}
}
pub trait CompletionProvider {
pub trait CompletionProvider: CredentialProvider {
fn base_model(&self) -> Box<dyn LanguageModel>;
fn complete(
&self,
prompt: OpenAIRequest,
prompt: Box<dyn CompletionRequest>,
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>>;
fn box_clone(&self) -> Box<dyn CompletionProvider>;
}
pub struct OpenAICompletionProvider {
api_key: String,
executor: Arc<Background>,
}
impl OpenAICompletionProvider {
pub fn new(api_key: String, executor: Arc<Background>) -> Self {
Self { api_key, executor }
}
}
impl CompletionProvider for OpenAICompletionProvider {
fn complete(
&self,
prompt: OpenAIRequest,
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>> {
let request = stream_completion(self.api_key.clone(), self.executor.clone(), prompt);
async move {
let response = request.await?;
let stream = response
.filter_map(|response| async move {
match response {
Ok(mut response) => Some(Ok(response.choices.pop()?.delta.content?)),
Err(error) => Some(Err(error)),
}
})
.boxed();
Ok(stream)
}
.boxed()
impl Clone for Box<dyn CompletionProvider> {
fn clone(&self) -> Box<dyn CompletionProvider> {
self.box_clone()
}
}

View File

@@ -1,30 +1,13 @@
use anyhow::{anyhow, Result};
use std::time::Instant;
use anyhow::Result;
use async_trait::async_trait;
use futures::AsyncReadExt;
use gpui::executor::Background;
use gpui::serde_json;
use isahc::http::StatusCode;
use isahc::prelude::Configurable;
use isahc::{AsyncBody, Response};
use lazy_static::lazy_static;
use ordered_float::OrderedFloat;
use parking_lot::Mutex;
use parse_duration::parse;
use postage::watch;
use rusqlite::types::{FromSql, FromSqlResult, ToSqlOutput, ValueRef};
use rusqlite::ToSql;
use serde::{Deserialize, Serialize};
use std::env;
use std::ops::Add;
use std::sync::Arc;
use std::time::{Duration, Instant};
use tiktoken_rs::{cl100k_base, CoreBPE};
use util::http::{HttpClient, Request};
lazy_static! {
static ref OPENAI_API_KEY: Option<String> = env::var("OPENAI_API_KEY").ok();
static ref OPENAI_BPE_TOKENIZER: CoreBPE = cl100k_base().unwrap();
}
use crate::auth::CredentialProvider;
use crate::models::LanguageModel;
#[derive(Debug, PartialEq, Clone)]
pub struct Embedding(pub Vec<f32>);
@@ -85,277 +68,14 @@ impl Embedding {
}
}
#[derive(Clone)]
pub struct OpenAIEmbeddings {
pub client: Arc<dyn HttpClient>,
pub executor: Arc<Background>,
rate_limit_count_rx: watch::Receiver<Option<Instant>>,
rate_limit_count_tx: Arc<Mutex<watch::Sender<Option<Instant>>>>,
}
#[derive(Serialize)]
struct OpenAIEmbeddingRequest<'a> {
model: &'static str,
input: Vec<&'a str>,
}
#[derive(Deserialize)]
struct OpenAIEmbeddingResponse {
data: Vec<OpenAIEmbedding>,
usage: OpenAIEmbeddingUsage,
}
#[derive(Debug, Deserialize)]
struct OpenAIEmbedding {
embedding: Vec<f32>,
index: usize,
object: String,
}
#[derive(Deserialize)]
struct OpenAIEmbeddingUsage {
prompt_tokens: usize,
total_tokens: usize,
}
#[async_trait]
pub trait EmbeddingProvider: Sync + Send {
fn is_authenticated(&self) -> bool;
pub trait EmbeddingProvider: CredentialProvider {
fn base_model(&self) -> Box<dyn LanguageModel>;
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>>;
fn max_tokens_per_batch(&self) -> usize;
fn truncate(&self, span: &str) -> (String, usize);
fn rate_limit_expiration(&self) -> Option<Instant>;
}
pub struct DummyEmbeddings {}
#[async_trait]
impl EmbeddingProvider for DummyEmbeddings {
fn is_authenticated(&self) -> bool {
true
}
fn rate_limit_expiration(&self) -> Option<Instant> {
None
}
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>> {
// 1024 is the OpenAI Embeddings size for ada models.
// the model we will likely be starting with.
let dummy_vec = Embedding::from(vec![0.32 as f32; 1536]);
return Ok(vec![dummy_vec; spans.len()]);
}
fn max_tokens_per_batch(&self) -> usize {
OPENAI_INPUT_LIMIT
}
fn truncate(&self, span: &str) -> (String, usize) {
let mut tokens = OPENAI_BPE_TOKENIZER.encode_with_special_tokens(span);
let token_count = tokens.len();
let output = if token_count > OPENAI_INPUT_LIMIT {
tokens.truncate(OPENAI_INPUT_LIMIT);
let new_input = OPENAI_BPE_TOKENIZER.decode(tokens.clone());
new_input.ok().unwrap_or_else(|| span.to_string())
} else {
span.to_string()
};
(output, tokens.len())
}
}
const OPENAI_INPUT_LIMIT: usize = 8190;
impl OpenAIEmbeddings {
pub fn new(client: Arc<dyn HttpClient>, executor: Arc<Background>) -> Self {
let (rate_limit_count_tx, rate_limit_count_rx) = watch::channel_with(None);
let rate_limit_count_tx = Arc::new(Mutex::new(rate_limit_count_tx));
OpenAIEmbeddings {
client,
executor,
rate_limit_count_rx,
rate_limit_count_tx,
}
}
fn resolve_rate_limit(&self) {
let reset_time = *self.rate_limit_count_tx.lock().borrow();
if let Some(reset_time) = reset_time {
if Instant::now() >= reset_time {
*self.rate_limit_count_tx.lock().borrow_mut() = None
}
}
log::trace!(
"resolving reset time: {:?}",
*self.rate_limit_count_tx.lock().borrow()
);
}
fn update_reset_time(&self, reset_time: Instant) {
let original_time = *self.rate_limit_count_tx.lock().borrow();
let updated_time = if let Some(original_time) = original_time {
if reset_time < original_time {
Some(reset_time)
} else {
Some(original_time)
}
} else {
Some(reset_time)
};
log::trace!("updating rate limit time: {:?}", updated_time);
*self.rate_limit_count_tx.lock().borrow_mut() = updated_time;
}
async fn send_request(
&self,
api_key: &str,
spans: Vec<&str>,
request_timeout: u64,
) -> Result<Response<AsyncBody>> {
let request = Request::post("https://api.openai.com/v1/embeddings")
.redirect_policy(isahc::config::RedirectPolicy::Follow)
.timeout(Duration::from_secs(request_timeout))
.header("Content-Type", "application/json")
.header("Authorization", format!("Bearer {}", api_key))
.body(
serde_json::to_string(&OpenAIEmbeddingRequest {
input: spans.clone(),
model: "text-embedding-ada-002",
})
.unwrap()
.into(),
)?;
Ok(self.client.send(request).await?)
}
}
#[async_trait]
impl EmbeddingProvider for OpenAIEmbeddings {
fn is_authenticated(&self) -> bool {
OPENAI_API_KEY.as_ref().is_some()
}
fn max_tokens_per_batch(&self) -> usize {
50000
}
fn rate_limit_expiration(&self) -> Option<Instant> {
*self.rate_limit_count_rx.borrow()
}
fn truncate(&self, span: &str) -> (String, usize) {
let mut tokens = OPENAI_BPE_TOKENIZER.encode_with_special_tokens(span);
let output = if tokens.len() > OPENAI_INPUT_LIMIT {
tokens.truncate(OPENAI_INPUT_LIMIT);
OPENAI_BPE_TOKENIZER
.decode(tokens.clone())
.ok()
.unwrap_or_else(|| span.to_string())
} else {
span.to_string()
};
(output, tokens.len())
}
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>> {
const BACKOFF_SECONDS: [usize; 4] = [3, 5, 15, 45];
const MAX_RETRIES: usize = 4;
let api_key = OPENAI_API_KEY
.as_ref()
.ok_or_else(|| anyhow!("no api key"))?;
let mut request_number = 0;
let mut rate_limiting = false;
let mut request_timeout: u64 = 15;
let mut response: Response<AsyncBody>;
while request_number < MAX_RETRIES {
response = self
.send_request(
api_key,
spans.iter().map(|x| &**x).collect(),
request_timeout,
)
.await?;
request_number += 1;
match response.status() {
StatusCode::REQUEST_TIMEOUT => {
request_timeout += 5;
}
StatusCode::OK => {
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
let response: OpenAIEmbeddingResponse = serde_json::from_str(&body)?;
log::trace!(
"openai embedding completed. tokens: {:?}",
response.usage.total_tokens
);
// If we complete a request successfully that was previously rate_limited
// resolve the rate limit
if rate_limiting {
self.resolve_rate_limit()
}
return Ok(response
.data
.into_iter()
.map(|embedding| Embedding::from(embedding.embedding))
.collect());
}
StatusCode::TOO_MANY_REQUESTS => {
rate_limiting = true;
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
let delay_duration = {
let delay = Duration::from_secs(BACKOFF_SECONDS[request_number - 1] as u64);
if let Some(time_to_reset) =
response.headers().get("x-ratelimit-reset-tokens")
{
if let Ok(time_str) = time_to_reset.to_str() {
parse(time_str).unwrap_or(delay)
} else {
delay
}
} else {
delay
}
};
// If we've previously rate limited, increment the duration but not the count
let reset_time = Instant::now().add(delay_duration);
self.update_reset_time(reset_time);
log::trace!(
"openai rate limiting: waiting {:?} until lifted",
&delay_duration
);
self.executor.timer(delay_duration).await;
}
_ => {
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
return Err(anyhow!(
"open ai bad request: {:?} {:?}",
&response.status(),
body
));
}
}
}
Err(anyhow!("openai max retries"))
}
}
#[cfg(test)]
mod tests {
use super::*;

16
crates/ai/src/models.rs Normal file
View File

@@ -0,0 +1,16 @@
pub enum TruncationDirection {
Start,
End,
}
pub trait LanguageModel {
fn name(&self) -> String;
fn count_tokens(&self, content: &str) -> anyhow::Result<usize>;
fn truncate(
&self,
content: &str,
length: usize,
direction: TruncationDirection,
) -> anyhow::Result<String>;
fn capacity(&self) -> anyhow::Result<usize>;
}

View File

@@ -0,0 +1,330 @@
use std::cmp::Reverse;
use std::ops::Range;
use std::sync::Arc;
use language::BufferSnapshot;
use util::ResultExt;
use crate::models::LanguageModel;
use crate::prompts::repository_context::PromptCodeSnippet;
pub(crate) enum PromptFileType {
Text,
Code,
}
// TODO: Set this up to manage for defaults well
pub struct PromptArguments {
pub model: Arc<dyn LanguageModel>,
pub user_prompt: Option<String>,
pub language_name: Option<String>,
pub project_name: Option<String>,
pub snippets: Vec<PromptCodeSnippet>,
pub reserved_tokens: usize,
pub buffer: Option<BufferSnapshot>,
pub selected_range: Option<Range<usize>>,
}
impl PromptArguments {
pub(crate) fn get_file_type(&self) -> PromptFileType {
if self
.language_name
.as_ref()
.and_then(|name| Some(!["Markdown", "Plain Text"].contains(&name.as_str())))
.unwrap_or(true)
{
PromptFileType::Code
} else {
PromptFileType::Text
}
}
}
pub trait PromptTemplate {
fn generate(
&self,
args: &PromptArguments,
max_token_length: Option<usize>,
) -> anyhow::Result<(String, usize)>;
}
#[repr(i8)]
#[derive(PartialEq, Eq, Ord)]
pub enum PromptPriority {
Mandatory, // Ignores truncation
Ordered { order: usize }, // Truncates based on priority
}
impl PartialOrd for PromptPriority {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
match (self, other) {
(Self::Mandatory, Self::Mandatory) => Some(std::cmp::Ordering::Equal),
(Self::Mandatory, Self::Ordered { .. }) => Some(std::cmp::Ordering::Greater),
(Self::Ordered { .. }, Self::Mandatory) => Some(std::cmp::Ordering::Less),
(Self::Ordered { order: a }, Self::Ordered { order: b }) => b.partial_cmp(a),
}
}
}
pub struct PromptChain {
args: PromptArguments,
templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)>,
}
impl PromptChain {
pub fn new(
args: PromptArguments,
templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)>,
) -> Self {
PromptChain { args, templates }
}
pub fn generate(&self, truncate: bool) -> anyhow::Result<(String, usize)> {
// Argsort based on Prompt Priority
let seperator = "\n";
let seperator_tokens = self.args.model.count_tokens(seperator)?;
let mut sorted_indices = (0..self.templates.len()).collect::<Vec<_>>();
sorted_indices.sort_by_key(|&i| Reverse(&self.templates[i].0));
// If Truncate
let mut tokens_outstanding = if truncate {
Some(self.args.model.capacity()? - self.args.reserved_tokens)
} else {
None
};
let mut prompts = vec!["".to_string(); sorted_indices.len()];
for idx in sorted_indices {
let (_, template) = &self.templates[idx];
if let Some((template_prompt, prompt_token_count)) =
template.generate(&self.args, tokens_outstanding).log_err()
{
if template_prompt != "" {
prompts[idx] = template_prompt;
if let Some(remaining_tokens) = tokens_outstanding {
let new_tokens = prompt_token_count + seperator_tokens;
tokens_outstanding = if remaining_tokens > new_tokens {
Some(remaining_tokens - new_tokens)
} else {
Some(0)
};
}
}
}
}
prompts.retain(|x| x != "");
let full_prompt = prompts.join(seperator);
let total_token_count = self.args.model.count_tokens(&full_prompt)?;
anyhow::Ok((prompts.join(seperator), total_token_count))
}
}
#[cfg(test)]
pub(crate) mod tests {
use crate::models::TruncationDirection;
use crate::test::FakeLanguageModel;
use super::*;
#[test]
pub fn test_prompt_chain() {
struct TestPromptTemplate {}
impl PromptTemplate for TestPromptTemplate {
fn generate(
&self,
args: &PromptArguments,
max_token_length: Option<usize>,
) -> anyhow::Result<(String, usize)> {
let mut content = "This is a test prompt template".to_string();
let mut token_count = args.model.count_tokens(&content)?;
if let Some(max_token_length) = max_token_length {
if token_count > max_token_length {
content = args.model.truncate(
&content,
max_token_length,
TruncationDirection::End,
)?;
token_count = max_token_length;
}
}
anyhow::Ok((content, token_count))
}
}
struct TestLowPriorityTemplate {}
impl PromptTemplate for TestLowPriorityTemplate {
fn generate(
&self,
args: &PromptArguments,
max_token_length: Option<usize>,
) -> anyhow::Result<(String, usize)> {
let mut content = "This is a low priority test prompt template".to_string();
let mut token_count = args.model.count_tokens(&content)?;
if let Some(max_token_length) = max_token_length {
if token_count > max_token_length {
content = args.model.truncate(
&content,
max_token_length,
TruncationDirection::End,
)?;
token_count = max_token_length;
}
}
anyhow::Ok((content, token_count))
}
}
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity: 100 });
let args = PromptArguments {
model: model.clone(),
language_name: None,
project_name: None,
snippets: Vec::new(),
reserved_tokens: 0,
buffer: None,
selected_range: None,
user_prompt: None,
};
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
(
PromptPriority::Ordered { order: 0 },
Box::new(TestPromptTemplate {}),
),
(
PromptPriority::Ordered { order: 1 },
Box::new(TestLowPriorityTemplate {}),
),
];
let chain = PromptChain::new(args, templates);
let (prompt, token_count) = chain.generate(false).unwrap();
assert_eq!(
prompt,
"This is a test prompt template\nThis is a low priority test prompt template"
.to_string()
);
assert_eq!(model.count_tokens(&prompt).unwrap(), token_count);
// Testing with Truncation Off
// Should ignore capacity and return all prompts
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity: 20 });
let args = PromptArguments {
model: model.clone(),
language_name: None,
project_name: None,
snippets: Vec::new(),
reserved_tokens: 0,
buffer: None,
selected_range: None,
user_prompt: None,
};
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
(
PromptPriority::Ordered { order: 0 },
Box::new(TestPromptTemplate {}),
),
(
PromptPriority::Ordered { order: 1 },
Box::new(TestLowPriorityTemplate {}),
),
];
let chain = PromptChain::new(args, templates);
let (prompt, token_count) = chain.generate(false).unwrap();
assert_eq!(
prompt,
"This is a test prompt template\nThis is a low priority test prompt template"
.to_string()
);
assert_eq!(model.count_tokens(&prompt).unwrap(), token_count);
// Testing with Truncation Off
// Should ignore capacity and return all prompts
let capacity = 20;
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity });
let args = PromptArguments {
model: model.clone(),
language_name: None,
project_name: None,
snippets: Vec::new(),
reserved_tokens: 0,
buffer: None,
selected_range: None,
user_prompt: None,
};
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
(
PromptPriority::Ordered { order: 0 },
Box::new(TestPromptTemplate {}),
),
(
PromptPriority::Ordered { order: 1 },
Box::new(TestLowPriorityTemplate {}),
),
(
PromptPriority::Ordered { order: 2 },
Box::new(TestLowPriorityTemplate {}),
),
];
let chain = PromptChain::new(args, templates);
let (prompt, token_count) = chain.generate(true).unwrap();
assert_eq!(prompt, "This is a test promp".to_string());
assert_eq!(token_count, capacity);
// Change Ordering of Prompts Based on Priority
let capacity = 120;
let reserved_tokens = 10;
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity });
let args = PromptArguments {
model: model.clone(),
language_name: None,
project_name: None,
snippets: Vec::new(),
reserved_tokens,
buffer: None,
selected_range: None,
user_prompt: None,
};
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
(
PromptPriority::Mandatory,
Box::new(TestLowPriorityTemplate {}),
),
(
PromptPriority::Ordered { order: 0 },
Box::new(TestPromptTemplate {}),
),
(
PromptPriority::Ordered { order: 1 },
Box::new(TestLowPriorityTemplate {}),
),
];
let chain = PromptChain::new(args, templates);
let (prompt, token_count) = chain.generate(true).unwrap();
assert_eq!(
prompt,
"This is a low priority test prompt template\nThis is a test prompt template\nThis is a low priority test prompt "
.to_string()
);
assert_eq!(token_count, capacity - reserved_tokens);
}
}

View File

@@ -0,0 +1,164 @@
use anyhow::anyhow;
use language::BufferSnapshot;
use language::ToOffset;
use crate::models::LanguageModel;
use crate::models::TruncationDirection;
use crate::prompts::base::PromptArguments;
use crate::prompts::base::PromptTemplate;
use std::fmt::Write;
use std::ops::Range;
use std::sync::Arc;
fn retrieve_context(
buffer: &BufferSnapshot,
selected_range: &Option<Range<usize>>,
model: Arc<dyn LanguageModel>,
max_token_count: Option<usize>,
) -> anyhow::Result<(String, usize, bool)> {
let mut prompt = String::new();
let mut truncated = false;
if let Some(selected_range) = selected_range {
let start = selected_range.start.to_offset(buffer);
let end = selected_range.end.to_offset(buffer);
let start_window = buffer.text_for_range(0..start).collect::<String>();
let mut selected_window = String::new();
if start == end {
write!(selected_window, "<|START|>").unwrap();
} else {
write!(selected_window, "<|START|").unwrap();
}
write!(
selected_window,
"{}",
buffer.text_for_range(start..end).collect::<String>()
)
.unwrap();
if start != end {
write!(selected_window, "|END|>").unwrap();
}
let end_window = buffer.text_for_range(end..buffer.len()).collect::<String>();
if let Some(max_token_count) = max_token_count {
let selected_tokens = model.count_tokens(&selected_window)?;
if selected_tokens > max_token_count {
return Err(anyhow!(
"selected range is greater than model context window, truncation not possible"
));
};
let mut remaining_tokens = max_token_count - selected_tokens;
let start_window_tokens = model.count_tokens(&start_window)?;
let end_window_tokens = model.count_tokens(&end_window)?;
let outside_tokens = start_window_tokens + end_window_tokens;
if outside_tokens > remaining_tokens {
let (start_goal_tokens, end_goal_tokens) =
if start_window_tokens < end_window_tokens {
let start_goal_tokens = (remaining_tokens / 2).min(start_window_tokens);
remaining_tokens -= start_goal_tokens;
let end_goal_tokens = remaining_tokens.min(end_window_tokens);
(start_goal_tokens, end_goal_tokens)
} else {
let end_goal_tokens = (remaining_tokens / 2).min(end_window_tokens);
remaining_tokens -= end_goal_tokens;
let start_goal_tokens = remaining_tokens.min(start_window_tokens);
(start_goal_tokens, end_goal_tokens)
};
let truncated_start_window =
model.truncate(&start_window, start_goal_tokens, TruncationDirection::Start)?;
let truncated_end_window =
model.truncate(&end_window, end_goal_tokens, TruncationDirection::End)?;
writeln!(
prompt,
"{truncated_start_window}{selected_window}{truncated_end_window}"
)
.unwrap();
truncated = true;
} else {
writeln!(prompt, "{start_window}{selected_window}{end_window}").unwrap();
}
} else {
// If we dont have a selected range, include entire file.
writeln!(prompt, "{}", &buffer.text()).unwrap();
// Dumb truncation strategy
if let Some(max_token_count) = max_token_count {
if model.count_tokens(&prompt)? > max_token_count {
truncated = true;
prompt = model.truncate(&prompt, max_token_count, TruncationDirection::End)?;
}
}
}
}
let token_count = model.count_tokens(&prompt)?;
anyhow::Ok((prompt, token_count, truncated))
}
pub struct FileContext {}
impl PromptTemplate for FileContext {
fn generate(
&self,
args: &PromptArguments,
max_token_length: Option<usize>,
) -> anyhow::Result<(String, usize)> {
if let Some(buffer) = &args.buffer {
let mut prompt = String::new();
// Add Initial Preamble
// TODO: Do we want to add the path in here?
writeln!(
prompt,
"The file you are currently working on has the following content:"
)
.unwrap();
let language_name = args
.language_name
.clone()
.unwrap_or("".to_string())
.to_lowercase();
let (context, _, truncated) = retrieve_context(
buffer,
&args.selected_range,
args.model.clone(),
max_token_length,
)?;
writeln!(prompt, "```{language_name}\n{context}\n```").unwrap();
if truncated {
writeln!(prompt, "Note the content has been truncated and only represents a portion of the file.").unwrap();
}
if let Some(selected_range) = &args.selected_range {
let start = selected_range.start.to_offset(buffer);
let end = selected_range.end.to_offset(buffer);
if start == end {
writeln!(prompt, "In particular, the user's cursor is currently on the '<|START|>' span in the above content, with no text selected.").unwrap();
} else {
writeln!(prompt, "In particular, the user has selected a section of the text between the '<|START|' and '|END|>' spans.").unwrap();
}
}
// Really dumb truncation strategy
if let Some(max_tokens) = max_token_length {
prompt = args
.model
.truncate(&prompt, max_tokens, TruncationDirection::End)?;
}
let token_count = args.model.count_tokens(&prompt)?;
anyhow::Ok((prompt, token_count))
} else {
Err(anyhow!("no buffer provided to retrieve file context from"))
}
}
}

View File

@@ -0,0 +1,99 @@
use crate::prompts::base::{PromptArguments, PromptFileType, PromptTemplate};
use anyhow::anyhow;
use std::fmt::Write;
pub fn capitalize(s: &str) -> String {
let mut c = s.chars();
match c.next() {
None => String::new(),
Some(f) => f.to_uppercase().collect::<String>() + c.as_str(),
}
}
pub struct GenerateInlineContent {}
impl PromptTemplate for GenerateInlineContent {
fn generate(
&self,
args: &PromptArguments,
max_token_length: Option<usize>,
) -> anyhow::Result<(String, usize)> {
let Some(user_prompt) = &args.user_prompt else {
return Err(anyhow!("user prompt not provided"));
};
let file_type = args.get_file_type();
let content_type = match &file_type {
PromptFileType::Code => "code",
PromptFileType::Text => "text",
};
let mut prompt = String::new();
if let Some(selected_range) = &args.selected_range {
if selected_range.start == selected_range.end {
writeln!(
prompt,
"Assume the cursor is located where the `<|START|>` span is."
)
.unwrap();
writeln!(
prompt,
"{} can't be replaced, so assume your answer will be inserted at the cursor.",
capitalize(content_type)
)
.unwrap();
writeln!(
prompt,
"Generate {content_type} based on the users prompt: {user_prompt}",
)
.unwrap();
} else {
writeln!(prompt, "Modify the user's selected {content_type} based upon the users prompt: '{user_prompt}'").unwrap();
writeln!(prompt, "You must reply with only the adjusted {content_type} (within the '<|START|' and '|END|>' spans) not the entire file.").unwrap();
writeln!(prompt, "Double check that you only return code and not the '<|START|' and '|END|'> spans").unwrap();
}
} else {
writeln!(
prompt,
"Generate {content_type} based on the users prompt: {user_prompt}"
)
.unwrap();
}
if let Some(language_name) = &args.language_name {
writeln!(
prompt,
"Your answer MUST always and only be valid {}.",
language_name
)
.unwrap();
}
writeln!(prompt, "Never make remarks about the output.").unwrap();
writeln!(
prompt,
"Do not return anything else, except the generated {content_type}."
)
.unwrap();
match file_type {
PromptFileType::Code => {
// writeln!(prompt, "Always wrap your code in a Markdown block.").unwrap();
}
_ => {}
}
// Really dumb truncation strategy
if let Some(max_tokens) = max_token_length {
prompt = args.model.truncate(
&prompt,
max_tokens,
crate::models::TruncationDirection::End,
)?;
}
let token_count = args.model.count_tokens(&prompt)?;
anyhow::Ok((prompt, token_count))
}
}

View File

@@ -0,0 +1,5 @@
pub mod base;
pub mod file_context;
pub mod generate;
pub mod preamble;
pub mod repository_context;

View File

@@ -0,0 +1,52 @@
use crate::prompts::base::{PromptArguments, PromptFileType, PromptTemplate};
use std::fmt::Write;
pub struct EngineerPreamble {}
impl PromptTemplate for EngineerPreamble {
fn generate(
&self,
args: &PromptArguments,
max_token_length: Option<usize>,
) -> anyhow::Result<(String, usize)> {
let mut prompts = Vec::new();
match args.get_file_type() {
PromptFileType::Code => {
prompts.push(format!(
"You are an expert {}engineer.",
args.language_name.clone().unwrap_or("".to_string()) + " "
));
}
PromptFileType::Text => {
prompts.push("You are an expert engineer.".to_string());
}
}
if let Some(project_name) = args.project_name.clone() {
prompts.push(format!(
"You are currently working inside the '{project_name}' project in code editor Zed."
));
}
if let Some(mut remaining_tokens) = max_token_length {
let mut prompt = String::new();
let mut total_count = 0;
for prompt_piece in prompts {
let prompt_token_count =
args.model.count_tokens(&prompt_piece)? + args.model.count_tokens("\n")?;
if remaining_tokens > prompt_token_count {
writeln!(prompt, "{prompt_piece}").unwrap();
remaining_tokens -= prompt_token_count;
total_count += prompt_token_count;
}
}
anyhow::Ok((prompt, total_count))
} else {
let prompt = prompts.join("\n");
let token_count = args.model.count_tokens(&prompt)?;
anyhow::Ok((prompt, token_count))
}
}
}

View File

@@ -0,0 +1,94 @@
use crate::prompts::base::{PromptArguments, PromptTemplate};
use std::fmt::Write;
use std::{ops::Range, path::PathBuf};
use gpui::{AsyncAppContext, ModelHandle};
use language::{Anchor, Buffer};
#[derive(Clone)]
pub struct PromptCodeSnippet {
path: Option<PathBuf>,
language_name: Option<String>,
content: String,
}
impl PromptCodeSnippet {
pub fn new(buffer: ModelHandle<Buffer>, range: Range<Anchor>, cx: &AsyncAppContext) -> Self {
let (content, language_name, file_path) = buffer.read_with(cx, |buffer, _| {
let snapshot = buffer.snapshot();
let content = snapshot.text_for_range(range.clone()).collect::<String>();
let language_name = buffer
.language()
.and_then(|language| Some(language.name().to_string().to_lowercase()));
let file_path = buffer
.file()
.and_then(|file| Some(file.path().to_path_buf()));
(content, language_name, file_path)
});
PromptCodeSnippet {
path: file_path,
language_name,
content,
}
}
}
impl ToString for PromptCodeSnippet {
fn to_string(&self) -> String {
let path = self
.path
.as_ref()
.and_then(|path| Some(path.to_string_lossy().to_string()))
.unwrap_or("".to_string());
let language_name = self.language_name.clone().unwrap_or("".to_string());
let content = self.content.clone();
format!("The below code snippet may be relevant from file: {path}\n```{language_name}\n{content}\n```")
}
}
pub struct RepositoryContext {}
impl PromptTemplate for RepositoryContext {
fn generate(
&self,
args: &PromptArguments,
max_token_length: Option<usize>,
) -> anyhow::Result<(String, usize)> {
const MAXIMUM_SNIPPET_TOKEN_COUNT: usize = 500;
let template = "You are working inside a large repository, here are a few code snippets that may be useful.";
let mut prompt = String::new();
let mut remaining_tokens = max_token_length.clone();
let seperator_token_length = args.model.count_tokens("\n")?;
for snippet in &args.snippets {
let mut snippet_prompt = template.to_string();
let content = snippet.to_string();
writeln!(snippet_prompt, "{content}").unwrap();
let token_count = args.model.count_tokens(&snippet_prompt)?;
if token_count <= MAXIMUM_SNIPPET_TOKEN_COUNT {
if let Some(tokens_left) = remaining_tokens {
if tokens_left >= token_count {
writeln!(prompt, "{snippet_prompt}").unwrap();
remaining_tokens = if tokens_left >= (token_count + seperator_token_length)
{
Some(tokens_left - token_count - seperator_token_length)
} else {
Some(0)
};
}
} else {
writeln!(prompt, "{snippet_prompt}").unwrap();
}
}
}
let total_token_count = args.model.count_tokens(&prompt)?;
anyhow::Ok((prompt, total_token_count))
}
}

View File

@@ -0,0 +1 @@
pub mod open_ai;

View File

@@ -0,0 +1,298 @@
use anyhow::{anyhow, Result};
use futures::{
future::BoxFuture, io::BufReader, stream::BoxStream, AsyncBufReadExt, AsyncReadExt, FutureExt,
Stream, StreamExt,
};
use gpui::{executor::Background, AppContext};
use isahc::{http::StatusCode, Request, RequestExt};
use parking_lot::RwLock;
use serde::{Deserialize, Serialize};
use std::{
env,
fmt::{self, Display},
io,
sync::Arc,
};
use util::ResultExt;
use crate::{
auth::{CredentialProvider, ProviderCredential},
completion::{CompletionProvider, CompletionRequest},
models::LanguageModel,
};
use crate::providers::open_ai::{OpenAILanguageModel, OPENAI_API_URL};
#[derive(Clone, Copy, Serialize, Deserialize, Debug, Eq, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum Role {
User,
Assistant,
System,
}
impl Role {
pub fn cycle(&mut self) {
*self = match self {
Role::User => Role::Assistant,
Role::Assistant => Role::System,
Role::System => Role::User,
}
}
}
impl Display for Role {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Role::User => write!(f, "User"),
Role::Assistant => write!(f, "Assistant"),
Role::System => write!(f, "System"),
}
}
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
pub struct RequestMessage {
pub role: Role,
pub content: String,
}
#[derive(Debug, Default, Serialize)]
pub struct OpenAIRequest {
pub model: String,
pub messages: Vec<RequestMessage>,
pub stream: bool,
pub stop: Vec<String>,
pub temperature: f32,
}
impl CompletionRequest for OpenAIRequest {
fn data(&self) -> serde_json::Result<String> {
serde_json::to_string(self)
}
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
pub struct ResponseMessage {
pub role: Option<Role>,
pub content: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct OpenAIUsage {
pub prompt_tokens: u32,
pub completion_tokens: u32,
pub total_tokens: u32,
}
#[derive(Deserialize, Debug)]
pub struct ChatChoiceDelta {
pub index: u32,
pub delta: ResponseMessage,
pub finish_reason: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct OpenAIResponseStreamEvent {
pub id: Option<String>,
pub object: String,
pub created: u32,
pub model: String,
pub choices: Vec<ChatChoiceDelta>,
pub usage: Option<OpenAIUsage>,
}
pub async fn stream_completion(
credential: ProviderCredential,
executor: Arc<Background>,
request: Box<dyn CompletionRequest>,
) -> Result<impl Stream<Item = Result<OpenAIResponseStreamEvent>>> {
let api_key = match credential {
ProviderCredential::Credentials { api_key } => api_key,
_ => {
return Err(anyhow!("no credentials provider for completion"));
}
};
let (tx, rx) = futures::channel::mpsc::unbounded::<Result<OpenAIResponseStreamEvent>>();
let json_data = request.data()?;
let mut response = Request::post(format!("{OPENAI_API_URL}/chat/completions"))
.header("Content-Type", "application/json")
.header("Authorization", format!("Bearer {}", api_key))
.body(json_data)?
.send_async()
.await?;
let status = response.status();
if status == StatusCode::OK {
executor
.spawn(async move {
let mut lines = BufReader::new(response.body_mut()).lines();
fn parse_line(
line: Result<String, io::Error>,
) -> Result<Option<OpenAIResponseStreamEvent>> {
if let Some(data) = line?.strip_prefix("data: ") {
let event = serde_json::from_str(&data)?;
Ok(Some(event))
} else {
Ok(None)
}
}
while let Some(line) = lines.next().await {
if let Some(event) = parse_line(line).transpose() {
let done = event.as_ref().map_or(false, |event| {
event
.choices
.last()
.map_or(false, |choice| choice.finish_reason.is_some())
});
if tx.unbounded_send(event).is_err() {
break;
}
if done {
break;
}
}
}
anyhow::Ok(())
})
.detach();
Ok(rx)
} else {
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
#[derive(Deserialize)]
struct OpenAIResponse {
error: OpenAIError,
}
#[derive(Deserialize)]
struct OpenAIError {
message: String,
}
match serde_json::from_str::<OpenAIResponse>(&body) {
Ok(response) if !response.error.message.is_empty() => Err(anyhow!(
"Failed to connect to OpenAI API: {}",
response.error.message,
)),
_ => Err(anyhow!(
"Failed to connect to OpenAI API: {} {}",
response.status(),
body,
)),
}
}
}
#[derive(Clone)]
pub struct OpenAICompletionProvider {
model: OpenAILanguageModel,
credential: Arc<RwLock<ProviderCredential>>,
executor: Arc<Background>,
}
impl OpenAICompletionProvider {
pub fn new(model_name: &str, executor: Arc<Background>) -> Self {
let model = OpenAILanguageModel::load(model_name);
let credential = Arc::new(RwLock::new(ProviderCredential::NoCredentials));
Self {
model,
credential,
executor,
}
}
}
impl CredentialProvider for OpenAICompletionProvider {
fn has_credentials(&self) -> bool {
match *self.credential.read() {
ProviderCredential::Credentials { .. } => true,
_ => false,
}
}
fn retrieve_credentials(&self, cx: &AppContext) -> ProviderCredential {
let mut credential = self.credential.write();
match *credential {
ProviderCredential::Credentials { .. } => {
return credential.clone();
}
_ => {
if let Ok(api_key) = env::var("OPENAI_API_KEY") {
*credential = ProviderCredential::Credentials { api_key };
} else if let Some((_, api_key)) = cx
.platform()
.read_credentials(OPENAI_API_URL)
.log_err()
.flatten()
{
if let Some(api_key) = String::from_utf8(api_key).log_err() {
*credential = ProviderCredential::Credentials { api_key };
}
} else {
};
}
}
credential.clone()
}
fn save_credentials(&self, cx: &AppContext, credential: ProviderCredential) {
match credential.clone() {
ProviderCredential::Credentials { api_key } => {
cx.platform()
.write_credentials(OPENAI_API_URL, "Bearer", api_key.as_bytes())
.log_err();
}
_ => {}
}
*self.credential.write() = credential;
}
fn delete_credentials(&self, cx: &AppContext) {
cx.platform().delete_credentials(OPENAI_API_URL).log_err();
*self.credential.write() = ProviderCredential::NoCredentials;
}
}
impl CompletionProvider for OpenAICompletionProvider {
fn base_model(&self) -> Box<dyn LanguageModel> {
let model: Box<dyn LanguageModel> = Box::new(self.model.clone());
model
}
fn complete(
&self,
prompt: Box<dyn CompletionRequest>,
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>> {
// Currently the CompletionRequest for OpenAI, includes a 'model' parameter
// This means that the model is determined by the CompletionRequest and not the CompletionProvider,
// which is currently model based, due to the langauge model.
// At some point in the future we should rectify this.
let credential = self.credential.read().clone();
let request = stream_completion(credential, self.executor.clone(), prompt);
async move {
let response = request.await?;
let stream = response
.filter_map(|response| async move {
match response {
Ok(mut response) => Some(Ok(response.choices.pop()?.delta.content?)),
Err(error) => Some(Err(error)),
}
})
.boxed();
Ok(stream)
}
.boxed()
}
fn box_clone(&self) -> Box<dyn CompletionProvider> {
Box::new((*self).clone())
}
}

View File

@@ -0,0 +1,306 @@
use anyhow::{anyhow, Result};
use async_trait::async_trait;
use futures::AsyncReadExt;
use gpui::executor::Background;
use gpui::{serde_json, AppContext};
use isahc::http::StatusCode;
use isahc::prelude::Configurable;
use isahc::{AsyncBody, Response};
use lazy_static::lazy_static;
use parking_lot::{Mutex, RwLock};
use parse_duration::parse;
use postage::watch;
use serde::{Deserialize, Serialize};
use std::env;
use std::ops::Add;
use std::sync::Arc;
use std::time::{Duration, Instant};
use tiktoken_rs::{cl100k_base, CoreBPE};
use util::http::{HttpClient, Request};
use util::ResultExt;
use crate::auth::{CredentialProvider, ProviderCredential};
use crate::embedding::{Embedding, EmbeddingProvider};
use crate::models::LanguageModel;
use crate::providers::open_ai::OpenAILanguageModel;
use crate::providers::open_ai::OPENAI_API_URL;
lazy_static! {
static ref OPENAI_BPE_TOKENIZER: CoreBPE = cl100k_base().unwrap();
}
#[derive(Clone)]
pub struct OpenAIEmbeddingProvider {
model: OpenAILanguageModel,
credential: Arc<RwLock<ProviderCredential>>,
pub client: Arc<dyn HttpClient>,
pub executor: Arc<Background>,
rate_limit_count_rx: watch::Receiver<Option<Instant>>,
rate_limit_count_tx: Arc<Mutex<watch::Sender<Option<Instant>>>>,
}
#[derive(Serialize)]
struct OpenAIEmbeddingRequest<'a> {
model: &'static str,
input: Vec<&'a str>,
}
#[derive(Deserialize)]
struct OpenAIEmbeddingResponse {
data: Vec<OpenAIEmbedding>,
usage: OpenAIEmbeddingUsage,
}
#[derive(Debug, Deserialize)]
struct OpenAIEmbedding {
embedding: Vec<f32>,
index: usize,
object: String,
}
#[derive(Deserialize)]
struct OpenAIEmbeddingUsage {
prompt_tokens: usize,
total_tokens: usize,
}
impl OpenAIEmbeddingProvider {
pub fn new(client: Arc<dyn HttpClient>, executor: Arc<Background>) -> Self {
let (rate_limit_count_tx, rate_limit_count_rx) = watch::channel_with(None);
let rate_limit_count_tx = Arc::new(Mutex::new(rate_limit_count_tx));
let model = OpenAILanguageModel::load("text-embedding-ada-002");
let credential = Arc::new(RwLock::new(ProviderCredential::NoCredentials));
OpenAIEmbeddingProvider {
model,
credential,
client,
executor,
rate_limit_count_rx,
rate_limit_count_tx,
}
}
fn get_api_key(&self) -> Result<String> {
match self.credential.read().clone() {
ProviderCredential::Credentials { api_key } => Ok(api_key),
_ => Err(anyhow!("api credentials not provided")),
}
}
fn resolve_rate_limit(&self) {
let reset_time = *self.rate_limit_count_tx.lock().borrow();
if let Some(reset_time) = reset_time {
if Instant::now() >= reset_time {
*self.rate_limit_count_tx.lock().borrow_mut() = None
}
}
log::trace!(
"resolving reset time: {:?}",
*self.rate_limit_count_tx.lock().borrow()
);
}
fn update_reset_time(&self, reset_time: Instant) {
let original_time = *self.rate_limit_count_tx.lock().borrow();
let updated_time = if let Some(original_time) = original_time {
if reset_time < original_time {
Some(reset_time)
} else {
Some(original_time)
}
} else {
Some(reset_time)
};
log::trace!("updating rate limit time: {:?}", updated_time);
*self.rate_limit_count_tx.lock().borrow_mut() = updated_time;
}
async fn send_request(
&self,
api_key: &str,
spans: Vec<&str>,
request_timeout: u64,
) -> Result<Response<AsyncBody>> {
let request = Request::post("https://api.openai.com/v1/embeddings")
.redirect_policy(isahc::config::RedirectPolicy::Follow)
.timeout(Duration::from_secs(request_timeout))
.header("Content-Type", "application/json")
.header("Authorization", format!("Bearer {}", api_key))
.body(
serde_json::to_string(&OpenAIEmbeddingRequest {
input: spans.clone(),
model: "text-embedding-ada-002",
})
.unwrap()
.into(),
)?;
Ok(self.client.send(request).await?)
}
}
impl CredentialProvider for OpenAIEmbeddingProvider {
fn has_credentials(&self) -> bool {
match *self.credential.read() {
ProviderCredential::Credentials { .. } => true,
_ => false,
}
}
fn retrieve_credentials(&self, cx: &AppContext) -> ProviderCredential {
let mut credential = self.credential.write();
match *credential {
ProviderCredential::Credentials { .. } => {
return credential.clone();
}
_ => {
if let Ok(api_key) = env::var("OPENAI_API_KEY") {
*credential = ProviderCredential::Credentials { api_key };
} else if let Some((_, api_key)) = cx
.platform()
.read_credentials(OPENAI_API_URL)
.log_err()
.flatten()
{
if let Some(api_key) = String::from_utf8(api_key).log_err() {
*credential = ProviderCredential::Credentials { api_key };
}
} else {
};
}
}
credential.clone()
}
fn save_credentials(&self, cx: &AppContext, credential: ProviderCredential) {
match credential.clone() {
ProviderCredential::Credentials { api_key } => {
cx.platform()
.write_credentials(OPENAI_API_URL, "Bearer", api_key.as_bytes())
.log_err();
}
_ => {}
}
*self.credential.write() = credential;
}
fn delete_credentials(&self, cx: &AppContext) {
cx.platform().delete_credentials(OPENAI_API_URL).log_err();
*self.credential.write() = ProviderCredential::NoCredentials;
}
}
#[async_trait]
impl EmbeddingProvider for OpenAIEmbeddingProvider {
fn base_model(&self) -> Box<dyn LanguageModel> {
let model: Box<dyn LanguageModel> = Box::new(self.model.clone());
model
}
fn max_tokens_per_batch(&self) -> usize {
50000
}
fn rate_limit_expiration(&self) -> Option<Instant> {
*self.rate_limit_count_rx.borrow()
}
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>> {
const BACKOFF_SECONDS: [usize; 4] = [3, 5, 15, 45];
const MAX_RETRIES: usize = 4;
let api_key = self.get_api_key()?;
let mut request_number = 0;
let mut rate_limiting = false;
let mut request_timeout: u64 = 15;
let mut response: Response<AsyncBody>;
while request_number < MAX_RETRIES {
response = self
.send_request(
&api_key,
spans.iter().map(|x| &**x).collect(),
request_timeout,
)
.await?;
request_number += 1;
match response.status() {
StatusCode::REQUEST_TIMEOUT => {
request_timeout += 5;
}
StatusCode::OK => {
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
let response: OpenAIEmbeddingResponse = serde_json::from_str(&body)?;
log::trace!(
"openai embedding completed. tokens: {:?}",
response.usage.total_tokens
);
// If we complete a request successfully that was previously rate_limited
// resolve the rate limit
if rate_limiting {
self.resolve_rate_limit()
}
return Ok(response
.data
.into_iter()
.map(|embedding| Embedding::from(embedding.embedding))
.collect());
}
StatusCode::TOO_MANY_REQUESTS => {
rate_limiting = true;
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
let delay_duration = {
let delay = Duration::from_secs(BACKOFF_SECONDS[request_number - 1] as u64);
if let Some(time_to_reset) =
response.headers().get("x-ratelimit-reset-tokens")
{
if let Ok(time_str) = time_to_reset.to_str() {
parse(time_str).unwrap_or(delay)
} else {
delay
}
} else {
delay
}
};
// If we've previously rate limited, increment the duration but not the count
let reset_time = Instant::now().add(delay_duration);
self.update_reset_time(reset_time);
log::trace!(
"openai rate limiting: waiting {:?} until lifted",
&delay_duration
);
self.executor.timer(delay_duration).await;
}
_ => {
let mut body = String::new();
response.body_mut().read_to_string(&mut body).await?;
return Err(anyhow!(
"open ai bad request: {:?} {:?}",
&response.status(),
body
));
}
}
}
Err(anyhow!("openai max retries"))
}
}

View File

@@ -0,0 +1,9 @@
pub mod completion;
pub mod embedding;
pub mod model;
pub use completion::*;
pub use embedding::*;
pub use model::OpenAILanguageModel;
pub const OPENAI_API_URL: &'static str = "https://api.openai.com/v1";

View File

@@ -0,0 +1,57 @@
use anyhow::anyhow;
use tiktoken_rs::CoreBPE;
use util::ResultExt;
use crate::models::{LanguageModel, TruncationDirection};
#[derive(Clone)]
pub struct OpenAILanguageModel {
name: String,
bpe: Option<CoreBPE>,
}
impl OpenAILanguageModel {
pub fn load(model_name: &str) -> Self {
let bpe = tiktoken_rs::get_bpe_from_model(model_name).log_err();
OpenAILanguageModel {
name: model_name.to_string(),
bpe,
}
}
}
impl LanguageModel for OpenAILanguageModel {
fn name(&self) -> String {
self.name.clone()
}
fn count_tokens(&self, content: &str) -> anyhow::Result<usize> {
if let Some(bpe) = &self.bpe {
anyhow::Ok(bpe.encode_with_special_tokens(content).len())
} else {
Err(anyhow!("bpe for open ai model was not retrieved"))
}
}
fn truncate(
&self,
content: &str,
length: usize,
direction: TruncationDirection,
) -> anyhow::Result<String> {
if let Some(bpe) = &self.bpe {
let tokens = bpe.encode_with_special_tokens(content);
if tokens.len() > length {
match direction {
TruncationDirection::End => bpe.decode(tokens[..length].to_vec()),
TruncationDirection::Start => bpe.decode(tokens[length..].to_vec()),
}
} else {
bpe.decode(tokens)
}
} else {
Err(anyhow!("bpe for open ai model was not retrieved"))
}
}
fn capacity(&self) -> anyhow::Result<usize> {
anyhow::Ok(tiktoken_rs::model::get_context_size(&self.name))
}
}

View File

@@ -0,0 +1,11 @@
pub trait LanguageModel {
fn name(&self) -> String;
fn count_tokens(&self, content: &str) -> anyhow::Result<usize>;
fn truncate(
&self,
content: &str,
length: usize,
direction: TruncationDirection,
) -> anyhow::Result<String>;
fn capacity(&self) -> anyhow::Result<usize>;
}

200
crates/ai/src/test.rs Normal file
View File

@@ -0,0 +1,200 @@
use std::{
sync::atomic::{self, AtomicUsize, Ordering},
time::Instant,
};
use async_trait::async_trait;
use futures::{channel::mpsc, future::BoxFuture, stream::BoxStream, FutureExt, StreamExt};
use gpui::AppContext;
use parking_lot::Mutex;
use crate::{
auth::{CredentialProvider, ProviderCredential},
completion::{CompletionProvider, CompletionRequest},
embedding::{Embedding, EmbeddingProvider},
models::{LanguageModel, TruncationDirection},
};
#[derive(Clone)]
pub struct FakeLanguageModel {
pub capacity: usize,
}
impl LanguageModel for FakeLanguageModel {
fn name(&self) -> String {
"dummy".to_string()
}
fn count_tokens(&self, content: &str) -> anyhow::Result<usize> {
anyhow::Ok(content.chars().collect::<Vec<char>>().len())
}
fn truncate(
&self,
content: &str,
length: usize,
direction: TruncationDirection,
) -> anyhow::Result<String> {
println!("TRYING TO TRUNCATE: {:?}", length.clone());
if length > self.count_tokens(content)? {
println!("NOT TRUNCATING");
return anyhow::Ok(content.to_string());
}
anyhow::Ok(match direction {
TruncationDirection::End => content.chars().collect::<Vec<char>>()[..length]
.into_iter()
.collect::<String>(),
TruncationDirection::Start => content.chars().collect::<Vec<char>>()[length..]
.into_iter()
.collect::<String>(),
})
}
fn capacity(&self) -> anyhow::Result<usize> {
anyhow::Ok(self.capacity)
}
}
pub struct FakeEmbeddingProvider {
pub embedding_count: AtomicUsize,
}
impl Clone for FakeEmbeddingProvider {
fn clone(&self) -> Self {
FakeEmbeddingProvider {
embedding_count: AtomicUsize::new(self.embedding_count.load(Ordering::SeqCst)),
}
}
}
impl Default for FakeEmbeddingProvider {
fn default() -> Self {
FakeEmbeddingProvider {
embedding_count: AtomicUsize::default(),
}
}
}
impl FakeEmbeddingProvider {
pub fn embedding_count(&self) -> usize {
self.embedding_count.load(atomic::Ordering::SeqCst)
}
pub fn embed_sync(&self, span: &str) -> Embedding {
let mut result = vec![1.0; 26];
for letter in span.chars() {
let letter = letter.to_ascii_lowercase();
if letter as u32 >= 'a' as u32 {
let ix = (letter as u32) - ('a' as u32);
if ix < 26 {
result[ix as usize] += 1.0;
}
}
}
let norm = result.iter().map(|x| x * x).sum::<f32>().sqrt();
for x in &mut result {
*x /= norm;
}
result.into()
}
}
impl CredentialProvider for FakeEmbeddingProvider {
fn has_credentials(&self) -> bool {
true
}
fn retrieve_credentials(&self, _cx: &AppContext) -> ProviderCredential {
ProviderCredential::NotNeeded
}
fn save_credentials(&self, _cx: &AppContext, _credential: ProviderCredential) {}
fn delete_credentials(&self, _cx: &AppContext) {}
}
#[async_trait]
impl EmbeddingProvider for FakeEmbeddingProvider {
fn base_model(&self) -> Box<dyn LanguageModel> {
Box::new(FakeLanguageModel { capacity: 1000 })
}
fn max_tokens_per_batch(&self) -> usize {
1000
}
fn rate_limit_expiration(&self) -> Option<Instant> {
None
}
async fn embed_batch(&self, spans: Vec<String>) -> anyhow::Result<Vec<Embedding>> {
self.embedding_count
.fetch_add(spans.len(), atomic::Ordering::SeqCst);
anyhow::Ok(spans.iter().map(|span| self.embed_sync(span)).collect())
}
}
pub struct FakeCompletionProvider {
last_completion_tx: Mutex<Option<mpsc::Sender<String>>>,
}
impl Clone for FakeCompletionProvider {
fn clone(&self) -> Self {
Self {
last_completion_tx: Mutex::new(None),
}
}
}
impl FakeCompletionProvider {
pub fn new() -> Self {
Self {
last_completion_tx: Mutex::new(None),
}
}
pub fn send_completion(&self, completion: impl Into<String>) {
let mut tx = self.last_completion_tx.lock();
println!("COMPLETION TX: {:?}", &tx);
let a = tx.as_mut().unwrap();
a.try_send(completion.into()).unwrap();
// tx.as_mut().unwrap().try_send(completion.into()).unwrap();
}
pub fn finish_completion(&self) {
println!("FINISHING COMPLETION");
self.last_completion_tx.lock().take().unwrap();
}
}
impl CredentialProvider for FakeCompletionProvider {
fn has_credentials(&self) -> bool {
true
}
fn retrieve_credentials(&self, _cx: &AppContext) -> ProviderCredential {
ProviderCredential::NotNeeded
}
fn save_credentials(&self, _cx: &AppContext, _credential: ProviderCredential) {}
fn delete_credentials(&self, _cx: &AppContext) {}
}
impl CompletionProvider for FakeCompletionProvider {
fn base_model(&self) -> Box<dyn LanguageModel> {
let model: Box<dyn LanguageModel> = Box::new(FakeLanguageModel { capacity: 8190 });
model
}
fn complete(
&self,
_prompt: Box<dyn CompletionRequest>,
) -> BoxFuture<'static, anyhow::Result<BoxStream<'static, anyhow::Result<String>>>> {
println!("COMPLETING");
let (tx, rx) = mpsc::channel(1);
*self.last_completion_tx.lock() = Some(tx);
println!("TX: {:?}", *self.last_completion_tx.lock());
async move { Ok(rx.map(|rx| Ok(rx)).boxed()) }.boxed()
}
fn box_clone(&self) -> Box<dyn CompletionProvider> {
Box::new((*self).clone())
}
}

38
crates/ai2/Cargo.toml Normal file
View File

@@ -0,0 +1,38 @@
[package]
name = "ai2"
version = "0.1.0"
edition = "2021"
publish = false
[lib]
path = "src/ai2.rs"
doctest = false
[features]
test-support = []
[dependencies]
gpui = { package = "gpui2", path = "../gpui2" }
util = { path = "../util" }
language = { package = "language2", path = "../language2" }
async-trait.workspace = true
anyhow.workspace = true
futures.workspace = true
lazy_static.workspace = true
ordered-float.workspace = true
parking_lot.workspace = true
isahc.workspace = true
regex.workspace = true
serde.workspace = true
serde_json.workspace = true
postage.workspace = true
rand.workspace = true
log.workspace = true
parse_duration = "2.1.1"
tiktoken-rs.workspace = true
matrixmultiply = "0.3.7"
rusqlite = { version = "0.29.0", features = ["blob", "array", "modern_sqlite"] }
bincode = "1.3.3"
[dev-dependencies]
gpui = { package = "gpui2", path = "../gpui2", features = ["test-support"] }

8
crates/ai2/src/ai2.rs Normal file
View File

@@ -0,0 +1,8 @@
pub mod auth;
pub mod completion;
pub mod embedding;
pub mod models;
pub mod prompts;
pub mod providers;
#[cfg(any(test, feature = "test-support"))]
pub mod test;

15
crates/ai2/src/auth.rs Normal file
View File

@@ -0,0 +1,15 @@
use gpui::AppContext;
#[derive(Clone, Debug)]
pub enum ProviderCredential {
Credentials { api_key: String },
NoCredentials,
NotNeeded,
}
pub trait CredentialProvider {
fn has_credentials(&self) -> bool;
fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential;
fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential);
fn delete_credentials(&self, cx: &mut AppContext);
}

View File

@@ -0,0 +1,23 @@
use anyhow::Result;
use futures::{future::BoxFuture, stream::BoxStream};
use crate::{auth::CredentialProvider, models::LanguageModel};
pub trait CompletionRequest: Send + Sync {
fn data(&self) -> serde_json::Result<String>;
}
pub trait CompletionProvider: CredentialProvider {
fn base_model(&self) -> Box<dyn LanguageModel>;
fn complete(
&self,
prompt: Box<dyn CompletionRequest>,
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>>;
fn box_clone(&self) -> Box<dyn CompletionProvider>;
}
impl Clone for Box<dyn CompletionProvider> {
fn clone(&self) -> Box<dyn CompletionProvider> {
self.box_clone()
}
}

123
crates/ai2/src/embedding.rs Normal file
View File

@@ -0,0 +1,123 @@
use std::time::Instant;
use anyhow::Result;
use async_trait::async_trait;
use ordered_float::OrderedFloat;
use rusqlite::types::{FromSql, FromSqlResult, ToSqlOutput, ValueRef};
use rusqlite::ToSql;
use crate::auth::CredentialProvider;
use crate::models::LanguageModel;
#[derive(Debug, PartialEq, Clone)]
pub struct Embedding(pub Vec<f32>);
// This is needed for semantic index functionality
// Unfortunately it has to live wherever the "Embedding" struct is created.
// Keeping this in here though, introduces a 'rusqlite' dependency into AI
// which is less than ideal
impl FromSql for Embedding {
fn column_result(value: ValueRef) -> FromSqlResult<Self> {
let bytes = value.as_blob()?;
let embedding: Result<Vec<f32>, Box<bincode::ErrorKind>> = bincode::deserialize(bytes);
if embedding.is_err() {
return Err(rusqlite::types::FromSqlError::Other(embedding.unwrap_err()));
}
Ok(Embedding(embedding.unwrap()))
}
}
impl ToSql for Embedding {
fn to_sql(&self) -> rusqlite::Result<ToSqlOutput> {
let bytes = bincode::serialize(&self.0)
.map_err(|err| rusqlite::Error::ToSqlConversionFailure(Box::new(err)))?;
Ok(ToSqlOutput::Owned(rusqlite::types::Value::Blob(bytes)))
}
}
impl From<Vec<f32>> for Embedding {
fn from(value: Vec<f32>) -> Self {
Embedding(value)
}
}
impl Embedding {
pub fn similarity(&self, other: &Self) -> OrderedFloat<f32> {
let len = self.0.len();
assert_eq!(len, other.0.len());
let mut result = 0.0;
unsafe {
matrixmultiply::sgemm(
1,
len,
1,
1.0,
self.0.as_ptr(),
len as isize,
1,
other.0.as_ptr(),
1,
len as isize,
0.0,
&mut result as *mut f32,
1,
1,
);
}
OrderedFloat(result)
}
}
#[async_trait]
pub trait EmbeddingProvider: CredentialProvider {
fn base_model(&self) -> Box<dyn LanguageModel>;
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>>;
fn max_tokens_per_batch(&self) -> usize;
fn rate_limit_expiration(&self) -> Option<Instant>;
}
#[cfg(test)]
mod tests {
use super::*;
use rand::prelude::*;
#[gpui::test]
fn test_similarity(mut rng: StdRng) {
assert_eq!(
Embedding::from(vec![1., 0., 0., 0., 0.])
.similarity(&Embedding::from(vec![0., 1., 0., 0., 0.])),
0.
);
assert_eq!(
Embedding::from(vec![2., 0., 0., 0., 0.])
.similarity(&Embedding::from(vec![3., 1., 0., 0., 0.])),
6.
);
for _ in 0..100 {
let size = 1536;
let mut a = vec![0.; size];
let mut b = vec![0.; size];
for (a, b) in a.iter_mut().zip(b.iter_mut()) {
*a = rng.gen();
*b = rng.gen();
}
let a = Embedding::from(a);
let b = Embedding::from(b);
assert_eq!(
round_to_decimals(a.similarity(&b), 1),
round_to_decimals(reference_dot(&a.0, &b.0), 1)
);
}
fn round_to_decimals(n: OrderedFloat<f32>, decimal_places: i32) -> f32 {
let factor = (10.0 as f32).powi(decimal_places);
(n * factor).round() / factor
}
fn reference_dot(a: &[f32], b: &[f32]) -> OrderedFloat<f32> {
OrderedFloat(a.iter().zip(b.iter()).map(|(a, b)| a * b).sum())
}
}
}

Some files were not shown because too many files have changed in this diff Show More