From 38d8e2238d05cf3fa693ff3b8c63cd5c248c0a26 Mon Sep 17 00:00:00 2001 From: Aram Drevekenin Date: Tue, 15 Dec 2020 12:58:58 +0100 Subject: [PATCH] fix(compatibility): handle tab characters properly (#99) * fix(compatibility): handle tab characters properly * style(formatting): make rustfmt happy --- src/terminal_pane/terminal_pane.rs | 9 +++++ src/tests/fixtures/tab_characters | Bin 0 -> 633 bytes src/tests/integration/compatibility.rs | 23 +++++++++++++ ...ty__display_tab_characters_properly-2.snap | 32 ++++++++++++++++++ ...lity__display_tab_characters_properly.snap | 32 ++++++++++++++++++ 5 files changed, 96 insertions(+) create mode 100644 src/tests/fixtures/tab_characters create mode 100644 src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly-2.snap create mode 100644 src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly.snap diff --git a/src/terminal_pane/terminal_pane.rs b/src/terminal_pane/terminal_pane.rs index 6754974c..0901b8c9 100644 --- a/src/terminal_pane/terminal_pane.rs +++ b/src/terminal_pane/terminal_pane.rs @@ -368,6 +368,15 @@ impl vte::Perform for TerminalPane { // backspace self.move_cursor_backwards(1); } + 9 => { + // tab + let terminal_tab_character = TerminalCharacter { + character: '\t', + styles: self.pending_styles, + }; + // TODO: handle better with line wrapping + self.scroll.add_character(terminal_tab_character); + } 10 => { // 0a, newline self.add_newline(); diff --git a/src/tests/fixtures/tab_characters b/src/tests/fixtures/tab_characters new file mode 100644 index 0000000000000000000000000000000000000000..cf40aac5d9c6757fe9f5546fae72df798c398299 GIT binary patch literal 633 zcmcIiy>8nu5Y`sRfS!QMEdg905&vX4R)zva0XInE4237cgJ97X;hrdn64Ig1(7t1z zBmGS-ME2zAn3MEw3dkS8M*@n&Bsf@eE(Ly+iw! zA_dfb=)x6b3Xs6P4I})u_%|Q=ru=|ExMp8@dg-y^E99#S2N*)Rx5elsrfOFJ?}mmC z!FF5h9o%w)C%$n(o&5_7wAF{t??`C*Yi z0;n7EpO{y+fA-zsoi-*da_UXb@cBopf&l6;JIa!wT&Ps$H>pT