diff --git a/Cargo.lock b/Cargo.lock index 053bc099e0..1a03df41fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4503,7 +4503,7 @@ dependencies = [ [[package]] name = "reedline" version = "0.30.0" -source = "git+https://github.com/nushell/reedline?branch=main#0698712701418a7212ebf75d5724d72eccc4b43f" +source = "git+https://github.com/nushell/reedline?branch=main#dc7063ea4260b7a74ad055f9c34ed14a70333afe" dependencies = [ "arboard", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 0cbe2e91f2..956b52cb31 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -158,7 +158,7 @@ wasi = ["nu-cmd-lang/wasi"] static-link-openssl = ["dep:openssl", "nu-cmd-lang/static-link-openssl"] mimalloc = ["nu-cmd-lang/mimalloc", "dep:mimalloc"] -system-clipboard = ["reedline/system_clipboard"] +system-clipboard = ["reedline/system_clipboard", "nu-cli/system-clipboard"] # Stable (Default) which-support = ["nu-command/which-support", "nu-cmd-lang/which-support"] diff --git a/crates/nu-cli/Cargo.toml b/crates/nu-cli/Cargo.toml index a0e8421608..2d41435abb 100644 --- a/crates/nu-cli/Cargo.toml +++ b/crates/nu-cli/Cargo.toml @@ -45,3 +45,4 @@ which = { workspace = true } [features] plugin = [] +system-clipboard = ["reedline/system_clipboard"] diff --git a/crates/nu-cli/src/reedline_config.rs b/crates/nu-cli/src/reedline_config.rs index 65938dab8f..a3c929a381 100644 --- a/crates/nu-cli/src/reedline_config.rs +++ b/crates/nu-cli/src/reedline_config.rs @@ -1276,7 +1276,14 @@ fn edit_from_record( } "complete" => EditCommand::Complete, "cutselection" => EditCommand::CutSelection, + #[cfg(feature = "system-clipboard")] + "cutselectionsystem" => EditCommand::CutSelectionSystem, "copyselection" => EditCommand::CopySelection, + #[cfg(feature = "system-clipboard")] + "copyselectionsystem" => EditCommand::CopySelectionSystem, + "paste" => EditCommand::Paste, + #[cfg(feature = "system-clipboard")] + "pastesystem" => EditCommand::PasteSystem, "selectall" => EditCommand::SelectAll, e => { return Err(ShellError::UnsupportedConfigValue { diff --git a/crates/nu-utils/src/sample_config/default_config.nu b/crates/nu-utils/src/sample_config/default_config.nu index 911f7adb98..411825e775 100644 --- a/crates/nu-utils/src/sample_config/default_config.nu +++ b/crates/nu-utils/src/sample_config/default_config.nu @@ -824,19 +824,22 @@ $env.config = { mode: emacs event: { edit: capitalizechar } } + # The *_system keybindings require terminal support to pass these + # keybindings through to nushell and nushell compiled with the + # `system-clipboard` feature { - name: copy_selection + name: copy_selection_system modifier: control_shift keycode: char_c mode: emacs - event: { edit: copyselection } + event: { edit: copyselectionsystem } } { - name: cut_selection + name: cut_selection_system modifier: control_shift keycode: char_x mode: emacs - event: { edit: cutselection } + event: { edit: cutselectionsystem } } { name: select_all @@ -846,11 +849,11 @@ $env.config = { event: { edit: selectall } } { - name: paste + name: paste_system modifier: control_shift keycode: char_v mode: emacs - event: { edit: pastecutbufferbefore } + event: { edit: pastesystem } } ] }