refactor: run triggers only on primary cursel

This commit is contained in:
CJ van den Berg 2025-12-24 00:10:56 +01:00
parent 4f39bbbd41
commit b5d137666f
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
2 changed files with 5 additions and 4 deletions

View file

@ -2286,7 +2286,7 @@ pub const Editor = struct {
var size: usize = 0; var size: usize = 0;
const root_, const trigger_char = try root.delete_range_char(sel, allocator, &size, self.metrics); const root_, const trigger_char = try root.delete_range_char(sel, allocator, &size, self.metrics);
self.nudge_delete(sel, cursel, size); self.nudge_delete(sel, cursel, size);
if (trigger_char) |char| self.run_triggers(char, .delete); if (trigger_char) |char| self.run_triggers(cursel, char, .delete);
return root_; return root_;
} }
@ -2865,7 +2865,7 @@ pub const Editor = struct {
cursor.row, cursor.col, root_ = try root_.insert_chars(cursor.row, cursor.col, s, allocator, self.metrics); cursor.row, cursor.col, root_ = try root_.insert_chars(cursor.row, cursor.col, s, allocator, self.metrics);
cursor.target = cursor.col; cursor.target = cursor.col;
self.nudge_insert(.{ .begin = begin, .end = cursor.* }, cursel, s.len); self.nudge_insert(.{ .begin = begin, .end = cursor.* }, cursel, s.len);
if (s.len == 1) self.run_triggers(s[0], .insert); if (s.len == 1) self.run_triggers(cursel, s[0], .insert);
return root_; return root_;
} }
@ -6253,11 +6253,12 @@ pub const Editor = struct {
return false; return false;
} }
pub fn run_triggers(self: *Self, char: u8, event: TriggerEvent) void { pub fn run_triggers(self: *Self, cursel: *const CurSel, char: u8, event: TriggerEvent) void {
switch (char) { switch (char) {
'\n', '\t', ' ' => return, '\n', '\t', ' ' => return,
else => {}, else => {},
} }
if (!cursel.cursor.eql(self.get_primary().cursor)) return;
for (self.get_event_triggers(event).items) |item| if (item.char == char) { for (self.get_event_triggers(event).items) |item| if (item.char == char) {
if (command.log_execute) if (command.log_execute)
self.logger.print("trigger: {t} '{c}' {?s}({d})", .{ event, char, command.get_name(item.command), item.command }); self.logger.print("trigger: {t} '{c}' {?s}({d})", .{ event, char, command.get_name(item.command), item.command });

View file

@ -122,7 +122,7 @@ pub fn update_query(self: *Type, query: []const u8) void {
editor.need_render(); editor.need_render();
if (query.len > 0) { if (query.len > 0) {
const last_char = query[query.len - 1]; const last_char = query[query.len - 1];
editor.run_triggers(last_char, .insert); editor.run_triggers(primary, last_char, .insert);
} }
return; return;
} }