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 {
|
pub const CompletionTrigger = enum {
|
||||||
manual,
|
manual,
|
||||||
automatic,
|
automatic,
|
||||||
|
every_keystroke,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const CompletionStyle = enum {
|
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 {
|
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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue