get try mostly working
This commit is contained in:
parent
fa3594bac8
commit
197eec39e5
|
@ -119,4 +119,11 @@ impl View for NuView<'_> {
|
||||||
NuView::Preview(v) => v.exit(),
|
NuView::Preview(v) => v.exit(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn setup(&mut self, config: ViewConfig<'_>) {
|
||||||
|
match self {
|
||||||
|
NuView::Records(v) => v.setup(config),
|
||||||
|
NuView::Preview(v) => v.setup(config),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,7 +151,7 @@ pub struct ExploreConfig {
|
||||||
pub cmd_bar_background: Style,
|
pub cmd_bar_background: Style,
|
||||||
pub highlight: Style,
|
pub highlight: Style,
|
||||||
/// if true, the explore view will immediately try to run the command as it is typed
|
/// if true, the explore view will immediately try to run the command as it is typed
|
||||||
pub try_immediate: bool,
|
pub try_reactive: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for ExploreConfig {
|
impl Default for ExploreConfig {
|
||||||
|
@ -171,7 +171,7 @@ impl Default for ExploreConfig {
|
||||||
cmd_bar_text: color(Some(Color::Rgb(196, 201, 198)), None),
|
cmd_bar_text: color(Some(Color::Rgb(196, 201, 198)), None),
|
||||||
cmd_bar_background: color(None, None),
|
cmd_bar_background: color(None, None),
|
||||||
highlight: color(Some(Color::Black), Some(Color::Yellow)),
|
highlight: color(Some(Color::Black), Some(Color::Yellow)),
|
||||||
try_immediate: false,
|
try_reactive: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,6 +230,14 @@ impl ExploreConfig {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(hm) = explore_cfg_hash_map.get("try").and_then(create_map) {
|
||||||
|
if let Some(reactive) = hm.get("reactive") {
|
||||||
|
if let Ok(b) = reactive.as_bool() {
|
||||||
|
ret.try_reactive = b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -440,13 +440,15 @@ fn run_command(
|
||||||
Command::View { mut cmd, stackable } => {
|
Command::View { mut cmd, stackable } => {
|
||||||
// what we do we just replace the view.
|
// what we do we just replace the view.
|
||||||
let value = view_stack.curr_view.as_mut().and_then(|p| p.view.exit());
|
let value = view_stack.curr_view.as_mut().and_then(|p| p.view.exit());
|
||||||
let new_view = cmd.spawn(engine_state, stack, value)?;
|
let mut new_view = cmd.spawn(engine_state, stack, value)?;
|
||||||
if let Some(view) = view_stack.curr_view.take() {
|
if let Some(view) = view_stack.curr_view.take() {
|
||||||
if !view.stackable {
|
if !view.stackable {
|
||||||
view_stack.stack.push(view);
|
view_stack.stack.push(view);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setup_view(&mut new_view, &pager.config);
|
||||||
|
|
||||||
view_stack.curr_view = Some(Page::raw(new_view, stackable));
|
view_stack.curr_view = Some(Page::raw(new_view, stackable));
|
||||||
|
|
||||||
Ok(CmdResult::new(false, true, cmd.name().to_owned()))
|
Ok(CmdResult::new(false, true, cmd.name().to_owned()))
|
||||||
|
@ -454,6 +456,16 @@ fn run_command(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn setup_view(view: &mut Box<dyn View>, cfg: &PagerConfig<'_>) {
|
||||||
|
let cfg = ViewConfig::new(
|
||||||
|
cfg.nu_config,
|
||||||
|
cfg.explore_config,
|
||||||
|
cfg.style_computer,
|
||||||
|
cfg.lscolors,
|
||||||
|
);
|
||||||
|
view.setup(cfg);
|
||||||
|
}
|
||||||
|
|
||||||
fn set_cursor_cmd_bar(f: &mut Frame, area: Rect, pager: &Pager) {
|
fn set_cursor_cmd_bar(f: &mut Frame, area: Rect, pager: &Pager) {
|
||||||
if pager.cmd_buf.is_cmd_input {
|
if pager.cmd_buf.is_cmd_input {
|
||||||
// todo: deal with a situation where we exceed the bar width
|
// todo: deal with a situation where we exceed the bar width
|
||||||
|
|
|
@ -770,53 +770,3 @@ fn _transpose_table(
|
||||||
|
|
||||||
data
|
data
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn theme_from_config(config: &ConfigMap) -> TableTheme {
|
|
||||||
// let mut theme = TableTheme::default();
|
|
||||||
|
|
||||||
// let colors = get_color_map(config);
|
|
||||||
|
|
||||||
// if let Some(s) = colors.get("separator") {
|
|
||||||
// theme.table.separator_style = *s;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// theme.cursor.selected_cell = colors.get("selected_cell").cloned();
|
|
||||||
// theme.cursor.selected_row = colors.get("selected_row").cloned();
|
|
||||||
// theme.cursor.selected_column = colors.get("selected_column").cloned();
|
|
||||||
|
|
||||||
// theme.table.show_header = config_get_bool(config, "show_head", true);
|
|
||||||
// theme.table.show_index = config_get_bool(config, "show_index", false);
|
|
||||||
|
|
||||||
// theme.table.column_padding_left = config_get_usize(config, "column_padding_left", 1);
|
|
||||||
// theme.table.column_padding_right = config_get_usize(config, "column_padding_right", 1);
|
|
||||||
|
|
||||||
// theme
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn config_get_bool(config: &ConfigMap, key: &str, default: bool) -> bool {
|
|
||||||
// config
|
|
||||||
// .get(key)
|
|
||||||
// .and_then(|v| v.as_bool().ok())
|
|
||||||
// .unwrap_or(default)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn config_get_usize(config: &ConfigMap, key: &str, default: usize) -> usize {
|
|
||||||
// config
|
|
||||||
// .get(key)
|
|
||||||
// .and_then(|v| v.coerce_str().ok())
|
|
||||||
// .and_then(|s| s.parse::<usize>().ok())
|
|
||||||
// .unwrap_or(default)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// #[derive(Debug, Default, Clone)]
|
|
||||||
// pub struct TableTheme {
|
|
||||||
// table: TableStyle,
|
|
||||||
// cursor: CursorStyle,
|
|
||||||
// }
|
|
||||||
|
|
||||||
// #[derive(Debug, Default, Clone)]
|
|
||||||
// struct CursorStyle {
|
|
||||||
// selected_cell: Option<NuStyle>,
|
|
||||||
// selected_column: Option<NuStyle>,
|
|
||||||
// selected_row: Option<NuStyle>,
|
|
||||||
// }
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ use std::cmp::min;
|
||||||
pub struct TryView<'a> {
|
pub struct TryView<'a> {
|
||||||
input: Value,
|
input: Value,
|
||||||
command: String,
|
command: String,
|
||||||
immediate: bool,
|
reactive: bool,
|
||||||
table: Option<RecordView<'a>>,
|
table: Option<RecordView<'a>>,
|
||||||
table_theme: TableConfig,
|
table_theme: TableConfig,
|
||||||
view_mode: bool,
|
view_mode: bool,
|
||||||
|
@ -33,7 +33,7 @@ impl<'a> TryView<'a> {
|
||||||
Self {
|
Self {
|
||||||
input,
|
input,
|
||||||
table: None,
|
table: None,
|
||||||
immediate: false,
|
reactive: false,
|
||||||
table_theme: TableConfig::default(),
|
table_theme: TableConfig::default(),
|
||||||
border_color: Style::default(),
|
border_color: Style::default(),
|
||||||
highlighted_color: Style::default(),
|
highlighted_color: Style::default(),
|
||||||
|
@ -183,7 +183,7 @@ impl View for TryView<'_> {
|
||||||
if !self.command.is_empty() {
|
if !self.command.is_empty() {
|
||||||
self.command.pop();
|
self.command.pop();
|
||||||
|
|
||||||
if self.immediate {
|
if self.reactive {
|
||||||
match self.try_run(engine_state, stack) {
|
match self.try_run(engine_state, stack) {
|
||||||
Ok(_) => info.report = Some(Report::default()),
|
Ok(_) => info.report = Some(Report::default()),
|
||||||
Err(err) => info.report = Some(Report::error(format!("Error: {err}"))),
|
Err(err) => info.report = Some(Report::error(format!("Error: {err}"))),
|
||||||
|
@ -196,7 +196,7 @@ impl View for TryView<'_> {
|
||||||
KeyCode::Char(c) => {
|
KeyCode::Char(c) => {
|
||||||
self.command.push(*c);
|
self.command.push(*c);
|
||||||
|
|
||||||
if self.immediate {
|
if self.reactive {
|
||||||
match self.try_run(engine_state, stack) {
|
match self.try_run(engine_state, stack) {
|
||||||
Ok(_) => info.report = Some(Report::default()),
|
Ok(_) => info.report = Some(Report::default()),
|
||||||
Err(err) => info.report = Some(Report::error(format!("Error: {err}"))),
|
Err(err) => info.report = Some(Report::error(format!("Error: {err}"))),
|
||||||
|
@ -241,8 +241,7 @@ impl View for TryView<'_> {
|
||||||
fn setup(&mut self, config: ViewConfig<'_>) {
|
fn setup(&mut self, config: ViewConfig<'_>) {
|
||||||
self.border_color = nu_style_to_tui(config.explore_config.table.separator_style);
|
self.border_color = nu_style_to_tui(config.explore_config.table.separator_style);
|
||||||
self.highlighted_color = nu_style_to_tui(config.explore_config.highlight);
|
self.highlighted_color = nu_style_to_tui(config.explore_config.highlight);
|
||||||
// TODO: make sure this is set based on try.reactive setting
|
self.reactive = config.explore_config.try_reactive;
|
||||||
self.immediate = config.explore_config.try_immediate;
|
|
||||||
|
|
||||||
let mut r = RecordView::new(vec![], vec![]);
|
let mut r = RecordView::new(vec![], vec![]);
|
||||||
r.setup(config);
|
r.setup(config);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user