diff --git a/crates/terminal/src/connected_el.rs b/crates/terminal/src/connected_el.rs index bc80796aae5c4935472f1e5a645bd1d91dcd6d25..7e4cbd1e82e29c6d61a42e4cda92b603aa2505f5 100644 --- a/crates/terminal/src/connected_el.rs +++ b/crates/terminal/src/connected_el.rs @@ -505,7 +505,6 @@ impl TerminalEl { //This cannot be done conditionally for unknown reasons. Pending drag and drop rework. //This also does not fire on right-mouse-down-move events wild. .on_move(move |event, cx| { - dbg!(event); if cx.is_parent_view_focused() { if let Some(conn_handle) = connection.upgrade(cx.app) { conn_handle.update(cx.app, |terminal, cx| { diff --git a/crates/terminal/src/connected_view.rs b/crates/terminal/src/connected_view.rs index 703a54ba91e3419fb625bde968db1370f9096b2d..639f5f5d8ec924de156643ca6fa94d1b3fceae93 100644 --- a/crates/terminal/src/connected_view.rs +++ b/crates/terminal/src/connected_view.rs @@ -39,7 +39,7 @@ actions!( Clear, Copy, Paste, - ShowCharacterPalette + ShowCharacterPalette, ] ); impl_internal_actions!(project_panel, [DeployContextMenu]); @@ -364,11 +364,86 @@ impl View for ConnectedView { }); } - fn keymap_context(&self, _: &gpui::AppContext) -> gpui::keymap::Context { + fn keymap_context(&self, cx: &gpui::AppContext) -> gpui::keymap::Context { let mut context = Self::default_keymap_context(); if self.modal { context.set.insert("ModalTerminal".into()); } + let mode = self.terminal.read(cx).last_mode; + context.map.insert( + "screen".to_string(), + (if mode.contains(TermMode::ALT_SCREEN) { + "alt" + } else { + "normal" + }) + .to_string(), + ); + + if mode.contains(TermMode::APP_CURSOR) { + context.set.insert("DECCKM".to_string()); + } + if mode.contains(TermMode::APP_KEYPAD) { + context.set.insert("DECPAM".to_string()); + } + //Note the ! here + if !mode.contains(TermMode::APP_KEYPAD) { + context.set.insert("DECPNM".to_string()); + } + if mode.contains(TermMode::SHOW_CURSOR) { + context.set.insert("DECTCEM".to_string()); + } + if mode.contains(TermMode::LINE_WRAP) { + context.set.insert("DECAWM".to_string()); + } + if mode.contains(TermMode::ORIGIN) { + context.set.insert("DECOM".to_string()); + } + if mode.contains(TermMode::INSERT) { + context.set.insert("IRM".to_string()); + } + //LNM is apparently the name for this. https://vt100.net/docs/vt510-rm/LNM.html + if mode.contains(TermMode::LINE_FEED_NEW_LINE) { + context.set.insert("LNM".to_string()); + } + if mode.contains(TermMode::FOCUS_IN_OUT) { + context.set.insert("report_focus".to_string()); + } + if mode.contains(TermMode::ALTERNATE_SCROLL) { + context.set.insert("alternate_scroll".to_string()); + } + if mode.contains(TermMode::BRACKETED_PASTE) { + context.set.insert("bracketed_paste".to_string()); + } + if mode.intersects(TermMode::MOUSE_MODE) { + context.set.insert("any_mouse_reporting".to_string()); + } + { + let mouse_reporting = if mode.contains(TermMode::MOUSE_REPORT_CLICK) { + "click" + } else if mode.contains(TermMode::MOUSE_DRAG) { + "drag" + } else if mode.contains(TermMode::MOUSE_MOTION) { + "motion" + } else { + "off" + }; + context + .map + .insert("mouse_reporting".to_string(), mouse_reporting.to_string()); + } + { + let format = if mode.contains(TermMode::SGR_MOUSE) { + "sgr" + } else if mode.contains(TermMode::UTF8_MOUSE) { + "utf8" + } else { + "normal" + }; + context + .map + .insert("mouse_format".to_string(), format.to_string()); + } context } } diff --git a/crates/terminal/src/mappings/mouse.rs b/crates/terminal/src/mappings/mouse.rs index 236f954c74ca2e8ed49021aad18a132ef682006d..83d408e75f0e9c2b5047e9d4c3c6b1272c3f6d9e 100644 --- a/crates/terminal/src/mappings/mouse.rs +++ b/crates/terminal/src/mappings/mouse.rs @@ -166,7 +166,6 @@ pub fn mouse_button_report( pub fn mouse_moved_report(point: Point, e: &MouseMovedEvent, mode: TermMode) -> Option> { let button = MouseButton::from_move(e); - dbg!(&button); if !button.is_other() && mode.intersects(TermMode::MOUSE_MOTION | TermMode::MOUSE_DRAG) { //Only drags are reported in drag mode, so block NoneMove. diff --git a/crates/terminal/src/terminal.rs b/crates/terminal/src/terminal.rs index ea3774a586b6ff951702545e8c5ada94b4554183..25e952d5918172d25ed07b90b36c7e168dfa94ce 100644 --- a/crates/terminal/src/terminal.rs +++ b/crates/terminal/src/terminal.rs @@ -627,7 +627,6 @@ impl Terminal { } pub fn mouse_move(&mut self, e: &MouseMovedEvent, origin: Vector2F) { - dbg!("term mouse_move"); let position = e.position.sub(origin); let point = mouse_point(position, self.cur_size, self.last_offset);