summaryrefslogtreecommitdiff
path: root/src/normal.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-07-20 20:20:03 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-07-24 21:25:05 +0100
commit03a4b3c73ff8cf7d37387df8bd0fcf9e895b59e0 (patch)
treebdbbc01720925f962a6df5647c9a204175afe424 /src/normal.cc
parent3edd2c127c9d1754a487d76de38ec9b2c690ff7c (diff)
Support counts for undo/redo
Diffstat (limited to 'src/normal.cc')
-rw-r--r--src/normal.cc15
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") });
}