layout toggle: take any combination of layouts as arguments (#2649)
With this PR the 'layout toggle' command can be passed any combination of valid layout keywords as arguments. They will be activated one after another each time you issue the command, advancing from left to right always selecting the layout after the currently active layout or the leftmost layout if the active layout is not in the argument list. This PR also incorporates the feature request from #2476.
This commit is contained in:
@ -95,4 +95,72 @@ cmd 'layout toggle all';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splitv', 'layout now splitv');
|
||||
|
||||
cmd 'layout toggle splith splitv';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splith', 'layout now splith');
|
||||
|
||||
cmd 'layout toggle splith splitv';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splitv', 'layout now splitv');
|
||||
|
||||
cmd 'layout toggle stacked splitv tabbed';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'tabbed', 'layout now tabbed');
|
||||
|
||||
cmd 'layout toggle stacking splitv tabbed';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'stacked', 'layout now stacked');
|
||||
|
||||
cmd 'layout toggle stacking splitv tabbed';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splitv', 'layout now splitv');
|
||||
|
||||
cmd 'layout toggle splitv i stacking tabbed';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'stacked', 'layout now stacked');
|
||||
|
||||
cmd 'layout toggle stacked';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
# this is correct if it does nothing
|
||||
is($nodes->[1]->{layout}, 'stacked', 'layout now tabbed');
|
||||
|
||||
cmd 'layout toggle tabbed stacked';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'tabbed', 'layout now stacked');
|
||||
|
||||
# obsoletes 'split' ;)
|
||||
cmd 'layout toggle splith splitv';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splith', 'layout now splith');
|
||||
|
||||
# nonsense but works expectedly
|
||||
cmd 'layout toggle split split';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splitv', 'layout now splitv');
|
||||
|
||||
cmd 'layout toggle split split';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splith', 'layout now splith');
|
||||
|
||||
# testing with arbitrary length and garbage
|
||||
cmd 'layout toggle stacking splith tabbed splitv stacking';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'tabbed', 'layout now tabbed');
|
||||
|
||||
cmd 'layout toggle stacking splith garbage tabbed splitv stacking';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splitv', 'layout now splitv');
|
||||
|
||||
cmd 'layout toggle stacking splith garbage tabbed splitv stacking';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'stacked', 'layout now stacked');
|
||||
|
||||
cmd 'layout toggle splitv splith garbage splitv tabbed stacking splitv';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'splitv', 'layout now splitv');
|
||||
|
||||
cmd 'layout toggle splitv garbage tabbed';
|
||||
($nodes, $focus) = get_ws_content($tmp);
|
||||
is($nodes->[1]->{layout}, 'tabbed', 'layout now tabbed');
|
||||
|
||||
done_testing;
|
||||
|
Reference in New Issue
Block a user