Configure Highlight settings on yank vim (#21479)
Release Notes: - Add settings / config variables to control `highlight_on_yank` or `highlight_on_copy` --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
parent
207eb51df1
commit
5948ea217b
4 changed files with 10 additions and 3 deletions
|
@ -1129,6 +1129,7 @@
|
||||||
"use_system_clipboard": "always",
|
"use_system_clipboard": "always",
|
||||||
"use_multiline_find": false,
|
"use_multiline_find": false,
|
||||||
"use_smartcase_find": false,
|
"use_smartcase_find": false,
|
||||||
|
"highlight_on_yank_duration": 200,
|
||||||
"custom_digraphs": {}
|
"custom_digraphs": {}
|
||||||
},
|
},
|
||||||
// The server to connect to. If the environment variable
|
// The server to connect to. If the environment variable
|
||||||
|
|
|
@ -4,13 +4,14 @@ use crate::{
|
||||||
motion::Motion,
|
motion::Motion,
|
||||||
object::Object,
|
object::Object,
|
||||||
state::{Mode, Register},
|
state::{Mode, Register},
|
||||||
Vim,
|
Vim, VimSettings,
|
||||||
};
|
};
|
||||||
use collections::HashMap;
|
use collections::HashMap;
|
||||||
use editor::{ClipboardSelection, Editor};
|
use editor::{ClipboardSelection, Editor};
|
||||||
use gpui::ViewContext;
|
use gpui::ViewContext;
|
||||||
use language::Point;
|
use language::Point;
|
||||||
use multi_buffer::MultiBufferRow;
|
use multi_buffer::MultiBufferRow;
|
||||||
|
use settings::Settings;
|
||||||
|
|
||||||
struct HighlightOnYank;
|
struct HighlightOnYank;
|
||||||
|
|
||||||
|
@ -195,7 +196,8 @@ impl Vim {
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
if !is_yank || self.mode == Mode::Visual {
|
let highlight_duration = VimSettings::get_global(cx).highlight_on_yank_duration;
|
||||||
|
if !is_yank || self.mode == Mode::Visual || highlight_duration == 0 {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +208,7 @@ impl Vim {
|
||||||
);
|
);
|
||||||
cx.spawn(|this, mut cx| async move {
|
cx.spawn(|this, mut cx| async move {
|
||||||
cx.background_executor()
|
cx.background_executor()
|
||||||
.timer(Duration::from_millis(200))
|
.timer(Duration::from_millis(highlight_duration))
|
||||||
.await;
|
.await;
|
||||||
this.update(&mut cx, |editor, cx| {
|
this.update(&mut cx, |editor, cx| {
|
||||||
editor.clear_background_highlights::<HighlightOnYank>(cx)
|
editor.clear_background_highlights::<HighlightOnYank>(cx)
|
||||||
|
|
|
@ -1199,6 +1199,7 @@ struct VimSettings {
|
||||||
pub use_multiline_find: bool,
|
pub use_multiline_find: bool,
|
||||||
pub use_smartcase_find: bool,
|
pub use_smartcase_find: bool,
|
||||||
pub custom_digraphs: HashMap<String, Arc<str>>,
|
pub custom_digraphs: HashMap<String, Arc<str>>,
|
||||||
|
pub highlight_on_yank_duration: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema)]
|
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema)]
|
||||||
|
@ -1208,6 +1209,7 @@ struct VimSettingsContent {
|
||||||
pub use_multiline_find: Option<bool>,
|
pub use_multiline_find: Option<bool>,
|
||||||
pub use_smartcase_find: Option<bool>,
|
pub use_smartcase_find: Option<bool>,
|
||||||
pub custom_digraphs: Option<HashMap<String, Arc<str>>>,
|
pub custom_digraphs: Option<HashMap<String, Arc<str>>>,
|
||||||
|
pub highlight_on_yank_duration: Option<u64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Settings for VimSettings {
|
impl Settings for VimSettings {
|
||||||
|
|
|
@ -438,6 +438,7 @@ You can change the following settings to modify vim mode's behavior:
|
||||||
| use_smartcase_find | If `true`, `f` and `t` motions are case-insensitive when the target letter is lowercase. | false |
|
| use_smartcase_find | If `true`, `f` and `t` motions are case-insensitive when the target letter is lowercase. | false |
|
||||||
| toggle_relative_line_numbers | If `true`, line numbers are relative in normal mode and absolute in insert mode, giving you the best of both options. | false |
|
| toggle_relative_line_numbers | If `true`, line numbers are relative in normal mode and absolute in insert mode, giving you the best of both options. | false |
|
||||||
| custom_digraphs | An object that allows you to add custom digraphs. Read below for an example. | {} |
|
| custom_digraphs | An object that allows you to add custom digraphs. Read below for an example. | {} |
|
||||||
|
| highlight_on_yank_duration | The duration of the highlight animation(in ms). Set to `0` to disable | 200 |
|
||||||
|
|
||||||
Here's an example of adding a digraph for the zombie emoji. This allows you to type `ctrl-k f z` to insert a zombie emoji. You can add as many digraphs as you like.
|
Here's an example of adding a digraph for the zombie emoji. This allows you to type `ctrl-k f z` to insert a zombie emoji. You can add as many digraphs as you like.
|
||||||
|
|
||||||
|
@ -460,6 +461,7 @@ Here's an example of these settings changed:
|
||||||
"use_multiline_find": true,
|
"use_multiline_find": true,
|
||||||
"use_smartcase_find": true,
|
"use_smartcase_find": true,
|
||||||
"toggle_relative_line_numbers": true,
|
"toggle_relative_line_numbers": true,
|
||||||
|
"highlight_on_yank_duration": 50,
|
||||||
"custom_digraphs": {
|
"custom_digraphs": {
|
||||||
"fz": "🧟♀️"
|
"fz": "🧟♀️"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue