From ec1628c07f479bae340a9864c4d811c0eda6d01b Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Mon, 2 Dec 2024 10:11:01 -0500 Subject: [PATCH] registers: Use saved values for clipboard providers which can't read This fixes reading from the clipboard when using the termcode provider. Reading isn't implemented for the termcode provider so `get_contents` returns `ClipboardError::ReadingNotSupported`. `read_from_clipboard` needs to recognize this case and use the saved values instead of emitting an error log and returning nothing. Follow-up of #10839 Also see #12142 --- helix-view/src/register.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/helix-view/src/register.rs b/helix-view/src/register.rs index 5647dd06..d286a85c 100644 --- a/helix-view/src/register.rs +++ b/helix-view/src/register.rs @@ -5,7 +5,7 @@ use arc_swap::access::DynAccess; use helix_core::NATIVE_LINE_ENDING; use crate::{ - clipboard::{ClipboardProvider, ClipboardType}, + clipboard::{ClipboardError, ClipboardProvider, ClipboardType}, Editor, }; @@ -238,6 +238,10 @@ fn read_from_clipboard<'a>( RegisterValues::new(iter::once(contents.into())) } } + Err(ClipboardError::ReadingNotSupported) => match saved_values { + Some(values) => RegisterValues::new(values.iter().map(Cow::from).rev()), + None => RegisterValues::new(iter::empty()), + }, Err(err) => { log::error!( "Failed to read {} clipboard: {err}",