feat: add experimental every_keystroke completion trigger mode
This commit is contained in:
parent
775d08b88d
commit
16e26e7e7e
3 changed files with 20 additions and 1 deletions
|
|
@ -178,6 +178,7 @@ pub const InitialFindQuery = enum {
|
|||
pub const CompletionTrigger = enum {
|
||||
manual,
|
||||
automatic,
|
||||
every_keystroke,
|
||||
};
|
||||
|
||||
pub const CompletionStyle = enum {
|
||||
|
|
|
|||
|
|
@ -6378,7 +6378,11 @@ pub const Editor = struct {
|
|||
}
|
||||
|
||||
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) {
|
||||
'\n', '\t', ' ' => return,
|
||||
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 {
|
||||
var cmd: command.ID = undefined;
|
||||
var trigger_char: []const u8 = undefined;
|
||||
|
|
|
|||
|
|
@ -1144,6 +1144,7 @@ const cmds = struct {
|
|||
self.config_.completion_trigger = switch (self.config_.completion_trigger) {
|
||||
.manual => .automatic,
|
||||
.automatic => .manual,
|
||||
.every_keystroke => .manual,
|
||||
};
|
||||
defer self.logger.print("{t} completion", .{self.config_.completion_trigger});
|
||||
try save_config();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue