summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-01-14 21:41:42 +0100
committertomsmeding <tom.smeding@gmail.com>2017-01-14 21:41:42 +0100
commit2559a5d6d3df07f5d673f376f4a153edc7a16e5f (patch)
tree86835b8fe8e81b0d09a7be96fc5497c43dcdc086
parent0beb9b90c15ef56bffca6a2d55ca6ccffca30264 (diff)
Cycle tabs with alt-(shift-)tab
-rw-r--r--config.cpp2
-rw-r--r--manager.cpp12
2 files changed, 14 insertions, 0 deletions
diff --git a/config.cpp b/config.cpp
index efe60e2..0dfe0d2 100644
--- a/config.cpp
+++ b/config.cpp
@@ -14,6 +14,8 @@ KeyInputMachine global_keyinput({
{{KEY_CTRL+'S'},{"save_file"}},
{{KEY_CTRL+'O'},{"open_prompt"}},
{{KEY_CTRL+'W'},{"close_tab"}},
+ {{KEY_ALT+'\t'},{"cycle_tabs"}},
+ {{KEY_ALT+KEY_SHIFTTAB},{"cycle_tabs_back"}},
{{KEY_ESC},{"cancel"}},
diff --git a/manager.cpp b/manager.cpp
index fdc7641..0bdd0a4 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -50,6 +50,18 @@ void Manager::receive(const Command &cmd){
buffers.erase(buffers.begin()+activeIdx);
if(activeIdx>0)activeIdx--;
if(buffers.size()==0)buffers.push_back(new Buffer(this));
+ } else if(cmd[0]=="cycle_tabs"){
+ if(activeIdx==-1){
+ receive({"error","No buffers open!"});
+ return;
+ }
+ activeIdx=(activeIdx+1)%buffers.size();
+ } else if(cmd[0]=="cycle_tabs_back"){
+ if(activeIdx==-1){
+ receive({"error","No buffers open!"});
+ return;
+ }
+ activeIdx=(activeIdx+buffers.size()-1)%buffers.size();
} else if(cmd[0]=="error"||cmd[0]=="info"){
if(!have_screen)return;
bool isError=cmd[0]=="error";