Properly fixed merge issues
This commit is contained in:
parent
d373e4424f
commit
4a860d4da4
4 changed files with 77 additions and 122 deletions
|
@ -1,71 +1,77 @@
|
||||||
use alacritty_terminal::{ansi::Color as AnsiColor, term::color::Rgb as AlacRgb};
|
use alacritty_terminal::{ansi::Color as AnsiColor, term::color::Rgb as AlacRgb};
|
||||||
use gpui::color::Color;
|
use gpui::color::Color;
|
||||||
use theme::TerminalStyle;
|
use theme::TerminalColors;
|
||||||
|
|
||||||
///Converts a 2, 8, or 24 bit color ANSI color to the GPUI equivalent
|
///Converts a 2, 8, or 24 bit color ANSI color to the GPUI equivalent
|
||||||
pub fn convert_color(alac_color: &AnsiColor, style: &TerminalStyle) -> Color {
|
pub fn convert_color(alac_color: &AnsiColor, colors: &TerminalColors, modal: bool) -> Color {
|
||||||
|
let background = if modal {
|
||||||
|
colors.modal_background
|
||||||
|
} else {
|
||||||
|
colors.background
|
||||||
|
};
|
||||||
|
|
||||||
match alac_color {
|
match alac_color {
|
||||||
//Named and theme defined colors
|
//Named and theme defined colors
|
||||||
alacritty_terminal::ansi::Color::Named(n) => match n {
|
alacritty_terminal::ansi::Color::Named(n) => match n {
|
||||||
alacritty_terminal::ansi::NamedColor::Black => style.black,
|
alacritty_terminal::ansi::NamedColor::Black => colors.black,
|
||||||
alacritty_terminal::ansi::NamedColor::Red => style.red,
|
alacritty_terminal::ansi::NamedColor::Red => colors.red,
|
||||||
alacritty_terminal::ansi::NamedColor::Green => style.green,
|
alacritty_terminal::ansi::NamedColor::Green => colors.green,
|
||||||
alacritty_terminal::ansi::NamedColor::Yellow => style.yellow,
|
alacritty_terminal::ansi::NamedColor::Yellow => colors.yellow,
|
||||||
alacritty_terminal::ansi::NamedColor::Blue => style.blue,
|
alacritty_terminal::ansi::NamedColor::Blue => colors.blue,
|
||||||
alacritty_terminal::ansi::NamedColor::Magenta => style.magenta,
|
alacritty_terminal::ansi::NamedColor::Magenta => colors.magenta,
|
||||||
alacritty_terminal::ansi::NamedColor::Cyan => style.cyan,
|
alacritty_terminal::ansi::NamedColor::Cyan => colors.cyan,
|
||||||
alacritty_terminal::ansi::NamedColor::White => style.white,
|
alacritty_terminal::ansi::NamedColor::White => colors.white,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightBlack => style.bright_black,
|
alacritty_terminal::ansi::NamedColor::BrightBlack => colors.bright_black,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightRed => style.bright_red,
|
alacritty_terminal::ansi::NamedColor::BrightRed => colors.bright_red,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightGreen => style.bright_green,
|
alacritty_terminal::ansi::NamedColor::BrightGreen => colors.bright_green,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightYellow => style.bright_yellow,
|
alacritty_terminal::ansi::NamedColor::BrightYellow => colors.bright_yellow,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightBlue => style.bright_blue,
|
alacritty_terminal::ansi::NamedColor::BrightBlue => colors.bright_blue,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightMagenta => style.bright_magenta,
|
alacritty_terminal::ansi::NamedColor::BrightMagenta => colors.bright_magenta,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightCyan => style.bright_cyan,
|
alacritty_terminal::ansi::NamedColor::BrightCyan => colors.bright_cyan,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightWhite => style.bright_white,
|
alacritty_terminal::ansi::NamedColor::BrightWhite => colors.bright_white,
|
||||||
alacritty_terminal::ansi::NamedColor::Foreground => style.foreground,
|
alacritty_terminal::ansi::NamedColor::Foreground => colors.foreground,
|
||||||
alacritty_terminal::ansi::NamedColor::Background => style.background,
|
alacritty_terminal::ansi::NamedColor::Background => background,
|
||||||
alacritty_terminal::ansi::NamedColor::Cursor => style.cursor,
|
alacritty_terminal::ansi::NamedColor::Cursor => colors.cursor,
|
||||||
alacritty_terminal::ansi::NamedColor::DimBlack => style.dim_black,
|
alacritty_terminal::ansi::NamedColor::DimBlack => colors.dim_black,
|
||||||
alacritty_terminal::ansi::NamedColor::DimRed => style.dim_red,
|
alacritty_terminal::ansi::NamedColor::DimRed => colors.dim_red,
|
||||||
alacritty_terminal::ansi::NamedColor::DimGreen => style.dim_green,
|
alacritty_terminal::ansi::NamedColor::DimGreen => colors.dim_green,
|
||||||
alacritty_terminal::ansi::NamedColor::DimYellow => style.dim_yellow,
|
alacritty_terminal::ansi::NamedColor::DimYellow => colors.dim_yellow,
|
||||||
alacritty_terminal::ansi::NamedColor::DimBlue => style.dim_blue,
|
alacritty_terminal::ansi::NamedColor::DimBlue => colors.dim_blue,
|
||||||
alacritty_terminal::ansi::NamedColor::DimMagenta => style.dim_magenta,
|
alacritty_terminal::ansi::NamedColor::DimMagenta => colors.dim_magenta,
|
||||||
alacritty_terminal::ansi::NamedColor::DimCyan => style.dim_cyan,
|
alacritty_terminal::ansi::NamedColor::DimCyan => colors.dim_cyan,
|
||||||
alacritty_terminal::ansi::NamedColor::DimWhite => style.dim_white,
|
alacritty_terminal::ansi::NamedColor::DimWhite => colors.dim_white,
|
||||||
alacritty_terminal::ansi::NamedColor::BrightForeground => style.bright_foreground,
|
alacritty_terminal::ansi::NamedColor::BrightForeground => colors.bright_foreground,
|
||||||
alacritty_terminal::ansi::NamedColor::DimForeground => style.dim_foreground,
|
alacritty_terminal::ansi::NamedColor::DimForeground => colors.dim_foreground,
|
||||||
},
|
},
|
||||||
//'True' colors
|
//'True' colors
|
||||||
alacritty_terminal::ansi::Color::Spec(rgb) => Color::new(rgb.r, rgb.g, rgb.b, u8::MAX),
|
alacritty_terminal::ansi::Color::Spec(rgb) => Color::new(rgb.r, rgb.g, rgb.b, u8::MAX),
|
||||||
//8 bit, indexed colors
|
//8 bit, indexed colors
|
||||||
alacritty_terminal::ansi::Color::Indexed(i) => get_color_at_index(&(*i as usize), style),
|
alacritty_terminal::ansi::Color::Indexed(i) => get_color_at_index(&(*i as usize), colors),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///Converts an 8 bit ANSI color to it's GPUI equivalent.
|
///Converts an 8 bit ANSI color to it's GPUI equivalent.
|
||||||
///Accepts usize for compatability with the alacritty::Colors interface,
|
///Accepts usize for compatability with the alacritty::Colors interface,
|
||||||
///Other than that use case, should only be called with values in the [0,255] range
|
///Other than that use case, should only be called with values in the [0,255] range
|
||||||
pub fn get_color_at_index(index: &usize, style: &TerminalStyle) -> Color {
|
pub fn get_color_at_index(index: &usize, colors: &TerminalColors) -> Color {
|
||||||
match index {
|
match index {
|
||||||
//0-15 are the same as the named colors above
|
//0-15 are the same as the named colors above
|
||||||
0 => style.black,
|
0 => colors.black,
|
||||||
1 => style.red,
|
1 => colors.red,
|
||||||
2 => style.green,
|
2 => colors.green,
|
||||||
3 => style.yellow,
|
3 => colors.yellow,
|
||||||
4 => style.blue,
|
4 => colors.blue,
|
||||||
5 => style.magenta,
|
5 => colors.magenta,
|
||||||
6 => style.cyan,
|
6 => colors.cyan,
|
||||||
7 => style.white,
|
7 => colors.white,
|
||||||
8 => style.bright_black,
|
8 => colors.bright_black,
|
||||||
9 => style.bright_red,
|
9 => colors.bright_red,
|
||||||
10 => style.bright_green,
|
10 => colors.bright_green,
|
||||||
11 => style.bright_yellow,
|
11 => colors.bright_yellow,
|
||||||
12 => style.bright_blue,
|
12 => colors.bright_blue,
|
||||||
13 => style.bright_magenta,
|
13 => colors.bright_magenta,
|
||||||
14 => style.bright_cyan,
|
14 => colors.bright_cyan,
|
||||||
15 => style.bright_white,
|
15 => colors.bright_white,
|
||||||
//16-231 are mapped to their RGB colors on a 0-5 range per channel
|
//16-231 are mapped to their RGB colors on a 0-5 range per channel
|
||||||
16..=231 => {
|
16..=231 => {
|
||||||
let (r, g, b) = rgb_for_index(&(*index as u8)); //Split the index into it's ANSI-RGB components
|
let (r, g, b) = rgb_for_index(&(*index as u8)); //Split the index into it's ANSI-RGB components
|
||||||
|
@ -79,19 +85,19 @@ pub fn get_color_at_index(index: &usize, style: &TerminalStyle) -> Color {
|
||||||
Color::new(i * step, i * step, i * step, u8::MAX) //Map the ANSI-grayscale components to the RGB-grayscale
|
Color::new(i * step, i * step, i * step, u8::MAX) //Map the ANSI-grayscale components to the RGB-grayscale
|
||||||
}
|
}
|
||||||
//For compatability with the alacritty::Colors interface
|
//For compatability with the alacritty::Colors interface
|
||||||
256 => style.foreground,
|
256 => colors.foreground,
|
||||||
257 => style.background,
|
257 => colors.background,
|
||||||
258 => style.cursor,
|
258 => colors.cursor,
|
||||||
259 => style.dim_black,
|
259 => colors.dim_black,
|
||||||
260 => style.dim_red,
|
260 => colors.dim_red,
|
||||||
261 => style.dim_green,
|
261 => colors.dim_green,
|
||||||
262 => style.dim_yellow,
|
262 => colors.dim_yellow,
|
||||||
263 => style.dim_blue,
|
263 => colors.dim_blue,
|
||||||
264 => style.dim_magenta,
|
264 => colors.dim_magenta,
|
||||||
265 => style.dim_cyan,
|
265 => colors.dim_cyan,
|
||||||
266 => style.dim_white,
|
266 => colors.dim_white,
|
||||||
267 => style.bright_foreground,
|
267 => colors.bright_foreground,
|
||||||
268 => style.black, //'Dim Background', non-standard color
|
268 => colors.black, //'Dim Background', non-standard color
|
||||||
_ => Color::new(0, 0, 0, 255),
|
_ => Color::new(0, 0, 0, 255),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use gpui::{ViewContext, ViewHandle};
|
use gpui::{ViewContext, ViewHandle};
|
||||||
use workspace::Workspace;
|
use workspace::Workspace;
|
||||||
|
|
||||||
use crate::{DeployModal, Event, Terminal};
|
use crate::{get_working_directory, DeployModal, Event, Terminal};
|
||||||
|
|
||||||
pub fn deploy_modal(workspace: &mut Workspace, _: &DeployModal, cx: &mut ViewContext<Workspace>) {
|
pub fn deploy_modal(workspace: &mut Workspace, _: &DeployModal, cx: &mut ViewContext<Workspace>) {
|
||||||
if let Some(stored_terminal) = cx.default_global::<Option<ViewHandle<Terminal>>>().clone() {
|
if let Some(stored_terminal) = cx.default_global::<Option<ViewHandle<Terminal>>>().clone() {
|
||||||
|
@ -12,7 +12,7 @@ pub fn deploy_modal(workspace: &mut Workspace, _: &DeployModal, cx: &mut ViewCon
|
||||||
.active_entry()
|
.active_entry()
|
||||||
.and_then(|entry_id| project.worktree_for_entry(entry_id, cx))
|
.and_then(|entry_id| project.worktree_for_entry(entry_id, cx))
|
||||||
.and_then(|worktree_handle| worktree_handle.read(cx).as_local())
|
.and_then(|worktree_handle| worktree_handle.read(cx).as_local())
|
||||||
.map(|wt| wt.abs_path().to_path_buf());
|
.and_then(get_working_directory);
|
||||||
|
|
||||||
let displaced_modal = workspace.toggle_modal(cx, |_, cx| {
|
let displaced_modal = workspace.toggle_modal(cx, |_, cx| {
|
||||||
let this = cx.add_view(|cx| Terminal::new(cx, abs_path, true));
|
let this = cx.add_view(|cx| Terminal::new(cx, abs_path, true));
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
pub mod color_translation;
|
||||||
pub mod gpui_func_tools;
|
pub mod gpui_func_tools;
|
||||||
mod modal;
|
mod modal;
|
||||||
pub mod terminal_element;
|
pub mod terminal_element;
|
||||||
|
@ -47,10 +48,6 @@ const DEBUG_TERMINAL_HEIGHT: f32 = 200.;
|
||||||
const DEBUG_CELL_WIDTH: f32 = 5.;
|
const DEBUG_CELL_WIDTH: f32 = 5.;
|
||||||
const DEBUG_LINE_HEIGHT: f32 = 5.;
|
const DEBUG_LINE_HEIGHT: f32 = 5.;
|
||||||
|
|
||||||
pub mod color_translation;
|
|
||||||
pub mod gpui_func_tools;
|
|
||||||
pub mod terminal_element;
|
|
||||||
|
|
||||||
///Action for carrying the input to the PTY
|
///Action for carrying the input to the PTY
|
||||||
#[derive(Clone, Default, Debug, PartialEq, Eq)]
|
#[derive(Clone, Default, Debug, PartialEq, Eq)]
|
||||||
pub struct Input(pub String);
|
pub struct Input(pub String);
|
||||||
|
@ -258,7 +255,7 @@ impl Terminal {
|
||||||
AlacTermEvent::ColorRequest(index, format) => {
|
AlacTermEvent::ColorRequest(index, format) => {
|
||||||
let color = self.term.lock().colors()[index].unwrap_or_else(|| {
|
let color = self.term.lock().colors()[index].unwrap_or_else(|| {
|
||||||
let term_style = &cx.global::<Settings>().theme.terminal;
|
let term_style = &cx.global::<Settings>().theme.terminal;
|
||||||
to_alac_rgb(get_color_at_index(&index, term_style))
|
to_alac_rgb(get_color_at_index(&index, &term_style.colors))
|
||||||
});
|
});
|
||||||
self.write_to_pty(&Input(format(color)), cx)
|
self.write_to_pty(&Input(format(color)), cx)
|
||||||
}
|
}
|
||||||
|
@ -461,7 +458,7 @@ impl Item for Terminal {
|
||||||
//From what I can tell, there's no way to tell the current working
|
//From what I can tell, there's no way to tell the current working
|
||||||
//Directory of the terminal from outside the terminal. There might be
|
//Directory of the terminal from outside the terminal. There might be
|
||||||
//solutions to this, but they are non-trivial and require more IPC
|
//solutions to this, but they are non-trivial and require more IPC
|
||||||
Some(Terminal::new(cx, self.associated_directory.clone()))
|
Some(Terminal::new(cx, self.associated_directory.clone(), false))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn project_path(&self, _cx: &gpui::AppContext) -> Option<ProjectPath> {
|
fn project_path(&self, _cx: &gpui::AppContext) -> Option<ProjectPath> {
|
||||||
|
@ -650,7 +647,7 @@ mod tests {
|
||||||
///If this test is failing for you, check that DEBUG_TERMINAL_WIDTH is wide enough to fit your entire command prompt!
|
///If this test is failing for you, check that DEBUG_TERMINAL_WIDTH is wide enough to fit your entire command prompt!
|
||||||
#[gpui::test]
|
#[gpui::test]
|
||||||
async fn test_copy(cx: &mut TestAppContext) {
|
async fn test_copy(cx: &mut TestAppContext) {
|
||||||
let terminal = cx.add_view(Default::default(), |cx| Terminal::new(cx, None));
|
let terminal = cx.add_view(Default::default(), |cx| Terminal::new(cx, None, false));
|
||||||
cx.set_condition_duration(Duration::from_secs(2));
|
cx.set_condition_duration(Duration::from_secs(2));
|
||||||
|
|
||||||
terminal.update(cx, |terminal, cx| {
|
terminal.update(cx, |terminal, cx| {
|
||||||
|
|
|
@ -26,7 +26,7 @@ use gpui::{
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use ordered_float::OrderedFloat;
|
use ordered_float::OrderedFloat;
|
||||||
use settings::Settings;
|
use settings::Settings;
|
||||||
use theme::{TerminalColors, TerminalStyle};
|
use theme::TerminalStyle;
|
||||||
|
|
||||||
use std::{cmp::min, ops::Range, rc::Rc, sync::Arc};
|
use std::{cmp::min, ops::Range, rc::Rc, sync::Arc};
|
||||||
use std::{fmt::Debug, ops::Sub};
|
use std::{fmt::Debug, ops::Sub};
|
||||||
|
@ -130,7 +130,7 @@ impl Element for TerminalEl {
|
||||||
|
|
||||||
//Now that we're done with the mutable portion, grab the immutable settings and view again
|
//Now that we're done with the mutable portion, grab the immutable settings and view again
|
||||||
let view = view_handle.read(cx);
|
let view = view_handle.read(cx);
|
||||||
let term = view.term.lock();
|
|
||||||
let (selection_color, terminal_theme) = {
|
let (selection_color, terminal_theme) = {
|
||||||
let theme = &(cx.global::<Settings>()).theme;
|
let theme = &(cx.global::<Settings>()).theme;
|
||||||
(theme.editor.selection.selection, &theme.terminal)
|
(theme.editor.selection.selection, &theme.terminal)
|
||||||
|
@ -388,7 +388,7 @@ impl Element for TerminalEl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mouse_to_cell_data(
|
pub fn mouse_to_cell_data(
|
||||||
pos: Vector2F,
|
pos: Vector2F,
|
||||||
origin: Vector2F,
|
origin: Vector2F,
|
||||||
cur_size: SizeInfo,
|
cur_size: SizeInfo,
|
||||||
|
@ -543,54 +543,6 @@ fn cell_style(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///Converts a 2, 8, or 24 bit color ANSI color to the GPUI equivalent
|
|
||||||
fn convert_color(alac_color: &AnsiColor, colors: &TerminalColors, modal: bool) -> Color {
|
|
||||||
let background = if modal {
|
|
||||||
colors.modal_background
|
|
||||||
} else {
|
|
||||||
colors.background
|
|
||||||
};
|
|
||||||
|
|
||||||
match alac_color {
|
|
||||||
//Named and theme defined colors
|
|
||||||
alacritty_terminal::ansi::Color::Named(n) => match n {
|
|
||||||
alacritty_terminal::ansi::NamedColor::Black => colors.black,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Red => colors.red,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Green => colors.green,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Yellow => colors.yellow,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Blue => colors.blue,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Magenta => colors.magenta,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Cyan => colors.cyan,
|
|
||||||
alacritty_terminal::ansi::NamedColor::White => colors.white,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightBlack => colors.bright_black,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightRed => colors.bright_red,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightGreen => colors.bright_green,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightYellow => colors.bright_yellow,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightBlue => colors.bright_blue,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightMagenta => colors.bright_magenta,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightCyan => colors.bright_cyan,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightWhite => colors.bright_white,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Foreground => colors.foreground,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Background => background,
|
|
||||||
alacritty_terminal::ansi::NamedColor::Cursor => colors.cursor,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimBlack => colors.dim_black,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimRed => colors.dim_red,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimGreen => colors.dim_green,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimYellow => colors.dim_yellow,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimBlue => colors.dim_blue,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimMagenta => colors.dim_magenta,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimCyan => colors.dim_cyan,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimWhite => colors.dim_white,
|
|
||||||
alacritty_terminal::ansi::NamedColor::BrightForeground => colors.bright_foreground,
|
|
||||||
alacritty_terminal::ansi::NamedColor::DimForeground => colors.dim_foreground,
|
|
||||||
},
|
|
||||||
//'True' colors
|
|
||||||
alacritty_terminal::ansi::Color::Spec(rgb) => Color::new(rgb.r, rgb.g, rgb.b, u8::MAX),
|
|
||||||
//8 bit, indexed colors
|
|
||||||
alacritty_terminal::ansi::Color::Indexed(i) => get_color_at_index(i, colors),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn attach_mouse_handlers(
|
fn attach_mouse_handlers(
|
||||||
origin: Vector2F,
|
origin: Vector2F,
|
||||||
cur_size: SizeInfo,
|
cur_size: SizeInfo,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue