aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2020-12-15 12:58:58 +0100
committerGitHub <noreply@github.com>2020-12-15 12:58:58 +0100
commit38d8e2238d05cf3fa693ff3b8c63cd5c248c0a26 (patch)
treebda01b0f7e4e7f57f712ce4d65ac17295f4a2fc9 /src
parentfix(compatibility): fix vim overwrite message and buffer clearing on exit (#98) (diff)
downloadsl0ppij-38d8e2238d05cf3fa693ff3b8c63cd5c248c0a26.tar.gz
sl0ppij-38d8e2238d05cf3fa693ff3b8c63cd5c248c0a26.tar.xz
sl0ppij-38d8e2238d05cf3fa693ff3b8c63cd5c248c0a26.zip
fix(compatibility): handle tab characters properly (#99)
* fix(compatibility): handle tab characters properly * style(formatting): make rustfmt happy
Diffstat (limited to 'src')
-rw-r--r--src/terminal_pane/terminal_pane.rs9
-rw-r--r--src/tests/fixtures/tab_charactersbin0 -> 633 bytes
-rw-r--r--src/tests/integration/compatibility.rs23
-rw-r--r--src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly-2.snap32
-rw-r--r--src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly.snap32
5 files changed, 96 insertions, 0 deletions
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 00000000..cf40aac5
--- /dev/null
+++ b/src/tests/fixtures/tab_characters
Binary files differ
diff --git a/src/tests/integration/compatibility.rs b/src/tests/integration/compatibility.rs
index 1df46583..6fbf99e9 100644
--- a/src/tests/integration/compatibility.rs
+++ b/src/tests/integration/compatibility.rs
@@ -317,3 +317,26 @@ pub fn clear_scroll_region() {
assert_snapshot!(snapshot);
}
}
+
+#[test]
+pub fn display_tab_characters_properly() {
+ let fake_win_size = PositionAndSize {
+ columns: 116,
+ rows: 28,
+ x: 0,
+ y: 0,
+ };
+ let fixture_name = "tab_characters";
+ let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
+ fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
+ start(Box::new(fake_input_output.clone()), Opt::default());
+ let output_frames = fake_input_output
+ .stdout_writer
+ .output_frames
+ .lock()
+ .unwrap();
+ let snapshots = get_output_frame_snapshots(&output_frames, &fake_win_size);
+ for snapshot in snapshots {
+ assert_snapshot!(snapshot);
+ }
+}
diff --git a/src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly-2.snap b/src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly-2.snap
new file mode 100644
index 00000000..ce9f3423
--- /dev/null
+++ b/src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly-2.snap
@@ -0,0 +1,32 @@
+---
+source: src/tests/integration/compatibility.rs
+expression: snapshot
+---
+ OS: 5.9.13-arch1-1 GNU/Linux
+ Uptime: 10 hours, 42 minutes
+ Hostname: kingdom
+ Disk usage:
+
+df: /run/user/1000/doc: Operation not permitted
+ / 321G / 514G 66%
+ /efi 27M / 96M 28%
+
+ Network:
+
+ wlp2s0 192.168.0.3
+
+[I] [20:07] kingdom:mosaic (main) |
+
+
+
+
+
+
+
+
+
+
+
+
+
+Bye from Mosaic!█
diff --git a/src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly.snap b/src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly.snap
new file mode 100644
index 00000000..ec9cd4cd
--- /dev/null
+++ b/src/tests/integration/snapshots/mosaic__tests__integration__compatibility__display_tab_characters_properly.snap
@@ -0,0 +1,32 @@
+---
+source: src/tests/integration/compatibility.rs
+expression: snapshot
+---
+
+ OS: 5.9.13-arch1-1 GNU/Linux
+ Uptime: 10 hours, 42 minutes
+ Hostname: kingdom
+ Disk usage:
+
+df: /run/user/1000/doc: Operation not permitted
+ / 321G / 514G 66%
+ /efi 27M / 96M 28%
+
+ Network:
+
+ wlp2s0 192.168.0.3
+
+[I] [20:07] kingdom:mosaic (main) | █
+
+
+
+
+
+
+
+
+
+
+
+
+