diff --git a/src/main.cc b/src/main.cc index 8919d24d..9cddfb9f 100644 --- a/src/main.cc +++ b/src/main.cc @@ -414,6 +414,13 @@ void quit(const CommandParameters& params, const Context& context) quit_requested = true; } +template +void write_and_quit(const CommandParameters& params, const Context& context) +{ + write_buffer(params, context); + quit(CommandParameters(), context); +} + void show_buffer(const CommandParameters& params, const Context& context) { if (params.size() != 1) @@ -664,6 +671,8 @@ int main(int argc, char* argv[]) command_manager.register_command(std::vector{ "q!", "quit!" }, quit); command_manager.register_command(std::vector{ "w", "write" }, write_buffer, PerArgumentCommandCompleter{ complete_filename }); + command_manager.register_command(std::vector{ "wq" }, write_and_quit); + command_manager.register_command(std::vector{ "wq!" }, write_and_quit); command_manager.register_command(std::vector{ "b", "buffer" }, show_buffer, PerArgumentCommandCompleter { std::bind(&BufferManager::complete_buffername, &buffer_manager, _1, _2)