Compare commits

..

2 commits

4 changed files with 21 additions and 1 deletions

View file

@ -178,6 +178,7 @@ pub const InitialFindQuery = enum {
pub const CompletionTrigger = enum { pub const CompletionTrigger = enum {
manual, manual,
automatic, automatic,
every_keystroke,
}; };
pub const CompletionStyle = enum { pub const CompletionStyle = enum {

View file

@ -151,6 +151,7 @@
["alt+s", "filter", "sort"], ["alt+s", "filter", "sort"],
["alt+v", "paste"], ["alt+v", "paste"],
["alt+R", ["shell_execute_insert", "openssl", "rand", "-hex", "4"]], ["alt+R", ["shell_execute_insert", "openssl", "rand", "-hex", "4"]],
["alt+G", ["shell_execute_insert", "uuidgen"]],
["alt+left", "jump_back"], ["alt+left", "jump_back"],
["alt+right", "jump_forward"], ["alt+right", "jump_forward"],
["alt+up", "pull_up"], ["alt+up", "pull_up"],

View file

@ -6378,7 +6378,11 @@ pub const Editor = struct {
} }
pub fn run_triggers(self: *Self, cursel: *const CurSel, char: u8, event: TriggerEvent) void { pub fn run_triggers(self: *Self, cursel: *const CurSel, char: u8, event: TriggerEvent) void {
if (tui.config().completion_trigger == .manual) return; switch (tui.config().completion_trigger) {
.manual => return,
.every_keystroke => return self.run_triggers_every_keystroke(cursel, char, event),
.automatic => {},
}
switch (char) { switch (char) {
'\n', '\t', ' ' => return, '\n', '\t', ' ' => return,
else => {}, else => {},
@ -6391,6 +6395,19 @@ pub const Editor = struct {
}; };
} }
pub fn run_triggers_every_keystroke(self: *Self, cursel: *const CurSel, char: u8, event: TriggerEvent) void {
switch (char) {
'\n', '\t', ' ' => return,
else => {},
}
if (!cursel.cursor.eql(self.get_primary().cursor)) return;
for (self.get_event_triggers(event).items) |item| {
if (command.log_execute)
self.logger.print("trigger: {t} '{c}' {?s}({d})", .{ event, char, command.get_name(item.command), item.command });
return tp.self_pid().send(.{ "cmd", "run_trigger", .{ item.command, [_]u8{char} } }) catch {};
}
}
pub fn run_trigger(_: *Self, ctx: Context) Result { pub fn run_trigger(_: *Self, ctx: Context) Result {
var cmd: command.ID = undefined; var cmd: command.ID = undefined;
var trigger_char: []const u8 = undefined; var trigger_char: []const u8 = undefined;

View file

@ -1144,6 +1144,7 @@ const cmds = struct {
self.config_.completion_trigger = switch (self.config_.completion_trigger) { self.config_.completion_trigger = switch (self.config_.completion_trigger) {
.manual => .automatic, .manual => .automatic,
.automatic => .manual, .automatic => .manual,
.every_keystroke => .manual,
}; };
defer self.logger.print("{t} completion", .{self.config_.completion_trigger}); defer self.logger.print("{t} completion", .{self.config_.completion_trigger});
try save_config(); try save_config();