editor: Add actions for inserting UUIDs (#21656)
This PR adds two new actions for generating and inserting UUIDs into the buffer: https://github.com/user-attachments/assets/a3445a98-07e2-40b8-9773-fd750706cbcc Release Notes: - Added `editor: insert uuid v4` and `editor: insert uuid v7` actions for inserting generated UUIDs into the editor.
This commit is contained in:
parent
7a1a7929bd
commit
5142e38d2b
6 changed files with 42 additions and 1 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -3957,6 +3957,7 @@ dependencies = [
|
|||
"unindent",
|
||||
"url",
|
||||
"util",
|
||||
"uuid",
|
||||
"workspace",
|
||||
]
|
||||
|
||||
|
|
|
@ -506,7 +506,7 @@ unindent = "0.1.7"
|
|||
unicode-segmentation = "1.10"
|
||||
unicode-script = "0.5.7"
|
||||
url = "2.2"
|
||||
uuid = { version = "1.1.2", features = ["v4", "v5", "serde"] }
|
||||
uuid = { version = "1.1.2", features = ["v4", "v5", "v7", "serde"] }
|
||||
wasmparser = "0.215"
|
||||
wasm-encoder = "0.215"
|
||||
wasmtime = { version = "24", default-features = false, features = [
|
||||
|
|
|
@ -85,6 +85,7 @@ unindent = { workspace = true, optional = true }
|
|||
ui.workspace = true
|
||||
url.workspace = true
|
||||
util.workspace = true
|
||||
uuid.workspace = true
|
||||
workspace.workspace = true
|
||||
|
||||
[dev-dependencies]
|
||||
|
|
|
@ -105,6 +105,7 @@ pub struct MoveDownByLines {
|
|||
#[serde(default)]
|
||||
pub(super) lines: u32,
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Clone, Deserialize, Default)]
|
||||
pub struct SelectUpByLines {
|
||||
#[serde(default)]
|
||||
|
@ -166,6 +167,13 @@ pub struct SpawnNearestTask {
|
|||
pub reveal: task::RevealStrategy,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy, Deserialize, Default)]
|
||||
pub enum UuidVersion {
|
||||
#[default]
|
||||
V4,
|
||||
V7,
|
||||
}
|
||||
|
||||
impl_actions!(
|
||||
editor,
|
||||
[
|
||||
|
@ -271,6 +279,8 @@ gpui::actions!(
|
|||
HalfPageUp,
|
||||
Hover,
|
||||
Indent,
|
||||
InsertUuidV4,
|
||||
InsertUuidV7,
|
||||
JoinLines,
|
||||
KillRingCut,
|
||||
KillRingYank,
|
||||
|
|
|
@ -12004,6 +12004,33 @@ impl Editor {
|
|||
.detach();
|
||||
}
|
||||
|
||||
pub fn insert_uuid_v4(&mut self, _: &InsertUuidV4, cx: &mut ViewContext<Self>) {
|
||||
self.insert_uuid(UuidVersion::V4, cx);
|
||||
}
|
||||
|
||||
pub fn insert_uuid_v7(&mut self, _: &InsertUuidV7, cx: &mut ViewContext<Self>) {
|
||||
self.insert_uuid(UuidVersion::V7, cx);
|
||||
}
|
||||
|
||||
fn insert_uuid(&mut self, version: UuidVersion, cx: &mut ViewContext<Self>) {
|
||||
self.transact(cx, |this, cx| {
|
||||
let edits = this
|
||||
.selections
|
||||
.all::<Point>(cx)
|
||||
.into_iter()
|
||||
.map(|selection| {
|
||||
let uuid = match version {
|
||||
UuidVersion::V4 => uuid::Uuid::new_v4(),
|
||||
UuidVersion::V7 => uuid::Uuid::now_v7(),
|
||||
};
|
||||
|
||||
(selection.range(), uuid.to_string())
|
||||
});
|
||||
this.edit(edits, cx);
|
||||
this.refresh_inline_completion(true, false, cx);
|
||||
});
|
||||
}
|
||||
|
||||
/// Adds a row highlight for the given range. If a row has multiple highlights, the
|
||||
/// last highlight added will be used.
|
||||
///
|
||||
|
|
|
@ -456,6 +456,8 @@ impl EditorElement {
|
|||
register_action(view, cx, Editor::open_active_item_in_terminal);
|
||||
register_action(view, cx, Editor::reload_file);
|
||||
register_action(view, cx, Editor::spawn_nearest_task);
|
||||
register_action(view, cx, Editor::insert_uuid_v4);
|
||||
register_action(view, cx, Editor::insert_uuid_v7);
|
||||
}
|
||||
|
||||
fn register_key_listeners(&self, cx: &mut WindowContext, layout: &EditorLayout) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue