diff options
author | Jakub Bartodziej | 2021-06-11 13:06:13 +0000 |
---|---|---|
committer | GitHub | 2021-06-11 13:06:13 +0000 |
commit | 69fe46a122f728b4bb6cb218fd410544097b0dcd (patch) | |
tree | 473dbad3d9fbd1f960f7930fcf0c2681bd780091 /helix-term/src/commands.rs | |
parent | 86af55c379c531df2d5dbc72841e28a10fc7938e (diff) |
Add :earlier and :later commands that can be used to navigate the full edit history. (#194)
* Disable deleting from an empty buffer which can cause a crash.
* Improve on the fix for deleting from the end of the buffer.
* Clean up leftover log.
* Avoid theoretical underflow.
* Implement :before which accepts a time interval and moves the editor to
the closest history state to the commit of the current time minus that
interval. Current time is now by default, or the commit time if :before
has just been used.
* Add :earlier an :later commands that can move through
the edit history and retrieve changes hidded by undoing
and commiting new changes. The commands accept a number
of steps or a time period relative to the currrent change.
* Fix clippy lint error.
* Remove the dependency on parse_duration, add a custom parser instead.
* Fix clippy errors.
* Make helix_core::history a public module.
* Use the helper for getting the current document and view.
* Handled some PR comments.
* Fix the logic in :later n.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add an alias for :earlier.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add an alias for later.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Run cargo fmt.
* Add some tests for earlier and later.
* Add more tests and restore the fix for later that diappeared somehow.
* Use ? instead of a match on an option.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Rename to UndoKind.
* Remove the leftover match.
* Handle a bunch of review comments.
* More systemd.time compliant time units and additional description for the new commands.
* A more concise rewrite of the time span parser using ideas from PR discussion.
* Replace a match with map_err().
Co-authored-by: Ivan Tham <pickfire@riseup.net>
Co-authored-by: Jakub Bartodziej <jqb@google.com>
Co-authored-by: Ivan Tham <pickfire@riseup.net>
Diffstat (limited to 'helix-term/src/commands.rs')
-rw-r--r-- | helix-term/src/commands.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 07034214..3cb1288e 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -980,6 +980,30 @@ mod cmd { doc.format(view.id) } + fn earlier(editor: &mut Editor, args: &[&str], event: PromptEvent) { + let uk = match args.join(" ").parse::<helix_core::history::UndoKind>() { + Ok(uk) => uk, + Err(msg) => { + editor.set_error(msg); + return; + } + }; + let (view, doc) = editor.current(); + doc.earlier(view.id, uk) + } + + fn later(editor: &mut Editor, args: &[&str], event: PromptEvent) { + let uk = match args.join(" ").parse::<helix_core::history::UndoKind>() { + Ok(uk) => uk, + Err(msg) => { + editor.set_error(msg); + return; + } + }; + let (view, doc) = editor.current(); + doc.later(view.id, uk) + } + pub const COMMAND_LIST: &[Command] = &[ Command { name: "quit", @@ -1023,6 +1047,20 @@ mod cmd { fun: format, completer: None, }, + Command { + name: "earlier", + alias: Some("ear"), + doc: "Jump back to an earlier point in edit history. Accepts a number of steps or a time span.", + fun: earlier, + completer: None, + }, + Command { + name: "later", + alias: Some("lat"), + doc: "Jump to a later point in edit history. Accepts a number of steps or a time span.", + fun: later, + completer: None, + }, ]; pub static COMMANDS: Lazy<HashMap<&'static str, &'static Command>> = Lazy::new(|| { |