summaryrefslogtreecommitdiff
path: root/src/builtins.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/builtins.zig')
-rw-r--r--src/builtins.zig26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/builtins.zig b/src/builtins.zig
index 146789b0..a5dbf6cd 100644
--- a/src/builtins.zig
+++ b/src/builtins.zig
@@ -19,6 +19,9 @@ pub const capabilities: config.Runtime.Capabilities = .{
.tagline_font_size = pardes.platform != .tty and pardes.platform != .esp32p4,
.window_opacity = pardes.platform == .gui or pardes.platform == .macos,
.window_blur = pardes.platform == .macos,
+ // Only the SDL shell shapes with HarfBuzz and honours the setting. macOS
+ // draws CoreText ligatures of its own, but nothing there reads it yet.
+ .ligatures = pardes.platform == .gui,
};
pub const Ctx = struct {
@@ -164,6 +167,29 @@ test "capabilities exactly gate setting and effect-source builtins" {
try std.testing.expectEqual(EffectCode.enabled, effect_code_registered);
}
+test "Ligatures is a setting only in the shell that shapes text" {
+ const exists = @hasField(registry.Builtin(), "Ligatures");
+ try std.testing.expectEqual(pardes.platform == .gui, exists);
+ const p = try Pardes.init(std.testing.allocator, .{ .tty_only = true });
+ defer p.deinit();
+ try std.testing.expectEqual(exists, p.executeBuiltinLine(p.active, "Ligatures off"));
+ try std.testing.expectEqual(!exists, p.settings.ligatures);
+ var storage: [8192]u8 = undefined;
+ var out: std.Io.Writer = .fixed(&storage);
+ try config.Runtime.writeReport(&out, .{
+ .startup_config_path = null,
+ .platform = @tagName(pardes.platform),
+ .theme_name = p.theme().name,
+ .compiled_default_shell = config.default_shell,
+ .hover_delay_frames = null,
+ .native_images = false,
+ .capabilities = capabilities,
+ .state = &p.settings,
+ });
+ try std.testing.expectEqual(exists, std.mem.indexOf(u8, storage[0..out.end], "Ligatures off\n") != null);
+ try std.testing.expectEqual(exists, std.mem.indexOf(u8, storage[0..out.end], "Ligatures") != null);
+}
+
comptime {
for ([_][]const u8{ "Peek", "Poke", "Hexdump" }) |name|
if (@hasField(registry.Builtin(), name) != Board.enabled) @compileError(