mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-25 02:46:17 +04:00
clipboard: add logging and healthcheck (#3271)
* add logging to clipboard setup * healthcheck: add clipboard provider name Co-authored-by: amitbeka <--->
This commit is contained in:
parent
e405e88c86
commit
fe3a9a868e
@ -4,6 +4,7 @@
|
|||||||
};
|
};
|
||||||
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 @@ pub struct NopProvider {
|
|||||||
#[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 @@ fn set_contents(&mut self, content: String, clipboard_type: ClipboardType) -> Re
|
|||||||
#[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…
Reference in New Issue
Block a user