feat: add close_splits command
This commit is contained in:
parent
69fec437f1
commit
725a66e4e2
1 changed files with 20 additions and 3 deletions
|
|
@ -940,6 +940,18 @@ const cmds = struct {
|
||||||
}
|
}
|
||||||
pub const close_split_meta: Meta = .{ .description = "Close split view" };
|
pub const close_split_meta: Meta = .{ .description = "Close split view" };
|
||||||
|
|
||||||
|
pub fn close_splits(self: *Self, _: Ctx) Result {
|
||||||
|
while (self.views.widgets.items.len > 1)
|
||||||
|
try self.remove_view(1);
|
||||||
|
|
||||||
|
if (self.closing_project) return;
|
||||||
|
|
||||||
|
const buffers = try self.buffer_manager.list_unordered(self.allocator);
|
||||||
|
defer self.allocator.free(buffers);
|
||||||
|
for (buffers) |buffer| buffer.set_last_view(0);
|
||||||
|
}
|
||||||
|
pub const close_splits_meta: Meta = .{ .description = "Close all split views" };
|
||||||
|
|
||||||
pub fn focus_split(self: *Self, ctx: Ctx) Result {
|
pub fn focus_split(self: *Self, ctx: Ctx) Result {
|
||||||
var n: usize = undefined;
|
var n: usize = undefined;
|
||||||
if (!try ctx.args.match(.{tp.extract(&n)})) return error.InvalidFocusSplitArgument;
|
if (!try ctx.args.match(.{tp.extract(&n)})) return error.InvalidFocusSplitArgument;
|
||||||
|
|
@ -1699,15 +1711,20 @@ pub fn focus_view(self: *Self, n: usize) !void {
|
||||||
if (self.views.get_at(self.active_view)) |view| view.focus();
|
if (self.views.get_at(self.active_view)) |view| view.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn remove_active_view(self: *Self) !void {
|
fn remove_view(self: *Self, view: usize) !void {
|
||||||
if (self.views.widgets.items.len == 1) return; // can't delete last view
|
if (self.views.widgets.items.len == 1) return; // can't delete last view
|
||||||
self.views.delete(self.active_view);
|
if (view >= self.views.widgets.items.len) return;
|
||||||
|
self.views.delete(view);
|
||||||
if (self.active_view >= self.views.widgets.items.len)
|
if (self.active_view >= self.views.widgets.items.len)
|
||||||
self.active_view = self.views.widgets.items.len - 1;
|
self.active_view = self.views.widgets.items.len - 1;
|
||||||
if (self.views.get_at(self.active_view)) |view| view.focus();
|
if (self.views.get_at(self.active_view)) |active_view| active_view.focus();
|
||||||
tui.resize();
|
tui.resize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn remove_active_view(self: *Self) !void {
|
||||||
|
return self.remove_view(self.active_view);
|
||||||
|
}
|
||||||
|
|
||||||
fn replace_active_view(self: *Self, widget: Widget) !void {
|
fn replace_active_view(self: *Self, widget: Widget) !void {
|
||||||
const n = self.active_view;
|
const n = self.active_view;
|
||||||
if (self.views.get_at(n)) |view| view.unfocus();
|
if (self.views.get_at(n)) |view| view.unfocus();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue