From a62b76eda3529f379afc5d8040c3240edb2aaa23 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 19 Jul 2024 20:24:51 -0700 Subject: [PATCH] core: add binding to write screen to file --- src/Surface.zig | 19 +++++++++++++++++-- src/input/Binding.zig | 4 ++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Surface.zig b/src/Surface.zig index 373c18613..fe7fd2157 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -3324,6 +3324,11 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool }, .unlocked); }, + .write_screen_file => |v| try self.writeScreenFile( + .screen, + v, + ), + .write_scrollback_file => |v| try self.writeScreenFile( .history, v, @@ -3512,8 +3517,9 @@ fn closingAction(action: input.Binding.Action) bool { /// The portion of the screen to write for writeScreenFile. const WriteScreenLoc = enum { - history, - selection, + screen, // Full screen + history, // History (scrollback) + selection, // Selected text }; fn writeScreenFile( @@ -3556,6 +3562,15 @@ fn writeScreenFile( ); }, + .screen => screen: { + break :screen terminal.Selection.init( + pages.getTopLeft(.screen), + pages.getBottomRight(.screen) orelse + break :screen null, + false, + ); + }, + .selection => self.io.terminal.screen.selection, }; diff --git a/src/input/Binding.zig b/src/input/Binding.zig index 37f478185..213e711c9 100644 --- a/src/input/Binding.zig +++ b/src/input/Binding.zig @@ -211,6 +211,10 @@ pub const Action = union(enum) { /// write_scrollback_file: WriteScreenAction, + /// Same as write_scrollback_file but writes the full screen contents. + /// See write_scrollback_file for available values. + write_screen_file: WriteScreenAction, + /// Same as write_scrollback_file but writes the selected text. /// If there is no selected text this does nothing (it doesn't /// even create an empty file). See write_scrollback_file for