refactor: rename Binding.key_events
This commit is contained in:
parent
641c955f32
commit
fbf9325a02
1 changed files with 16 additions and 21 deletions
|
@ -252,27 +252,22 @@ const Command = struct {
|
||||||
|
|
||||||
//An association of an command with a triggering key chord
|
//An association of an command with a triggering key chord
|
||||||
const Binding = struct {
|
const Binding = struct {
|
||||||
keys: []KeyEvent,
|
key_events: []KeyEvent,
|
||||||
command: Command,
|
command: Command,
|
||||||
|
|
||||||
fn deinit(self: *const @This(), allocator: std.mem.Allocator) void {
|
|
||||||
allocator.free(self.keys);
|
|
||||||
self.command.deinit(allocator);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn len(self: Binding) usize {
|
fn len(self: Binding) usize {
|
||||||
return self.keys.items.len;
|
return self.key_events.items.len;
|
||||||
}
|
}
|
||||||
|
|
||||||
const MatchResult = enum { match_impossible, match_possible, matched };
|
const MatchResult = enum { match_impossible, match_possible, matched };
|
||||||
|
|
||||||
fn match(self: *const @This(), match_keys: []const KeyEvent) MatchResult {
|
fn match(self: *const @This(), match_key_events: []const KeyEvent) MatchResult {
|
||||||
if (self.keys.len == 0) return .match_impossible;
|
if (self.key_events.len == 0) return .match_impossible;
|
||||||
for (self.keys, 0..) |key_event, i| {
|
for (self.key_events, 0..) |key_event, i| {
|
||||||
if (match_keys.len <= i) return .match_possible;
|
if (match_key_events.len <= i) return .match_possible;
|
||||||
if (!key_event.eql(match_keys[i])) return .match_impossible;
|
if (!key_event.eql(match_key_events[i])) return .match_impossible;
|
||||||
}
|
}
|
||||||
return if (self.keys.len == match_keys.len) .matched else .match_possible;
|
return if (self.key_events.len == match_key_events.len) .matched else .match_possible;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -308,7 +303,7 @@ const BindingSet = struct {
|
||||||
var self: @This() = .{};
|
var self: @This() = .{};
|
||||||
|
|
||||||
defer self.press.append(allocator, .{
|
defer self.press.append(allocator, .{
|
||||||
.keys = allocator.dupe(KeyEvent, &[_]KeyEvent{.{ .key = input.key.f2 }}) catch @panic("failed to add toggle_input_mode fallback"),
|
.key_events = allocator.dupe(KeyEvent, &[_]KeyEvent{.{ .key = input.key.f2 }}) catch @panic("failed to add toggle_input_mode fallback"),
|
||||||
.command = .{
|
.command = .{
|
||||||
.command = allocator.dupe(u8, "toggle_input_mode") catch @panic("failed to add toggle_input_mode fallback"),
|
.command = allocator.dupe(u8, "toggle_input_mode") catch @panic("failed to add toggle_input_mode fallback"),
|
||||||
.args = "",
|
.args = "",
|
||||||
|
@ -336,11 +331,11 @@ const BindingSet = struct {
|
||||||
fn load_event(self: *BindingSet, allocator: std.mem.Allocator, dest: *std.ArrayListUnmanaged(Binding), event: input.Event, bindings: []const []const std.json.Value) (parse_flow.ParseError || parse_vim.ParseError)!void {
|
fn load_event(self: *BindingSet, allocator: std.mem.Allocator, dest: *std.ArrayListUnmanaged(Binding), event: input.Event, bindings: []const []const std.json.Value) (parse_flow.ParseError || parse_vim.ParseError)!void {
|
||||||
bindings: for (bindings) |entry| {
|
bindings: for (bindings) |entry| {
|
||||||
var state: enum { key_event, command, args } = .key_event;
|
var state: enum { key_event, command, args } = .key_event;
|
||||||
var keys: ?[]KeyEvent = null;
|
var key_events: ?[]KeyEvent = null;
|
||||||
var command_: ?[]const u8 = null;
|
var command_: ?[]const u8 = null;
|
||||||
var args = std.ArrayListUnmanaged(std.json.Value){};
|
var args = std.ArrayListUnmanaged(std.json.Value){};
|
||||||
defer {
|
defer {
|
||||||
if (keys) |p| allocator.free(p);
|
if (key_events) |p| allocator.free(p);
|
||||||
if (command_) |p| allocator.free(p);
|
if (command_) |p| allocator.free(p);
|
||||||
args.deinit(allocator);
|
args.deinit(allocator);
|
||||||
}
|
}
|
||||||
|
@ -353,7 +348,7 @@ const BindingSet = struct {
|
||||||
logger.deinit();
|
logger.deinit();
|
||||||
continue :bindings;
|
continue :bindings;
|
||||||
}
|
}
|
||||||
keys = switch (self.syntax) {
|
key_events = switch (self.syntax) {
|
||||||
.flow => parse_flow.parse_key_events(allocator, event, token.string) catch |e| {
|
.flow => parse_flow.parse_key_events(allocator, event, token.string) catch |e| {
|
||||||
const logger = log.logger("keybind");
|
const logger = log.logger("keybind");
|
||||||
logger.print_err("keybind.load", "ERROR: {s} {s}", .{ @errorName(e), parse_flow.parse_error_message });
|
logger.print_err("keybind.load", "ERROR: {s} {s}", .{ @errorName(e), parse_flow.parse_error_message });
|
||||||
|
@ -395,13 +390,13 @@ const BindingSet = struct {
|
||||||
for (args.items) |arg| try cbor.writeJsonValue(writer, arg);
|
for (args.items) |arg| try cbor.writeJsonValue(writer, arg);
|
||||||
|
|
||||||
try dest.append(allocator, .{
|
try dest.append(allocator, .{
|
||||||
.keys = keys.?,
|
.key_events = key_events.?,
|
||||||
.command = .{
|
.command = .{
|
||||||
.command = command_.?,
|
.command = command_.?,
|
||||||
.args = try args_cbor.toOwnedSlice(allocator),
|
.args = try args_cbor.toOwnedSlice(allocator),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
keys = null;
|
key_events = null;
|
||||||
command_ = null;
|
command_ = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -421,8 +416,8 @@ const BindingSet = struct {
|
||||||
defer hint.deinit();
|
defer hint.deinit();
|
||||||
const writer = hint.writer();
|
const writer = hint.writer();
|
||||||
if (hint.items.len > 0) try writer.writeAll(", ");
|
if (hint.items.len > 0) try writer.writeAll(", ");
|
||||||
const count = binding.keys.len;
|
const count = binding.key_events.len;
|
||||||
for (binding.keys, 0..) |key_, n| {
|
for (binding.key_events, 0..) |key_, n| {
|
||||||
var key = key_;
|
var key = key_;
|
||||||
key.event = 0;
|
key.event = 0;
|
||||||
switch (self.syntax) {
|
switch (self.syntax) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue