feat: add S-tab keybinding to open_file

This commit is contained in:
CJ van den Berg 2024-08-26 22:42:38 +02:00
parent 0c6f7a50b8
commit 4700505362
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -113,6 +113,7 @@ fn mapPress(self: *Self, keypress: u32, egc: u32, modifiers: u32) !void {
else => {}, else => {},
}, },
mod.SHIFT => switch (keypress) { mod.SHIFT => switch (keypress) {
key.TAB => self.reverse_complete_file(),
else => if (!key.synthesized_p(keypress)) else => if (!key.synthesized_p(keypress))
self.insert_code_point(egc) self.insert_code_point(egc)
else {}, else {},
@ -173,6 +174,23 @@ fn try_complete_file(self: *Self) !void {
try project_manager.query_recent_files(self.complete_trigger_count, self.query.items); try project_manager.query_recent_files(self.complete_trigger_count, self.query.items);
} }
fn reverse_complete_file(self: *Self) !void {
if (self.complete_trigger_count < 2) {
self.complete_trigger_count = 0;
self.file_path.clearRetainingCapacity();
try self.file_path.appendSlice(self.query.items);
if (tui.current().mini_mode) |*mini_mode| {
mini_mode.text = self.file_path.items;
mini_mode.cursor = self.file_path.items.len;
}
return;
}
self.complete_trigger_count -= 1;
if (self.query_pending) return;
self.query_pending = true;
try project_manager.query_recent_files(self.complete_trigger_count, self.query.items);
}
fn receive_project_manager(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool { fn receive_project_manager(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool {
if (try m.match(.{ "PRJ", tp.more })) { if (try m.match(.{ "PRJ", tp.more })) {
self.process_project_manager(m) catch |e| return tp.exit_error(e, @errorReturnTrace()); self.process_project_manager(m) catch |e| return tp.exit_error(e, @errorReturnTrace());