clipboard: add logging and healthcheck (#3271)

* add logging to clipboard setup

* healthcheck: add clipboard provider name

Co-authored-by: amitbeka <--->
pull/3276/head
Amit Beka 2 years ago committed by GitHub
parent e405e88c86
commit fe3a9a868e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,6 +4,7 @@ use crossterm::{
}; };
use helix_core::config::{default_syntax_loader, user_syntax_loader}; use helix_core::config::{default_syntax_loader, user_syntax_loader};
use helix_loader::grammar::load_runtime_file; use helix_loader::grammar::load_runtime_file;
use helix_view::clipboard::get_clipboard_provider;
use std::io::Write; use std::io::Write;
#[derive(Copy, Clone)] #[derive(Copy, Clone)]
@ -52,6 +53,7 @@ pub fn general() -> std::io::Result<()> {
let lang_file = helix_loader::lang_config_file(); let lang_file = helix_loader::lang_config_file();
let log_file = helix_loader::log_file(); let log_file = helix_loader::log_file();
let rt_dir = helix_loader::runtime_dir(); let rt_dir = helix_loader::runtime_dir();
let clipboard_provider = get_clipboard_provider();
if config_file.exists() { if config_file.exists() {
writeln!(stdout, "Config file: {}", config_file.display())?; writeln!(stdout, "Config file: {}", config_file.display())?;
@ -76,6 +78,7 @@ pub fn general() -> std::io::Result<()> {
if rt_dir.read_dir().ok().map(|it| it.count()) == Some(0) { if rt_dir.read_dir().ok().map(|it| it.count()) == Some(0) {
writeln!(stdout, "{}", "Runtime directory is empty.".red())?; writeln!(stdout, "{}", "Runtime directory is empty.".red())?;
} }
writeln!(stdout, "Clipboard provider: {}", clipboard_provider.name())?;
Ok(()) Ok(())
} }

@ -17,6 +17,10 @@ pub trait ClipboardProvider: std::fmt::Debug {
#[cfg(not(windows))] #[cfg(not(windows))]
macro_rules! command_provider { macro_rules! command_provider {
(paste => $get_prg:literal $( , $get_arg:literal )* ; copy => $set_prg:literal $( , $set_arg:literal )* ; ) => {{ (paste => $get_prg:literal $( , $get_arg:literal )* ; copy => $set_prg:literal $( , $set_arg:literal )* ; ) => {{
log::info!(
"Using {} to interact with the system clipboard",
if $set_prg != $get_prg { format!("{}+{}", $set_prg, $get_prg)} else { $set_prg.to_string() }
);
Box::new(provider::command::Provider { Box::new(provider::command::Provider {
get_cmd: provider::command::Config { get_cmd: provider::command::Config {
prg: $get_prg, prg: $get_prg,
@ -36,6 +40,10 @@ macro_rules! command_provider {
primary_paste => $pr_get_prg:literal $( , $pr_get_arg:literal )* ; primary_paste => $pr_get_prg:literal $( , $pr_get_arg:literal )* ;
primary_copy => $pr_set_prg:literal $( , $pr_set_arg:literal )* ; primary_copy => $pr_set_prg:literal $( , $pr_set_arg:literal )* ;
) => {{ ) => {{
log::info!(
"Using {} to interact with the system and selection (primary) clipboard",
if $set_prg != $get_prg { format!("{}+{}", $set_prg, $get_prg)} else { $set_prg.to_string() }
);
Box::new(provider::command::Provider { Box::new(provider::command::Provider {
get_cmd: provider::command::Config { get_cmd: provider::command::Config {
prg: $get_prg, prg: $get_prg,
@ -146,6 +154,9 @@ mod provider {
#[cfg(not(target_os = "windows"))] #[cfg(not(target_os = "windows"))]
impl NopProvider { impl NopProvider {
pub fn new() -> Self { pub fn new() -> Self {
log::warn!(
"No clipboard provider found! Yanking and pasting will be internal to Helix"
);
Self { Self {
buf: String::new(), buf: String::new(),
primary_buf: String::new(), primary_buf: String::new(),
@ -184,6 +195,7 @@ mod provider {
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
impl ClipboardProvider for WindowsProvider { impl ClipboardProvider for WindowsProvider {
fn name(&self) -> Cow<str> { fn name(&self) -> Cow<str> {
log::info!("Using clipboard-win to interact with the system clipboard");
Cow::Borrowed("clipboard-win") Cow::Borrowed("clipboard-win")
} }

Loading…
Cancel
Save