summaryrefslogtreecommitdiff
path: root/src/builtins.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-07-31 00:26:12 -0300
committerGabriel Schneider <[email protected]>2026-08-01 15:02:07 -0300
commitea228d1b832401db8efe33a5db4099ba41d42509 (patch)
tree10a5a7514eca150ba90c188a109c3c604607ef9b /src/builtins.zig
parent19f7322100062b7c1adcde3376063ce6c1d8c72d (diff)
downloadpardes-ea228d1b832401db8efe33a5db4099ba41d42509.tar.gz
pardes-ea228d1b832401db8efe33a5db4099ba41d42509.zip
config.zig: every binding and every piece of Look syntax in one file
Retargeting a key, a mouse chord or a spelling is now an edit to src/config.zig and nothing else. Three parts in reading order: pardes's own bindings (where a reader lands), the Look/Exec syntax, then the helix keymap under a banner saying hxdiff/hxparity are differential suites against real helix, so a key moved there is a divergence and not a tweak. The bindings are data a comptime loop can walk, because the builtin index is going to walk them. Duplication this cut: is/isC/isA became one hit(key, chords) over ~132 call sites, and a binding being a LIST collapses the letter-or-arrow chains; swap_enter_tab is gone, replaced by look_key/exec_key that can point anywhere; the four focus builtins' h/j/k/l lived hardcoded in two places and is now one table. No golden moved.
Diffstat (limited to 'src/builtins.zig')
-rw-r--r--src/builtins.zig17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/builtins.zig b/src/builtins.zig
index 7143a860..d32e4ed3 100644
--- a/src/builtins.zig
+++ b/src/builtins.zig
@@ -21,15 +21,16 @@
//! table catches immediately (see leader_path: a missing key path is a
//! compile error).
//!
-//! What is NOT here: the key bindings. `leader_path` stays ONE table in
-//! pardes.zig next to `topbar_str` — the whole remapping surface belongs in
-//! one place a user can read top to bottom, not scattered a line at a time
-//! across thirty-three structs.
+//! What is NOT here: the key bindings. `leader_path` is ONE table in
+//! config.zig next to `topbar_str` and every other syntactic choice — the
+//! whole remapping surface belongs in one file a user can read top to bottom,
+//! not scattered a line at a time across thirty-three structs.
const std = @import("std");
const pardes = @import("pardes.zig");
const Pardes = pardes.Pardes;
const Pane = pardes.Pane;
const output_pane = @import("output_pane.zig");
+const config = @import("config.zig");
/// What a builtin gets to act on. One bundle rather than five parameters
/// because most builtins want two of them and zig rejects the unused rest.
@@ -273,7 +274,7 @@ pub const Find = struct {
pub fn run(c: Ctx) void {
const pat = std.mem.trim(u8, c.arg orelse "", " \t\r\n");
if (pat.len > 0) return c.p.runSearch(c.id, pat, .find);
- c.p.startSearch(c.pane, Pardes.find_marker);
+ c.p.startSearch(c.pane, config.find_marker);
}
};
@@ -283,7 +284,7 @@ pub const Grep = struct {
pub fn run(c: Ctx) void {
const pat = std.mem.trim(u8, c.arg orelse "", " \t\r\n");
if (pat.len > 0) return c.p.runSearch(c.id, pat, .grep);
- c.p.startSearch(c.pane, Pardes.grep_marker);
+ c.p.startSearch(c.pane, config.grep_marker);
}
};
@@ -412,7 +413,7 @@ pub const Rename = struct {
pub fn run(c: Ctx) void {
const a = std.mem.trim(u8, c.arg orelse "", " \t\r\n");
if (a.len > 0) return c.p.lspRequest(c.id, .rename, a);
- c.p.startSearch(c.pane, Pardes.rename_marker);
+ c.p.startSearch(c.pane, config.rename_marker);
}
};
@@ -420,7 +421,7 @@ pub const WsSymbols = struct {
pub fn run(c: Ctx) void {
const a = std.mem.trim(u8, c.arg orelse "", " \t\r\n");
if (a.len > 0) return c.p.lspRequest(c.id, .workspace_symbols, a);
- c.p.startSearch(c.pane, Pardes.symbol_marker);
+ c.p.startSearch(c.pane, config.symbol_marker);
}
};