diff --git a/kitty/boss.py b/kitty/boss.py index 8fabd68a1..75220082b 100755 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -1096,11 +1096,11 @@ class Boss: s.shutdown(socket.SHUT_RDWR) s.close() - def display_scrollback(self, window: Window, data: Union[bytes, str], input_line_number: int = 0, title: str = '') -> None: + def display_scrollback(self, window: Window, data: Union[bytes, str], input_line_number: int = 0, title: str = '', report_cursor: bool = True) -> None: def prepare_arg(x: str) -> str: x = x.replace('INPUT_LINE_NUMBER', str(input_line_number)) - x = x.replace('CURSOR_LINE', str(window.screen.cursor.y + 1)) - x = x.replace('CURSOR_COLUMN', str(window.screen.cursor.x + 1)) + x = x.replace('CURSOR_LINE', str(window.screen.cursor.y + 1) if report_cursor else '0') + x = x.replace('CURSOR_COLUMN', str(window.screen.cursor.x + 1) if report_cursor else '0') return x cmd = list(map(prepare_arg, get_options().scrollback_pager)) @@ -2003,7 +2003,7 @@ class Boss: w = self.active_window if w: output = '\n'.join(f'{k}={v}' for k, v in os.environ.items()) - self.display_scrollback(w, output, title=_('Current kitty env vars')) + self.display_scrollback(w, output, title=_('Current kitty env vars'), report_cursor=False) def open_file(self, path: str) -> None: if path == ":cocoa::application launched::": @@ -2031,7 +2031,7 @@ class Boss: output = debug_config(get_options()) set_clipboard_string(re.sub(r'\x1b.+?m', '', output)) output += '\n\x1b[35mThis debug output has been copied to the clipboard\x1b[m' - self.display_scrollback(w, output, title=_('Current kitty options')) + self.display_scrollback(w, output, title=_('Current kitty options'), report_cursor=False) @ac('misc', 'Discard this event completely ignoring it') def discard_event(self) -> None: diff --git a/kitty/options/definition.py b/kitty/options/definition.py index f40516feb..d137f274e 100644 --- a/kitty/options/definition.py +++ b/kitty/options/definition.py @@ -288,7 +288,8 @@ passed as STDIN to this program. If you change it, make sure the program you use can handle ANSI escape sequences for colors and text formatting. INPUT_LINE_NUMBER in the command line above will be replaced by an integer representing which line should be at the top of the screen. Similarly -CURSOR_LINE and CURSOR_COLUMN will be replaced by the current cursor position. +CURSOR_LINE and CURSOR_COLUMN will be replaced by the current cursor position or +set to 0 if there is no cursor, for example, when showing the last command output. ''' ) diff --git a/kitty/window.py b/kitty/window.py index a9888d66a..48b804f9b 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -601,7 +601,7 @@ class Window: strings: List[str] = [] self.screen.dump_lines_with_attrs(strings.append) text = ''.join(strings) - get_boss().display_scrollback(self, text, title='Dump of lines') + get_boss().display_scrollback(self, text, title='Dump of lines', report_cursor=False) def write_to_child(self, data: Union[str, bytes]) -> None: if data: @@ -1078,7 +1078,7 @@ class Window: def show_last_command_output(self) -> None: text = self.last_cmd_output(as_ansi=True, add_wrap_markers=True) text = text.replace('\r\n', '\n').replace('\r', '\n') - get_boss().display_scrollback(self, text, title='Last command output') + get_boss().display_scrollback(self, text, title='Last command output', report_cursor=False) def paste_bytes(self, text: Union[str, bytes]) -> None: # paste raw bytes without any processing