reedline/terminal_extensions/
bracketed_paste.rs1use crossterm::{event, execute};
2
3#[derive(Default)]
7pub(crate) struct BracketedPasteGuard {
8 enabled: bool,
9 active: bool,
10}
11
12impl BracketedPasteGuard {
13 pub fn set(&mut self, enable: bool) {
14 self.enabled = enable;
15 }
16 pub fn enter(&mut self) {
17 if self.enabled && !self.active {
18 let _ = execute!(std::io::stdout(), event::EnableBracketedPaste);
19 self.active = true;
20 }
21 }
22 pub fn exit(&mut self) {
23 if self.active {
24 let _ = execute!(std::io::stdout(), event::DisableBracketedPaste);
25 self.active = false;
26 }
27 }
28}
29
30impl Drop for BracketedPasteGuard {
31 fn drop(&mut self) {
32 if self.active {
33 let _ = execute!(std::io::stdout(), event::DisableBracketedPaste);
34 }
35 }
36}