Compare commits
3 commits
dc69e8a456
...
a9380e0395
Author | SHA1 | Date | |
---|---|---|---|
a9380e0395 | |||
4ee3dd4bba | |||
f0b079b43b |
3 changed files with 34 additions and 21 deletions
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"project": {
|
||||
"normal": {
|
||||
"press": [
|
||||
["f4", "toggle_input_mode"],
|
||||
["ctrl+0", "reset_fontsize"],
|
||||
|
@ -7,17 +7,11 @@
|
|||
["ctrl+-", "adjust_fontsize", -1.0],
|
||||
["ctrl+r", "find_file"],
|
||||
["ctrl+h ctrl+a", "open_help"],
|
||||
["ctrl+x ctrl+f", "open_file"],
|
||||
["ctrl+x b", "open_recent"],
|
||||
["ctrl+c ctrl+o", "open_recent_project"],
|
||||
["ctrl+c g", "find_in_files"],
|
||||
["alt+x", "open_command_palette"],
|
||||
["ctrl+x ctrl+c", "quit"]
|
||||
]
|
||||
},
|
||||
"normal": {
|
||||
"inherit": "project",
|
||||
"press": [
|
||||
["ctrl+x ctrl+c", "quit"],
|
||||
|
||||
["ctrl+g", "cancel"],
|
||||
["ctrl+_", "undo"],
|
||||
["\u001f", "undo"],
|
||||
|
@ -115,9 +109,21 @@
|
|||
},
|
||||
"home": {
|
||||
"on_match_failure": "ignore",
|
||||
"inherit": "project",
|
||||
"press": [
|
||||
["f", "change_fontface"]
|
||||
["f", "change_fontface"],
|
||||
["f4", "toggle_input_mode"],
|
||||
["ctrl+0", "reset_fontsize"],
|
||||
["ctrl+=", "adjust_fontsize", 1.0],
|
||||
["ctrl+-", "adjust_fontsize", -1.0],
|
||||
["ctrl+r", "find_file"],
|
||||
["ctrl+h ctrl+a", "open_help"],
|
||||
["ctrl+x ctrl+f", "open_file"],
|
||||
["ctrl+x ctrl+r", "open_recent"],
|
||||
["ctrl+x b", "switch_buffers"],
|
||||
["ctrl+c ctrl+o", "open_recent_project"],
|
||||
["ctrl+c g", "find_in_files"],
|
||||
["alt+x", "open_command_palette"],
|
||||
["ctrl+x ctrl+c", "quit"]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -337,8 +337,7 @@ const cmds = struct {
|
|||
tui.rdr().set_terminal_working_directory(project);
|
||||
if (self.top_bar) |bar| _ = try bar.msg(.{ "PRJ", "open" });
|
||||
if (self.bottom_bar) |bar| _ = try bar.msg(.{ "PRJ", "open" });
|
||||
if (try project_manager.request_most_recent_file(self.allocator)) |file_path|
|
||||
self.show_file_async_and_free(file_path);
|
||||
tp.self_pid().send(.{ "cmd", "open_recent" }) catch return;
|
||||
}
|
||||
pub const change_project_meta: Meta = .{ .arguments = &.{.string} };
|
||||
|
||||
|
@ -1224,11 +1223,6 @@ fn toggle_inputview_async(_: *Self) void {
|
|||
tp.self_pid().send(.{ "cmd", "toggle_inputview" }) catch return;
|
||||
}
|
||||
|
||||
fn show_file_async_and_free(self: *Self, file_path: []const u8) void {
|
||||
defer self.allocator.free(file_path);
|
||||
self.show_file_async(file_path);
|
||||
}
|
||||
|
||||
fn show_file_async(_: *Self, file_path: []const u8) void {
|
||||
tp.self_pid().send(.{ "cmd", "navigate", .{ .file = file_path } }) catch return;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ const std = @import("std");
|
|||
const tp = @import("thespian");
|
||||
const root = @import("root");
|
||||
const command = @import("command");
|
||||
const project_manager = @import("project_manager");
|
||||
|
||||
const tui = @import("../../tui.zig");
|
||||
|
||||
|
@ -10,6 +11,11 @@ pub const Type = @import("file_browser.zig").Create(@This());
|
|||
pub const create = Type.create;
|
||||
|
||||
pub fn load_entries(self: *Type) error{ Exit, OutOfMemory }!void {
|
||||
var project_name_buf: [512]u8 = undefined;
|
||||
const project_path = tp.env.get().str("project");
|
||||
const project_name = project_manager.abbreviate_home(&project_name_buf, project_path);
|
||||
try self.file_path.appendSlice(project_name);
|
||||
try self.file_path.append(std.fs.path.sep);
|
||||
const editor = tui.get_active_editor() orelse return;
|
||||
if (editor.file_path) |old_path|
|
||||
if (std.mem.lastIndexOf(u8, old_path, "/")) |pos|
|
||||
|
@ -28,8 +34,15 @@ pub fn name(_: *Type) []const u8 {
|
|||
}
|
||||
|
||||
pub fn select(self: *Type) void {
|
||||
if (root.is_directory(self.file_path.items)) return;
|
||||
if (self.file_path.items.len > 0)
|
||||
tp.self_pid().send(.{ "cmd", "navigate", .{ .file = self.file_path.items } }) catch {};
|
||||
var buf = std.ArrayList(u8).init(self.allocator);
|
||||
defer buf.deinit();
|
||||
const file_path = project_manager.expand_home(&buf, self.file_path.items);
|
||||
if (root.is_directory(file_path)) {
|
||||
tp.self_pid().send(.{ "cmd", "exit_overlay_mode" }) catch return;
|
||||
tp.self_pid().send(.{ "cmd", "change_project", .{file_path} }) catch {};
|
||||
return;
|
||||
}
|
||||
if (file_path.len > 0)
|
||||
tp.self_pid().send(.{ "cmd", "navigate", .{ .file = file_path } }) catch {};
|
||||
command.executeName("exit_mini_mode", .{}) catch {};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue