Merge branch 'main' into completion-menu-detail-layout

This commit is contained in:
Julia 2024-01-02 22:46:13 -05:00
commit 1810824bc4
46 changed files with 1694 additions and 432 deletions

2
Cargo.lock generated
View file

@ -9838,6 +9838,7 @@ dependencies = [
name = "theme_selector"
version = "0.1.0"
dependencies = [
"client",
"editor",
"feature_flags",
"fs",
@ -9858,6 +9859,7 @@ dependencies = [
name = "theme_selector2"
version = "0.1.0"
dependencies = [
"client2",
"editor2",
"feature_flags2",
"fs2",

View file

@ -1281,6 +1281,10 @@ impl Panel for AssistantPanel {
Some(Icon::Ai)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
Some("Assistant Panel")
}
fn toggle_action(&self) -> Box<dyn Action> {
Box::new(ToggleFocus)
}

View file

@ -113,6 +113,11 @@ pub enum ClickhouseEvent {
operation: &'static str,
milliseconds_since_first_event: i64,
},
Setting {
setting: &'static str,
value: String,
milliseconds_since_first_event: i64,
},
}
#[cfg(debug_assertions)]
@ -354,6 +359,21 @@ impl Telemetry {
self.report_clickhouse_event(event, telemetry_settings, immediate_flush)
}
pub fn report_setting_event(
self: &Arc<Self>,
telemetry_settings: TelemetrySettings,
setting: &'static str,
value: String,
) {
let event = ClickhouseEvent::Setting {
setting,
value,
milliseconds_since_first_event: self.milliseconds_since_first_event(),
};
self.report_clickhouse_event(event, telemetry_settings, false)
}
fn milliseconds_since_first_event(&self) -> i64 {
let mut state = self.state.lock();
match state.first_event_datetime {

View file

@ -28,6 +28,7 @@ struct TelemetryState {
app_metadata: AppMetadata,
architecture: &'static str,
clickhouse_events_queue: Vec<ClickhouseEventWrapper>,
flush_clickhouse_events_task: Option<Task<()>>,
log_file: Option<NamedTempFile>,
is_staff: Option<bool>,
first_event_datetime: Option<DateTime<Utc>>,
@ -111,6 +112,11 @@ pub enum ClickhouseEvent {
operation: &'static str,
milliseconds_since_first_event: i64,
},
Setting {
setting: &'static str,
value: String,
milliseconds_since_first_event: i64,
},
}
#[cfg(debug_assertions)]
@ -119,6 +125,12 @@ const MAX_QUEUE_LEN: usize = 1;
#[cfg(not(debug_assertions))]
const MAX_QUEUE_LEN: usize = 50;
#[cfg(debug_assertions)]
const DEBOUNCE_INTERVAL: Duration = Duration::from_secs(1);
#[cfg(not(debug_assertions))]
const DEBOUNCE_INTERVAL: Duration = Duration::from_secs(60 * 5);
impl Telemetry {
pub fn new(client: Arc<dyn HttpClient>, cx: &mut AppContext) -> Arc<Self> {
let release_channel = if cx.has_global::<ReleaseChannel>() {
@ -139,6 +151,7 @@ impl Telemetry {
metrics_id: None,
session_id: None,
clickhouse_events_queue: Default::default(),
flush_clickhouse_events_task: Default::default(),
log_file: None,
is_staff: None,
first_event_datetime: None,
@ -370,6 +383,21 @@ impl Telemetry {
self.report_clickhouse_event(event, telemetry_settings, immediate_flush)
}
pub fn report_setting_event(
self: &Arc<Self>,
telemetry_settings: TelemetrySettings,
setting: &'static str,
value: String,
) {
let event = ClickhouseEvent::Setting {
setting,
value,
milliseconds_since_first_event: self.milliseconds_since_first_event(),
};
self.report_clickhouse_event(event, telemetry_settings, false)
}
fn milliseconds_since_first_event(&self) -> i64 {
let mut state = self.state.lock();
match state.first_event_datetime {
@ -404,6 +432,13 @@ impl Telemetry {
if immediate_flush || state.clickhouse_events_queue.len() >= MAX_QUEUE_LEN {
drop(state);
self.flush_clickhouse_events();
} else {
let this = self.clone();
let executor = self.executor.clone();
state.flush_clickhouse_events_task = Some(self.executor.spawn(async move {
executor.timer(DEBOUNCE_INTERVAL).await;
this.flush_clickhouse_events();
}));
}
}
}
@ -424,6 +459,7 @@ impl Telemetry {
let mut state = self.state.lock();
state.first_event_datetime = None;
let mut events = mem::take(&mut state.clickhouse_events_queue);
state.flush_clickhouse_events_task.take();
drop(state);
let this = self.clone();

1
crates/collab/k8s Symbolic link
View file

@ -0,0 +1 @@
../collab2/k8s

View file

@ -1,4 +0,0 @@
ZED_ENVIRONMENT=production
RUST_LOG=info
INVITE_LINK_PREFIX=https://zed.dev/invites/
DATABASE_MAX_CONNECTIONS=85

View file

@ -1,4 +0,0 @@
ZED_ENVIRONMENT=staging
RUST_LOG=info
INVITE_LINK_PREFIX=https://staging.zed.dev/invites/
DATABASE_MAX_CONNECTIONS=5

View file

@ -1,177 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: ${ZED_KUBE_NAMESPACE}
---
kind: Service
apiVersion: v1
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: collab
annotations:
service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
spec:
type: LoadBalancer
selector:
app: collab
ports:
- name: web
protocol: TCP
port: 443
targetPort: 8080
---
kind: Service
apiVersion: v1
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: pgadmin
annotations:
service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
spec:
type: LoadBalancer
selector:
app: postgrest
ports:
- name: web
protocol: TCP
port: 443
targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: collab
spec:
replicas: 1
selector:
matchLabels:
app: collab
template:
metadata:
labels:
app: collab
annotations:
ad.datadoghq.com/collab.check_names: |
["openmetrics"]
ad.datadoghq.com/collab.init_configs: |
[{}]
ad.datadoghq.com/collab.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:%%port%%/metrics",
"namespace": "collab_${ZED_KUBE_NAMESPACE}",
"metrics": [".*"]
}
]
spec:
containers:
- name: collab
image: "${ZED_IMAGE_ID}"
args:
- serve
ports:
- containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 1
periodSeconds: 1
env:
- name: HTTP_PORT
value: "8080"
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: database
key: url
- name: DATABASE_MAX_CONNECTIONS
value: "${DATABASE_MAX_CONNECTIONS}"
- name: API_TOKEN
valueFrom:
secretKeyRef:
name: api
key: token
- name: LIVE_KIT_SERVER
valueFrom:
secretKeyRef:
name: livekit
key: server
- name: LIVE_KIT_KEY
valueFrom:
secretKeyRef:
name: livekit
key: key
- name: LIVE_KIT_SECRET
valueFrom:
secretKeyRef:
name: livekit
key: secret
- name: INVITE_LINK_PREFIX
value: ${INVITE_LINK_PREFIX}
- name: RUST_BACKTRACE
value: "1"
- name: RUST_LOG
value: ${RUST_LOG}
- name: LOG_JSON
value: "true"
- name: ZED_ENVIRONMENT
value: ${ZED_ENVIRONMENT}
securityContext:
capabilities:
# FIXME - Switch to the more restrictive `PERFMON` capability.
# This capability isn't yet available in a stable version of Debian.
add: ["SYS_ADMIN"]
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: postgrest
spec:
replicas: 1
selector:
matchLabels:
app: postgrest
template:
metadata:
labels:
app: postgrest
spec:
containers:
- name: postgrest
image: "postgrest/postgrest"
ports:
- containerPort: 8080
protocol: TCP
env:
- name: PGRST_SERVER_PORT
value: "8080"
- name: PGRST_DB_URI
valueFrom:
secretKeyRef:
name: database
key: url
- name: PGRST_JWT_SECRET
valueFrom:
secretKeyRef:
name: postgrest
key: jwt_secret

View file

@ -1,21 +0,0 @@
apiVersion: batch/v1
kind: Job
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: ${ZED_MIGRATE_JOB_NAME}
spec:
template:
spec:
restartPolicy: Never
containers:
- name: migrator
imagePullPolicy: Always
image: ${ZED_IMAGE_ID}
args:
- migrate
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: database
key: url

View file

@ -23,25 +23,6 @@ spec:
port: 443
targetPort: 8080
---
kind: Service
apiVersion: v1
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: pgadmin
annotations:
service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
spec:
type: LoadBalancer
selector:
app: postgrest
ports:
- name: web
protocol: TCP
port: 443
targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
@ -138,40 +119,3 @@ spec:
# FIXME - Switch to the more restrictive `PERFMON` capability.
# This capability isn't yet available in a stable version of Debian.
add: ["SYS_ADMIN"]
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: postgrest
spec:
replicas: 1
selector:
matchLabels:
app: postgrest
template:
metadata:
labels:
app: postgrest
spec:
containers:
- name: postgrest
image: "postgrest/postgrest"
ports:
- containerPort: 8080
protocol: TCP
env:
- name: PGRST_SERVER_PORT
value: "8080"
- name: PGRST_DB_URI
valueFrom:
secretKeyRef:
name: database
key: url
- name: PGRST_JWT_SECRET
valueFrom:
secretKeyRef:
name: postgrest
key: jwt_secret

View file

@ -1,4 +1,4 @@
ZED_ENVIRONMENT=preview
ZED_ENVIRONMENT=nightly
RUST_LOG=info
INVITE_LINK_PREFIX=https://zed.dev/invites/
DATABASE_MAX_CONNECTIONS=10

View file

@ -0,0 +1,55 @@
---
kind: Service
apiVersion: v1
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: postgrest
annotations:
service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
spec:
type: LoadBalancer
selector:
app: postgrest
ports:
- name: web
protocol: TCP
port: 443
targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ${ZED_KUBE_NAMESPACE}
name: postgrest
spec:
replicas: 1
selector:
matchLabels:
app: postgrest
template:
metadata:
labels:
app: postgrest
spec:
containers:
- name: postgrest
image: "postgrest/postgrest"
ports:
- containerPort: 8080
protocol: TCP
env:
- name: PGRST_SERVER_PORT
value: "8080"
- name: PGRST_DB_URI
valueFrom:
secretKeyRef:
name: database
key: url
- name: PGRST_JWT_SECRET
valueFrom:
secretKeyRef:
name: postgrest
key: jwt_secret

View file

@ -611,6 +611,10 @@ impl Panel for ChatPanel {
Some(ui::Icon::MessageBubbles)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
Some("Chat Panel")
}
fn toggle_action(&self) -> Box<dyn gpui::Action> {
Box::new(ToggleFocus)
}

View file

@ -2163,18 +2163,33 @@ impl CollabPanel {
.child(
h_stack()
.id(channel_id as usize)
// HACK: This is a dirty hack to help with the positioning of the button container.
//
// We're using a pixel width for the elements but then allowing the contents to
// overflow. This means that the label and facepile will be shown, but will not
// push the button container off the edge of the panel.
.w_px()
.child(Label::new(channel.name.clone()))
.children(face_pile.map(|face_pile| face_pile.render(cx))),
)
.end_slot(
h_stack()
.absolute()
.right_0()
// We're using a negative coordinate for the right anchor to
// counteract the padding of the `ListItem`.
//
// This prevents a gap from showing up between the background
// of this element and the edge of the collab panel.
.right(rems(-0.5))
// HACK: Without this the channel name clips on top of the icons, but I'm not sure why.
.z_index(10)
.bg(cx.theme().colors().panel_background)
.when(is_selected || is_active, |this| {
this.bg(cx.theme().colors().ghost_element_selected)
})
.child(
h_stack()
.px_1()
// The element hover background has a slight transparency to it, so we
// need to apply it to the inner element so that it blends with the solid
// background color of the absolutely-positioned element.
@ -2347,6 +2362,10 @@ impl Panel for CollabPanel {
.then(|| ui::Icon::Collab)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
Some("Collab Panel")
}
fn toggle_action(&self) -> Box<dyn gpui::Action> {
Box::new(ToggleFocus)
}

View file

@ -661,6 +661,10 @@ impl Panel for NotificationPanel {
.then(|| Icon::Bell)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
Some("Notification Panel")
}
fn icon_label(&self, cx: &WindowContext) -> Option<String> {
let count = self.notification_store.read(cx).unread_notification_count();
if count == 0 {

View file

@ -13,7 +13,7 @@ use editor::{
};
use futures::future::try_join_all;
use gpui::{
actions, div, AnyElement, AnyView, AppContext, Context, EventEmitter, FocusHandle,
actions, div, svg, AnyElement, AnyView, AppContext, Context, EventEmitter, FocusHandle,
FocusableView, HighlightStyle, InteractiveElement, IntoElement, Model, ParentElement, Render,
SharedString, Styled, StyledText, Subscription, Task, View, ViewContext, VisualContext,
WeakView, WindowContext,
@ -800,12 +800,20 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock {
h_stack()
.gap_3()
.map(|stack| {
let icon = if diagnostic.severity == DiagnosticSeverity::ERROR {
IconElement::new(Icon::XCircle).color(Color::Error)
} else {
IconElement::new(Icon::ExclamationTriangle).color(Color::Warning)
};
stack.child(icon)
stack.child(
svg()
.size(cx.text_style().font_size)
.flex_none()
.map(|icon| {
if diagnostic.severity == DiagnosticSeverity::ERROR {
icon.path(Icon::XCircle.path())
.text_color(Color::Error.color(cx))
} else {
icon.path(Icon::ExclamationTriangle.path())
.text_color(Color::Warning.color(cx))
}
}),
)
})
.child(
h_stack()
@ -819,7 +827,11 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock {
),
)
.when_some(diagnostic.code.as_ref(), |stack, code| {
stack.child(Label::new(format!("({code})")).color(Color::Muted))
stack.child(
div()
.child(SharedString::from(format!("({code})")))
.text_color(cx.theme().colors().text_muted),
)
}),
),
)
@ -827,7 +839,11 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock {
h_stack()
.gap_1()
.when_some(diagnostic.source.as_ref(), |stack, source| {
stack.child(Label::new(format!("{source}")).color(Color::Muted))
stack.child(
div()
.child(SharedString::from(source.clone()))
.text_color(cx.theme().colors().text_muted),
)
}),
)
.into_any_element()

View file

@ -536,7 +536,7 @@ impl DisplaySnapshot {
// Omit underlines for HINT/INFO diagnostics on 'unnecessary' code.
if severity <= DiagnosticSeverity::WARNING || !chunk.is_unnecessary {
let diagnostic_color =
super::diagnostic_style(severity, true, &editor_style.diagnostic_style);
super::diagnostic_style(severity, true, &editor_style.status);
diagnostic_highlight.underline = Some(UnderlineStyle {
color: Some(diagnostic_color),
thickness: 1.0.into(),

View file

@ -97,7 +97,7 @@ use std::{
pub use sum_tree::Bias;
use sum_tree::TreeMap;
use text::{OffsetUtf16, Rope};
use theme::{ActiveTheme, DiagnosticStyle, PlayerColor, SyntaxTheme, ThemeColors, ThemeSettings};
use theme::{ActiveTheme, PlayerColor, StatusColors, SyntaxTheme, ThemeColors, ThemeSettings};
use ui::{
h_stack, ButtonSize, ButtonStyle, Icon, IconButton, ListItem, ListItemSpacing, Popover, Tooltip,
};
@ -514,7 +514,7 @@ pub struct EditorStyle {
pub text: TextStyle,
pub scrollbar_width: Pixels,
pub syntax: Arc<SyntaxTheme>,
pub diagnostic_style: DiagnosticStyle,
pub status: StatusColors,
pub inlays_style: HighlightStyle,
pub suggestions_style: HighlightStyle,
}
@ -1197,7 +1197,6 @@ impl CompletionsMenu {
.min_w(px(260.))
.max_w(px(640.))
.w(px(500.))
.text_ui()
.overflow_y_scroll()
// Prevent a mouse down on documentation from being propagated to the editor,
// because that would move the cursor.
@ -1420,7 +1419,6 @@ impl CodeActionsMenu {
let colors = cx.theme().colors();
div()
.px_2()
.text_ui()
.text_color(colors.text)
.when(selected, |style| {
style
@ -7657,10 +7655,7 @@ impl Editor {
text: text_style,
scrollbar_width: cx.editor_style.scrollbar_width,
syntax: cx.editor_style.syntax.clone(),
diagnostic_style: cx
.editor_style
.diagnostic_style
.clone(),
status: cx.editor_style.status.clone(),
// todo!("what about the rest of the highlight style parts for inlays and suggestions?")
inlays_style: HighlightStyle {
color: Some(cx.theme().status().hint),
@ -9330,7 +9325,7 @@ impl Render for Editor {
text: text_style,
scrollbar_width: px(12.),
syntax: cx.theme().syntax().clone(),
diagnostic_style: cx.theme().diagnostic_style(),
status: cx.theme().status().clone(),
// todo!("what about the rest of the highlight style parts?")
inlays_style: HighlightStyle {
color: Some(cx.theme().status().hint),
@ -9784,21 +9779,17 @@ pub fn highlight_diagnostic_message(diagnostic: &Diagnostic) -> (SharedString, V
(text_without_backticks.into(), code_ranges)
}
pub fn diagnostic_style(
severity: DiagnosticSeverity,
valid: bool,
style: &DiagnosticStyle,
) -> Hsla {
pub fn diagnostic_style(severity: DiagnosticSeverity, valid: bool, colors: &StatusColors) -> Hsla {
match (severity, valid) {
(DiagnosticSeverity::ERROR, true) => style.error,
(DiagnosticSeverity::ERROR, false) => style.error,
(DiagnosticSeverity::WARNING, true) => style.warning,
(DiagnosticSeverity::WARNING, false) => style.warning,
(DiagnosticSeverity::INFORMATION, true) => style.info,
(DiagnosticSeverity::INFORMATION, false) => style.info,
(DiagnosticSeverity::HINT, true) => style.info,
(DiagnosticSeverity::HINT, false) => style.info,
_ => style.ignored,
(DiagnosticSeverity::ERROR, true) => colors.error,
(DiagnosticSeverity::ERROR, false) => colors.error,
(DiagnosticSeverity::WARNING, true) => colors.warning,
(DiagnosticSeverity::WARNING, false) => colors.warning,
(DiagnosticSeverity::INFORMATION, true) => colors.info,
(DiagnosticSeverity::INFORMATION, false) => colors.info,
(DiagnosticSeverity::HINT, true) => colors.info,
(DiagnosticSeverity::HINT, false) => colors.info,
_ => colors.ignored,
}
}

View file

@ -52,7 +52,7 @@ use std::{
use sum_tree::Bias;
use theme::{ActiveTheme, PlayerColor};
use ui::prelude::*;
use ui::{h_stack, ButtonLike, ButtonStyle, IconButton, Label, Tooltip};
use ui::{h_stack, ButtonLike, ButtonStyle, IconButton, Tooltip};
use util::ResultExt;
use workspace::item::Item;
@ -2305,13 +2305,17 @@ impl EditorElement {
h_stack().gap_3().child(
h_stack()
.gap_2()
.child(Label::new(
.child(
filename
.map(SharedString::from)
.unwrap_or_else(|| "untitled".into()),
))
)
.when_some(parent_path, |then, path| {
then.child(Label::new(path).color(Color::Muted))
then.child(
div().child(path).text_color(
cx.theme().colors().text_muted,
),
)
}),
),
)
@ -2373,8 +2377,6 @@ impl EditorElement {
this.child(div().size_full().bg(gpui::green()))
}
})
// .child("⋯")
// .children(jump_icon) // .p_x(gutter_padding)
};
element.into_any()
}
@ -2811,50 +2813,65 @@ impl Element for EditorElement {
) {
let editor = self.editor.clone();
let mut layout = self.compute_layout(bounds, cx);
let gutter_bounds = Bounds {
origin: bounds.origin,
size: layout.gutter_size,
};
let text_bounds = Bounds {
origin: gutter_bounds.upper_right(),
size: layout.text_size,
};
cx.with_text_style(
Some(gpui::TextStyleRefinement {
font_size: Some(self.style.text.font_size),
..Default::default()
}),
|cx| {
let mut layout = self.compute_layout(bounds, cx);
let gutter_bounds = Bounds {
origin: bounds.origin,
size: layout.gutter_size,
};
let text_bounds = Bounds {
origin: gutter_bounds.upper_right(),
size: layout.text_size,
};
let focus_handle = editor.focus_handle(cx);
let key_context = self.editor.read(cx).key_context(cx);
cx.with_key_dispatch(Some(key_context), Some(focus_handle.clone()), |_, cx| {
self.register_actions(cx);
self.register_key_listeners(cx);
let focus_handle = editor.focus_handle(cx);
let key_context = self.editor.read(cx).key_context(cx);
cx.with_key_dispatch(Some(key_context), Some(focus_handle.clone()), |_, cx| {
self.register_actions(cx);
self.register_key_listeners(cx);
cx.with_content_mask(Some(ContentMask { bounds }), |cx| {
let input_handler = ElementInputHandler::new(bounds, self.editor.clone(), cx);
cx.handle_input(&focus_handle, input_handler);
cx.with_content_mask(Some(ContentMask { bounds }), |cx| {
let input_handler =
ElementInputHandler::new(bounds, self.editor.clone(), cx);
cx.handle_input(&focus_handle, input_handler);
self.paint_background(gutter_bounds, text_bounds, &layout, cx);
if layout.gutter_size.width > Pixels::ZERO {
self.paint_gutter(gutter_bounds, &mut layout, cx);
}
self.paint_text(text_bounds, &mut layout, cx);
self.paint_background(gutter_bounds, text_bounds, &layout, cx);
if layout.gutter_size.width > Pixels::ZERO {
self.paint_gutter(gutter_bounds, &mut layout, cx);
}
self.paint_text(text_bounds, &mut layout, cx);
cx.with_z_index(0, |cx| {
self.paint_mouse_listeners(bounds, gutter_bounds, text_bounds, &layout, cx);
});
if !layout.blocks.is_empty() {
cx.with_z_index(0, |cx| {
cx.with_element_id(Some("editor_blocks"), |cx| {
self.paint_blocks(bounds, &mut layout, cx);
cx.with_z_index(0, |cx| {
self.paint_mouse_listeners(
bounds,
gutter_bounds,
text_bounds,
&layout,
cx,
);
});
})
}
if !layout.blocks.is_empty() {
cx.with_z_index(0, |cx| {
cx.with_element_id(Some("editor_blocks"), |cx| {
self.paint_blocks(bounds, &mut layout, cx);
});
})
}
cx.with_z_index(1, |cx| {
self.paint_overlays(text_bounds, &mut layout, cx);
});
cx.with_z_index(1, |cx| {
self.paint_overlays(text_bounds, &mut layout, cx);
});
cx.with_z_index(2, |cx| self.paint_scrollbar(bounds, &mut layout, cx));
});
})
cx.with_z_index(2, |cx| self.paint_scrollbar(bounds, &mut layout, cx));
});
})
},
);
}
}

View file

@ -6,12 +6,13 @@ use crate::{
};
use futures::FutureExt;
use gpui::{
actions, div, px, AnyElement, CursorStyle, InteractiveElement, IntoElement, Model, MouseButton,
ParentElement, Pixels, SharedString, Size, StatefulInteractiveElement, Styled, Task,
ViewContext, WeakView,
actions, div, px, AnyElement, CursorStyle, Hsla, InteractiveElement, IntoElement, Model,
MouseButton, ParentElement, Pixels, SharedString, Size, StatefulInteractiveElement, Styled,
Task, ViewContext, WeakView,
};
use language::{markdown, Bias, DiagnosticEntry, Language, LanguageRegistry, ParsedMarkdown};
use lsp::DiagnosticSeverity;
use project::{HoverBlock, HoverBlockKind, InlayHintLabelPart, Project};
use settings::Settings;
use std::{ops::Range, sync::Arc, time::Duration};
@ -477,7 +478,6 @@ impl InfoPopover {
div()
.id("info_popover")
.elevation_2(cx)
.text_ui()
.p_2()
.overflow_y_scroll()
.max_w(max_size.width)
@ -514,16 +514,50 @@ impl DiagnosticPopover {
None => self.local_diagnostic.diagnostic.message.clone(),
};
let container_bg = crate::diagnostic_style(
self.local_diagnostic.diagnostic.severity,
true,
&style.diagnostic_style,
);
struct DiagnosticColors {
pub text: Hsla,
pub background: Hsla,
pub border: Hsla,
}
let diagnostic_colors = match self.local_diagnostic.diagnostic.severity {
DiagnosticSeverity::ERROR => DiagnosticColors {
text: style.status.error,
background: style.status.error_background,
border: style.status.error_border,
},
DiagnosticSeverity::WARNING => DiagnosticColors {
text: style.status.warning,
background: style.status.warning_background,
border: style.status.warning_border,
},
DiagnosticSeverity::INFORMATION => DiagnosticColors {
text: style.status.info,
background: style.status.info_background,
border: style.status.info_border,
},
DiagnosticSeverity::HINT => DiagnosticColors {
text: style.status.hint,
background: style.status.hint_background,
border: style.status.hint_border,
},
_ => DiagnosticColors {
text: style.status.ignored,
background: style.status.ignored_background,
border: style.status.ignored_border,
},
};
div()
.id("diagnostic")
.overflow_y_scroll()
.bg(container_bg)
.px_2()
.py_1()
.bg(diagnostic_colors.background)
.text_color(diagnostic_colors.text)
.border_1()
.border_color(diagnostic_colors.border)
.rounded_md()
.max_w(max_size.width)
.max_h(max_size.height)
.cursor(CursorStyle::PointingHand)

View file

@ -149,7 +149,9 @@ impl Element for Overlay {
desired.origin.y = limits.origin.y;
}
cx.with_element_offset(desired.origin - bounds.origin, |cx| {
let mut offset = cx.element_offset() + desired.origin - bounds.origin;
offset = point(offset.x.round(), offset.y.round());
cx.with_absolute_element_offset(offset, |cx| {
cx.break_content_mask(|cx| {
for child in &mut self.children {
child.paint(cx);

View file

@ -1612,6 +1612,10 @@ impl Panel for ProjectPanel {
Some(ui::Icon::FileTree)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
Some("Project Panel")
}
fn toggle_action(&self) -> Box<dyn Action> {
Box::new(ToggleFocus)
}

View file

@ -419,6 +419,10 @@ impl Panel for TerminalPanel {
Some(Icon::Terminal)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
Some("Terminal Panel")
}
fn toggle_action(&self) -> Box<dyn gpui::Action> {
Box::new(ToggleFocus)
}

View file

@ -126,19 +126,47 @@ pub(crate) fn one_dark() -> Theme {
},
status: StatusColors {
conflict: yellow,
conflict_background: yellow,
conflict_border: yellow,
created: green,
created_background: green,
created_border: green,
deleted: red,
deleted_background: red,
deleted_border: red,
error: red,
error_background: red,
error_border: red,
hidden: gray,
hidden_background: gray,
hidden_border: gray,
hint: blue,
hint_background: blue,
hint_border: blue,
ignored: gray,
ignored_background: gray,
ignored_border: gray,
info: blue,
info_background: blue,
info_border: blue,
modified: yellow,
modified_background: yellow,
modified_border: yellow,
predictive: gray,
predictive_background: gray,
predictive_border: gray,
renamed: blue,
renamed_background: blue,
renamed_border: blue,
success: green,
success_background: green,
success_border: green,
unreachable: gray,
unreachable_background: gray,
unreachable_border: gray,
warning: yellow,
warning_background: yellow,
warning_border: yellow,
},
player: PlayerColors::dark(),
syntax: Arc::new(SyntaxTheme {

View file

@ -9,45 +9,73 @@ pub struct StatusColors {
/// Indicates some kind of conflict, like a file changed on disk while it was open, or
/// merge conflicts in a Git repository.
pub conflict: Hsla,
pub conflict_background: Hsla,
pub conflict_border: Hsla,
/// Indicates something new, like a new file added to a Git repository.
pub created: Hsla,
pub created_background: Hsla,
pub created_border: Hsla,
/// Indicates that something no longer exists, like a deleted file.
pub deleted: Hsla,
pub deleted_background: Hsla,
pub deleted_border: Hsla,
/// Indicates a system error, a failed operation or a diagnostic error.
pub error: Hsla,
pub error_background: Hsla,
pub error_border: Hsla,
/// Represents a hidden status, such as a file being hidden in a file tree.
pub hidden: Hsla,
pub hidden_background: Hsla,
pub hidden_border: Hsla,
/// Indicates a hint or some kind of additional information.
pub hint: Hsla,
pub hint_background: Hsla,
pub hint_border: Hsla,
/// Indicates that something is deliberately ignored, such as a file or operation ignored by Git.
pub ignored: Hsla,
pub ignored_background: Hsla,
pub ignored_border: Hsla,
/// Represents informational status updates or messages.
pub info: Hsla,
pub info_background: Hsla,
pub info_border: Hsla,
/// Indicates a changed or altered status, like a file that has been edited.
pub modified: Hsla,
pub modified_background: Hsla,
pub modified_border: Hsla,
/// Indicates something that is predicted, like automatic code completion, or generated code.
pub predictive: Hsla,
pub predictive_background: Hsla,
pub predictive_border: Hsla,
/// Represents a renamed status, such as a file that has been renamed.
pub renamed: Hsla,
pub renamed_background: Hsla,
pub renamed_border: Hsla,
/// Indicates a successful operation or task completion.
pub success: Hsla,
pub success_background: Hsla,
pub success_border: Hsla,
/// Indicates some kind of unreachable status, like a block of code that can never be reached.
pub unreachable: Hsla,
pub unreachable_background: Hsla,
pub unreachable_border: Hsla,
/// Represents a warning status, like an operation that is about to fail.
pub warning: Hsla,
pub warning_background: Hsla,
pub warning_border: Hsla,
}
impl Default for StatusColors {
@ -78,38 +106,94 @@ impl StatusColors {
pub fn dark() -> Self {
Self {
conflict: red().dark().step_9(),
conflict_background: red().dark().step_9(),
conflict_border: red().dark().step_9(),
created: grass().dark().step_9(),
created_background: grass().dark().step_9(),
created_border: grass().dark().step_9(),
deleted: red().dark().step_9(),
deleted_background: red().dark().step_9(),
deleted_border: red().dark().step_9(),
error: red().dark().step_9(),
error_background: red().dark().step_9(),
error_border: red().dark().step_9(),
hidden: neutral().dark().step_9(),
hidden_background: neutral().dark().step_9(),
hidden_border: neutral().dark().step_9(),
hint: blue().dark().step_9(),
hint_background: blue().dark().step_9(),
hint_border: blue().dark().step_9(),
ignored: neutral().dark().step_9(),
ignored_background: neutral().dark().step_9(),
ignored_border: neutral().dark().step_9(),
info: blue().dark().step_9(),
info_background: blue().dark().step_9(),
info_border: blue().dark().step_9(),
modified: yellow().dark().step_9(),
modified_background: yellow().dark().step_9(),
modified_border: yellow().dark().step_9(),
predictive: neutral().dark_alpha().step_9(),
predictive_background: neutral().dark_alpha().step_9(),
predictive_border: neutral().dark_alpha().step_9(),
renamed: blue().dark().step_9(),
renamed_background: blue().dark().step_9(),
renamed_border: blue().dark().step_9(),
success: grass().dark().step_9(),
success_background: grass().dark().step_9(),
success_border: grass().dark().step_9(),
unreachable: neutral().dark().step_10(),
unreachable_background: neutral().dark().step_10(),
unreachable_border: neutral().dark().step_10(),
warning: yellow().dark().step_9(),
warning_background: yellow().dark().step_9(),
warning_border: yellow().dark().step_9(),
}
}
pub fn light() -> Self {
Self {
conflict: red().light().step_9(),
conflict_background: red().light().step_9(),
conflict_border: red().light().step_9(),
created: grass().light().step_9(),
created_background: grass().light().step_9(),
created_border: grass().light().step_9(),
deleted: red().light().step_9(),
deleted_background: red().light().step_9(),
deleted_border: red().light().step_9(),
error: red().light().step_9(),
error_background: red().light().step_9(),
error_border: red().light().step_9(),
hidden: neutral().light().step_9(),
hidden_background: neutral().light().step_9(),
hidden_border: neutral().light().step_9(),
hint: blue().light().step_9(),
hint_background: blue().light().step_9(),
hint_border: blue().light().step_9(),
ignored: neutral().light().step_9(),
ignored_background: neutral().light().step_9(),
ignored_border: neutral().light().step_9(),
info: blue().light().step_9(),
info_background: blue().light().step_9(),
info_border: blue().light().step_9(),
modified: yellow().light().step_9(),
modified_background: yellow().light().step_9(),
modified_border: yellow().light().step_9(),
predictive: neutral().light_alpha().step_9(),
predictive_background: neutral().light_alpha().step_9(),
predictive_border: neutral().light_alpha().step_9(),
renamed: blue().light().step_9(),
renamed_background: blue().light().step_9(),
renamed_border: blue().light().step_9(),
success: grass().light().step_9(),
success_background: grass().light().step_9(),
success_border: grass().light().step_9(),
unreachable: neutral().light().step_10(),
unreachable_background: neutral().light().step_10(),
unreachable_border: neutral().light().step_10(),
warning: yellow().light().step_9(),
warning_background: yellow().light().step_9(),
warning_border: yellow().light().step_9(),
}
}

View file

@ -134,18 +134,6 @@ impl Theme {
self.syntax().color(name)
}
/// Returns the [`DiagnosticStyle`] for the theme.
#[inline(always)]
pub fn diagnostic_style(&self) -> DiagnosticStyle {
DiagnosticStyle {
error: self.status().error,
warning: self.status().warning,
info: self.status().info,
hint: self.status().info,
ignored: self.status().ignored,
}
}
/// Returns the [`Appearance`] for the theme.
#[inline(always)]
pub fn appearance(&self) -> Appearance {
@ -153,15 +141,6 @@ impl Theme {
}
}
#[derive(Clone, Debug, Default)]
pub struct DiagnosticStyle {
pub error: Hsla,
pub warning: Hsla,
pub info: Hsla,
pub hint: Hsla,
pub ignored: Hsla,
}
pub fn color_alpha(color: Hsla, alpha: f32) -> Hsla {
let mut color = color;
color.a = alpha;

View file

@ -96,19 +96,47 @@ pub fn andromeda() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xfee56dff).into()),
conflict_background: Some(rgba(0x5c5015ff).into()),
conflict_border: Some(rgba(0x796b26ff).into()),
created: Some(rgba(0x96df72ff).into()),
created_background: Some(rgba(0x194618ff).into()),
created_border: Some(rgba(0x306129ff).into()),
deleted: Some(rgba(0xf82872ff).into()),
deleted_background: Some(rgba(0x55051bff).into()),
deleted_border: Some(rgba(0x720a2bff).into()),
error: Some(rgba(0xf82872ff).into()),
error_background: Some(rgba(0x55051bff).into()),
error_border: Some(rgba(0x720a2bff).into()),
hidden: Some(rgba(0x6b6b73ff).into()),
hint: Some(rgba(0x11a793ff).into()),
hidden_background: Some(rgba(0x262a33ff).into()),
hidden_border: Some(rgba(0x292d37ff).into()),
hint: Some(rgba(0x618399ff).into()),
hint_background: Some(rgba(0x122420ff).into()),
hint_border: Some(rgba(0x183a34ff).into()),
ignored: Some(rgba(0xaca8aeff).into()),
ignored_background: Some(rgba(0x262a33ff).into()),
ignored_border: Some(rgba(0x2b2f39ff).into()),
info: Some(rgba(0x11a793ff).into()),
info_background: Some(rgba(0x122420ff).into()),
info_border: Some(rgba(0x183a34ff).into()),
modified: Some(rgba(0xfee56dff).into()),
modified_background: Some(rgba(0x5c5015ff).into()),
modified_border: Some(rgba(0x796b26ff).into()),
predictive: Some(rgba(0x96df72ff).into()),
predictive_background: Some(rgba(0x194618ff).into()),
predictive_border: Some(rgba(0x306129ff).into()),
renamed: Some(rgba(0x11a793ff).into()),
renamed_background: Some(rgba(0x122420ff).into()),
renamed_border: Some(rgba(0x183a34ff).into()),
success: Some(rgba(0x96df72ff).into()),
success_background: Some(rgba(0x194618ff).into()),
success_border: Some(rgba(0x306129ff).into()),
unreachable: Some(rgba(0xaca8aeff).into()),
unreachable_background: Some(rgba(0x262a33ff).into()),
unreachable_border: Some(rgba(0x2b2f39ff).into()),
warning: Some(rgba(0xfee56dff).into()),
warning_background: Some(rgba(0x5c5015ff).into()),
warning_border: Some(rgba(0x796b26ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -97,19 +97,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa59810ff).into()),
conflict_background: Some(rgba(0xf0e9d1ff).into()),
conflict_border: Some(rgba(0xe3d8adff).into()),
created: Some(rgba(0x7d9728ff).into()),
created_background: Some(rgba(0xe6e9d3ff).into()),
created_border: Some(rgba(0xd2d8b1ff).into()),
deleted: Some(rgba(0xba6337ff).into()),
deleted_background: Some(rgba(0xf6ded4ff).into()),
deleted_border: Some(rgba(0xedc5b3ff).into()),
error: Some(rgba(0xba6337ff).into()),
error_background: Some(rgba(0xf6ded4ff).into()),
error_border: Some(rgba(0xedc5b3ff).into()),
hidden: Some(rgba(0x767463ff).into()),
hint: Some(rgba(0x38a166ff).into()),
hidden_background: Some(rgba(0xc5c4b9ff).into()),
hidden_border: Some(rgba(0xadac9fff).into()),
hint: Some(rgba(0x768962ff).into()),
hint_background: Some(rgba(0xd9ecdfff).into()),
hint_border: Some(rgba(0xbbddc6ff).into()),
ignored: Some(rgba(0x61604fff).into()),
ignored_background: Some(rgba(0xc5c4b9ff).into()),
ignored_border: Some(rgba(0x969585ff).into()),
info: Some(rgba(0x38a166ff).into()),
info_background: Some(rgba(0xd9ecdfff).into()),
info_border: Some(rgba(0xbbddc6ff).into()),
modified: Some(rgba(0xa59810ff).into()),
modified_background: Some(rgba(0xf0e9d1ff).into()),
modified_border: Some(rgba(0xe3d8adff).into()),
predictive: Some(rgba(0x7d9728ff).into()),
predictive_background: Some(rgba(0xe6e9d3ff).into()),
predictive_border: Some(rgba(0xd2d8b1ff).into()),
renamed: Some(rgba(0x38a166ff).into()),
renamed_background: Some(rgba(0xd9ecdfff).into()),
renamed_border: Some(rgba(0xbbddc6ff).into()),
success: Some(rgba(0x7d9728ff).into()),
success_background: Some(rgba(0xe6e9d3ff).into()),
success_border: Some(rgba(0xd2d8b1ff).into()),
unreachable: Some(rgba(0x61604fff).into()),
unreachable_background: Some(rgba(0xc5c4b9ff).into()),
unreachable_border: Some(rgba(0x969585ff).into()),
warning: Some(rgba(0xa59810ff).into()),
warning_background: Some(rgba(0xf0e9d1ff).into()),
warning_border: Some(rgba(0xe3d8adff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -534,19 +562,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xc38419ff).into()),
conflict_background: Some(rgba(0x371d0dff).into()),
conflict_border: Some(rgba(0x4f2f12ff).into()),
created: Some(rgba(0x7b9727ff).into()),
created_background: Some(rgba(0x1d2110ff).into()),
created_border: Some(rgba(0x2e3516ff).into()),
deleted: Some(rgba(0xf22d40ff).into()),
deleted_background: Some(rgba(0x550512ff).into()),
deleted_border: Some(rgba(0x710c1bff).into()),
error: Some(rgba(0xf22d40ff).into()),
error_background: Some(rgba(0x550512ff).into()),
error_border: Some(rgba(0x710c1bff).into()),
hidden: Some(rgba(0x8e8683ff).into()),
hint: Some(rgba(0x417ee6ff).into()),
hidden_background: Some(rgba(0x443c39ff).into()),
hidden_border: Some(rgba(0x554e4bff).into()),
hint: Some(rgba(0xa87187ff).into()),
hint_background: Some(rgba(0x0f1d3dff).into()),
hint_border: Some(rgba(0x192e5bff).into()),
ignored: Some(rgba(0xa79f9dff).into()),
ignored_background: Some(rgba(0x443c39ff).into()),
ignored_border: Some(rgba(0x665f5cff).into()),
info: Some(rgba(0x417ee6ff).into()),
info_background: Some(rgba(0x0f1d3dff).into()),
info_border: Some(rgba(0x192e5bff).into()),
modified: Some(rgba(0xc38419ff).into()),
modified_background: Some(rgba(0x371d0dff).into()),
modified_border: Some(rgba(0x4f2f12ff).into()),
predictive: Some(rgba(0x7b9727ff).into()),
predictive_background: Some(rgba(0x1d2110ff).into()),
predictive_border: Some(rgba(0x2e3516ff).into()),
renamed: Some(rgba(0x417ee6ff).into()),
renamed_background: Some(rgba(0x0f1d3dff).into()),
renamed_border: Some(rgba(0x192e5bff).into()),
success: Some(rgba(0x7b9727ff).into()),
success_background: Some(rgba(0x1d2110ff).into()),
success_border: Some(rgba(0x2e3516ff).into()),
unreachable: Some(rgba(0xa79f9dff).into()),
unreachable_background: Some(rgba(0x443c39ff).into()),
unreachable_border: Some(rgba(0x665f5cff).into()),
warning: Some(rgba(0xc38419ff).into()),
warning_background: Some(rgba(0x371d0dff).into()),
warning_border: Some(rgba(0x4f2f12ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -971,19 +1027,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa07e3cff).into()),
conflict_background: Some(rgba(0xeee4d5ff).into()),
conflict_border: Some(rgba(0xdfcfb6ff).into()),
created: Some(rgba(0x499963ff).into()),
created_background: Some(rgba(0xdaeadeff).into()),
created_border: Some(rgba(0xbedac5ff).into()),
deleted: Some(rgba(0xb1623aff).into()),
deleted_background: Some(rgba(0xf3ded4ff).into()),
deleted_border: Some(rgba(0xe8c5b4ff).into()),
error: Some(rgba(0xb1623aff).into()),
error_background: Some(rgba(0xf3ded4ff).into()),
error_border: Some(rgba(0xe8c5b4ff).into()),
hidden: Some(rgba(0x68766dff).into()),
hint: Some(rgba(0x488c90ff).into()),
hidden_background: Some(rgba(0xbcc5bfff).into()),
hidden_border: Some(rgba(0xa3ada6ff).into()),
hint: Some(rgba(0x66847cff).into()),
hint_background: Some(rgba(0xdae7e8ff).into()),
hint_border: Some(rgba(0xbed4d6ff).into()),
ignored: Some(rgba(0x546259ff).into()),
ignored_background: Some(rgba(0xbcc5bfff).into()),
ignored_border: Some(rgba(0x8b968eff).into()),
info: Some(rgba(0x488c90ff).into()),
info_background: Some(rgba(0xdae7e8ff).into()),
info_border: Some(rgba(0xbed4d6ff).into()),
modified: Some(rgba(0xa07e3cff).into()),
modified_background: Some(rgba(0xeee4d5ff).into()),
modified_border: Some(rgba(0xdfcfb6ff).into()),
predictive: Some(rgba(0x499963ff).into()),
predictive_background: Some(rgba(0xdaeadeff).into()),
predictive_border: Some(rgba(0xbedac5ff).into()),
renamed: Some(rgba(0x488c90ff).into()),
renamed_background: Some(rgba(0xdae7e8ff).into()),
renamed_border: Some(rgba(0xbed4d6ff).into()),
success: Some(rgba(0x499963ff).into()),
success_background: Some(rgba(0xdaeadeff).into()),
success_border: Some(rgba(0xbedac5ff).into()),
unreachable: Some(rgba(0x546259ff).into()),
unreachable_background: Some(rgba(0xbcc5bfff).into()),
unreachable_border: Some(rgba(0x8b968eff).into()),
warning: Some(rgba(0xa07e3cff).into()),
warning_background: Some(rgba(0xeee4d5ff).into()),
warning_border: Some(rgba(0xdfcfb6ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -1408,19 +1492,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa06e3bff).into()),
conflict_background: Some(rgba(0x231a12ff).into()),
conflict_border: Some(rgba(0x392a1aff).into()),
created: Some(rgba(0x2c9292ff).into()),
created_background: Some(rgba(0x132020ff).into()),
created_border: Some(rgba(0x1a3434ff).into()),
deleted: Some(rgba(0xbe4678ff).into()),
deleted_background: Some(rgba(0x28151cff).into()),
deleted_border: Some(rgba(0x421f2dff).into()),
error: Some(rgba(0xbe4678ff).into()),
error_background: Some(rgba(0x28151cff).into()),
error_border: Some(rgba(0x421f2dff).into()),
hidden: Some(rgba(0x756f7eff).into()),
hint: Some(rgba(0x576ddaff).into()),
hidden_background: Some(rgba(0x3a353fff).into()),
hidden_border: Some(rgba(0x48434fff).into()),
hint: Some(rgba(0x716998ff).into()),
hint_background: Some(rgba(0x161a36ff).into()),
hint_border: Some(rgba(0x222953ff).into()),
ignored: Some(rgba(0x898591ff).into()),
ignored_background: Some(rgba(0x3a353fff).into()),
ignored_border: Some(rgba(0x56505eff).into()),
info: Some(rgba(0x576ddaff).into()),
info_background: Some(rgba(0x161a36ff).into()),
info_border: Some(rgba(0x222953ff).into()),
modified: Some(rgba(0xa06e3bff).into()),
modified_background: Some(rgba(0x231a12ff).into()),
modified_border: Some(rgba(0x392a1aff).into()),
predictive: Some(rgba(0x2c9292ff).into()),
predictive_background: Some(rgba(0x132020ff).into()),
predictive_border: Some(rgba(0x1a3434ff).into()),
renamed: Some(rgba(0x576ddaff).into()),
renamed_background: Some(rgba(0x161a36ff).into()),
renamed_border: Some(rgba(0x222953ff).into()),
success: Some(rgba(0x2c9292ff).into()),
success_background: Some(rgba(0x132020ff).into()),
success_border: Some(rgba(0x1a3434ff).into()),
unreachable: Some(rgba(0x898591ff).into()),
unreachable_background: Some(rgba(0x3a353fff).into()),
unreachable_border: Some(rgba(0x56505eff).into()),
warning: Some(rgba(0xa06e3bff).into()),
warning_background: Some(rgba(0x231a12ff).into()),
warning_border: Some(rgba(0x392a1aff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -1845,19 +1957,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa59810ff).into()),
conflict_background: Some(rgba(0x25210dff).into()),
conflict_border: Some(rgba(0x3b3612ff).into()),
created: Some(rgba(0x7d9727ff).into()),
created_background: Some(rgba(0x1e2110ff).into()),
created_border: Some(rgba(0x2f3516ff).into()),
deleted: Some(rgba(0xba6237ff).into()),
deleted_background: Some(rgba(0x2b1811ff).into()),
deleted_border: Some(rgba(0x442619ff).into()),
error: Some(rgba(0xba6237ff).into()),
error_background: Some(rgba(0x2b1811ff).into()),
error_border: Some(rgba(0x442619ff).into()),
hidden: Some(rgba(0x7d7c6aff).into()),
hint: Some(rgba(0x37a166ff).into()),
hidden_background: Some(rgba(0x424136ff).into()),
hidden_border: Some(rgba(0x504f41ff).into()),
hint: Some(rgba(0x70825bff).into()),
hint_background: Some(rgba(0x142319ff).into()),
hint_border: Some(rgba(0x1c3927ff).into()),
ignored: Some(rgba(0x91907fff).into()),
ignored_background: Some(rgba(0x424136ff).into()),
ignored_border: Some(rgba(0x5d5c4cff).into()),
info: Some(rgba(0x37a166ff).into()),
info_background: Some(rgba(0x142319ff).into()),
info_border: Some(rgba(0x1c3927ff).into()),
modified: Some(rgba(0xa59810ff).into()),
modified_background: Some(rgba(0x25210dff).into()),
modified_border: Some(rgba(0x3b3612ff).into()),
predictive: Some(rgba(0x7d9727ff).into()),
predictive_background: Some(rgba(0x1e2110ff).into()),
predictive_border: Some(rgba(0x2f3516ff).into()),
renamed: Some(rgba(0x37a166ff).into()),
renamed_background: Some(rgba(0x142319ff).into()),
renamed_border: Some(rgba(0x1c3927ff).into()),
success: Some(rgba(0x7d9727ff).into()),
success_background: Some(rgba(0x1e2110ff).into()),
success_border: Some(rgba(0x2f3516ff).into()),
unreachable: Some(rgba(0x91907fff).into()),
unreachable_background: Some(rgba(0x424136ff).into()),
unreachable_border: Some(rgba(0x5d5c4cff).into()),
warning: Some(rgba(0xa59810ff).into()),
warning_background: Some(rgba(0x25210dff).into()),
warning_border: Some(rgba(0x3b3612ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -2282,19 +2422,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xc08b31ff).into()),
conflict_background: Some(rgba(0x311e11ff).into()),
conflict_border: Some(rgba(0x4b3218ff).into()),
created: Some(rgba(0xac973aff).into()),
created_background: Some(rgba(0x252113ff).into()),
created_border: Some(rgba(0x3d351bff).into()),
deleted: Some(rgba(0xc94923ff).into()),
deleted_background: Some(rgba(0x3c120dff).into()),
deleted_border: Some(rgba(0x551c13ff).into()),
error: Some(rgba(0xc94923ff).into()),
error_background: Some(rgba(0x3c120dff).into()),
error_border: Some(rgba(0x551c13ff).into()),
hidden: Some(rgba(0x7e849eff).into()),
hint: Some(rgba(0x3e8fd0ff).into()),
hidden_background: Some(rgba(0x3e4769ff).into()),
hidden_border: Some(rgba(0x4d5577ff).into()),
hint: Some(rgba(0x6d82a6ff).into()),
hint_background: Some(rgba(0x161f2bff).into()),
hint_border: Some(rgba(0x203348ff).into()),
ignored: Some(rgba(0x959bb2ff).into()),
ignored_background: Some(rgba(0x3e4769ff).into()),
ignored_border: Some(rgba(0x5c6485ff).into()),
info: Some(rgba(0x3e8fd0ff).into()),
info_background: Some(rgba(0x161f2bff).into()),
info_border: Some(rgba(0x203348ff).into()),
modified: Some(rgba(0xc08b31ff).into()),
modified_background: Some(rgba(0x311e11ff).into()),
modified_border: Some(rgba(0x4b3218ff).into()),
predictive: Some(rgba(0xac973aff).into()),
predictive_background: Some(rgba(0x252113ff).into()),
predictive_border: Some(rgba(0x3d351bff).into()),
renamed: Some(rgba(0x3e8fd0ff).into()),
renamed_background: Some(rgba(0x161f2bff).into()),
renamed_border: Some(rgba(0x203348ff).into()),
success: Some(rgba(0xac973aff).into()),
success_background: Some(rgba(0x252113ff).into()),
success_border: Some(rgba(0x3d351bff).into()),
unreachable: Some(rgba(0x959bb2ff).into()),
unreachable_background: Some(rgba(0x3e4769ff).into()),
unreachable_border: Some(rgba(0x5c6485ff).into()),
warning: Some(rgba(0xc08b31ff).into()),
warning_background: Some(rgba(0x311e11ff).into()),
warning_border: Some(rgba(0x4b3218ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -2719,19 +2887,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xc08b31ff).into()),
conflict_background: Some(rgba(0xf6e6d4ff).into()),
conflict_border: Some(rgba(0xeed4b3ff).into()),
created: Some(rgba(0xac973aff).into()),
created_background: Some(rgba(0xf1e9d6ff).into()),
created_border: Some(rgba(0xe4d8b7ff).into()),
deleted: Some(rgba(0xc94a23ff).into()),
deleted_background: Some(rgba(0xfcdad0ff).into()),
deleted_border: Some(rgba(0xf6beabff).into()),
error: Some(rgba(0xc94a23ff).into()),
error_background: Some(rgba(0xfcdad0ff).into()),
error_border: Some(rgba(0xf6beabff).into()),
hidden: Some(rgba(0x767d9aff).into()),
hint: Some(rgba(0x3f8fd0ff).into()),
hidden_background: Some(rgba(0xc2c6d9ff).into()),
hidden_border: Some(rgba(0xaeb3c7ff).into()),
hint: Some(rgba(0x7087b2ff).into()),
hint_background: Some(rgba(0xdde7f6ff).into()),
hint_border: Some(rgba(0xc2d5efff).into()),
ignored: Some(rgba(0x606889ff).into()),
ignored_background: Some(rgba(0xc2c6d9ff).into()),
ignored_border: Some(rgba(0x9a9fb6ff).into()),
info: Some(rgba(0x3f8fd0ff).into()),
info_background: Some(rgba(0xdde7f6ff).into()),
info_border: Some(rgba(0xc2d5efff).into()),
modified: Some(rgba(0xc08b31ff).into()),
modified_background: Some(rgba(0xf6e6d4ff).into()),
modified_border: Some(rgba(0xeed4b3ff).into()),
predictive: Some(rgba(0xac973aff).into()),
predictive_background: Some(rgba(0xf1e9d6ff).into()),
predictive_border: Some(rgba(0xe4d8b7ff).into()),
renamed: Some(rgba(0x3f8fd0ff).into()),
renamed_background: Some(rgba(0xdde7f6ff).into()),
renamed_border: Some(rgba(0xc2d5efff).into()),
success: Some(rgba(0xac973aff).into()),
success_background: Some(rgba(0xf1e9d6ff).into()),
success_border: Some(rgba(0xe4d8b7ff).into()),
unreachable: Some(rgba(0x606889ff).into()),
unreachable_background: Some(rgba(0xc2c6d9ff).into()),
unreachable_border: Some(rgba(0x9a9fb6ff).into()),
warning: Some(rgba(0xc08b31ff).into()),
warning_background: Some(rgba(0xf6e6d4ff).into()),
warning_border: Some(rgba(0xeed4b3ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -3156,19 +3352,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xae9515ff).into()),
conflict_background: Some(rgba(0x2a200eff).into()),
conflict_border: Some(rgba(0x413513ff).into()),
created: Some(rgba(0x60ac3aff).into()),
created_background: Some(rgba(0x1a2413ff).into()),
created_border: Some(rgba(0x273c1bff).into()),
deleted: Some(rgba(0xd73837ff).into()),
deleted_background: Some(rgba(0x450d11ff).into()),
deleted_border: Some(rgba(0x5f1519ff).into()),
error: Some(rgba(0xd73837ff).into()),
error_background: Some(rgba(0x450d11ff).into()),
error_border: Some(rgba(0x5f1519ff).into()),
hidden: Some(rgba(0x8f8b77ff).into()),
hint: Some(rgba(0x6684e0ff).into()),
hidden_background: Some(rgba(0x45433bff).into()),
hidden_border: Some(rgba(0x58564bff).into()),
hint: Some(rgba(0xb17272ff).into()),
hint_background: Some(rgba(0x171e39ff).into()),
hint_border: Some(rgba(0x263056ff).into()),
ignored: Some(rgba(0xa4a08bff).into()),
ignored_background: Some(rgba(0x45433bff).into()),
ignored_border: Some(rgba(0x6c695cff).into()),
info: Some(rgba(0x6684e0ff).into()),
info_background: Some(rgba(0x171e39ff).into()),
info_border: Some(rgba(0x263056ff).into()),
modified: Some(rgba(0xae9515ff).into()),
modified_background: Some(rgba(0x2a200eff).into()),
modified_border: Some(rgba(0x413513ff).into()),
predictive: Some(rgba(0x60ac3aff).into()),
predictive_background: Some(rgba(0x1a2413ff).into()),
predictive_border: Some(rgba(0x273c1bff).into()),
renamed: Some(rgba(0x6684e0ff).into()),
renamed_background: Some(rgba(0x171e39ff).into()),
renamed_border: Some(rgba(0x263056ff).into()),
success: Some(rgba(0x60ac3aff).into()),
success_background: Some(rgba(0x1a2413ff).into()),
success_border: Some(rgba(0x273c1bff).into()),
unreachable: Some(rgba(0xa4a08bff).into()),
unreachable_background: Some(rgba(0x45433bff).into()),
unreachable_border: Some(rgba(0x6c695cff).into()),
warning: Some(rgba(0xae9515ff).into()),
warning_background: Some(rgba(0x2a200eff).into()),
warning_border: Some(rgba(0x413513ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -3593,19 +3817,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0x98981cff).into()),
conflict_background: Some(rgba(0x22210fff).into()),
conflict_border: Some(rgba(0x373614ff).into()),
created: Some(rgba(0x2ba32aff).into()),
created_background: Some(rgba(0x142310ff).into()),
created_border: Some(rgba(0x1b3917ff).into()),
deleted: Some(rgba(0xe61c3cff).into()),
deleted_background: Some(rgba(0x500412ff).into()),
deleted_border: Some(rgba(0x6b071aff).into()),
error: Some(rgba(0xe61c3cff).into()),
error_background: Some(rgba(0x500412ff).into()),
error_border: Some(rgba(0x6b071aff).into()),
hidden: Some(rgba(0x778f77ff).into()),
hint: Some(rgba(0x3e62f4ff).into()),
hidden_background: Some(rgba(0x3b453bff).into()),
hidden_border: Some(rgba(0x4b584bff).into()),
hint: Some(rgba(0x008b9fff).into()),
hint_background: Some(rgba(0x061949ff).into()),
hint_border: Some(rgba(0x102668ff).into()),
ignored: Some(rgba(0x8ba48bff).into()),
ignored_background: Some(rgba(0x3b453bff).into()),
ignored_border: Some(rgba(0x5c6c5cff).into()),
info: Some(rgba(0x3e62f4ff).into()),
info_background: Some(rgba(0x061949ff).into()),
info_border: Some(rgba(0x102668ff).into()),
modified: Some(rgba(0x98981cff).into()),
modified_background: Some(rgba(0x22210fff).into()),
modified_border: Some(rgba(0x373614ff).into()),
predictive: Some(rgba(0x2ba32aff).into()),
predictive_background: Some(rgba(0x142310ff).into()),
predictive_border: Some(rgba(0x1b3917ff).into()),
renamed: Some(rgba(0x3e62f4ff).into()),
renamed_background: Some(rgba(0x061949ff).into()),
renamed_border: Some(rgba(0x102668ff).into()),
success: Some(rgba(0x2ba32aff).into()),
success_background: Some(rgba(0x142310ff).into()),
success_border: Some(rgba(0x1b3917ff).into()),
unreachable: Some(rgba(0x8ba48bff).into()),
unreachable_background: Some(rgba(0x3b453bff).into()),
unreachable_border: Some(rgba(0x5c6c5cff).into()),
warning: Some(rgba(0x98981cff).into()),
warning_background: Some(rgba(0x22210fff).into()),
warning_border: Some(rgba(0x373614ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -4030,19 +4282,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa06e3cff).into()),
conflict_background: Some(rgba(0xeee0d5ff).into()),
conflict_border: Some(rgba(0xe0c9b5ff).into()),
created: Some(rgba(0x2c9292ff).into()),
created_background: Some(rgba(0xd7e9e8ff).into()),
created_border: Some(rgba(0xb9d7d6ff).into()),
deleted: Some(rgba(0xbe4778ff).into()),
deleted_background: Some(rgba(0xf5dae2ff).into()),
deleted_border: Some(rgba(0xecbecdff).into()),
error: Some(rgba(0xbe4778ff).into()),
error_background: Some(rgba(0xf5dae2ff).into()),
error_border: Some(rgba(0xecbecdff).into()),
hidden: Some(rgba(0x6e6876ff).into()),
hint: Some(rgba(0x586ddaff).into()),
hidden_background: Some(rgba(0xbfbcc5ff).into()),
hidden_border: Some(rgba(0xa7a3adff).into()),
hint: Some(rgba(0x786e9dff).into()),
hint_background: Some(rgba(0xe1e0f9ff).into()),
hint_border: Some(rgba(0xc9c8f3ff).into()),
ignored: Some(rgba(0x5a5462ff).into()),
ignored_background: Some(rgba(0xbfbcc5ff).into()),
ignored_border: Some(rgba(0x8f8b96ff).into()),
info: Some(rgba(0x586ddaff).into()),
info_background: Some(rgba(0xe1e0f9ff).into()),
info_border: Some(rgba(0xc9c8f3ff).into()),
modified: Some(rgba(0xa06e3cff).into()),
modified_background: Some(rgba(0xeee0d5ff).into()),
modified_border: Some(rgba(0xe0c9b5ff).into()),
predictive: Some(rgba(0x2c9292ff).into()),
predictive_background: Some(rgba(0xd7e9e8ff).into()),
predictive_border: Some(rgba(0xb9d7d6ff).into()),
renamed: Some(rgba(0x586ddaff).into()),
renamed_background: Some(rgba(0xe1e0f9ff).into()),
renamed_border: Some(rgba(0xc9c8f3ff).into()),
success: Some(rgba(0x2c9292ff).into()),
success_background: Some(rgba(0xd7e9e8ff).into()),
success_border: Some(rgba(0xb9d7d6ff).into()),
unreachable: Some(rgba(0x5a5462ff).into()),
unreachable_background: Some(rgba(0xbfbcc5ff).into()),
unreachable_border: Some(rgba(0x8f8b96ff).into()),
warning: Some(rgba(0xa06e3cff).into()),
warning_background: Some(rgba(0xeee0d5ff).into()),
warning_border: Some(rgba(0xe0c9b5ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -4467,19 +4747,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa06e3bff).into()),
conflict_background: Some(rgba(0x231a12ff).into()),
conflict_border: Some(rgba(0x392a1aff).into()),
created: Some(rgba(0x4b8b8bff).into()),
created_background: Some(rgba(0x161f1fff).into()),
created_border: Some(rgba(0x203232ff).into()),
deleted: Some(rgba(0xca4949ff).into()),
deleted_background: Some(rgba(0x361414ff).into()),
deleted_border: Some(rgba(0x501e1eff).into()),
error: Some(rgba(0xca4949ff).into()),
error_background: Some(rgba(0x361414ff).into()),
error_border: Some(rgba(0x501e1eff).into()),
hidden: Some(rgba(0x756e6eff).into()),
hint: Some(rgba(0x7272caff).into()),
hidden_background: Some(rgba(0x3b3535ff).into()),
hidden_border: Some(rgba(0x494242ff).into()),
hint: Some(rgba(0x8a647aff).into()),
hint_background: Some(rgba(0x1c1b29ff).into()),
hint_border: Some(rgba(0x2c2b45ff).into()),
ignored: Some(rgba(0x898383ff).into()),
ignored_background: Some(rgba(0x3b3535ff).into()),
ignored_border: Some(rgba(0x564e4eff).into()),
info: Some(rgba(0x7272caff).into()),
info_background: Some(rgba(0x1c1b29ff).into()),
info_border: Some(rgba(0x2c2b45ff).into()),
modified: Some(rgba(0xa06e3bff).into()),
modified_background: Some(rgba(0x231a12ff).into()),
modified_border: Some(rgba(0x392a1aff).into()),
predictive: Some(rgba(0x4b8b8bff).into()),
predictive_background: Some(rgba(0x161f1fff).into()),
predictive_border: Some(rgba(0x203232ff).into()),
renamed: Some(rgba(0x7272caff).into()),
renamed_background: Some(rgba(0x1c1b29ff).into()),
renamed_border: Some(rgba(0x2c2b45ff).into()),
success: Some(rgba(0x4b8b8bff).into()),
success_background: Some(rgba(0x161f1fff).into()),
success_border: Some(rgba(0x203232ff).into()),
unreachable: Some(rgba(0x898383ff).into()),
unreachable_background: Some(rgba(0x3b3535ff).into()),
unreachable_border: Some(rgba(0x564e4eff).into()),
warning: Some(rgba(0xa06e3bff).into()),
warning_background: Some(rgba(0x231a12ff).into()),
warning_border: Some(rgba(0x392a1aff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -4904,19 +5212,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xbb8a36ff).into()),
conflict_background: Some(rgba(0x2d1e12ff).into()),
conflict_border: Some(rgba(0x463219ff).into()),
created: Some(rgba(0x918b3bff).into()),
created_background: Some(rgba(0x211f12ff).into()),
created_border: Some(rgba(0x34321bff).into()),
deleted: Some(rgba(0xca402cff).into()),
deleted_background: Some(rgba(0x3c110eff).into()),
deleted_border: Some(rgba(0x551a15ff).into()),
error: Some(rgba(0xca402cff).into()),
error_background: Some(rgba(0x3c110eff).into()),
error_border: Some(rgba(0x551a15ff).into()),
hidden: Some(rgba(0x908190ff).into()),
hint: Some(rgba(0x526aebff).into()),
hidden_background: Some(rgba(0x433a43ff).into()),
hidden_border: Some(rgba(0x554a55ff).into()),
hint: Some(rgba(0x8d70a8ff).into()),
hint_background: Some(rgba(0x0e1a43ff).into()),
hint_border: Some(rgba(0x1a2961ff).into()),
ignored: Some(rgba(0xa99aa9ff).into()),
ignored_background: Some(rgba(0x433a43ff).into()),
ignored_border: Some(rgba(0x675b67ff).into()),
info: Some(rgba(0x526aebff).into()),
info_background: Some(rgba(0x0e1a43ff).into()),
info_border: Some(rgba(0x1a2961ff).into()),
modified: Some(rgba(0xbb8a36ff).into()),
modified_background: Some(rgba(0x2d1e12ff).into()),
modified_border: Some(rgba(0x463219ff).into()),
predictive: Some(rgba(0x918b3bff).into()),
predictive_background: Some(rgba(0x211f12ff).into()),
predictive_border: Some(rgba(0x34321bff).into()),
renamed: Some(rgba(0x526aebff).into()),
renamed_background: Some(rgba(0x0e1a43ff).into()),
renamed_border: Some(rgba(0x1a2961ff).into()),
success: Some(rgba(0x918b3bff).into()),
success_background: Some(rgba(0x211f12ff).into()),
success_border: Some(rgba(0x34321bff).into()),
unreachable: Some(rgba(0xa99aa9ff).into()),
unreachable_background: Some(rgba(0x433a43ff).into()),
unreachable_border: Some(rgba(0x675b67ff).into()),
warning: Some(rgba(0xbb8a36ff).into()),
warning_background: Some(rgba(0x2d1e12ff).into()),
warning_border: Some(rgba(0x463219ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -5341,19 +5677,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0x8a8a11ff).into()),
conflict_background: Some(rgba(0x201f0cff).into()),
conflict_border: Some(rgba(0x333211ff).into()),
created: Some(rgba(0x568c3bff).into()),
created_background: Some(rgba(0x171f12ff).into()),
created_border: Some(rgba(0x23321bff).into()),
deleted: Some(rgba(0xd22e72ff).into()),
deleted_background: Some(rgba(0x3a101bff).into()),
deleted_border: Some(rgba(0x55162bff).into()),
error: Some(rgba(0xd22e72ff).into()),
error_background: Some(rgba(0x3a101bff).into()),
error_border: Some(rgba(0x55162bff).into()),
hidden: Some(rgba(0x698c9eff).into()),
hint: Some(rgba(0x277fadff).into()),
hidden_background: Some(rgba(0x33444dff).into()),
hidden_border: Some(rgba(0x415763ff).into()),
hint: Some(rgba(0x52809aff).into()),
hint_background: Some(rgba(0x131d24ff).into()),
hint_border: Some(rgba(0x1a2f3cff).into()),
ignored: Some(rgba(0x7ca0b3ff).into()),
ignored_background: Some(rgba(0x33444dff).into()),
ignored_border: Some(rgba(0x4f6b78ff).into()),
info: Some(rgba(0x277fadff).into()),
info_background: Some(rgba(0x131d24ff).into()),
info_border: Some(rgba(0x1a2f3cff).into()),
modified: Some(rgba(0x8a8a11ff).into()),
modified_background: Some(rgba(0x201f0cff).into()),
modified_border: Some(rgba(0x333211ff).into()),
predictive: Some(rgba(0x568c3bff).into()),
predictive_background: Some(rgba(0x171f12ff).into()),
predictive_border: Some(rgba(0x23321bff).into()),
renamed: Some(rgba(0x277fadff).into()),
renamed_background: Some(rgba(0x131d24ff).into()),
renamed_border: Some(rgba(0x1a2f3cff).into()),
success: Some(rgba(0x568c3bff).into()),
success_background: Some(rgba(0x171f12ff).into()),
success_border: Some(rgba(0x23321bff).into()),
unreachable: Some(rgba(0x7ca0b3ff).into()),
unreachable_background: Some(rgba(0x33444dff).into()),
unreachable_border: Some(rgba(0x4f6b78ff).into()),
warning: Some(rgba(0x8a8a11ff).into()),
warning_background: Some(rgba(0x201f0cff).into()),
warning_border: Some(rgba(0x333211ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -5778,19 +6142,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xc3841aff).into()),
conflict_background: Some(rgba(0xf8e5d1ff).into()),
conflict_border: Some(rgba(0xf0d1adff).into()),
created: Some(rgba(0x7b9728ff).into()),
created_background: Some(rgba(0xe5e9d3ff).into()),
created_border: Some(rgba(0xd1d8b1ff).into()),
deleted: Some(rgba(0xf22e41ff).into()),
deleted_background: Some(rgba(0xffdad5ff).into()),
deleted_border: Some(rgba(0xffbdb6ff).into()),
error: Some(rgba(0xf22e41ff).into()),
error_background: Some(rgba(0xffdad5ff).into()),
error_border: Some(rgba(0xffbdb6ff).into()),
hidden: Some(rgba(0x847c79ff).into()),
hint: Some(rgba(0x417ee6ff).into()),
hidden_background: Some(rgba(0xcdc8c6ff).into()),
hidden_border: Some(rgba(0xbcb6b4ff).into()),
hint: Some(rgba(0xa67287ff).into()),
hint_background: Some(rgba(0xdfe3fbff).into()),
hint_border: Some(rgba(0xc6cef7ff).into()),
ignored: Some(rgba(0x6a6360ff).into()),
ignored_background: Some(rgba(0xcdc8c6ff).into()),
ignored_border: Some(rgba(0xaaa3a1ff).into()),
info: Some(rgba(0x417ee6ff).into()),
info_background: Some(rgba(0xdfe3fbff).into()),
info_border: Some(rgba(0xc6cef7ff).into()),
modified: Some(rgba(0xc3841aff).into()),
modified_background: Some(rgba(0xf8e5d1ff).into()),
modified_border: Some(rgba(0xf0d1adff).into()),
predictive: Some(rgba(0x7b9728ff).into()),
predictive_background: Some(rgba(0xe5e9d3ff).into()),
predictive_border: Some(rgba(0xd1d8b1ff).into()),
renamed: Some(rgba(0x417ee6ff).into()),
renamed_background: Some(rgba(0xdfe3fbff).into()),
renamed_border: Some(rgba(0xc6cef7ff).into()),
success: Some(rgba(0x7b9728ff).into()),
success_background: Some(rgba(0xe5e9d3ff).into()),
success_border: Some(rgba(0xd1d8b1ff).into()),
unreachable: Some(rgba(0x6a6360ff).into()),
unreachable_background: Some(rgba(0xcdc8c6ff).into()),
unreachable_border: Some(rgba(0xaaa3a1ff).into()),
warning: Some(rgba(0xc3841aff).into()),
warning_background: Some(rgba(0xf8e5d1ff).into()),
warning_border: Some(rgba(0xf0d1adff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -6215,19 +6607,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xae9515ff).into()),
conflict_background: Some(rgba(0xf2e8d1ff).into()),
conflict_border: Some(rgba(0xe7d7aeff).into()),
created: Some(rgba(0x61ac3aff).into()),
created_background: Some(rgba(0xe0eed6ff).into()),
created_border: Some(rgba(0xc9e1b7ff).into()),
deleted: Some(rgba(0xd73838ff).into()),
deleted_background: Some(rgba(0xffd9d4ff).into()),
deleted_border: Some(rgba(0xfcbcb2ff).into()),
error: Some(rgba(0xd73838ff).into()),
error_background: Some(rgba(0xffd9d4ff).into()),
error_border: Some(rgba(0xfcbcb2ff).into()),
hidden: Some(rgba(0x878471ff).into()),
hint: Some(rgba(0x6784e0ff).into()),
hidden_background: Some(rgba(0xcecab4ff).into()),
hidden_border: Some(rgba(0xbbb7a1ff).into()),
hint: Some(rgba(0xb37979ff).into()),
hint_background: Some(rgba(0xe3e5faff).into()),
hint_border: Some(rgba(0xcdd1f5ff).into()),
ignored: Some(rgba(0x706d5fff).into()),
ignored_background: Some(rgba(0xcecab4ff).into()),
ignored_border: Some(rgba(0xa8a48eff).into()),
info: Some(rgba(0x6784e0ff).into()),
info_background: Some(rgba(0xe3e5faff).into()),
info_border: Some(rgba(0xcdd1f5ff).into()),
modified: Some(rgba(0xae9515ff).into()),
modified_background: Some(rgba(0xf2e8d1ff).into()),
modified_border: Some(rgba(0xe7d7aeff).into()),
predictive: Some(rgba(0x61ac3aff).into()),
predictive_background: Some(rgba(0xe0eed6ff).into()),
predictive_border: Some(rgba(0xc9e1b7ff).into()),
renamed: Some(rgba(0x6784e0ff).into()),
renamed_background: Some(rgba(0xe3e5faff).into()),
renamed_border: Some(rgba(0xcdd1f5ff).into()),
success: Some(rgba(0x61ac3aff).into()),
success_background: Some(rgba(0xe0eed6ff).into()),
success_border: Some(rgba(0xc9e1b7ff).into()),
unreachable: Some(rgba(0x706d5fff).into()),
unreachable_background: Some(rgba(0xcecab4ff).into()),
unreachable_border: Some(rgba(0xa8a48eff).into()),
warning: Some(rgba(0xae9515ff).into()),
warning_background: Some(rgba(0xf2e8d1ff).into()),
warning_border: Some(rgba(0xe7d7aeff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -6652,19 +7072,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa06e3cff).into()),
conflict_background: Some(rgba(0xeee0d5ff).into()),
conflict_border: Some(rgba(0xe0c9b5ff).into()),
created: Some(rgba(0x4c8b8bff).into()),
created_background: Some(rgba(0xdae7e7ff).into()),
created_border: Some(rgba(0xbfd4d4ff).into()),
deleted: Some(rgba(0xca4a4aff).into()),
deleted_background: Some(rgba(0xfadbd7ff).into()),
deleted_border: Some(rgba(0xf4bfbaff).into()),
error: Some(rgba(0xca4a4aff).into()),
error_background: Some(rgba(0xfadbd7ff).into()),
error_border: Some(rgba(0xf4bfbaff).into()),
hidden: Some(rgba(0x6e6666ff).into()),
hint: Some(rgba(0x7372caff).into()),
hidden_background: Some(rgba(0xc1bbbbff).into()),
hidden_border: Some(rgba(0xa8a2a2ff).into()),
hint: Some(rgba(0x916a80ff).into()),
hint_background: Some(rgba(0xe4e1f5ff).into()),
hint_border: Some(rgba(0xcecaecff).into()),
ignored: Some(rgba(0x5a5252ff).into()),
ignored_background: Some(rgba(0xc1bbbbff).into()),
ignored_border: Some(rgba(0x8e8989ff).into()),
info: Some(rgba(0x7372caff).into()),
info_background: Some(rgba(0xe4e1f5ff).into()),
info_border: Some(rgba(0xcecaecff).into()),
modified: Some(rgba(0xa06e3cff).into()),
modified_background: Some(rgba(0xeee0d5ff).into()),
modified_border: Some(rgba(0xe0c9b5ff).into()),
predictive: Some(rgba(0x4c8b8bff).into()),
predictive_background: Some(rgba(0xdae7e7ff).into()),
predictive_border: Some(rgba(0xbfd4d4ff).into()),
renamed: Some(rgba(0x7372caff).into()),
renamed_background: Some(rgba(0xe4e1f5ff).into()),
renamed_border: Some(rgba(0xcecaecff).into()),
success: Some(rgba(0x4c8b8bff).into()),
success_background: Some(rgba(0xdae7e7ff).into()),
success_border: Some(rgba(0xbfd4d4ff).into()),
unreachable: Some(rgba(0x5a5252ff).into()),
unreachable_background: Some(rgba(0xc1bbbbff).into()),
unreachable_border: Some(rgba(0x8e8989ff).into()),
warning: Some(rgba(0xa06e3cff).into()),
warning_background: Some(rgba(0xeee0d5ff).into()),
warning_border: Some(rgba(0xe0c9b5ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -7089,19 +7537,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0x98981dff).into()),
conflict_background: Some(rgba(0xede9d2ff).into()),
conflict_border: Some(rgba(0xddd8afff).into()),
created: Some(rgba(0x2ba32bff).into()),
created_background: Some(rgba(0xd9edd4ff).into()),
created_border: Some(rgba(0xbbdeb2ff).into()),
deleted: Some(rgba(0xe61c3dff).into()),
deleted_background: Some(rgba(0xffd8d4ff).into()),
deleted_border: Some(rgba(0xffb9b4ff).into()),
error: Some(rgba(0xe61c3dff).into()),
error_background: Some(rgba(0xffd8d4ff).into()),
error_border: Some(rgba(0xffb9b4ff).into()),
hidden: Some(rgba(0x718771ff).into()),
hint: Some(rgba(0x3f62f4ff).into()),
hidden_background: Some(rgba(0xb4ceb4ff).into()),
hidden_border: Some(rgba(0xa1bba1ff).into()),
hint: Some(rgba(0x008fa1ff).into()),
hint_background: Some(rgba(0xe1ddfeff).into()),
hint_border: Some(rgba(0xc9c4fdff).into()),
ignored: Some(rgba(0x5f705fff).into()),
ignored_background: Some(rgba(0xb4ceb4ff).into()),
ignored_border: Some(rgba(0x8ea88eff).into()),
info: Some(rgba(0x3f62f4ff).into()),
info_background: Some(rgba(0xe1ddfeff).into()),
info_border: Some(rgba(0xc9c4fdff).into()),
modified: Some(rgba(0x98981dff).into()),
modified_background: Some(rgba(0xede9d2ff).into()),
modified_border: Some(rgba(0xddd8afff).into()),
predictive: Some(rgba(0x2ba32bff).into()),
predictive_background: Some(rgba(0xd9edd4ff).into()),
predictive_border: Some(rgba(0xbbdeb2ff).into()),
renamed: Some(rgba(0x3f62f4ff).into()),
renamed_background: Some(rgba(0xe1ddfeff).into()),
renamed_border: Some(rgba(0xc9c4fdff).into()),
success: Some(rgba(0x2ba32bff).into()),
success_background: Some(rgba(0xd9edd4ff).into()),
success_border: Some(rgba(0xbbdeb2ff).into()),
unreachable: Some(rgba(0x5f705fff).into()),
unreachable_background: Some(rgba(0xb4ceb4ff).into()),
unreachable_border: Some(rgba(0x8ea88eff).into()),
warning: Some(rgba(0x98981dff).into()),
warning_background: Some(rgba(0xede9d2ff).into()),
warning_border: Some(rgba(0xddd8afff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -7526,19 +8002,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa07e3bff).into()),
conflict_background: Some(rgba(0x231d12ff).into()),
conflict_border: Some(rgba(0x392e1aff).into()),
created: Some(rgba(0x489963ff).into()),
created_background: Some(rgba(0x162119ff).into()),
created_border: Some(rgba(0x203626ff).into()),
deleted: Some(rgba(0xb16139ff).into()),
deleted_background: Some(rgba(0x261811ff).into()),
deleted_border: Some(rgba(0x3f2619ff).into()),
error: Some(rgba(0xb16139ff).into()),
error_background: Some(rgba(0x261811ff).into()),
error_border: Some(rgba(0x3f2619ff).into()),
hidden: Some(rgba(0x6f7e74ff).into()),
hint: Some(rgba(0x478c90ff).into()),
hidden_background: Some(rgba(0x353f39ff).into()),
hidden_border: Some(rgba(0x434f47ff).into()),
hint: Some(rgba(0x607e76ff).into()),
hint_background: Some(rgba(0x151f20ff).into()),
hint_border: Some(rgba(0x1f3233ff).into()),
ignored: Some(rgba(0x859188ff).into()),
ignored_background: Some(rgba(0x353f39ff).into()),
ignored_border: Some(rgba(0x505e55ff).into()),
info: Some(rgba(0x478c90ff).into()),
info_background: Some(rgba(0x151f20ff).into()),
info_border: Some(rgba(0x1f3233ff).into()),
modified: Some(rgba(0xa07e3bff).into()),
modified_background: Some(rgba(0x231d12ff).into()),
modified_border: Some(rgba(0x392e1aff).into()),
predictive: Some(rgba(0x489963ff).into()),
predictive_background: Some(rgba(0x162119ff).into()),
predictive_border: Some(rgba(0x203626ff).into()),
renamed: Some(rgba(0x478c90ff).into()),
renamed_background: Some(rgba(0x151f20ff).into()),
renamed_border: Some(rgba(0x1f3233ff).into()),
success: Some(rgba(0x489963ff).into()),
success_background: Some(rgba(0x162119ff).into()),
success_border: Some(rgba(0x203626ff).into()),
unreachable: Some(rgba(0x859188ff).into()),
unreachable_background: Some(rgba(0x353f39ff).into()),
unreachable_border: Some(rgba(0x505e55ff).into()),
warning: Some(rgba(0xa07e3bff).into()),
warning_background: Some(rgba(0x231d12ff).into()),
warning_border: Some(rgba(0x392e1aff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -7963,19 +8467,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xbb8a36ff).into()),
conflict_background: Some(rgba(0xf5e6d5ff).into()),
conflict_border: Some(rgba(0xebd3b5ff).into()),
created: Some(rgba(0x918b3cff).into()),
created_background: Some(rgba(0xeae6d6ff).into()),
created_border: Some(rgba(0xd9d4b6ff).into()),
deleted: Some(rgba(0xca412cff).into()),
deleted_background: Some(rgba(0xfcd9d1ff).into()),
deleted_border: Some(rgba(0xf7bcaeff).into()),
error: Some(rgba(0xca412cff).into()),
error_background: Some(rgba(0xfcd9d1ff).into()),
error_border: Some(rgba(0xf7bcaeff).into()),
hidden: Some(rgba(0x857785ff).into()),
hint: Some(rgba(0x526aebff).into()),
hidden_background: Some(rgba(0xc6b8c6ff).into()),
hidden_border: Some(rgba(0xbaaabaff).into()),
hint: Some(rgba(0x8c70a6ff).into()),
hint_background: Some(rgba(0xe2dffcff).into()),
hint_border: Some(rgba(0xcac7faff).into()),
ignored: Some(rgba(0x6b5e6bff).into()),
ignored_background: Some(rgba(0xc6b8c6ff).into()),
ignored_border: Some(rgba(0xad9dadff).into()),
info: Some(rgba(0x526aebff).into()),
info_background: Some(rgba(0xe2dffcff).into()),
info_border: Some(rgba(0xcac7faff).into()),
modified: Some(rgba(0xbb8a36ff).into()),
modified_background: Some(rgba(0xf5e6d5ff).into()),
modified_border: Some(rgba(0xebd3b5ff).into()),
predictive: Some(rgba(0x918b3cff).into()),
predictive_background: Some(rgba(0xeae6d6ff).into()),
predictive_border: Some(rgba(0xd9d4b6ff).into()),
renamed: Some(rgba(0x526aebff).into()),
renamed_background: Some(rgba(0xe2dffcff).into()),
renamed_border: Some(rgba(0xcac7faff).into()),
success: Some(rgba(0x918b3cff).into()),
success_background: Some(rgba(0xeae6d6ff).into()),
success_border: Some(rgba(0xd9d4b6ff).into()),
unreachable: Some(rgba(0x6b5e6bff).into()),
unreachable_background: Some(rgba(0xc6b8c6ff).into()),
unreachable_border: Some(rgba(0xad9dadff).into()),
warning: Some(rgba(0xbb8a36ff).into()),
warning_background: Some(rgba(0xf5e6d5ff).into()),
warning_border: Some(rgba(0xebd3b5ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -8400,19 +8932,47 @@ pub fn atelier() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0x8a8a11ff).into()),
conflict_background: Some(rgba(0xeae6d0ff).into()),
conflict_border: Some(rgba(0xd8d3abff).into()),
created: Some(rgba(0x578c3cff).into()),
created_background: Some(rgba(0xdde7d5ff).into()),
created_border: Some(rgba(0xc2d5b6ff).into()),
deleted: Some(rgba(0xd22f72ff).into()),
deleted_background: Some(rgba(0xfbd8e1ff).into()),
deleted_border: Some(rgba(0xf6bacaff).into()),
error: Some(rgba(0xd22f72ff).into()),
error_background: Some(rgba(0xfbd8e1ff).into()),
error_border: Some(rgba(0xf6bacaff).into()),
hidden: Some(rgba(0x628496ff).into()),
hint: Some(rgba(0x277fadff).into()),
hidden_background: Some(rgba(0xa6cadcff).into()),
hidden_border: Some(rgba(0x93b7c9ff).into()),
hint: Some(rgba(0x5a87a0ff).into()),
hint_background: Some(rgba(0xd8e4eeff).into()),
hint_border: Some(rgba(0xbacfe1ff).into()),
ignored: Some(rgba(0x526f7dff).into()),
ignored_background: Some(rgba(0xa6cadcff).into()),
ignored_border: Some(rgba(0x80a4b6ff).into()),
info: Some(rgba(0x277fadff).into()),
info_background: Some(rgba(0xd8e4eeff).into()),
info_border: Some(rgba(0xbacfe1ff).into()),
modified: Some(rgba(0x8a8a11ff).into()),
modified_background: Some(rgba(0xeae6d0ff).into()),
modified_border: Some(rgba(0xd8d3abff).into()),
predictive: Some(rgba(0x578c3cff).into()),
predictive_background: Some(rgba(0xdde7d5ff).into()),
predictive_border: Some(rgba(0xc2d5b6ff).into()),
renamed: Some(rgba(0x277fadff).into()),
renamed_background: Some(rgba(0xd8e4eeff).into()),
renamed_border: Some(rgba(0xbacfe1ff).into()),
success: Some(rgba(0x578c3cff).into()),
success_background: Some(rgba(0xdde7d5ff).into()),
success_border: Some(rgba(0xc2d5b6ff).into()),
unreachable: Some(rgba(0x526f7dff).into()),
unreachable_background: Some(rgba(0xa6cadcff).into()),
unreachable_border: Some(rgba(0x80a4b6ff).into()),
warning: Some(rgba(0x8a8a11ff).into()),
warning_background: Some(rgba(0xeae6d0ff).into()),
warning_border: Some(rgba(0xd8d3abff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -97,19 +97,47 @@ pub fn ayu() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xfeb454ff).into()),
conflict_background: Some(rgba(0x572916ff).into()),
conflict_border: Some(rgba(0x754221ff).into()),
created: Some(rgba(0xaad84cff).into()),
created_background: Some(rgba(0x294113ff).into()),
created_border: Some(rgba(0x405c1dff).into()),
deleted: Some(rgba(0xef7178ff).into()),
deleted_background: Some(rgba(0x48171cff).into()),
deleted_border: Some(rgba(0x66272dff).into()),
error: Some(rgba(0xef7178ff).into()),
error_background: Some(rgba(0x48171cff).into()),
error_border: Some(rgba(0x66272dff).into()),
hidden: Some(rgba(0x696a6aff).into()),
hint: Some(rgba(0x5ac2feff).into()),
hidden_background: Some(rgba(0x313337ff).into()),
hidden_border: Some(rgba(0x383a3eff).into()),
hint: Some(rgba(0x638c81ff).into()),
hint_background: Some(rgba(0x0d304fff).into()),
hint_border: Some(rgba(0x1b4a6eff).into()),
ignored: Some(rgba(0x8a8986ff).into()),
ignored_background: Some(rgba(0x313337ff).into()),
ignored_border: Some(rgba(0x3f4043ff).into()),
info: Some(rgba(0x5ac2feff).into()),
info_background: Some(rgba(0x0d304fff).into()),
info_border: Some(rgba(0x1b4a6eff).into()),
modified: Some(rgba(0xfeb454ff).into()),
modified_background: Some(rgba(0x572916ff).into()),
modified_border: Some(rgba(0x754221ff).into()),
predictive: Some(rgba(0xaad84cff).into()),
predictive_background: Some(rgba(0x294113ff).into()),
predictive_border: Some(rgba(0x405c1dff).into()),
renamed: Some(rgba(0x5ac2feff).into()),
renamed_background: Some(rgba(0x0d304fff).into()),
renamed_border: Some(rgba(0x1b4a6eff).into()),
success: Some(rgba(0xaad84cff).into()),
success_background: Some(rgba(0x294113ff).into()),
success_border: Some(rgba(0x405c1dff).into()),
unreachable: Some(rgba(0x8a8986ff).into()),
unreachable_background: Some(rgba(0x313337ff).into()),
unreachable_border: Some(rgba(0x3f4043ff).into()),
warning: Some(rgba(0xfeb454ff).into()),
warning_background: Some(rgba(0x572916ff).into()),
warning_border: Some(rgba(0x754221ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -513,19 +541,47 @@ pub fn ayu() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xf1ae4aff).into()),
conflict_background: Some(rgba(0xffeedaff).into()),
conflict_border: Some(rgba(0xffe1beff).into()),
created: Some(rgba(0x86b305ff).into()),
created_background: Some(rgba(0xe9efd2ff).into()),
created_border: Some(rgba(0xd7e3aeff).into()),
deleted: Some(rgba(0xef7271ff).into()),
deleted_background: Some(rgba(0xffe3e1ff).into()),
deleted_border: Some(rgba(0xffcdcaff).into()),
error: Some(rgba(0xef7271ff).into()),
error_background: Some(rgba(0xffe3e1ff).into()),
error_border: Some(rgba(0xffcdcaff).into()),
hidden: Some(rgba(0xa9acaeff).into()),
hint: Some(rgba(0x3b9ee5ff).into()),
hidden_background: Some(rgba(0xdcdddeff).into()),
hidden_border: Some(rgba(0xd5d6d8ff).into()),
hint: Some(rgba(0x8ca7c2ff).into()),
hint_background: Some(rgba(0xdeebfaff).into()),
hint_border: Some(rgba(0xc4daf6ff).into()),
ignored: Some(rgba(0x8c8f93ff).into()),
ignored_background: Some(rgba(0xdcdddeff).into()),
ignored_border: Some(rgba(0xcfd1d2ff).into()),
info: Some(rgba(0x3b9ee5ff).into()),
info_background: Some(rgba(0xdeebfaff).into()),
info_border: Some(rgba(0xc4daf6ff).into()),
modified: Some(rgba(0xf1ae4aff).into()),
modified_background: Some(rgba(0xffeedaff).into()),
modified_border: Some(rgba(0xffe1beff).into()),
predictive: Some(rgba(0x86b305ff).into()),
predictive_background: Some(rgba(0xe9efd2ff).into()),
predictive_border: Some(rgba(0xd7e3aeff).into()),
renamed: Some(rgba(0x3b9ee5ff).into()),
renamed_background: Some(rgba(0xdeebfaff).into()),
renamed_border: Some(rgba(0xc4daf6ff).into()),
success: Some(rgba(0x86b305ff).into()),
success_background: Some(rgba(0xe9efd2ff).into()),
success_border: Some(rgba(0xd7e3aeff).into()),
unreachable: Some(rgba(0x8c8f93ff).into()),
unreachable_background: Some(rgba(0xdcdddeff).into()),
unreachable_border: Some(rgba(0xcfd1d2ff).into()),
warning: Some(rgba(0xf1ae4aff).into()),
warning_background: Some(rgba(0xffeedaff).into()),
warning_border: Some(rgba(0xffe1beff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -929,19 +985,47 @@ pub fn ayu() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xfed073ff).into()),
conflict_background: Some(rgba(0x584018ff).into()),
conflict_border: Some(rgba(0x765a29ff).into()),
created: Some(rgba(0xd5fe80ff).into()),
created_background: Some(rgba(0x426118ff).into()),
created_border: Some(rgba(0x5d7e2cff).into()),
deleted: Some(rgba(0xf18779ff).into()),
deleted_background: Some(rgba(0x481b1cff).into()),
deleted_border: Some(rgba(0x662e2dff).into()),
error: Some(rgba(0xf18779ff).into()),
error_background: Some(rgba(0x481b1cff).into()),
error_border: Some(rgba(0x662e2dff).into()),
hidden: Some(rgba(0x7b7d7fff).into()),
hint: Some(rgba(0x73cffeff).into()),
hidden_background: Some(rgba(0x464a52ff).into()),
hidden_border: Some(rgba(0x4d5058ff).into()),
hint: Some(rgba(0x7399a3ff).into()),
hint_background: Some(rgba(0x123a50ff).into()),
hint_border: Some(rgba(0x24556fff).into()),
ignored: Some(rgba(0x9a9a98ff).into()),
ignored_background: Some(rgba(0x464a52ff).into()),
ignored_border: Some(rgba(0x53565dff).into()),
info: Some(rgba(0x73cffeff).into()),
info_background: Some(rgba(0x123a50ff).into()),
info_border: Some(rgba(0x24556fff).into()),
modified: Some(rgba(0xfed073ff).into()),
modified_background: Some(rgba(0x584018ff).into()),
modified_border: Some(rgba(0x765a29ff).into()),
predictive: Some(rgba(0xd5fe80ff).into()),
predictive_background: Some(rgba(0x426118ff).into()),
predictive_border: Some(rgba(0x5d7e2cff).into()),
renamed: Some(rgba(0x73cffeff).into()),
renamed_background: Some(rgba(0x123a50ff).into()),
renamed_border: Some(rgba(0x24556fff).into()),
success: Some(rgba(0xd5fe80ff).into()),
success_background: Some(rgba(0x426118ff).into()),
success_border: Some(rgba(0x5d7e2cff).into()),
unreachable: Some(rgba(0x9a9a98ff).into()),
unreachable_background: Some(rgba(0x464a52ff).into()),
unreachable_border: Some(rgba(0x53565dff).into()),
warning: Some(rgba(0xfed073ff).into()),
warning_background: Some(rgba(0x584018ff).into()),
warning_border: Some(rgba(0x765a29ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -97,19 +97,47 @@ pub fn gruvbox() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xb57616ff).into()),
conflict_background: Some(rgba(0xf5e2d0ff).into()),
conflict_border: Some(rgba(0xebccabff).into()),
created: Some(rgba(0x797410ff).into()),
created_background: Some(rgba(0xe5e1ceff).into()),
created_border: Some(rgba(0xd1cba8ff).into()),
deleted: Some(rgba(0x9d0408ff).into()),
deleted_background: Some(rgba(0xf4d1c9ff).into()),
deleted_border: Some(rgba(0xe8ac9eff).into()),
error: Some(rgba(0x9d0408ff).into()),
error_background: Some(rgba(0xf4d1c9ff).into()),
error_border: Some(rgba(0xe8ac9eff).into()),
hidden: Some(rgba(0x8a7c6fff).into()),
hint: Some(rgba(0x0b6678ff).into()),
hidden_background: Some(rgba(0xd9c8a4ff).into()),
hidden_border: Some(rgba(0xd1c09eff).into()),
hint: Some(rgba(0x677562ff).into()),
hint_background: Some(rgba(0xd2dee2ff).into()),
hint_border: Some(rgba(0xaec6cdff).into()),
ignored: Some(rgba(0x5f5650ff).into()),
ignored_background: Some(rgba(0xd9c8a4ff).into()),
ignored_border: Some(rgba(0xc9b99aff).into()),
info: Some(rgba(0x0b6678ff).into()),
info_background: Some(rgba(0xd2dee2ff).into()),
info_border: Some(rgba(0xaec6cdff).into()),
modified: Some(rgba(0xb57616ff).into()),
modified_background: Some(rgba(0xf5e2d0ff).into()),
modified_border: Some(rgba(0xebccabff).into()),
predictive: Some(rgba(0x797410ff).into()),
predictive_background: Some(rgba(0xe5e1ceff).into()),
predictive_border: Some(rgba(0xd1cba8ff).into()),
renamed: Some(rgba(0x0b6678ff).into()),
renamed_background: Some(rgba(0xd2dee2ff).into()),
renamed_border: Some(rgba(0xaec6cdff).into()),
success: Some(rgba(0x797410ff).into()),
success_background: Some(rgba(0xe5e1ceff).into()),
success_border: Some(rgba(0xd1cba8ff).into()),
unreachable: Some(rgba(0x5f5650ff).into()),
unreachable_background: Some(rgba(0xd9c8a4ff).into()),
unreachable_border: Some(rgba(0xc9b99aff).into()),
warning: Some(rgba(0xb57616ff).into()),
warning_background: Some(rgba(0xf5e2d0ff).into()),
warning_border: Some(rgba(0xebccabff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -520,19 +548,47 @@ pub fn gruvbox() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xf9bd30ff).into()),
conflict_background: Some(rgba(0x582f10ff).into()),
conflict_border: Some(rgba(0x754916ff).into()),
created: Some(rgba(0xb8bb27ff).into()),
created_background: Some(rgba(0x332b11ff).into()),
created_border: Some(rgba(0x4a4516ff).into()),
deleted: Some(rgba(0xfb4a35ff).into()),
deleted_background: Some(rgba(0x5a0a10ff).into()),
deleted_border: Some(rgba(0x771618ff).into()),
error: Some(rgba(0xfb4a35ff).into()),
error_background: Some(rgba(0x5a0a10ff).into()),
error_border: Some(rgba(0x771618ff).into()),
hidden: Some(rgba(0x9a8c79ff).into()),
hint: Some(rgba(0x83a598ff).into()),
hidden_background: Some(rgba(0x4c4642ff).into()),
hidden_border: Some(rgba(0x544c48ff).into()),
hint: Some(rgba(0x8d957eff).into()),
hint_background: Some(rgba(0x1e2321ff).into()),
hint_border: Some(rgba(0x303a36ff).into()),
ignored: Some(rgba(0xc5b597ff).into()),
ignored_background: Some(rgba(0x4c4642ff).into()),
ignored_border: Some(rgba(0x5b534dff).into()),
info: Some(rgba(0x83a598ff).into()),
info_background: Some(rgba(0x1e2321ff).into()),
info_border: Some(rgba(0x303a36ff).into()),
modified: Some(rgba(0xf9bd30ff).into()),
modified_background: Some(rgba(0x582f10ff).into()),
modified_border: Some(rgba(0x754916ff).into()),
predictive: Some(rgba(0xb8bb27ff).into()),
predictive_background: Some(rgba(0x332b11ff).into()),
predictive_border: Some(rgba(0x4a4516ff).into()),
renamed: Some(rgba(0x83a598ff).into()),
renamed_background: Some(rgba(0x1e2321ff).into()),
renamed_border: Some(rgba(0x303a36ff).into()),
success: Some(rgba(0xb8bb27ff).into()),
success_background: Some(rgba(0x332b11ff).into()),
success_border: Some(rgba(0x4a4516ff).into()),
unreachable: Some(rgba(0xc5b597ff).into()),
unreachable_background: Some(rgba(0x4c4642ff).into()),
unreachable_border: Some(rgba(0x5b534dff).into()),
warning: Some(rgba(0xf9bd30ff).into()),
warning_background: Some(rgba(0x582f10ff).into()),
warning_border: Some(rgba(0x754916ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -943,19 +999,47 @@ pub fn gruvbox() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xb57616ff).into()),
conflict_background: Some(rgba(0xf5e2d0ff).into()),
conflict_border: Some(rgba(0xebccabff).into()),
created: Some(rgba(0x797410ff).into()),
created_background: Some(rgba(0xe5e1ceff).into()),
created_border: Some(rgba(0xd1cba8ff).into()),
deleted: Some(rgba(0x9d0408ff).into()),
deleted_background: Some(rgba(0xf4d1c9ff).into()),
deleted_border: Some(rgba(0xe8ac9eff).into()),
error: Some(rgba(0x9d0408ff).into()),
error_background: Some(rgba(0xf4d1c9ff).into()),
error_border: Some(rgba(0xe8ac9eff).into()),
hidden: Some(rgba(0x8a7c6fff).into()),
hint: Some(rgba(0x0b6678ff).into()),
hidden_background: Some(rgba(0xd9c8a4ff).into()),
hidden_border: Some(rgba(0xd1c09eff).into()),
hint: Some(rgba(0x677562ff).into()),
hint_background: Some(rgba(0xd2dee2ff).into()),
hint_border: Some(rgba(0xaec6cdff).into()),
ignored: Some(rgba(0x5f5650ff).into()),
ignored_background: Some(rgba(0xd9c8a4ff).into()),
ignored_border: Some(rgba(0xc9b99aff).into()),
info: Some(rgba(0x0b6678ff).into()),
info_background: Some(rgba(0xd2dee2ff).into()),
info_border: Some(rgba(0xaec6cdff).into()),
modified: Some(rgba(0xb57616ff).into()),
modified_background: Some(rgba(0xf5e2d0ff).into()),
modified_border: Some(rgba(0xebccabff).into()),
predictive: Some(rgba(0x797410ff).into()),
predictive_background: Some(rgba(0xe5e1ceff).into()),
predictive_border: Some(rgba(0xd1cba8ff).into()),
renamed: Some(rgba(0x0b6678ff).into()),
renamed_background: Some(rgba(0xd2dee2ff).into()),
renamed_border: Some(rgba(0xaec6cdff).into()),
success: Some(rgba(0x797410ff).into()),
success_background: Some(rgba(0xe5e1ceff).into()),
success_border: Some(rgba(0xd1cba8ff).into()),
unreachable: Some(rgba(0x5f5650ff).into()),
unreachable_background: Some(rgba(0xd9c8a4ff).into()),
unreachable_border: Some(rgba(0xc9b99aff).into()),
warning: Some(rgba(0xb57616ff).into()),
warning_background: Some(rgba(0xf5e2d0ff).into()),
warning_border: Some(rgba(0xebccabff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -1366,19 +1450,47 @@ pub fn gruvbox() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xf9bd30ff).into()),
conflict_background: Some(rgba(0x582f10ff).into()),
conflict_border: Some(rgba(0x754916ff).into()),
created: Some(rgba(0xb8bb27ff).into()),
created_background: Some(rgba(0x332b11ff).into()),
created_border: Some(rgba(0x4a4516ff).into()),
deleted: Some(rgba(0xfb4a35ff).into()),
deleted_background: Some(rgba(0x5a0a10ff).into()),
deleted_border: Some(rgba(0x771618ff).into()),
error: Some(rgba(0xfb4a35ff).into()),
error_background: Some(rgba(0x5a0a10ff).into()),
error_border: Some(rgba(0x771618ff).into()),
hidden: Some(rgba(0x9a8c79ff).into()),
hint: Some(rgba(0x83a598ff).into()),
hidden_background: Some(rgba(0x4c4642ff).into()),
hidden_border: Some(rgba(0x544c48ff).into()),
hint: Some(rgba(0x8d957eff).into()),
hint_background: Some(rgba(0x1e2321ff).into()),
hint_border: Some(rgba(0x303a36ff).into()),
ignored: Some(rgba(0xc5b597ff).into()),
ignored_background: Some(rgba(0x4c4642ff).into()),
ignored_border: Some(rgba(0x5b534dff).into()),
info: Some(rgba(0x83a598ff).into()),
info_background: Some(rgba(0x1e2321ff).into()),
info_border: Some(rgba(0x303a36ff).into()),
modified: Some(rgba(0xf9bd30ff).into()),
modified_background: Some(rgba(0x582f10ff).into()),
modified_border: Some(rgba(0x754916ff).into()),
predictive: Some(rgba(0xb8bb27ff).into()),
predictive_background: Some(rgba(0x332b11ff).into()),
predictive_border: Some(rgba(0x4a4516ff).into()),
renamed: Some(rgba(0x83a598ff).into()),
renamed_background: Some(rgba(0x1e2321ff).into()),
renamed_border: Some(rgba(0x303a36ff).into()),
success: Some(rgba(0xb8bb27ff).into()),
success_background: Some(rgba(0x332b11ff).into()),
success_border: Some(rgba(0x4a4516ff).into()),
unreachable: Some(rgba(0xc5b597ff).into()),
unreachable_background: Some(rgba(0x4c4642ff).into()),
unreachable_border: Some(rgba(0x5b534dff).into()),
warning: Some(rgba(0xf9bd30ff).into()),
warning_background: Some(rgba(0x582f10ff).into()),
warning_border: Some(rgba(0x754916ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -1789,19 +1901,47 @@ pub fn gruvbox() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xb57616ff).into()),
conflict_background: Some(rgba(0xf5e2d0ff).into()),
conflict_border: Some(rgba(0xebccabff).into()),
created: Some(rgba(0x797410ff).into()),
created_background: Some(rgba(0xe5e1ceff).into()),
created_border: Some(rgba(0xd1cba8ff).into()),
deleted: Some(rgba(0x9d0408ff).into()),
deleted_background: Some(rgba(0xf4d1c9ff).into()),
deleted_border: Some(rgba(0xe8ac9eff).into()),
error: Some(rgba(0x9d0408ff).into()),
error_background: Some(rgba(0xf4d1c9ff).into()),
error_border: Some(rgba(0xe8ac9eff).into()),
hidden: Some(rgba(0x8a7c6fff).into()),
hint: Some(rgba(0x0b6678ff).into()),
hidden_background: Some(rgba(0xd9c8a4ff).into()),
hidden_border: Some(rgba(0xd1c09eff).into()),
hint: Some(rgba(0x677562ff).into()),
hint_background: Some(rgba(0xd2dee2ff).into()),
hint_border: Some(rgba(0xaec6cdff).into()),
ignored: Some(rgba(0x5f5650ff).into()),
ignored_background: Some(rgba(0xd9c8a4ff).into()),
ignored_border: Some(rgba(0xc9b99aff).into()),
info: Some(rgba(0x0b6678ff).into()),
info_background: Some(rgba(0xd2dee2ff).into()),
info_border: Some(rgba(0xaec6cdff).into()),
modified: Some(rgba(0xb57616ff).into()),
modified_background: Some(rgba(0xf5e2d0ff).into()),
modified_border: Some(rgba(0xebccabff).into()),
predictive: Some(rgba(0x797410ff).into()),
predictive_background: Some(rgba(0xe5e1ceff).into()),
predictive_border: Some(rgba(0xd1cba8ff).into()),
renamed: Some(rgba(0x0b6678ff).into()),
renamed_background: Some(rgba(0xd2dee2ff).into()),
renamed_border: Some(rgba(0xaec6cdff).into()),
success: Some(rgba(0x797410ff).into()),
success_background: Some(rgba(0xe5e1ceff).into()),
success_border: Some(rgba(0xd1cba8ff).into()),
unreachable: Some(rgba(0x5f5650ff).into()),
unreachable_background: Some(rgba(0xd9c8a4ff).into()),
unreachable_border: Some(rgba(0xc9b99aff).into()),
warning: Some(rgba(0xb57616ff).into()),
warning_background: Some(rgba(0xf5e2d0ff).into()),
warning_border: Some(rgba(0xebccabff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -2212,19 +2352,47 @@ pub fn gruvbox() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xf9bd30ff).into()),
conflict_background: Some(rgba(0x582f10ff).into()),
conflict_border: Some(rgba(0x754916ff).into()),
created: Some(rgba(0xb8bb27ff).into()),
created_background: Some(rgba(0x332b11ff).into()),
created_border: Some(rgba(0x4a4516ff).into()),
deleted: Some(rgba(0xfb4a35ff).into()),
deleted_background: Some(rgba(0x5a0a10ff).into()),
deleted_border: Some(rgba(0x771618ff).into()),
error: Some(rgba(0xfb4a35ff).into()),
error_background: Some(rgba(0x5a0a10ff).into()),
error_border: Some(rgba(0x771618ff).into()),
hidden: Some(rgba(0x9a8c79ff).into()),
hint: Some(rgba(0x83a598ff).into()),
hidden_background: Some(rgba(0x4c4642ff).into()),
hidden_border: Some(rgba(0x544c48ff).into()),
hint: Some(rgba(0x8d957eff).into()),
hint_background: Some(rgba(0x1e2321ff).into()),
hint_border: Some(rgba(0x303a36ff).into()),
ignored: Some(rgba(0xc5b597ff).into()),
ignored_background: Some(rgba(0x4c4642ff).into()),
ignored_border: Some(rgba(0x5b534dff).into()),
info: Some(rgba(0x83a598ff).into()),
info_background: Some(rgba(0x1e2321ff).into()),
info_border: Some(rgba(0x303a36ff).into()),
modified: Some(rgba(0xf9bd30ff).into()),
modified_background: Some(rgba(0x582f10ff).into()),
modified_border: Some(rgba(0x754916ff).into()),
predictive: Some(rgba(0xb8bb27ff).into()),
predictive_background: Some(rgba(0x332b11ff).into()),
predictive_border: Some(rgba(0x4a4516ff).into()),
renamed: Some(rgba(0x83a598ff).into()),
renamed_background: Some(rgba(0x1e2321ff).into()),
renamed_border: Some(rgba(0x303a36ff).into()),
success: Some(rgba(0xb8bb27ff).into()),
success_background: Some(rgba(0x332b11ff).into()),
success_border: Some(rgba(0x4a4516ff).into()),
unreachable: Some(rgba(0xc5b597ff).into()),
unreachable_background: Some(rgba(0x4c4642ff).into()),
unreachable_border: Some(rgba(0x5b534dff).into()),
warning: Some(rgba(0xf9bd30ff).into()),
warning_background: Some(rgba(0x582f10ff).into()),
warning_border: Some(rgba(0x754916ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -97,19 +97,47 @@ pub fn one() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xdec184ff).into()),
conflict_background: Some(rgba(0xfaf2e6ff).into()),
conflict_border: Some(rgba(0xf5e8d2ff).into()),
created: Some(rgba(0x669f59ff).into()),
created_background: Some(rgba(0xe0ebdcff).into()),
created_border: Some(rgba(0xc8dcc1ff).into()),
deleted: Some(rgba(0xd36151ff).into()),
deleted_background: Some(rgba(0xfbdfd9ff).into()),
deleted_border: Some(rgba(0xf6c6bdff).into()),
error: Some(rgba(0xd36151ff).into()),
error_background: Some(rgba(0xfbdfd9ff).into()),
error_border: Some(rgba(0xf6c6bdff).into()),
hidden: Some(rgba(0xa1a1a3ff).into()),
hint: Some(rgba(0x5c79e2ff).into()),
hidden_background: Some(rgba(0xdcdcddff).into()),
hidden_border: Some(rgba(0xd3d3d4ff).into()),
hint: Some(rgba(0x9295beff).into()),
hint_background: Some(rgba(0xe2e2faff).into()),
hint_border: Some(rgba(0xcbcdf6ff).into()),
ignored: Some(rgba(0x7f8188ff).into()),
ignored_background: Some(rgba(0xdcdcddff).into()),
ignored_border: Some(rgba(0xc9c9caff).into()),
info: Some(rgba(0x5c79e2ff).into()),
info_background: Some(rgba(0xe2e2faff).into()),
info_border: Some(rgba(0xcbcdf6ff).into()),
modified: Some(rgba(0xdec184ff).into()),
modified_background: Some(rgba(0xfaf2e6ff).into()),
modified_border: Some(rgba(0xf5e8d2ff).into()),
predictive: Some(rgba(0x669f59ff).into()),
predictive_background: Some(rgba(0xe0ebdcff).into()),
predictive_border: Some(rgba(0xc8dcc1ff).into()),
renamed: Some(rgba(0x5c79e2ff).into()),
renamed_background: Some(rgba(0xe2e2faff).into()),
renamed_border: Some(rgba(0xcbcdf6ff).into()),
success: Some(rgba(0x669f59ff).into()),
success_background: Some(rgba(0xe0ebdcff).into()),
success_border: Some(rgba(0xc8dcc1ff).into()),
unreachable: Some(rgba(0x7f8188ff).into()),
unreachable_background: Some(rgba(0xdcdcddff).into()),
unreachable_border: Some(rgba(0xc9c9caff).into()),
warning: Some(rgba(0xdec184ff).into()),
warning_background: Some(rgba(0xfaf2e6ff).into()),
warning_border: Some(rgba(0xf5e8d2ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -520,19 +548,47 @@ pub fn one() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xdec184ff).into()),
conflict_background: Some(rgba(0x41331dff).into()),
conflict_border: Some(rgba(0x5d4c2fff).into()),
created: Some(rgba(0xa1c181ff).into()),
created_background: Some(rgba(0x222e1dff).into()),
created_border: Some(rgba(0x38482fff).into()),
deleted: Some(rgba(0xd07277ff).into()),
deleted_background: Some(rgba(0x301b1cff).into()),
deleted_border: Some(rgba(0x4c2b2cff).into()),
error: Some(rgba(0xd07277ff).into()),
error_background: Some(rgba(0x301b1cff).into()),
error_border: Some(rgba(0x4c2b2cff).into()),
hidden: Some(rgba(0x555a63ff).into()),
hint: Some(rgba(0x74ade8ff).into()),
hidden_background: Some(rgba(0x3b414dff).into()),
hidden_border: Some(rgba(0x414754ff).into()),
hint: Some(rgba(0x5b708aff).into()),
hint_background: Some(rgba(0x18243dff).into()),
hint_border: Some(rgba(0x293c5bff).into()),
ignored: Some(rgba(0x838994ff).into()),
ignored_background: Some(rgba(0x3b414dff).into()),
ignored_border: Some(rgba(0x464b57ff).into()),
info: Some(rgba(0x74ade8ff).into()),
info_background: Some(rgba(0x18243dff).into()),
info_border: Some(rgba(0x293c5bff).into()),
modified: Some(rgba(0xdec184ff).into()),
modified_background: Some(rgba(0x41331dff).into()),
modified_border: Some(rgba(0x5d4c2fff).into()),
predictive: Some(rgba(0xa1c181ff).into()),
predictive_background: Some(rgba(0x222e1dff).into()),
predictive_border: Some(rgba(0x38482fff).into()),
renamed: Some(rgba(0x74ade8ff).into()),
renamed_background: Some(rgba(0x18243dff).into()),
renamed_border: Some(rgba(0x293c5bff).into()),
success: Some(rgba(0xa1c181ff).into()),
success_background: Some(rgba(0x222e1dff).into()),
success_border: Some(rgba(0x38482fff).into()),
unreachable: Some(rgba(0x838994ff).into()),
unreachable_background: Some(rgba(0x3b414dff).into()),
unreachable_border: Some(rgba(0x464b57ff).into()),
warning: Some(rgba(0xdec184ff).into()),
warning_background: Some(rgba(0x41331dff).into()),
warning_border: Some(rgba(0x5d4c2fff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -97,19 +97,47 @@ pub fn rose_pine() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xe99d35ff).into()),
conflict_background: Some(rgba(0xffebd6ff).into()),
conflict_border: Some(rgba(0xffdab7ff).into()),
created: Some(rgba(0x3eaa8eff).into()),
created_background: Some(rgba(0xdbeee7ff).into()),
created_border: Some(rgba(0xbee0d5ff).into()),
deleted: Some(rgba(0xb4647aff).into()),
deleted_background: Some(rgba(0xf1dfe3ff).into()),
deleted_border: Some(rgba(0xe6c6cdff).into()),
error: Some(rgba(0xb4647aff).into()),
error_background: Some(rgba(0xf1dfe3ff).into()),
error_border: Some(rgba(0xe6c6cdff).into()),
hidden: Some(rgba(0x938fa3ff).into()),
hint: Some(rgba(0x57949fff).into()),
hidden_background: Some(rgba(0xdcd8d8ff).into()),
hidden_border: Some(rgba(0xd0cccfff).into()),
hint: Some(rgba(0x7a92aaff).into()),
hint_background: Some(rgba(0xdde9ebff).into()),
hint_border: Some(rgba(0xc3d7dbff).into()),
ignored: Some(rgba(0x706c8cff).into()),
ignored_background: Some(rgba(0xdcd8d8ff).into()),
ignored_border: Some(rgba(0xdcd6d5ff).into()),
info: Some(rgba(0x57949fff).into()),
info_background: Some(rgba(0xdde9ebff).into()),
info_border: Some(rgba(0xc3d7dbff).into()),
modified: Some(rgba(0xe99d35ff).into()),
modified_background: Some(rgba(0xffebd6ff).into()),
modified_border: Some(rgba(0xffdab7ff).into()),
predictive: Some(rgba(0x3eaa8eff).into()),
predictive_background: Some(rgba(0xdbeee7ff).into()),
predictive_border: Some(rgba(0xbee0d5ff).into()),
renamed: Some(rgba(0x57949fff).into()),
renamed_background: Some(rgba(0xdde9ebff).into()),
renamed_border: Some(rgba(0xc3d7dbff).into()),
success: Some(rgba(0x3eaa8eff).into()),
success_background: Some(rgba(0xdbeee7ff).into()),
success_border: Some(rgba(0xbee0d5ff).into()),
unreachable: Some(rgba(0x706c8cff).into()),
unreachable_background: Some(rgba(0xdcd8d8ff).into()),
unreachable_border: Some(rgba(0xdcd6d5ff).into()),
warning: Some(rgba(0xe99d35ff).into()),
warning_background: Some(rgba(0xffebd6ff).into()),
warning_border: Some(rgba(0xffdab7ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -527,19 +555,47 @@ pub fn rose_pine() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xf5c177ff).into()),
conflict_background: Some(rgba(0x50341aff).into()),
conflict_border: Some(rgba(0x6d4d2bff).into()),
created: Some(rgba(0x5dc2a3ff).into()),
created_background: Some(rgba(0x182e23ff).into()),
created_border: Some(rgba(0x254839ff).into()),
deleted: Some(rgba(0xea6f92ff).into()),
deleted_background: Some(rgba(0x431820ff).into()),
deleted_border: Some(rgba(0x612834ff).into()),
error: Some(rgba(0xea6f92ff).into()),
error_background: Some(rgba(0x431820ff).into()),
error_border: Some(rgba(0x612834ff).into()),
hidden: Some(rgba(0x615d7aff).into()),
hint: Some(rgba(0x9cced7ff).into()),
hidden_background: Some(rgba(0x38354eff).into()),
hidden_border: Some(rgba(0x44415bff).into()),
hint: Some(rgba(0x728aa2ff).into()),
hint_background: Some(rgba(0x2f3739ff).into()),
hint_border: Some(rgba(0x435255ff).into()),
ignored: Some(rgba(0x85819eff).into()),
ignored_background: Some(rgba(0x38354eff).into()),
ignored_border: Some(rgba(0x504c68ff).into()),
info: Some(rgba(0x9cced7ff).into()),
info_background: Some(rgba(0x2f3739ff).into()),
info_border: Some(rgba(0x435255ff).into()),
modified: Some(rgba(0xf5c177ff).into()),
modified_background: Some(rgba(0x50341aff).into()),
modified_border: Some(rgba(0x6d4d2bff).into()),
predictive: Some(rgba(0x5dc2a3ff).into()),
predictive_background: Some(rgba(0x182e23ff).into()),
predictive_border: Some(rgba(0x254839ff).into()),
renamed: Some(rgba(0x9cced7ff).into()),
renamed_background: Some(rgba(0x2f3739ff).into()),
renamed_border: Some(rgba(0x435255ff).into()),
success: Some(rgba(0x5dc2a3ff).into()),
success_background: Some(rgba(0x182e23ff).into()),
success_border: Some(rgba(0x254839ff).into()),
unreachable: Some(rgba(0x85819eff).into()),
unreachable_background: Some(rgba(0x38354eff).into()),
unreachable_border: Some(rgba(0x504c68ff).into()),
warning: Some(rgba(0xf5c177ff).into()),
warning_background: Some(rgba(0x50341aff).into()),
warning_border: Some(rgba(0x6d4d2bff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -957,19 +1013,47 @@ pub fn rose_pine() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xf5c177ff).into()),
conflict_background: Some(rgba(0x50341aff).into()),
conflict_border: Some(rgba(0x6d4d2bff).into()),
created: Some(rgba(0x5dc2a3ff).into()),
created_background: Some(rgba(0x182e23ff).into()),
created_border: Some(rgba(0x254839ff).into()),
deleted: Some(rgba(0xea6f92ff).into()),
deleted_background: Some(rgba(0x431820ff).into()),
deleted_border: Some(rgba(0x612834ff).into()),
error: Some(rgba(0xea6f92ff).into()),
error_background: Some(rgba(0x431820ff).into()),
error_border: Some(rgba(0x612834ff).into()),
hidden: Some(rgba(0x2f2b43ff).into()),
hint: Some(rgba(0x9cced7ff).into()),
hidden_background: Some(rgba(0x292739ff).into()),
hidden_border: Some(rgba(0x353347ff).into()),
hint: Some(rgba(0x5e768cff).into()),
hint_background: Some(rgba(0x2f3739ff).into()),
hint_border: Some(rgba(0x435255ff).into()),
ignored: Some(rgba(0x75718eff).into()),
ignored_background: Some(rgba(0x292739ff).into()),
ignored_border: Some(rgba(0x423f55ff).into()),
info: Some(rgba(0x9cced7ff).into()),
info_background: Some(rgba(0x2f3739ff).into()),
info_border: Some(rgba(0x435255ff).into()),
modified: Some(rgba(0xf5c177ff).into()),
modified_background: Some(rgba(0x50341aff).into()),
modified_border: Some(rgba(0x6d4d2bff).into()),
predictive: Some(rgba(0x5dc2a3ff).into()),
predictive_background: Some(rgba(0x182e23ff).into()),
predictive_border: Some(rgba(0x254839ff).into()),
renamed: Some(rgba(0x9cced7ff).into()),
renamed_background: Some(rgba(0x2f3739ff).into()),
renamed_border: Some(rgba(0x435255ff).into()),
success: Some(rgba(0x5dc2a3ff).into()),
success_background: Some(rgba(0x182e23ff).into()),
success_border: Some(rgba(0x254839ff).into()),
unreachable: Some(rgba(0x75718eff).into()),
unreachable_background: Some(rgba(0x292739ff).into()),
unreachable_border: Some(rgba(0x423f55ff).into()),
warning: Some(rgba(0xf5c177ff).into()),
warning_background: Some(rgba(0x50341aff).into()),
warning_border: Some(rgba(0x6d4d2bff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -96,19 +96,47 @@ pub fn sandcastle() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xa07e3bff).into()),
conflict_background: Some(rgba(0x231d12ff).into()),
conflict_border: Some(rgba(0x392e1aff).into()),
created: Some(rgba(0x83a598ff).into()),
created_background: Some(rgba(0x1e2321ff).into()),
created_border: Some(rgba(0x303a36ff).into()),
deleted: Some(rgba(0xb4637aff).into()),
deleted_background: Some(rgba(0x26191cff).into()),
deleted_border: Some(rgba(0x3f272dff).into()),
error: Some(rgba(0xb4637aff).into()),
error_background: Some(rgba(0x26191cff).into()),
error_border: Some(rgba(0x3f272dff).into()),
hidden: Some(rgba(0x827568ff).into()),
hint: Some(rgba(0x528b8bff).into()),
hidden_background: Some(rgba(0x333944ff).into()),
hidden_border: Some(rgba(0x393f4aff).into()),
hint: Some(rgba(0x727d68ff).into()),
hint_background: Some(rgba(0x171f1fff).into()),
hint_border: Some(rgba(0x223232ff).into()),
ignored: Some(rgba(0xa69782ff).into()),
ignored_background: Some(rgba(0x333944ff).into()),
ignored_border: Some(rgba(0x3d4350ff).into()),
info: Some(rgba(0x528b8bff).into()),
info_background: Some(rgba(0x171f1fff).into()),
info_border: Some(rgba(0x223232ff).into()),
modified: Some(rgba(0xa07e3bff).into()),
modified_background: Some(rgba(0x231d12ff).into()),
modified_border: Some(rgba(0x392e1aff).into()),
predictive: Some(rgba(0x83a598ff).into()),
predictive_background: Some(rgba(0x1e2321ff).into()),
predictive_border: Some(rgba(0x303a36ff).into()),
renamed: Some(rgba(0x528b8bff).into()),
renamed_background: Some(rgba(0x171f1fff).into()),
renamed_border: Some(rgba(0x223232ff).into()),
success: Some(rgba(0x83a598ff).into()),
success_background: Some(rgba(0x1e2321ff).into()),
success_border: Some(rgba(0x303a36ff).into()),
unreachable: Some(rgba(0xa69782ff).into()),
unreachable_background: Some(rgba(0x333944ff).into()),
unreachable_border: Some(rgba(0x3d4350ff).into()),
warning: Some(rgba(0xa07e3bff).into()),
warning_background: Some(rgba(0x231d12ff).into()),
warning_border: Some(rgba(0x392e1aff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -97,19 +97,47 @@ pub fn solarized() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xb58904ff).into()),
conflict_background: Some(rgba(0xf5e6d0ff).into()),
conflict_border: Some(rgba(0xebd3aaff).into()),
created: Some(rgba(0x859904ff).into()),
created_background: Some(rgba(0xe9ead0ff).into()),
created_border: Some(rgba(0xd6d9abff).into()),
deleted: Some(rgba(0xdc3330ff).into()),
deleted_background: Some(rgba(0xffd9d2ff).into()),
deleted_border: Some(rgba(0xffbbafff).into()),
error: Some(rgba(0xdc3330ff).into()),
error_background: Some(rgba(0xffd9d2ff).into()),
error_border: Some(rgba(0xffbbafff).into()),
hidden: Some(rgba(0x6a7f86ff).into()),
hint: Some(rgba(0x298bd1ff).into()),
hidden_background: Some(rgba(0xcfd0c4ff).into()),
hidden_border: Some(rgba(0xb7bdb6ff).into()),
hint: Some(rgba(0x5889a3ff).into()),
hint_background: Some(rgba(0xdbe6f6ff).into()),
hint_border: Some(rgba(0xbfd3efff).into()),
ignored: Some(rgba(0x34555eff).into()),
ignored_background: Some(rgba(0xcfd0c4ff).into()),
ignored_border: Some(rgba(0x9faaa8ff).into()),
info: Some(rgba(0x298bd1ff).into()),
info_background: Some(rgba(0xdbe6f6ff).into()),
info_border: Some(rgba(0xbfd3efff).into()),
modified: Some(rgba(0xb58904ff).into()),
modified_background: Some(rgba(0xf5e6d0ff).into()),
modified_border: Some(rgba(0xebd3aaff).into()),
predictive: Some(rgba(0x859904ff).into()),
predictive_background: Some(rgba(0xe9ead0ff).into()),
predictive_border: Some(rgba(0xd6d9abff).into()),
renamed: Some(rgba(0x298bd1ff).into()),
renamed_background: Some(rgba(0xdbe6f6ff).into()),
renamed_border: Some(rgba(0xbfd3efff).into()),
success: Some(rgba(0x859904ff).into()),
success_background: Some(rgba(0xe9ead0ff).into()),
success_border: Some(rgba(0xd6d9abff).into()),
unreachable: Some(rgba(0x34555eff).into()),
unreachable_background: Some(rgba(0xcfd0c4ff).into()),
unreachable_border: Some(rgba(0x9faaa8ff).into()),
warning: Some(rgba(0xb58904ff).into()),
warning_background: Some(rgba(0xf5e6d0ff).into()),
warning_border: Some(rgba(0xebd3aaff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![
@ -513,19 +541,47 @@ pub fn solarized() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xb58903ff).into()),
conflict_background: Some(rgba(0x2f1e0cff).into()),
conflict_border: Some(rgba(0x473110ff).into()),
created: Some(rgba(0x859904ff).into()),
created_background: Some(rgba(0x1f210cff).into()),
created_border: Some(rgba(0x323610ff).into()),
deleted: Some(rgba(0xdc3330ff).into()),
deleted_background: Some(rgba(0x4a090fff).into()),
deleted_border: Some(rgba(0x641116ff).into()),
error: Some(rgba(0xdc3330ff).into()),
error_background: Some(rgba(0x4a090fff).into()),
error_border: Some(rgba(0x641116ff).into()),
hidden: Some(rgba(0x6f8389ff).into()),
hint: Some(rgba(0x288bd1ff).into()),
hidden_background: Some(rgba(0x083743ff).into()),
hidden_border: Some(rgba(0x19424dff).into()),
hint: Some(rgba(0x4f8297ff).into()),
hint_background: Some(rgba(0x141f2cff).into()),
hint_border: Some(rgba(0x1c3249ff).into()),
ignored: Some(rgba(0x93a1a1ff).into()),
ignored_background: Some(rgba(0x083743ff).into()),
ignored_border: Some(rgba(0x2b4f58ff).into()),
info: Some(rgba(0x288bd1ff).into()),
info_background: Some(rgba(0x141f2cff).into()),
info_border: Some(rgba(0x1c3249ff).into()),
modified: Some(rgba(0xb58903ff).into()),
modified_background: Some(rgba(0x2f1e0cff).into()),
modified_border: Some(rgba(0x473110ff).into()),
predictive: Some(rgba(0x859904ff).into()),
predictive_background: Some(rgba(0x1f210cff).into()),
predictive_border: Some(rgba(0x323610ff).into()),
renamed: Some(rgba(0x288bd1ff).into()),
renamed_background: Some(rgba(0x141f2cff).into()),
renamed_border: Some(rgba(0x1c3249ff).into()),
success: Some(rgba(0x859904ff).into()),
success_background: Some(rgba(0x1f210cff).into()),
success_border: Some(rgba(0x323610ff).into()),
unreachable: Some(rgba(0x93a1a1ff).into()),
unreachable_background: Some(rgba(0x083743ff).into()),
unreachable_border: Some(rgba(0x2b4f58ff).into()),
warning: Some(rgba(0xb58903ff).into()),
warning_background: Some(rgba(0x2f1e0cff).into()),
warning_border: Some(rgba(0x473110ff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -96,19 +96,47 @@ pub fn summercamp() -> UserThemeFamily {
},
status: StatusColorsRefinement {
conflict: Some(rgba(0xf1fe29ff).into()),
conflict_background: Some(rgba(0x556305ff).into()),
conflict_border: Some(rgba(0x727f0aff).into()),
created: Some(rgba(0x5dea5aff).into()),
created_background: Some(rgba(0x0a4d13ff).into()),
created_border: Some(rgba(0x1a6a20ff).into()),
deleted: Some(rgba(0xe35142ff).into()),
deleted_background: Some(rgba(0x491013ff).into()),
deleted_border: Some(rgba(0x651c1cff).into()),
error: Some(rgba(0xe35142ff).into()),
error_background: Some(rgba(0x491013ff).into()),
error_border: Some(rgba(0x651c1cff).into()),
hidden: Some(rgba(0x4c4735ff).into()),
hint: Some(rgba(0x499befff).into()),
hidden_background: Some(rgba(0x2a261cff).into()),
hidden_border: Some(rgba(0x2e2a1fff).into()),
hint: Some(rgba(0x246e61ff).into()),
hint_background: Some(rgba(0x0e2242ff).into()),
hint_border: Some(rgba(0x193761ff).into()),
ignored: Some(rgba(0x736e55ff).into()),
ignored_background: Some(rgba(0x2a261cff).into()),
ignored_border: Some(rgba(0x312d21ff).into()),
info: Some(rgba(0x499befff).into()),
info_background: Some(rgba(0x0e2242ff).into()),
info_border: Some(rgba(0x193761ff).into()),
modified: Some(rgba(0xf1fe29ff).into()),
modified_background: Some(rgba(0x556305ff).into()),
modified_border: Some(rgba(0x727f0aff).into()),
predictive: Some(rgba(0x5dea5aff).into()),
predictive_background: Some(rgba(0x0a4d13ff).into()),
predictive_border: Some(rgba(0x1a6a20ff).into()),
renamed: Some(rgba(0x499befff).into()),
renamed_background: Some(rgba(0x0e2242ff).into()),
renamed_border: Some(rgba(0x193761ff).into()),
success: Some(rgba(0x5dea5aff).into()),
success_background: Some(rgba(0x0a4d13ff).into()),
success_border: Some(rgba(0x1a6a20ff).into()),
unreachable: Some(rgba(0x736e55ff).into()),
unreachable_background: Some(rgba(0x2a261cff).into()),
unreachable_border: Some(rgba(0x312d21ff).into()),
warning: Some(rgba(0xf1fe29ff).into()),
warning_background: Some(rgba(0x556305ff).into()),
warning_border: Some(rgba(0x727f0aff).into()),
..Default::default()
},
player: Some(PlayerColors(vec![

View file

@ -310,19 +310,47 @@ impl<'a> Debug for StatusColorsRefinementPrinter<'a> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let status_colors = vec![
("conflict", self.0.conflict),
("conflict_background", self.0.conflict_background),
("conflict_border", self.0.conflict_border),
("created", self.0.created),
("created_background", self.0.created_background),
("created_border", self.0.created_border),
("deleted", self.0.deleted),
("deleted_background", self.0.deleted_background),
("deleted_border", self.0.deleted_border),
("error", self.0.error),
("error_background", self.0.error_background),
("error_border", self.0.error_border),
("hidden", self.0.hidden),
("hidden_background", self.0.hidden_background),
("hidden_border", self.0.hidden_border),
("hint", self.0.hint),
("hint_background", self.0.hint_background),
("hint_border", self.0.hint_border),
("ignored", self.0.ignored),
("ignored_background", self.0.ignored_background),
("ignored_border", self.0.ignored_border),
("info", self.0.info),
("info_background", self.0.info_background),
("info_border", self.0.info_border),
("modified", self.0.modified),
("modified_background", self.0.modified_background),
("modified_border", self.0.modified_border),
("predictive", self.0.predictive),
("predictive_background", self.0.predictive_background),
("predictive_border", self.0.predictive_border),
("renamed", self.0.renamed),
("renamed_background", self.0.renamed_background),
("renamed_border", self.0.renamed_border),
("success", self.0.success),
("success_background", self.0.success_background),
("success_border", self.0.success_border),
("unreachable", self.0.unreachable),
("unreachable_background", self.0.unreachable_background),
("unreachable_border", self.0.unreachable_border),
("warning", self.0.warning),
("warning_background", self.0.warning_background),
("warning_border", self.0.warning_border),
];
f.write_str("StatusColorsRefinement {")?;

View file

@ -76,21 +76,56 @@ impl Zed1ThemeConverter {
let lowest = &base_theme.lowest;
let editor = &self.theme.editor;
Ok(StatusColorsRefinement {
created: convert(lowest.positive.default.foreground),
created_background: convert(lowest.positive.default.background),
created_border: convert(lowest.positive.default.border),
modified: convert(lowest.warning.default.foreground),
modified_background: convert(lowest.warning.default.background),
modified_border: convert(lowest.warning.default.border),
deleted: convert(lowest.negative.default.foreground),
deleted_background: convert(lowest.negative.default.background),
deleted_border: convert(lowest.negative.default.border),
success: convert(lowest.positive.default.foreground),
success_background: convert(lowest.positive.default.background),
success_border: convert(lowest.positive.default.border),
warning: convert(lowest.warning.default.foreground),
warning_background: convert(lowest.warning.default.background),
warning_border: convert(lowest.warning.default.border),
error: convert(lowest.negative.default.foreground),
hint: convert(lowest.accent.default.foreground),
error_background: convert(lowest.negative.default.background),
error_border: convert(lowest.negative.default.border),
// The `hint` color used in Zed1 is inlined from the syntax colors.
hint: editor
.hint
.color
.map(zed1_color_to_hsla)
.or(convert(lowest.accent.default.foreground)),
hint_background: convert(lowest.accent.default.background),
hint_border: convert(lowest.accent.default.border),
predictive: convert(lowest.positive.default.foreground),
predictive_background: convert(lowest.positive.default.background),
predictive_border: convert(lowest.positive.default.border),
conflict: convert(lowest.warning.default.foreground),
conflict_background: convert(lowest.warning.default.background),
conflict_border: convert(lowest.warning.default.border),
hidden: convert(lowest.base.disabled.foreground),
hidden_background: convert(lowest.base.disabled.background),
hidden_border: convert(lowest.base.disabled.border),
ignored: convert(lowest.variant.default.foreground),
ignored_background: convert(lowest.variant.default.background),
ignored_border: convert(lowest.variant.default.border),
info: convert(lowest.accent.default.foreground),
info_background: convert(lowest.accent.default.background),
info_border: convert(lowest.accent.default.border),
renamed: convert(lowest.accent.default.foreground),
renamed_background: convert(lowest.accent.default.background),
renamed_border: convert(lowest.accent.default.border),
unreachable: convert(lowest.variant.default.foreground), // TODO: Should this be transparent?
unreachable_background: convert(lowest.variant.default.background),
unreachable_border: convert(lowest.variant.default.border),
})
}

View file

@ -9,6 +9,7 @@ path = "src/theme_selector.rs"
doctest = false
[dependencies]
client = { path = "../client" }
editor = { path = "../editor" }
fuzzy = { path = "../fuzzy" }
fs = { path = "../fs" }

View file

@ -1,3 +1,4 @@
use client::{telemetry::Telemetry, TelemetrySettings};
use feature_flags::FeatureFlagAppExt;
use fs::Fs;
use fuzzy::{match_strings, StringMatch, StringMatchCandidate};
@ -19,7 +20,8 @@ pub fn init(cx: &mut AppContext) {
pub fn toggle(workspace: &mut Workspace, _: &Toggle, cx: &mut ViewContext<Workspace>) {
workspace.toggle_modal(cx, |workspace, cx| {
let fs = workspace.app_state().fs.clone();
cx.add_view(|cx| ThemeSelector::new(ThemeSelectorDelegate::new(fs, cx), cx))
let telemetry = workspace.client().telemetry().clone();
cx.add_view(|cx| ThemeSelector::new(ThemeSelectorDelegate::new(fs, telemetry, cx), cx))
});
}
@ -48,10 +50,15 @@ pub struct ThemeSelectorDelegate {
original_theme: Arc<Theme>,
selection_completed: bool,
selected_index: usize,
telemetry: Arc<Telemetry>,
}
impl ThemeSelectorDelegate {
fn new(fs: Arc<dyn Fs>, cx: &mut ViewContext<ThemeSelector>) -> Self {
fn new(
fs: Arc<dyn Fs>,
telemetry: Arc<Telemetry>,
cx: &mut ViewContext<ThemeSelector>,
) -> Self {
let original_theme = theme::current(cx).clone();
let staff_mode = cx.is_staff();
@ -74,6 +81,7 @@ impl ThemeSelectorDelegate {
original_theme: original_theme.clone(),
selected_index: 0,
selection_completed: false,
telemetry,
};
this.select_if_matching(&original_theme.meta.name);
this
@ -124,6 +132,11 @@ impl PickerDelegate for ThemeSelectorDelegate {
self.selection_completed = true;
let theme_name = theme::current(cx).meta.name.clone();
let telemetry_settings = *settings::get::<TelemetrySettings>(cx);
self.telemetry
.report_setting_event(telemetry_settings, "theme", theme_name.to_string());
update_settings_file::<ThemeSettings>(self.fs.clone(), cx, |settings| {
settings.theme = Some(theme_name);
});

View file

@ -9,17 +9,18 @@ path = "src/theme_selector.rs"
doctest = false
[dependencies]
client = { package = "client2", path = "../client2" }
editor = { package = "editor2", path = "../editor2" }
fuzzy = { package = "fuzzy2", path = "../fuzzy2" }
fs = { package = "fs2", path = "../fs2" }
gpui = { package = "gpui2", path = "../gpui2" }
ui = { package = "ui2", path = "../ui2" }
picker = { package = "picker2", path = "../picker2" }
theme = { package = "theme2", path = "../theme2" }
settings = { package = "settings2", path = "../settings2" }
feature_flags = { package = "feature_flags2", path = "../feature_flags2" }
workspace = { package = "workspace2", path = "../workspace2" }
fs = { package = "fs2", path = "../fs2" }
fuzzy = { package = "fuzzy2", path = "../fuzzy2" }
gpui = { package = "gpui2", path = "../gpui2" }
picker = { package = "picker2", path = "../picker2" }
settings = { package = "settings2", path = "../settings2" }
theme = { package = "theme2", path = "../theme2" }
ui = { package = "ui2", path = "../ui2" }
util = { path = "../util" }
workspace = { package = "workspace2", path = "../workspace2" }
log.workspace = true
parking_lot.workspace = true
postage.workspace = true

View file

@ -1,3 +1,4 @@
use client::{telemetry::Telemetry, TelemetrySettings};
use feature_flags::FeatureFlagAppExt;
use fs::Fs;
use fuzzy::{match_strings, StringMatch, StringMatchCandidate};
@ -6,7 +7,7 @@ use gpui::{
VisualContext, WeakView,
};
use picker::{Picker, PickerDelegate};
use settings::{update_settings_file, SettingsStore};
use settings::{update_settings_file, Settings, SettingsStore};
use std::sync::Arc;
use theme::{Theme, ThemeMeta, ThemeRegistry, ThemeSettings};
use ui::{prelude::*, v_stack, ListItem, ListItemSpacing};
@ -26,9 +27,10 @@ pub fn init(cx: &mut AppContext) {
pub fn toggle(workspace: &mut Workspace, _: &Toggle, cx: &mut ViewContext<Workspace>) {
let fs = workspace.app_state().fs.clone();
let telemetry = workspace.client().telemetry().clone();
workspace.toggle_modal(cx, |cx| {
ThemeSelector::new(
ThemeSelectorDelegate::new(cx.view().downgrade(), fs, cx),
ThemeSelectorDelegate::new(cx.view().downgrade(), fs, telemetry, cx),
cx,
)
});
@ -86,6 +88,7 @@ pub struct ThemeSelectorDelegate {
original_theme: Arc<Theme>,
selection_completed: bool,
selected_index: usize,
telemetry: Arc<Telemetry>,
view: WeakView<ThemeSelector>,
}
@ -93,6 +96,7 @@ impl ThemeSelectorDelegate {
fn new(
weak_view: WeakView<ThemeSelector>,
fs: Arc<dyn Fs>,
telemetry: Arc<Telemetry>,
cx: &mut ViewContext<ThemeSelector>,
) -> Self {
let original_theme = cx.theme().clone();
@ -122,6 +126,7 @@ impl ThemeSelectorDelegate {
original_theme: original_theme.clone(),
selected_index: 0,
selection_completed: false,
telemetry,
view: weak_view,
};
this.select_if_matching(&original_theme.name);
@ -175,6 +180,11 @@ impl PickerDelegate for ThemeSelectorDelegate {
self.selection_completed = true;
let theme_name = cx.theme().name.clone();
let telemetry_settings = TelemetrySettings::get_global(cx).clone();
self.telemetry
.report_setting_event(telemetry_settings, "theme", theme_name.to_string());
update_settings_file::<ThemeSettings>(self.fs.clone(), cx, move |settings| {
settings.theme = Some(theme_name.to_string());
});

View file

@ -29,8 +29,8 @@ pub trait Panel: FocusableView + EventEmitter<PanelEvent> {
fn set_position(&mut self, position: DockPosition, cx: &mut ViewContext<Self>);
fn size(&self, cx: &WindowContext) -> Pixels;
fn set_size(&mut self, size: Option<Pixels>, cx: &mut ViewContext<Self>);
// todo!("We should have a icon tooltip method, rather than using persistant_name")
fn icon(&self, cx: &WindowContext) -> Option<ui::Icon>;
fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>;
fn toggle_action(&self) -> Box<dyn Action>;
fn icon_label(&self, _: &WindowContext) -> Option<String> {
None
@ -54,6 +54,7 @@ pub trait PanelHandle: Send + Sync {
fn size(&self, cx: &WindowContext) -> Pixels;
fn set_size(&self, size: Option<Pixels>, cx: &mut WindowContext);
fn icon(&self, cx: &WindowContext) -> Option<ui::Icon>;
fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>;
fn toggle_action(&self, cx: &WindowContext) -> Box<dyn Action>;
fn icon_label(&self, cx: &WindowContext) -> Option<String>;
fn focus_handle(&self, cx: &AppContext) -> FocusHandle;
@ -108,6 +109,10 @@ where
self.read(cx).icon(cx)
}
fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str> {
self.read(cx).icon_tooltip(cx)
}
fn toggle_action(&self, cx: &WindowContext) -> Box<dyn Action> {
self.read(cx).toggle_action()
}
@ -612,6 +617,7 @@ impl Render for PanelButtons {
.enumerate()
.filter_map(|(i, entry)| {
let icon = entry.panel.icon(cx)?;
let icon_tooltip = entry.panel.icon_tooltip(cx)?;
let name = entry.panel.persistent_name();
let panel = entry.panel.clone();
@ -627,7 +633,7 @@ impl Render for PanelButtons {
} else {
let action = entry.panel.toggle_action(cx);
(action, name.into())
(action, icon_tooltip.into())
};
Some(
@ -748,6 +754,10 @@ pub mod test {
None
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
None
}
fn toggle_action(&self) -> Box<dyn Action> {
ToggleTestPanel.boxed_clone()
}

View file

@ -168,6 +168,11 @@ fn main() {
client.telemetry().start(installation_id, session_id, cx);
let telemetry_settings = *settings::get::<TelemetrySettings>(cx);
client.telemetry().report_setting_event(
telemetry_settings,
"theme",
theme::current(cx).meta.name.to_string(),
);
let event_operation = match existing_installation_id_found {
Some(false) => "first open",
_ => "open",

View file

@ -173,6 +173,11 @@ fn main() {
client.telemetry().start(installation_id, session_id, cx);
let telemetry_settings = *client::TelemetrySettings::get_global(cx);
client.telemetry().report_setting_event(
telemetry_settings,
"theme",
cx.theme().name.to_string(),
);
let event_operation = match existing_installation_id_found {
Some(false) => "first open",
_ => "open",

View file

@ -10,11 +10,6 @@ fi
environment=$1
version=$2
if [[ ${environment} == "nightly" ]]; then
echo "nightly is not yet supported"
exit 1
fi
export_vars_for_environment ${environment}
image_id=$(image_id_for_version ${version})
@ -23,6 +18,6 @@ export ZED_KUBE_NAMESPACE=${environment}
export ZED_IMAGE_ID=${image_id}
target_zed_kube_cluster
envsubst < crates/collab/k8s/manifest.template.yml | kubectl apply -f -
envsubst < crates/collab/k8s/collab.template.yml | kubectl apply -f -
echo "deployed collab v${version} to ${environment}"

25
script/deploy-postgrest Executable file
View file

@ -0,0 +1,25 @@
#!/bin/bash
set -eu
source script/lib/deploy-helpers.sh
if [[ $# < 1 ]]; then
echo "Usage: $0 <production|staging> (postgrest not needed on preview or nightly)"
exit 1
fi
environment=$1
if [[ ${environment} == "preview" || ${environment} == "nightly" ]]; then
echo "website does not exist in preview or nightly"
exit 1
fi
export_vars_for_environment ${environment}
export ZED_DO_CERTIFICATE_ID=$(doctl compute certificate list --format ID --no-header)
export ZED_KUBE_NAMESPACE=${environment}
target_zed_kube_cluster
envsubst < crates/collab/k8s/postgrest.template.yml | kubectl apply -f -
echo "deployed postgrest"