diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-04-13 11:26:31 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-04-13 11:26:31 +0100 |
| commit | 43c03ea412b7bc1391c028a24adda8e8533dafe5 (patch) | |
| tree | 98e96a9b319770c972bb74b825505cd11f235559 | |
| parent | be5ed0e0363e8d07b527b8ce06b02315e2f17819 (diff) | |
| parent | ba59033935d643f4a7f50da35c7cd033c5790252 (diff) | |
Merge remote-tracking branch 'jjthrash/next-prev-buffer'
| -rw-r--r-- | src/commands.cc | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/commands.cc b/src/commands.cc index 682e191b..bc0bbebb 100644 --- a/src/commands.cc +++ b/src/commands.cc @@ -375,6 +375,54 @@ const CommandDesc buffer_cmd = { } }; +Buffer& next_buffer(Context& context) { + auto& buffer_manager = BufferManager::instance(); + if (buffer_manager.end()->get() == &context.buffer()) + { + return **buffer_manager.begin(); + } + else + { + bool found_current = false; + Buffer& current_buffer = context.buffer(); + for (auto& it : buffer_manager) + { + Buffer& buffer = *it; + if (&buffer == ¤t_buffer) + { + found_current = true; + } + else if (found_current) + { + return buffer; + } + } + + return **buffer_manager.begin(); + } +} + +const CommandDesc nextbuffer_cmd = { + "nextbuffer", + "nb", + "nextbuffer: move to the next buffer in the list", + no_params, + CommandFlags::None, + CommandHelper{}, + CommandCompleter{}, + [](const ParametersParser& parser, Context& context) + { + Buffer& nb = next_buffer(context); + BufferManager::instance().set_last_used_buffer(nb); + + if (&nb != &context.buffer()) + { + context.push_jump(); + context.change_buffer(nb); + } + } +}; + template<bool force> void delete_buffer(const ParametersParser& parser, Context& context) { @@ -1517,6 +1565,7 @@ void register_commands() register_command(write_quit_cmd); register_command(force_write_quit_cmd); register_command(buffer_cmd); + register_command(nextbuffer_cmd); register_command(delbuf_cmd); register_command(force_delbuf_cmd); register_command(namebuf_cmd); |
