Create command to select active file in file_explorer

This commit is contained in:
Dániel Buga 2022-04-07 09:03:29 +02:00
parent d57f85892a
commit f6d801ecfc
4 changed files with 55 additions and 1 deletions

View File

@ -37,6 +37,21 @@ pub struct Syntax {
pub styles: Option<Arc<Spans<Style>>>, pub styles: Option<Arc<Spans<Style>>>,
} }
impl std::fmt::Debug for Syntax {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Syntax")
.field("rev", &self.rev)
.field("language", &self.language)
.field("text", &self.text)
.field("tree", &self.tree)
.field("normal_lines", &self.normal_lines)
.field("line_height", &self.line_height)
.field("lens_height", &self.lens_height)
.field("styles", &self.styles)
.finish()
}
}
impl Syntax { impl Syntax {
pub fn init(path: &Path) -> Option<Syntax> { pub fn init(path: &Path) -> Option<Syntax> {
LapceLanguage::from_path(path).map(|l| Syntax { LapceLanguage::from_path(path).map(|l| Syntax {

View File

@ -560,6 +560,7 @@ pub enum EnsureVisiblePosition {
CenterOfWindow, CenterOfWindow,
} }
#[derive(Debug)]
pub enum LapceUICommand { pub enum LapceUICommand {
InitChildren, InitChildren,
InitTerminalPanel(bool), InitTerminalPanel(bool),
@ -704,4 +705,7 @@ pub enum LapceUICommand {
GotoDefinition(WidgetId, usize, EditorLocationNew), GotoDefinition(WidgetId, usize, EditorLocationNew),
PaletteReferences(usize, Vec<Location>), PaletteReferences(usize, Vec<Location>),
GotoLocation(Location), GotoLocation(Location),
ActiveFileChanged {
path: Option<PathBuf>,
},
} }

View File

@ -6,14 +6,15 @@
Rect, RenderContext, Size, Target, UpdateCtx, Widget, WidgetId, WidgetPod, Rect, RenderContext, Size, Target, UpdateCtx, Widget, WidgetId, WidgetPod,
}; };
use lapce_data::{ use lapce_data::{
buffer::BufferContent,
command::{LapceUICommand, LAPCE_UI_COMMAND}, command::{LapceUICommand, LAPCE_UI_COMMAND},
config::LapceTheme, config::LapceTheme,
data::{ data::{
DragContent, EditorTabChild, LapceEditorTabData, LapceTabData, SplitContent, DragContent, EditorTabChild, LapceEditorTabData, LapceTabData, SplitContent,
}, },
db::EditorTabChildInfo,
editor::TabRect, editor::TabRect,
split::{SplitDirection, SplitMoveDirection}, split::{SplitDirection, SplitMoveDirection},
}; };
use crate::editor::{ use crate::editor::{
@ -343,6 +344,30 @@ fn event(
)); ));
return; return;
} }
LapceUICommand::EnsureEditorTabActiveVisble => {
if let Some(tab) =
data.main_split.editor_tabs.get(&self.widget_id)
{
let active = &tab.children[tab.active];
let EditorTabChildInfo::Editor(info) =
active.child_info(data, 4);
ctx.submit_command(Command::new(
LAPCE_UI_COMMAND,
LapceUICommand::ActiveFileChanged {
path: if let BufferContent::File(path) =
info.content
{
Some(path.clone())
} else {
None
},
},
Target::Widget(data.file_explorer.widget_id),
));
return;
}
}
_ => (), _ => (),
} }
} }

View File

@ -367,6 +367,16 @@ fn event(
data: &mut LapceTabData, data: &mut LapceTabData,
_env: &Env, _env: &Env,
) { ) {
match event {
Event::Command(cmd) if cmd.is(LAPCE_UI_COMMAND) => {
let command = cmd.get_unchecked(LAPCE_UI_COMMAND);
if let LapceUICommand::ActiveFileChanged { path } = command {
println!("{path:?}");
}
}
_ => {}
}
if !ctx.is_hot() { if !ctx.is_hot() {
return; return;
} }