floem_editor_core/
register.rs1use crate::mode::VisualMode;
2
3pub trait Clipboard {
4 fn get_string(&mut self) -> Option<String>;
5 fn put_string(&mut self, s: impl AsRef<str>);
6}
7
8#[derive(Clone, Default)]
9pub struct RegisterData {
10 pub content: String,
11 pub mode: VisualMode,
12}
13
14#[derive(Clone, Default)]
15pub struct Register {
16 pub unnamed: RegisterData,
17 last_yank: RegisterData,
18}
19
20pub enum RegisterKind {
21 Delete,
22 Yank,
23}
24
25impl Register {
26 pub fn add(&mut self, kind: RegisterKind, data: RegisterData) {
27 match kind {
28 RegisterKind::Delete => self.add_delete(data),
29 RegisterKind::Yank => self.add_yank(data),
30 }
31 }
32
33 pub fn add_delete(&mut self, data: RegisterData) {
34 self.unnamed = data;
35 }
36
37 pub fn add_yank(&mut self, data: RegisterData) {
38 self.unnamed = data.clone();
39 self.last_yank = data;
40 }
41}