diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-07-20 20:20:03 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-07-24 21:25:05 +0100 |
| commit | 03a4b3c73ff8cf7d37387df8bd0fcf9e895b59e0 (patch) | |
| tree | bdbbc01720925f962a6df5647c9a204175afe424 /src/normal.cc | |
| parent | 3edd2c127c9d1754a487d76de38ec9b2c690ff7c (diff) | |
Support counts for undo/redo
Diffstat (limited to 'src/normal.cc')
| -rw-r--r-- | src/normal.cc | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/normal.cc b/src/normal.cc index 940e11d8..316fc5e2 100644 --- a/src/normal.cc +++ b/src/normal.cc @@ -1414,37 +1414,34 @@ void restore_selections(Context& context, NormalParams params) context.print_status({format("Restored selections from register '{}'", reg), get_face("Information")}); } -void undo(Context& context, NormalParams) +void undo(Context& context, NormalParams params) { Buffer& buffer = context.buffer(); size_t timestamp = buffer.timestamp(); - bool res = buffer.undo(); - if (res) + if (buffer.undo(std::max(1, params.count))) { auto ranges = compute_modified_ranges(buffer, timestamp); if (not ranges.empty()) context.selections_write_only() = std::move(ranges); context.selections().avoid_eol(); } - else if (not res) + else context.print_status({ "nothing left to undo", get_face("Information") }); } -void redo(Context& context, NormalParams) +void redo(Context& context, NormalParams params) { using namespace std::placeholders; Buffer& buffer = context.buffer(); size_t timestamp = buffer.timestamp(); - bool res = buffer.redo(); - if (res) + if (buffer.redo(std::max(1, params.count))) { auto ranges = compute_modified_ranges(buffer, timestamp); if (not ranges.empty()) context.selections_write_only() = std::move(ranges); context.selections().avoid_eol(); } - - else if (not res) + else context.print_status({ "nothing left to redo", get_face("Information") }); } |
