/rust/registry/src/index.crates.io-6f17d22bba15001f/anes-0.1.6/src/sequences/buffer.rs
Line | Count | Source (jump to first uncovered line) |
1 | | sequence!( |
2 | | /// Switches to the alternate buffer. |
3 | | /// |
4 | | /// Use the [`SwitchBufferToNormal`](struct.SwitchBufferToNormal.html) sequence to switch |
5 | | /// back to the normal buffer. |
6 | | /// |
7 | | /// # Examples |
8 | | /// |
9 | | /// ```no_run |
10 | | /// use std::io::{stdout, Write}; |
11 | | /// use anes::{SwitchBufferToAlternate, SwitchBufferToNormal}; |
12 | | /// |
13 | | /// let mut stdout = stdout(); |
14 | | /// write!(stdout, "{}", SwitchBufferToAlternate); |
15 | | /// // Your app on alternate screen |
16 | | /// write!(stdout, "{}", SwitchBufferToNormal); |
17 | | /// ``` |
18 | | struct SwitchBufferToAlternate => csi!("?1049h") |
19 | | ); |
20 | | |
21 | | sequence!( |
22 | | /// Switches to the normal buffer. |
23 | | /// |
24 | | /// # Examples |
25 | | /// |
26 | | /// ```no_run |
27 | | /// use std::io::{stdout, Write}; |
28 | | /// use anes::{SwitchBufferToAlternate, SwitchBufferToNormal}; |
29 | | /// |
30 | | /// let mut stdout = stdout(); |
31 | | /// write!(stdout, "{}", SwitchBufferToAlternate); |
32 | | /// // Your app on alternate screen |
33 | | /// write!(stdout, "{}", SwitchBufferToNormal); |
34 | | /// ``` |
35 | | struct SwitchBufferToNormal => csi!("?1049l") |
36 | | ); |
37 | | |
38 | | sequence!( |
39 | | /// Scrolls up by the given number of rows. |
40 | | /// |
41 | | /// # Examples |
42 | | /// |
43 | | /// ```no_run |
44 | | /// use std::io::{stdout, Write}; |
45 | | /// use anes::ScrollBufferUp; |
46 | | /// |
47 | | /// let mut stdout = stdout(); |
48 | | /// // Scroll up by 5 lines |
49 | | /// write!(stdout, "{}", ScrollBufferUp(5)); |
50 | | /// ``` |
51 | | struct ScrollBufferUp(u16) => |
52 | 0 | |this, f| write!(f, csi!("{}S"), this.0) |
53 | | ); |
54 | | |
55 | | sequence!( |
56 | | /// Scrolls down by the given number of rows. |
57 | | /// |
58 | | /// # Examples |
59 | | /// |
60 | | /// ```no_run |
61 | | /// use std::io::{stdout, Write}; |
62 | | /// use anes::ScrollBufferDown; |
63 | | /// |
64 | | /// let mut stdout = stdout(); |
65 | | /// // Scroll down by 10 lines |
66 | | /// write!(stdout, "{}", ScrollBufferDown(10)); |
67 | | /// ``` |
68 | | struct ScrollBufferDown(u16) => |
69 | 0 | |this, f| write!(f, csi!("{}T"), this.0) |
70 | | ); |
71 | | |
72 | | sequence!( |
73 | | /// Clears part of the line. |
74 | | /// |
75 | | /// # Examples |
76 | | /// |
77 | | /// ```no_run |
78 | | /// use std::io::{stdout, Write}; |
79 | | /// use anes::ClearLine; |
80 | | /// |
81 | | /// let mut stdout = stdout(); |
82 | | /// // Clear the whole line |
83 | | /// write!(stdout, "{}", ClearLine::All); |
84 | | /// ``` |
85 | | enum ClearLine { |
86 | | /// Clears from the cursor position to end of the line. |
87 | | Right => csi!("K"), |
88 | | /// Clears from the cursor position to beginning of the line. |
89 | | Left => csi!("1K"), |
90 | | /// Clears the whole line. |
91 | | All => csi!("2K"), |
92 | | } |
93 | | ); |
94 | | |
95 | | sequence!( |
96 | | /// Clears part of the buffer. |
97 | | /// |
98 | | /// # Examples |
99 | | /// |
100 | | /// ```no_run |
101 | | /// use std::io::{stdout, Write}; |
102 | | /// use anes::ClearBuffer; |
103 | | /// |
104 | | /// let mut stdout = stdout(); |
105 | | /// // Clear the entire buffer |
106 | | /// write!(stdout, "{}", ClearBuffer::All); |
107 | | /// ``` |
108 | | enum ClearBuffer { |
109 | | /// Clears from the cursor position to end of the screen. |
110 | | Below => csi!("J"), |
111 | | /// Clears from the cursor position to beginning of the screen. |
112 | | Above => csi!("1J"), |
113 | | /// Clears the entire buffer. |
114 | | All => csi!("2J"), |
115 | | /// Clears the entire buffer and all saved lines in the scrollback buffer. |
116 | | SavedLines => csi!("3J"), |
117 | | } |
118 | | ); |
119 | | |
120 | | #[cfg(test)] |
121 | | test_sequences!( |
122 | | switch_buffer_to_alternate( |
123 | | SwitchBufferToAlternate => "\x1B[?1049h", |
124 | | ), |
125 | | switch_buffer_to_main( |
126 | | SwitchBufferToNormal => "\x1B[?1049l", |
127 | | ), |
128 | | scroll_buffer_up( |
129 | | ScrollBufferUp(10) => "\x1B[10S", |
130 | | ), |
131 | | scroll_buffer_down( |
132 | | ScrollBufferDown(10) => "\x1B[10T", |
133 | | ), |
134 | | clear_line( |
135 | | ClearLine::Right => "\x1B[K", |
136 | | ClearLine::Left => "\x1B[1K", |
137 | | ClearLine::All => "\x1B[2K", |
138 | | ), |
139 | | clear_buffer( |
140 | | ClearBuffer::Below => "\x1B[J", |
141 | | ClearBuffer::Above => "\x1B[1J", |
142 | | ClearBuffer::All => "\x1B[2J", |
143 | | ClearBuffer::SavedLines => "\x1B[3J", |
144 | | ), |
145 | | ); |