aboutsummaryrefslogtreecommitdiff
path: root/helix-view/src
diff options
context:
space:
mode:
Diffstat (limited to 'helix-view/src')
-rw-r--r--helix-view/src/clipboard.rs27
1 files changed, 26 insertions, 1 deletions
diff --git a/helix-view/src/clipboard.rs b/helix-view/src/clipboard.rs
index e32933e3..401c0459 100644
--- a/helix-view/src/clipboard.rs
+++ b/helix-view/src/clipboard.rs
@@ -77,7 +77,11 @@ pub fn get_clipboard_provider() -> Box<dyn ClipboardProvider> {
copy => "tmux", "load-buffer", "-";
}
} else {
- Box::new(provider::NopProvider)
+ #[cfg(target_os = "windows")]
+ return Box::new(provider::WindowsProvider);
+
+ #[cfg(not(target_os = "windows"))]
+ return Box::new(provider::NopProvider);
}
}
@@ -120,6 +124,27 @@ mod provider {
}
}
+ #[cfg(target_os = "windows")]
+ #[derive(Debug)]
+ pub struct WindowsProvider;
+
+ #[cfg(target_os = "windows")]
+ impl ClipboardProvider for WindowsProvider {
+ fn name(&self) -> Cow<str> {
+ Cow::Borrowed("clipboard-win")
+ }
+
+ fn get_contents(&self) -> Result<String> {
+ let contents = clipboard_win::get_clipboard(clipboard_win::formats::Unicode)?;
+ Ok(contents)
+ }
+
+ fn set_contents(&self, contents: String) -> Result<()> {
+ clipboard_win::set_clipboard(clipboard_win::formats::Unicode, contents)?;
+ Ok(())
+ }
+ }
+
#[derive(Debug)]
pub struct CommandConfig {
pub prg: &'static str,