Add support for line numbers in copy mode. A new copy-mode-line-numbers

option has the following modes: off, default (tmux's normal line
numbering where 0 is the top visible line), absolute (first line in
history is 1), relative (relative to the cursor) and hybrid (current
line is absolute, others relative). Also adds
copy-mode-line-number-style and copy-mode-current-line-number-style to
set the style of the line numbers. When copy mode is entered with the
mouse, line numbers stay off.

From Leo Henon in GitHub issue 5025.
This commit is contained in:
nicm
2026-05-01 09:44:42 +00:00
parent a2acf0f7cf
commit 524f283cc6
6 changed files with 419 additions and 26 deletions

View File

@@ -63,6 +63,7 @@ cmd_copy_mode_exec(struct cmd *self, struct cmdq_item *item)
struct client *c = cmdq_get_client(item);
struct session *s;
struct window_pane *wp = target->wp, *swp;
int line_numbers;
if (args_has(args, 'q')) {
window_pane_reset_mode_all(wp);
@@ -85,10 +86,15 @@ cmd_copy_mode_exec(struct cmd *self, struct cmdq_item *item)
swp = source->wp;
else
swp = wp;
line_numbers = 1;
if (event != NULL && KEYC_IS_MOUSE(event->key))
line_numbers = 0;
if (!window_pane_set_mode(wp, swp, &window_copy_mode, NULL, args)) {
window_copy_set_line_numbers(wp, line_numbers);
if (args_has(args, 'M'))
window_copy_start_drag(c, &event->m);
}
} else
window_copy_set_line_numbers(wp, line_numbers);
if (args_has(args, 'u'))
window_copy_pageup(wp, 0);
if (args_has(args, 'd'))