diff --git a/src/App.zig b/src/App.zig index cf7316e8c4..f81c4be662 100644 --- a/src/App.zig +++ b/src/App.zig @@ -5,14 +5,14 @@ const App = @This(); const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const apprt = @import("apprt.zig"); const Surface = @import("Surface.zig"); const input = @import("input.zig"); const configpkg = @import("config.zig"); const Config = configpkg.Config; -const BlockingQueue = @import("datastruct/main.zig").BlockingQueue; +const BlockingQueue = @import("datastruct").BlockingQueue; const renderer = @import("renderer.zig"); const font = @import("font/main.zig"); const global = @import("global.zig"); diff --git a/src/Surface.zig b/src/Surface.zig index 3002e9f580..0406ef9746 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -17,7 +17,7 @@ pub const Message = apprt.surface.Message; const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const global = @import("global.zig"); diff --git a/src/apprt/action.zig b/src/apprt/action.zig index 24a81393e2..5876579784 100644 --- a/src/apprt/action.zig +++ b/src/apprt/action.zig @@ -1,6 +1,6 @@ const std = @import("std"); const build_config = @import("../build_config.zig"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const apprt = @import("../apprt.zig"); const configpkg = @import("../config.zig"); const input = @import("../input.zig"); diff --git a/src/apprt/embedded.zig b/src/apprt/embedded.zig index 1f3b98e246..cbbc7d3eff 100644 --- a/src/apprt/embedded.zig +++ b/src/apprt/embedded.zig @@ -6,7 +6,7 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const objc = @import("objc"); const apprt = @import("../apprt.zig"); diff --git a/src/apprt/gtk/cgroup.zig b/src/apprt/gtk/cgroup.zig index 868aa268dc..f55f474c25 100644 --- a/src/apprt/gtk/cgroup.zig +++ b/src/apprt/gtk/cgroup.zig @@ -2,7 +2,7 @@ /// transient systemd scopes. const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const gio = @import("gio"); const glib = @import("glib"); diff --git a/src/apprt/gtk/class/application.zig b/src/apprt/gtk/class/application.zig index 8cc5918ebb..f6b35f9ea2 100644 --- a/src/apprt/gtk/class/application.zig +++ b/src/apprt/gtk/class/application.zig @@ -1,6 +1,6 @@ const builtin = @import("builtin"); const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const adw = @import("adw"); const gdk = @import("gdk"); diff --git a/src/apprt/gtk/class/global_shortcuts.zig b/src/apprt/gtk/class/global_shortcuts.zig index 88aaba9f43..740ec7cf5d 100644 --- a/src/apprt/gtk/class/global_shortcuts.zig +++ b/src/apprt/gtk/class/global_shortcuts.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const gio = @import("gio"); const glib = @import("glib"); diff --git a/src/apprt/gtk/class/imgui_widget.zig b/src/apprt/gtk/class/imgui_widget.zig index 50247fbf1f..8f13f053d3 100644 --- a/src/apprt/gtk/class/imgui_widget.zig +++ b/src/apprt/gtk/class/imgui_widget.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const cimgui = @import("dcimgui"); const gl = @import("opengl"); diff --git a/src/apprt/gtk/class/split_tree.zig b/src/apprt/gtk/class/split_tree.zig index 473ae3daf9..39f7192ce7 100644 --- a/src/apprt/gtk/class/split_tree.zig +++ b/src/apprt/gtk/class/split_tree.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const adw = @import("adw"); const gio = @import("gio"); diff --git a/src/apprt/gtk/class/surface.zig b/src/apprt/gtk/class/surface.zig index e9aea6d512..d943500025 100644 --- a/src/apprt/gtk/class/surface.zig +++ b/src/apprt/gtk/class/surface.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const adw = @import("adw"); const gdk = @import("gdk"); @@ -11,7 +11,7 @@ const gtk = @import("gtk"); const apprt = @import("../../../apprt.zig"); const build_config = @import("../../../build_config.zig"); const configpkg = @import("../../../config.zig"); -const datastruct = @import("../../../datastruct/main.zig"); +const datastruct = @import("datastruct"); const font = @import("../../../font/main.zig"); const input = @import("../../../input.zig"); const internal_os = @import("../../../os/main.zig"); @@ -41,6 +41,48 @@ const gtk_version = @import("../gtk_version.zig"); const log = std.log.scoped(.gtk_ghostty_surface); +fn splitTreeGetGObjectType(comptime Self: type, comptime View: type) fn () callconv(.c) usize { + return gobject.ext.defineBoxed( + Self, + .{ + // To get the type name we get the non-qualified type name + // of the view and append that to `GhosttySplitTree`. + .name = name: { + const type_name = @typeName(View); + const last = if (std.mem.lastIndexOfScalar( + u8, + type_name, + '.', + )) |idx| + type_name[idx + 1 ..] + else + type_name; + assert(last.len > 0); + break :name "GhosttySplitTree" ++ last; + }, + + .funcs = .{ + .copy = &struct { + fn copy(self: *Self) callconv(.c) *Self { + const ptr = glib.ext.create(Self); + ptr.* = if (self.nodes.len == 0) + .empty + else + self.clone(self.arena.child_allocator) catch @panic("oom"); + return ptr; + } + }.copy, + .free = &struct { + fn free(self: *Self) callconv(.c) void { + self.deinit(); + glib.ext.destroy(self); + } + }.free, + }, + }, + ); +} + pub const Surface = extern struct { const Self = @This(); parent_instance: Parent, @@ -58,7 +100,7 @@ pub const Surface = extern struct { }); /// A SplitTree implementation that stores surfaces. - pub const Tree = datastruct.SplitTree(Self); + pub const Tree = datastruct.SplitTree(Self, splitTreeGetGObjectType); pub const properties = struct { /// This property is set to true when the bell is ringing. Note that diff --git a/src/apprt/gtk/class/window.zig b/src/apprt/gtk/class/window.zig index 3e127308f2..e0bd698363 100644 --- a/src/apprt/gtk/class/window.zig +++ b/src/apprt/gtk/class/window.zig @@ -1,6 +1,6 @@ const std = @import("std"); const build_config = @import("../../../build_config.zig"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const adw = @import("adw"); const gdk = @import("gdk"); const gio = @import("gio"); diff --git a/src/apprt/gtk/ext.zig b/src/apprt/gtk/ext.zig index df9ab4ea2f..fa97037fc8 100644 --- a/src/apprt/gtk/ext.zig +++ b/src/apprt/gtk/ext.zig @@ -4,7 +4,7 @@ //! helpers. const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const glib = @import("glib"); diff --git a/src/apprt/gtk/ext/actions.zig b/src/apprt/gtk/ext/actions.zig index 6ba9c678b0..52a73d4ded 100644 --- a/src/apprt/gtk/ext/actions.zig +++ b/src/apprt/gtk/ext/actions.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const gio = @import("gio"); diff --git a/src/apprt/gtk/media.zig b/src/apprt/gtk/media.zig index 3e6a19c33e..c05cfd2ac8 100644 --- a/src/apprt/gtk/media.zig +++ b/src/apprt/gtk/media.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const log = std.log.scoped(.gtk_media); diff --git a/src/apprt/ipc.zig b/src/apprt/ipc.zig index ade44da19b..1bf2533de8 100644 --- a/src/apprt/ipc.zig +++ b/src/apprt/ipc.zig @@ -2,7 +2,7 @@ //! process. const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const lib = @import("../lib/main.zig"); pub const Errors = error{ diff --git a/src/apprt/surface.zig b/src/apprt/surface.zig index 3cb0016fad..6da7e9a424 100644 --- a/src/apprt/surface.zig +++ b/src/apprt/surface.zig @@ -8,7 +8,7 @@ const Surface = @import("../Surface.zig"); const renderer = @import("../renderer.zig"); const terminal = @import("../terminal/main.zig"); const Config = @import("../config.zig").Config; -const MessageData = @import("../datastruct/main.zig").MessageData; +const MessageData = @import("datastruct").MessageData; /// The message types that can be sent to a single surface. pub const Message = union(enum) { diff --git a/src/build/GhosttyDocs.zig b/src/build/GhosttyDocs.zig index 2b207f2374..fb1f43b383 100644 --- a/src/build/GhosttyDocs.zig +++ b/src/build/GhosttyDocs.zig @@ -5,6 +5,7 @@ const GhosttyDocs = @This(); const std = @import("std"); const Config = @import("Config.zig"); const SharedDeps = @import("SharedDeps.zig"); +const internal = @import("internal.zig"); steps: []*std.Build.Step, @@ -35,6 +36,7 @@ pub fn init( }), }); deps.help_strings.addImport(generate_markdown); + internal.add(generate_markdown.root_module); const gen_config = config: { var copy = deps.config.*; diff --git a/src/build/GhosttyResources.zig b/src/build/GhosttyResources.zig index 673c7e56a2..06439df3ea 100644 --- a/src/build/GhosttyResources.zig +++ b/src/build/GhosttyResources.zig @@ -5,6 +5,7 @@ const assert = std.debug.assert; const Config = @import("Config.zig"); const RunStep = std.Build.Step.Run; const SharedDeps = @import("SharedDeps.zig"); +const internal = @import("internal.zig"); steps: []*std.Build.Step, @@ -26,6 +27,7 @@ pub fn init(b: *std.Build, cfg: *const Config, deps: *const SharedDeps) !Ghostty }); deps.help_strings.addImport(build_data_exe); + internal.add(build_data_exe.root_module); // Terminfo terminfo: { diff --git a/src/build/GhosttyWebdata.zig b/src/build/GhosttyWebdata.zig index 7057ad034f..91742e3a78 100644 --- a/src/build/GhosttyWebdata.zig +++ b/src/build/GhosttyWebdata.zig @@ -4,6 +4,7 @@ const GhosttyWebdata = @This(); const std = @import("std"); const SharedDeps = @import("SharedDeps.zig"); +const internal = @import("internal.zig"); steps: []*std.Build.Step, @@ -26,6 +27,7 @@ pub fn init( }), }); deps.help_strings.addImport(webgen_config); + internal.add(webgen_config.root_module); { const buildconfig = config: { @@ -57,6 +59,7 @@ pub fn init( }), }); deps.help_strings.addImport(webgen_actions); + internal.add(webgen_actions.root_module); { const buildconfig = config: { @@ -88,6 +91,7 @@ pub fn init( }), }); deps.help_strings.addImport(webgen_commands); + internal.add(webgen_commands.root_module); { const buildconfig = config: { diff --git a/src/build/GhosttyZig.zig b/src/build/GhosttyZig.zig index 4671219e08..cc6bc8df20 100644 --- a/src/build/GhosttyZig.zig +++ b/src/build/GhosttyZig.zig @@ -6,6 +6,7 @@ const std = @import("std"); const Config = @import("Config.zig"); const SharedDeps = @import("SharedDeps.zig"); const TerminalBuildOptions = @import("../terminal/build_options.zig").Options; +const internal = @import("internal.zig"); /// The `_c`-suffixed modules are built with the C ABI enabled. vt: *std.Build.Module, @@ -137,6 +138,8 @@ fn initVt( // We need uucode for grapheme break support vt.addImport("uucode", deps.uucode_mod); + internal.add(vt); + // If SIMD is enabled, add all our SIMD dependencies. if (cfg.simd) { try SharedDeps.addSimd(b, vt, simd_libs); diff --git a/src/build/HelpStrings.zig b/src/build/HelpStrings.zig index 24ae82e2a2..38b76d0768 100644 --- a/src/build/HelpStrings.zig +++ b/src/build/HelpStrings.zig @@ -2,6 +2,8 @@ const HelpStrings = @This(); const std = @import("std"); const Config = @import("Config.zig"); +const SharedDeps = @import("SharedDeps.zig"); +const internal = @import("internal.zig"); /// The "helpgen" exe. exe: *std.Build.Step.Compile, @@ -30,6 +32,8 @@ pub fn init(b: *std.Build, cfg: *const Config) !HelpStrings { try help_config.addOptions(options); exe.root_module.addOptions("build_options", options); + internal.add(exe.root_module); + const help_run = b.addRunArtifact(exe); // Generated Zig files have to end with .zig diff --git a/src/build/SharedDeps.zig b/src/build/SharedDeps.zig index 86cfecc05a..9a2e328118 100644 --- a/src/build/SharedDeps.zig +++ b/src/build/SharedDeps.zig @@ -10,6 +10,7 @@ const UnicodeTables = @import("UnicodeTables.zig"); const GhosttyFrameData = @import("GhosttyFrameData.zig"); const DistResource = @import("GhosttyDist.zig").Resource; const gtk_helpers = @import("gtk.zig"); +const internal = @import("internal.zig"); config: *const Config, @@ -184,6 +185,8 @@ pub fn add( // Every exe needs the uucode module step.root_module.addImport("uucode", self.uucode_mod); + internal.add(step.root_module); + // C imports for locale constants and functions { const c = b.addTranslateC(.{ diff --git a/src/build/internal.zig b/src/build/internal.zig new file mode 100644 index 0000000000..adfd6228e4 --- /dev/null +++ b/src/build/internal.zig @@ -0,0 +1,99 @@ +const std = @import("std"); + +pub const Module = enum { + datastruct, + fastmem, + quirks, + tripwire, +}; + +const Key = struct { + dep: Module, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +}; + +const Value = *std.Build.Module; + +const Context = struct { + pub fn hash(_: Context, key: Key) u32 { + var h: std.hash.XxHash32 = .init(0); + h.update(std.mem.asBytes(&key.dep)); + h.update(std.mem.asBytes(&key.target.result.cpu.arch)); + h.update(key.target.result.cpu.features.asBytes()); + h.update(std.mem.asBytes(&key.target.result.os.tag)); + h.update(std.mem.asBytes(&key.target.result.abi)); + h.update(std.mem.asBytes(&key.optimize)); + return h.final(); + } + + pub fn eql(_: Context, a: Key, b: Key, _: usize) bool { + return a.dep == b.dep and + a.target.result.cpu.arch == b.target.result.cpu.arch and + a.target.result.cpu.features.eql(b.target.result.cpu.features) and + a.target.result.os.tag == b.target.result.os.tag and + a.target.result.abi == b.target.result.abi and + a.optimize == b.optimize; + } +}; + +var modules: std.ArrayHashMapUnmanaged(Key, Value, Context, false) = .empty; + +fn get(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, dep: Module) *std.Build.Module { + const key: Key = .{ + .dep = dep, + .target = target, + .optimize = optimize, + }; + + return modules.get(key) orelse mod: { + const value = switch (dep) { + .datastruct => b.createModule(.{ + .root_source_file = b.path("src/datastruct/main.zig"), + .target = target, + .optimize = optimize, + .imports = &.{ + .{ + .name = "fastmem", + .module = get(b, target, optimize, .fastmem), + }, + .{ + .name = "quirks", + .module = get(b, target, optimize, .quirks), + }, + }, + }), + .fastmem => b.createModule(.{ + .root_source_file = b.path("src/fastmem.zig"), + .target = target, + .optimize = optimize, + }), + .quirks => b.createModule(.{ + .root_source_file = b.path("src/quirks.zig"), + .target = target, + .optimize = optimize, + }), + .tripwire => b.createModule(.{ + .root_source_file = b.path("src/tripwire.zig"), + .target = target, + .optimize = optimize, + }), + }; + + modules.put(b.allocator, key, value) catch unreachable; + break :mod value; + }; +} + +pub fn add(module: *std.Build.Module) void { + const b = module.owner; + + // We could use our config.target/optimize fields here but its more + // correct to always match our step. + const target = module.resolved_target.?; + const optimize = module.optimize orelse .Debug; + + inline for (std.meta.fields(Module)) |f| { + module.addImport(f.name, get(b, target, optimize, @enumFromInt(f.value))); + } +} diff --git a/src/cli/args.zig b/src/cli/args.zig index 38616fc065..8d7792116a 100644 --- a/src/cli/args.zig +++ b/src/cli/args.zig @@ -1,6 +1,6 @@ const std = @import("std"); const mem = std.mem; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const diags = @import("diagnostics.zig"); diff --git a/src/cli/diagnostics.zig b/src/cli/diagnostics.zig index 0e4048a012..9dd78d1610 100644 --- a/src/cli/diagnostics.zig +++ b/src/cli/diagnostics.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const build_config = @import("../build_config.zig"); diff --git a/src/cli/edit_config.zig b/src/cli/edit_config.zig index 9662ea4448..84eb136a52 100644 --- a/src/cli/edit_config.zig +++ b/src/cli/edit_config.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const args = @import("args.zig"); const Allocator = std.mem.Allocator; const Action = @import("ghostty.zig").Action; diff --git a/src/cli/ssh-cache/DiskCache.zig b/src/cli/ssh-cache/DiskCache.zig index bc5619d719..13af43542e 100644 --- a/src/cli/ssh-cache/DiskCache.zig +++ b/src/cli/ssh-cache/DiskCache.zig @@ -5,7 +5,7 @@ const DiskCache = @This(); const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const internal_os = @import("../../os/main.zig"); const xdg = internal_os.xdg; diff --git a/src/config/ClipboardCodepointMap.zig b/src/config/ClipboardCodepointMap.zig index fbe539127e..5959eaae70 100644 --- a/src/config/ClipboardCodepointMap.zig +++ b/src/config/ClipboardCodepointMap.zig @@ -4,7 +4,7 @@ const ClipboardCodepointMap = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; // To ease our usage later, we map it directly to formatter entries. diff --git a/src/config/Config.zig b/src/config/Config.zig index 7fa282437d..d2e1190f7a 100644 --- a/src/config/Config.zig +++ b/src/config/Config.zig @@ -13,11 +13,11 @@ const Config = @This(); const std = @import("std"); const builtin = @import("builtin"); const build_config = @import("../build_config.zig"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const global = @import("../global.zig"); -const deepEqual = @import("../datastruct/comparison.zig").deepEqual; +const deepEqual = @import("datastruct").deepEqual; const fontpkg = @import("../font/main.zig"); const inputpkg = @import("../input.zig"); const internal_os = @import("../os/main.zig"); diff --git a/src/config/edit.zig b/src/config/edit.zig index 24097498e8..8163efc1f8 100644 --- a/src/config/edit.zig +++ b/src/config/edit.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const file_load = @import("file_load.zig"); diff --git a/src/config/file_load.zig b/src/config/file_load.zig index 7495e899fe..38ebaf107c 100644 --- a/src/config/file_load.zig +++ b/src/config/file_load.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const internal_os = @import("../os/main.zig"); const global = @import("../global.zig"); diff --git a/src/config/io.zig b/src/config/io.zig index 056dc87446..1d78196279 100644 --- a/src/config/io.zig +++ b/src/config/io.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const string = @import("string.zig"); diff --git a/src/config/path.zig b/src/config/path.zig index 5fd88f332d..21e1cb1d48 100644 --- a/src/config/path.zig +++ b/src/config/path.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; diff --git a/src/datastruct/blocking_queue.zig b/src/datastruct/blocking_queue.zig index 89ce57d8c7..e457b25d72 100644 --- a/src/datastruct/blocking_queue.zig +++ b/src/datastruct/blocking_queue.zig @@ -3,7 +3,7 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const compat_thread = @import("../lib/compat/thread.zig"); +const compat_thread = @import("thread.zig"); /// Returns a blocking queue implementation for type T. /// diff --git a/src/datastruct/cache_table.zig b/src/datastruct/cache_table.zig index 4917239899..fde202db1d 100644 --- a/src/datastruct/cache_table.zig +++ b/src/datastruct/cache_table.zig @@ -1,7 +1,7 @@ -const fastmem = @import("../fastmem.zig"); +const fastmem = @import("fastmem"); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; /// An associative data structure used for efficiently storing and /// retrieving values which are able to be recomputed if necessary. diff --git a/src/datastruct/circ_buf.zig b/src/datastruct/circ_buf.zig index 41a1683296..43619b4b52 100644 --- a/src/datastruct/circ_buf.zig +++ b/src/datastruct/circ_buf.zig @@ -1,7 +1,7 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; -const fastmem = @import("../fastmem.zig"); +const fastmem = @import("fastmem"); /// Returns a circular buffer containing type T. pub fn CircBuf(comptime T: type, comptime default: T) type { diff --git a/src/datastruct/main.zig b/src/datastruct/main.zig index 73e9afba9d..3ecc54bb5c 100644 --- a/src/datastruct/main.zig +++ b/src/datastruct/main.zig @@ -1,22 +1,27 @@ //! The datastruct package contains data structures or anything closely //! related to data structures. +const array_list_collection = @import("array_list_collection.zig"); const blocking_queue = @import("blocking_queue.zig"); const cache_table = @import("cache_table.zig"); +const comparison = @import("comparison.zig"); const circ_buf = @import("circ_buf.zig"); const intrusive_linked_list = @import("intrusive_linked_list.zig"); +const segmented_list = @import("segmented_list.zig"); const split_tree = @import("split_tree.zig"); +pub const ArrayListCollection = array_list_collection.ArrayListCollection; pub const BlockingQueue = blocking_queue.BlockingQueue; pub const CacheTable = cache_table.CacheTable; pub const CircBuf = circ_buf.CircBuf; pub const IntrusiveDoublyLinkedList = intrusive_linked_list.DoublyLinkedList; pub const LimitedAllocator = @import("limited_allocator.zig").LimitedAllocator; pub const MessageData = @import("message_data.zig").MessageData; +pub const SegmentedList = segmented_list.SegmentedList; pub const SplitTree = split_tree.SplitTree; +pub const deepEqual = comparison.deepEqual; +pub const expectApproxEqual = comparison.expectApproxEqual; test { @import("std").testing.refAllDecls(@This()); - - _ = @import("comparison.zig"); } diff --git a/src/datastruct/message_data.zig b/src/datastruct/message_data.zig index 3e5cdae666..ad123b640a 100644 --- a/src/datastruct/message_data.zig +++ b/src/datastruct/message_data.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; /// Creates a union that can be used to accommodate data that fit within an array, diff --git a/src/datastruct/segmented_list.zig b/src/datastruct/segmented_list.zig index 5c0601c57f..466f05152b 100644 --- a/src/datastruct/segmented_list.zig +++ b/src/datastruct/segmented_list.zig @@ -1,7 +1,7 @@ //! Code taken from 0.15.2 `std.segmented_list` (MIT license). See //! lib/compat/README.md for license and details. const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const mem = std.mem; const Allocator = std.mem.Allocator; diff --git a/src/datastruct/split_tree.zig b/src/datastruct/split_tree.zig index 012f107f3d..f0845f0108 100644 --- a/src/datastruct/split_tree.zig +++ b/src/datastruct/split_tree.zig @@ -1,6 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; -const build_config = @import("../build_config.zig"); +const assert = @import("quirks").inlineAssert; const ArenaAllocator = std.heap.ArenaAllocator; const Allocator = std.mem.Allocator; @@ -41,7 +40,7 @@ const Allocator = std.mem.Allocator; /// Note: for both the ref and unref functions, the allocator is optional. /// If the functions take less arguments, then the allocator will not be /// passed. -pub fn SplitTree(comptime V: type) type { +pub fn SplitTree(comptime V: type, comptime GObjectTypeFn: ?fn (type, type) fn () callconv(.c) usize) type { return struct { const Self = @This(); @@ -1324,53 +1323,11 @@ pub fn SplitTree(comptime V: type) type { } /// Make this a valid gobject if we're in a GTK environment. - pub const getGObjectType = switch (build_config.app_runtime) { - .gtk => @import("gobject").ext.defineBoxed( - Self, - .{ - // To get the type name we get the non-qualified type name - // of the view and append that to `GhosttySplitTree`. - .name = name: { - const type_name = @typeName(View); - const last = if (std.mem.lastIndexOfScalar( - u8, - type_name, - '.', - )) |idx| - type_name[idx + 1 ..] - else - type_name; - assert(last.len > 0); - break :name "GhosttySplitTree" ++ last; - }, - - .funcs = .{ - .copy = &struct { - fn copy(self: *Self) callconv(.c) *Self { - const ptr = @import("glib").ext.create(Self); - ptr.* = if (self.nodes.len == 0) - .empty - else - self.clone(self.arena.child_allocator) catch @panic("oom"); - return ptr; - } - }.copy, - .free = &struct { - fn free(self: *Self) callconv(.c) void { - self.deinit(); - @import("glib").ext.destroy(self); - } - }.free, - }, - }, - ), - - .none => void, - }; + pub const getGObjectType = if (GObjectTypeFn) |def| def(Self, View) else void; }; } -const TestTree = SplitTree(TestView); +const TestTree = SplitTree(TestView, null); const TestView = struct { const Self = @This(); diff --git a/src/lib/compat/thread.zig b/src/datastruct/thread.zig similarity index 98% rename from src/lib/compat/thread.zig rename to src/datastruct/thread.zig index 890c02f0c1..0fe5c14e42 100644 --- a/src/lib/compat/thread.zig +++ b/src/datastruct/thread.zig @@ -5,7 +5,7 @@ //! https://codeberg.org/ziglang/zig/pulls/31278 const builtin = @import("builtin"); const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; pub const WaitTimeoutError = std.Io.Cancelable || std.Io.Timeout.Error; diff --git a/src/font/Atlas.zig b/src/font/Atlas.zig index 66e91c8f8a..4c3842177c 100644 --- a/src/font/Atlas.zig +++ b/src/font/Atlas.zig @@ -16,11 +16,11 @@ const Atlas = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const testing = std.testing; -const fastmem = @import("../fastmem.zig"); -const tripwire = @import("../tripwire.zig"); +const fastmem = @import("fastmem"); +const tripwire = @import("tripwire"); const log = std.log.scoped(.atlas); diff --git a/src/font/CodepointMap.zig b/src/font/CodepointMap.zig index 564bf013fb..11998e6e0a 100644 --- a/src/font/CodepointMap.zig +++ b/src/font/CodepointMap.zig @@ -4,7 +4,7 @@ const CodepointMap = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const discovery = @import("discovery.zig"); diff --git a/src/font/Collection.zig b/src/font/Collection.zig index 6c646d9f67..b47dcb9def 100644 --- a/src/font/Collection.zig +++ b/src/font/Collection.zig @@ -18,7 +18,7 @@ const Collection = @This(); const std = @import("std"); const Allocator = std.mem.Allocator; const config = @import("../config.zig"); -const comparison = @import("../datastruct/comparison.zig"); +const expectApproxEqual = @import("datastruct").expectApproxEqual; const font = @import("main.zig"); const options = font.options; const DeferredFace = font.DeferredFace; @@ -28,7 +28,7 @@ const Library = font.Library; const Metrics = font.Metrics; const Presentation = font.Presentation; const Style = font.Style; -const SegmentedList = @import("../datastruct/segmented_list.zig").SegmentedList; +const SegmentedList = @import("datastruct").SegmentedList; const log = std.log.scoped(.font_collection); @@ -1211,7 +1211,7 @@ test "metrics" { try c.updateMetrics(); - try comparison.expectApproxEqual(font.Metrics{ + try expectApproxEqual(font.Metrics{ .cell_width = 8, // The cell height is 17 px because the calculation is // @@ -1247,7 +1247,7 @@ test "metrics" { // Resize should change metrics try c.setSize(.{ .points = 24, .xdpi = 96, .ydpi = 96 }); - try comparison.expectApproxEqual(font.Metrics{ + try expectApproxEqual(font.Metrics{ .cell_width = 16, .cell_height = 34, .cell_baseline = 6, @@ -1507,7 +1507,7 @@ test "face metrics" { .{ narrowMetricsExpected, wideMetricsExpected }, .{ narrowMetrics, wideMetrics }, ) |metricsExpected, metricsActual| { - try comparison.expectApproxEqual(metricsExpected, metricsActual); + try expectApproxEqual(metricsExpected, metricsActual); } // Verify estimated metrics. icWidth() should equal the smaller of diff --git a/src/font/Glyph.zig b/src/font/Glyph.zig index 62c44e2275..6cddbdf65a 100644 --- a/src/font/Glyph.zig +++ b/src/font/Glyph.zig @@ -435,7 +435,7 @@ pub const RenderOptions = struct { }; test "Constraints" { - const comparison = @import("../datastruct/comparison.zig"); + const expectApproxEqual = @import("datastruct").expectApproxEqual; const getConstraint = @import("nerd_font_attributes.zig").getConstraint; const GlyphSize = Size; @@ -476,7 +476,7 @@ test "Constraints" { // Any constraint width: do nothing. inline for (.{ 1, 2 }) |constraint_width| { - try comparison.expectApproxEqual( + try expectApproxEqual( glyph_x, constraint.constrain(glyph_x, metrics, constraint_width), ); @@ -497,7 +497,7 @@ test "Constraints" { }; // Constraint width 1: scale down and shift to fit a single cell. - try comparison.expectApproxEqual( + try expectApproxEqual( GlyphSize{ .width = metrics.face_width, .height = metrics.face_width, @@ -508,7 +508,7 @@ test "Constraints" { ); // Constraint width 2: do nothing. - try comparison.expectApproxEqual( + try expectApproxEqual( glyph_25A0, constraint.constrain(glyph_25A0, metrics, 2), ); @@ -533,7 +533,7 @@ test "Constraints" { }; // Constraint width 2: scale to cover two cells with padding, center; - try comparison.expectApproxEqual( + try expectApproxEqual( GlyphSize{ .width = 18.72, .height = 18.72, @@ -565,7 +565,7 @@ test "Constraints" { }; // Constraint width 1: scale and shift group to fit a single cell. - try comparison.expectApproxEqual( + try expectApproxEqual( GlyphSize{ .width = 7.2125, .height = 10.4125, @@ -576,7 +576,7 @@ test "Constraints" { ); // Constraint width 2: no scaling; left-align and vertically center group. - try comparison.expectApproxEqual( + try expectApproxEqual( GlyphSize{ .width = glyph_EA61.width, .height = glyph_EA61.height, @@ -606,7 +606,7 @@ test "Constraints" { }; // Constraint width 1: stretch and position to exactly cover one cell. - try comparison.expectApproxEqual( + try expectApproxEqual( GlyphSize{ .width = @floatFromInt(metrics.cell_width), .height = @floatFromInt(metrics.cell_height), @@ -617,7 +617,7 @@ test "Constraints" { ); // Constraint width 1: stretch and position to exactly cover two cells. - try comparison.expectApproxEqual( + try expectApproxEqual( GlyphSize{ .width = @floatFromInt(2 * metrics.cell_width), .height = @floatFromInt(metrics.cell_height), diff --git a/src/font/Metrics.zig b/src/font/Metrics.zig index 36cfe0093c..2a08855b45 100644 --- a/src/font/Metrics.zig +++ b/src/font/Metrics.zig @@ -1,7 +1,7 @@ const Metrics = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; /// Recommended cell width and height for a monospace grid using this font. cell_width: u32, diff --git a/src/font/SharedGrid.zig b/src/font/SharedGrid.zig index 92cf050086..663afb3c11 100644 --- a/src/font/SharedGrid.zig +++ b/src/font/SharedGrid.zig @@ -19,8 +19,8 @@ const SharedGrid = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; -const tripwire = @import("../tripwire.zig"); +const assert = @import("quirks").inlineAssert; +const tripwire = @import("tripwire"); const Allocator = std.mem.Allocator; const renderer = @import("../renderer.zig"); const font = @import("main.zig"); diff --git a/src/font/SharedGridSet.zig b/src/font/SharedGridSet.zig index b4f602e89b..44315bc7ad 100644 --- a/src/font/SharedGridSet.zig +++ b/src/font/SharedGridSet.zig @@ -11,7 +11,7 @@ const SharedGridSet = @This(); const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const font = @import("main.zig"); diff --git a/src/font/discovery.zig b/src/font/discovery.zig index d1e60fd347..360fa981c1 100644 --- a/src/font/discovery.zig +++ b/src/font/discovery.zig @@ -1,7 +1,7 @@ const std = @import("std"); const builtin = @import("builtin"); const Allocator = std.mem.Allocator; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const fontconfig = @import("fontconfig"); const macos = @import("macos"); const opentype = @import("opentype.zig"); diff --git a/src/font/face/coretext.zig b/src/font/face/coretext.zig index 4b2af153f2..c012f4a60b 100644 --- a/src/font/face/coretext.zig +++ b/src/font/face/coretext.zig @@ -1,12 +1,12 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const macos = @import("macos"); const harfbuzz = @import("harfbuzz"); const font = @import("../main.zig"); const opentype = @import("../opentype.zig"); -const quirks = @import("../../quirks.zig"); +const quirks = @import("quirks.zig"); const log = std.log.scoped(.font_face); diff --git a/src/font/face/freetype.zig b/src/font/face/freetype.zig index 14a378e5e8..64d9d323c4 100644 --- a/src/font/face/freetype.zig +++ b/src/font/face/freetype.zig @@ -9,14 +9,14 @@ const builtin = @import("builtin"); const freetype = @import("freetype"); const harfbuzz = @import("harfbuzz"); const stb = @import("../../stb/main.zig"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const Allocator = std.mem.Allocator; const font = @import("../main.zig"); const Glyph = font.Glyph; const Library = font.Library; const opentype = @import("../opentype.zig"); -const quirks = @import("../../quirks.zig"); +const quirks = @import("quirks.zig"); const config = @import("../../config.zig"); const global = @import("../../global.zig"); diff --git a/src/font/face/quirks.zig b/src/font/face/quirks.zig new file mode 100644 index 0000000000..a9dec72f10 --- /dev/null +++ b/src/font/face/quirks.zig @@ -0,0 +1,19 @@ +const font = @import("../main.zig"); + +/// If true, the default font features should be disabled for the given face. +pub fn disableDefaultFontFeatures(face: *const font.Face) bool { + _ = face; + + // This function used to do something, but we integrated the logic + // we checked for directly into our shaping algorithm. It's likely + // there are other broken fonts for other reasons so I'm keeping this + // around so its easy to add more checks in the future. + return false; + + // var buf: [64]u8 = undefined; + // const name = face.name(&buf) catch |err| switch (err) { + // // If the name doesn't fit in buf we know this will be false + // // because we have no quirks fonts that are longer than buf! + // error.OutOfMemory => return false, + // }; +} diff --git a/src/font/face/web_canvas.zig b/src/font/face/web_canvas.zig index a36a482dd4..e3b4b887b0 100644 --- a/src/font/face/web_canvas.zig +++ b/src/font/face/web_canvas.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const Allocator = std.mem.Allocator; const js = @import("zig-js"); diff --git a/src/font/opentype/sfnt.zig b/src/font/opentype/sfnt.zig index 8b182e6965..e4686f4d89 100644 --- a/src/font/opentype/sfnt.zig +++ b/src/font/opentype/sfnt.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; /// 8-bit unsigned integer. diff --git a/src/font/shaper/Cache.zig b/src/font/shaper/Cache.zig index 2696985a41..a98a898d9f 100644 --- a/src/font/shaper/Cache.zig +++ b/src/font/shaper/Cache.zig @@ -13,7 +13,7 @@ pub const Cache = @This(); const std = @import("std"); const Allocator = std.mem.Allocator; const font = @import("../main.zig"); -const CacheTable = @import("../../datastruct/main.zig").CacheTable; +const CacheTable = @import("datastruct").CacheTable; const log = std.log.scoped(.font_shaper_cache); diff --git a/src/font/shaper/coretext.zig b/src/font/shaper/coretext.zig index 5172744d83..4aed4d3b57 100644 --- a/src/font/shaper/coretext.zig +++ b/src/font/shaper/coretext.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const macos = @import("macos"); const font = @import("../main.zig"); diff --git a/src/font/shaper/feature.zig b/src/font/shaper/feature.zig index c60eb049fb..2b9cc09447 100644 --- a/src/font/shaper/feature.zig +++ b/src/font/shaper/feature.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const compat_reader = @import("../../lib/compat/reader.zig"); diff --git a/src/font/shaper/harfbuzz.zig b/src/font/shaper/harfbuzz.zig index 11f9fd23ef..aa34174834 100644 --- a/src/font/shaper/harfbuzz.zig +++ b/src/font/shaper/harfbuzz.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const harfbuzz = @import("harfbuzz"); const font = @import("../main.zig"); diff --git a/src/font/shaper/run.zig b/src/font/shaper/run.zig index 9f33ba32e4..b0b14b0054 100644 --- a/src/font/shaper/run.zig +++ b/src/font/shaper/run.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const font = @import("../main.zig"); const shape = @import("../shape.zig"); diff --git a/src/font/shaper/web_canvas.zig b/src/font/shaper/web_canvas.zig index d16bd9681f..d5340c8e2f 100644 --- a/src/font/shaper/web_canvas.zig +++ b/src/font/shaper/web_canvas.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const font = @import("../main.zig"); const terminal = @import("../../terminal/main.zig"); diff --git a/src/font/sprite/Face.zig b/src/font/sprite/Face.zig index e2e37d2af4..634bee393d 100644 --- a/src/font/sprite/Face.zig +++ b/src/font/sprite/Face.zig @@ -13,7 +13,7 @@ const Face = @This(); const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const wuffs = @import("wuffs"); const z2d = @import("z2d"); diff --git a/src/font/sprite/canvas.zig b/src/font/sprite/canvas.zig index da54ac2702..f272e48912 100644 --- a/src/font/sprite/canvas.zig +++ b/src/font/sprite/canvas.zig @@ -1,7 +1,7 @@ //! This exposes primitives to draw 2D graphics and export the graphic to //! a font atlas. const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const z2d = @import("z2d"); const font = @import("../main.zig"); diff --git a/src/font/sprite/draw/box.zig b/src/font/sprite/draw/box.zig index da3edb51ca..3336fe0967 100644 --- a/src/font/sprite/draw/box.zig +++ b/src/font/sprite/draw/box.zig @@ -12,7 +12,7 @@ //! const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const common = @import("common.zig"); diff --git a/src/font/sprite/draw/braille.zig b/src/font/sprite/draw/braille.zig index fb2d547489..aff64ab4d5 100644 --- a/src/font/sprite/draw/braille.zig +++ b/src/font/sprite/draw/braille.zig @@ -23,7 +23,7 @@ //! const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const font = @import("../../main.zig"); diff --git a/src/font/sprite/draw/symbols_for_legacy_computing.zig b/src/font/sprite/draw/symbols_for_legacy_computing.zig index d99fc87023..c51a71316f 100644 --- a/src/font/sprite/draw/symbols_for_legacy_computing.zig +++ b/src/font/sprite/draw/symbols_for_legacy_computing.zig @@ -21,7 +21,7 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const common = @import("common.zig"); const Thickness = common.Thickness; diff --git a/src/font/sprite/draw/symbols_for_legacy_computing_supplement.zig b/src/font/sprite/draw/symbols_for_legacy_computing_supplement.zig index 46c7165a8f..3e7ffdfbbf 100644 --- a/src/font/sprite/draw/symbols_for_legacy_computing_supplement.zig +++ b/src/font/sprite/draw/symbols_for_legacy_computing_supplement.zig @@ -49,7 +49,7 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const common = @import("common.zig"); const Thickness = common.Thickness; diff --git a/src/global.zig b/src/global.zig index 11aa17b3aa..00794c1d77 100644 --- a/src/global.zig +++ b/src/global.zig @@ -11,7 +11,7 @@ const oni = @import("oniguruma"); const crash = @import("crash/main.zig"); const renderer = @import("renderer.zig"); const apprt = @import("apprt.zig"); -const assert = @import("quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const allocTmpDir = @import("os/file.zig").allocTmpDir; const freeTmpDir = @import("os/file.zig").freeTmpDir; diff --git a/src/input/Binding.zig b/src/input/Binding.zig index 35fd7b8ccb..7163efb4a6 100644 --- a/src/input/Binding.zig +++ b/src/input/Binding.zig @@ -4,11 +4,11 @@ const Binding = @This(); const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const build_config = @import("../build_config.zig"); const uucode = @import("uucode"); const EntryFormatter = @import("../config/formatter.zig").EntryFormatter; -const deepEqual = @import("../datastruct/comparison.zig").deepEqual; +const deepEqual = @import("datastruct").deepEqual; const key = @import("key.zig"); const key_mods = @import("key_mods.zig"); const KeyEvent = key.KeyEvent; diff --git a/src/input/command.zig b/src/input/command.zig index 6560148bce..21d94f375a 100644 --- a/src/input/command.zig +++ b/src/input/command.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const Action = @import("Binding.zig").Action; const i18n = @import("../os/i18n.zig"); diff --git a/src/input/key_mods.zig b/src/input/key_mods.zig index 1a9814037c..ea0bcbecd1 100644 --- a/src/input/key_mods.zig +++ b/src/input/key_mods.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const builtin = @import("builtin"); const OptionAsAlt = @import("config.zig").OptionAsAlt; diff --git a/src/inspector/Inspector.zig b/src/inspector/Inspector.zig index d1dc04f172..675ec53f75 100644 --- a/src/inspector/Inspector.zig +++ b/src/inspector/Inspector.zig @@ -4,7 +4,7 @@ const Inspector = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const builtin = @import("builtin"); const cimgui = @import("dcimgui"); diff --git a/src/inspector/widgets/key.zig b/src/inspector/widgets/key.zig index 2a3f531ea3..05f0fc75ca 100644 --- a/src/inspector/widgets/key.zig +++ b/src/inspector/widgets/key.zig @@ -1,7 +1,7 @@ const std = @import("std"); const Allocator = std.mem.Allocator; const input = @import("../../input.zig"); -const CircBuf = @import("../../datastruct/main.zig").CircBuf; +const CircBuf = @import("datastruct").CircBuf; const cimgui = @import("dcimgui"); /// Circular buffer of key events. diff --git a/src/inspector/widgets/screen.zig b/src/inspector/widgets/screen.zig index 6e66a14232..27292d5d9f 100644 --- a/src/inspector/widgets/screen.zig +++ b/src/inspector/widgets/screen.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const cimgui = @import("dcimgui"); const widgets = @import("../widgets.zig"); diff --git a/src/inspector/widgets/surface.zig b/src/inspector/widgets/surface.zig index a23aebf081..9ef704b33e 100644 --- a/src/inspector/widgets/surface.zig +++ b/src/inspector/widgets/surface.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const cimgui = @import("dcimgui"); const inspector = @import("../main.zig"); diff --git a/src/inspector/widgets/terminal.zig b/src/inspector/widgets/terminal.zig index 3dbea38868..0514c4b7ab 100644 --- a/src/inspector/widgets/terminal.zig +++ b/src/inspector/widgets/terminal.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const cimgui = @import("dcimgui"); const widgets = @import("../widgets.zig"); diff --git a/src/inspector/widgets/termio.zig b/src/inspector/widgets/termio.zig index 2c94b1bf87..a6370732a5 100644 --- a/src/inspector/widgets/termio.zig +++ b/src/inspector/widgets/termio.zig @@ -3,7 +3,7 @@ const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const cimgui = @import("dcimgui"); const terminal = @import("../../terminal/main.zig"); -const CircBuf = @import("../../datastruct/main.zig").CircBuf; +const CircBuf = @import("datastruct").CircBuf; const Surface = @import("../../Surface.zig"); const screen = @import("screen.zig"); diff --git a/src/main_c.zig b/src/main_c.zig index 3e331e0221..9f3564cb91 100644 --- a/src/main_c.zig +++ b/src/main_c.zig @@ -8,7 +8,7 @@ // it could be expanded to be general purpose in the future. const std = @import("std"); -const assert = @import("quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const posix = std.posix; const builtin = @import("builtin"); const build_config = @import("build_config.zig"); diff --git a/src/main_ghostty.zig b/src/main_ghostty.zig index cd2ef0c179..3625f712cb 100644 --- a/src/main_ghostty.zig +++ b/src/main_ghostty.zig @@ -211,10 +211,10 @@ test { _ = @import("surface_mouse.zig"); // Libraries - _ = @import("tripwire.zig"); + _ = @import("tripwire"); _ = @import("benchmark/main.zig"); _ = @import("crash/main.zig"); - _ = @import("datastruct/main.zig"); + _ = @import("datastruct"); _ = @import("inspector/main.zig"); _ = @import("lib/main.zig"); _ = @import("terminal/main.zig"); diff --git a/src/os/cf_release_thread.zig b/src/os/cf_release_thread.zig index e93120b3fa..40fc96c675 100644 --- a/src/os/cf_release_thread.zig +++ b/src/os/cf_release_thread.zig @@ -11,7 +11,7 @@ const macos = @import("macos"); const internal_os = @import("../os/main.zig"); const global = @import("../global.zig"); const xev = global.xev; -const BlockingQueue = @import("../datastruct/main.zig").BlockingQueue; +const BlockingQueue = @import("datastruct").BlockingQueue; const Allocator = std.mem.Allocator; const log = std.log.scoped(.cf_release_thread); diff --git a/src/os/locale.zig b/src/os/locale.zig index ceb3c883c4..040c4c3076 100644 --- a/src/os/locale.zig +++ b/src/os/locale.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const macos = @import("macos"); const objc = @import("objc"); const internal_os = @import("main.zig"); diff --git a/src/os/mach.zig b/src/os/mach.zig index 5f5a3ed8f8..391ae40c27 100644 --- a/src/os/mach.zig +++ b/src/os/mach.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const mem = std.mem; const Allocator = std.mem.Allocator; diff --git a/src/os/macos.zig b/src/os/macos.zig index fcd1c3e5a7..6241d7985c 100644 --- a/src/os/macos.zig +++ b/src/os/macos.zig @@ -1,7 +1,7 @@ const std = @import("std"); const builtin = @import("builtin"); const build_config = @import("../build_config.zig"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const objc = @import("objc"); const Allocator = std.mem.Allocator; diff --git a/src/pty.zig b/src/pty.zig index de42ef5787..19bc3260bd 100644 --- a/src/pty.zig +++ b/src/pty.zig @@ -2,7 +2,7 @@ const std = @import("std"); const builtin = @import("builtin"); const windows = @import("os/main.zig").windows; const posix = std.posix; -const assert = @import("quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const log = std.log.scoped(.pty); diff --git a/src/quirks.zig b/src/quirks.zig index ecef746003..2b58825ef2 100644 --- a/src/quirks.zig +++ b/src/quirks.zig @@ -9,26 +9,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const font = @import("font/main.zig"); - -/// If true, the default font features should be disabled for the given face. -pub fn disableDefaultFontFeatures(face: *const font.Face) bool { - _ = face; - - // This function used to do something, but we integrated the logic - // we checked for directly into our shaping algorithm. It's likely - // there are other broken fonts for other reasons so I'm keeping this - // around so its easy to add more checks in the future. - return false; - - // var buf: [64]u8 = undefined; - // const name = face.name(&buf) catch |err| switch (err) { - // // If the name doesn't fit in buf we know this will be false - // // because we have no quirks fonts that are longer than buf! - // error.OutOfMemory => return false, - // }; -} - /// We use our own assert function instead of `std.debug.assert`. /// /// The only difference between this and the one in diff --git a/src/renderer/Metal.zig b/src/renderer/Metal.zig index 6c7432d210..de8e1c2a4d 100644 --- a/src/renderer/Metal.zig +++ b/src/renderer/Metal.zig @@ -2,7 +2,7 @@ pub const Metal = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const builtin = @import("builtin"); const objc = @import("objc"); diff --git a/src/renderer/Thread.zig b/src/renderer/Thread.zig index e3e2ceccf0..d59bd79fab 100644 --- a/src/renderer/Thread.zig +++ b/src/renderer/Thread.zig @@ -12,7 +12,7 @@ const rendererpkg = @import("../renderer.zig"); const apprt = @import("../apprt.zig"); const configpkg = @import("../config.zig"); const terminalpkg = @import("../terminal/main.zig"); -const BlockingQueue = @import("../datastruct/main.zig").BlockingQueue; +const BlockingQueue = @import("datastruct").BlockingQueue; const App = @import("../App.zig"); const Allocator = std.mem.Allocator; diff --git a/src/renderer/cell.zig b/src/renderer/cell.zig index b9880fbdeb..3f725befbe 100644 --- a/src/renderer/cell.zig +++ b/src/renderer/cell.zig @@ -1,11 +1,11 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const font = @import("../font/main.zig"); const terminal = @import("../terminal/main.zig"); const renderer = @import("../renderer.zig"); const shaderpkg = renderer.Renderer.API.shaders; -const ArrayListCollection = @import("../datastruct/array_list_collection.zig").ArrayListCollection; +const ArrayListCollection = @import("datastruct").ArrayListCollection; const symbols = @import("../unicode/symbols_table.zig").table; /// The possible cell content keys that exist. diff --git a/src/renderer/generic.zig b/src/renderer/generic.zig index 1337c51542..643e90128b 100644 --- a/src/renderer/generic.zig +++ b/src/renderer/generic.zig @@ -22,7 +22,7 @@ const Overlay = @import("Overlay.zig"); const imagepkg = @import("image.zig"); const ImageState = imagepkg.State; const shadertoy = @import("shadertoy.zig"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const Terminal = terminal.Terminal; diff --git a/src/renderer/image.zig b/src/renderer/image.zig index dc08b84328..3866975e95 100644 --- a/src/renderer/image.zig +++ b/src/renderer/image.zig @@ -1,6 +1,6 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const wuffs = @import("wuffs"); const terminal = @import("../terminal/main.zig"); const global = @import("../global.zig"); diff --git a/src/renderer/metal/Texture.zig b/src/renderer/metal/Texture.zig index 5042919ac3..ac03a4e63b 100644 --- a/src/renderer/metal/Texture.zig +++ b/src/renderer/metal/Texture.zig @@ -3,7 +3,7 @@ const Self = @This(); const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const objc = @import("objc"); const mtl = @import("api.zig"); diff --git a/src/renderer/opengl/shaders.zig b/src/renderer/opengl/shaders.zig index 68d2babf6c..e6ccd3d92f 100644 --- a/src/renderer/opengl/shaders.zig +++ b/src/renderer/opengl/shaders.zig @@ -1,6 +1,6 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const math = @import("../../math.zig"); const Pipeline = @import("Pipeline.zig"); diff --git a/src/simd/base64.zig b/src/simd/base64.zig index 81feeb723d..cfe5b3d6ae 100644 --- a/src/simd/base64.zig +++ b/src/simd/base64.zig @@ -1,6 +1,6 @@ const std = @import("std"); const options = @import("build_options"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const scalar_decoder = @import("base64_scalar.zig").scalar_decoder; const log = std.log.scoped(.simd_base64); diff --git a/src/simd/base64_scalar.zig b/src/simd/base64_scalar.zig index 08886f1878..dd2d03060d 100644 --- a/src/simd/base64_scalar.zig +++ b/src/simd/base64_scalar.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; pub const scalar_decoder: Base64Decoder = .init( std.base64.standard_alphabet_chars, diff --git a/src/simd/vt.zig b/src/simd/vt.zig index 807285f718..006e170193 100644 --- a/src/simd/vt.zig +++ b/src/simd/vt.zig @@ -1,6 +1,6 @@ const std = @import("std"); const options = @import("build_options"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const indexOf = @import("index_of.zig").indexOf; // vt.cpp diff --git a/src/terminal/PageList.zig b/src/terminal/PageList.zig index 429a3633b0..4fd6069745 100644 --- a/src/terminal/PageList.zig +++ b/src/terminal/PageList.zig @@ -7,11 +7,11 @@ const std = @import("std"); const builtin = @import("builtin"); const build_options = @import("terminal_options"); const Allocator = std.mem.Allocator; -const assert = @import("../quirks.zig").inlineAssert; -const fastmem = @import("../fastmem.zig"); +const assert = @import("quirks").inlineAssert; +const fastmem = @import("fastmem"); const simd = @import("../simd/main.zig"); -const tripwire = @import("../tripwire.zig"); -const DoublyLinkedList = @import("../datastruct/main.zig").IntrusiveDoublyLinkedList; +const tripwire = @import("tripwire"); +const DoublyLinkedList = @import("datastruct").IntrusiveDoublyLinkedList; const color = @import("color.zig"); const compression = @import("compress.zig"); const highlight = @import("highlight.zig"); diff --git a/src/terminal/Screen.zig b/src/terminal/Screen.zig index 41149f6da0..421d8f912f 100644 --- a/src/terminal/Screen.zig +++ b/src/terminal/Screen.zig @@ -3,14 +3,14 @@ const Screen = @This(); const std = @import("std"); const build_options = @import("terminal_options"); const Allocator = std.mem.Allocator; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const ansi = @import("ansi.zig"); const charsets = @import("charsets.zig"); -const fastmem = @import("../fastmem.zig"); +const fastmem = @import("fastmem"); const kitty = @import("kitty.zig"); const lib = @import("lib.zig"); const sgr = @import("sgr.zig"); -const tripwire = @import("../tripwire.zig"); +const tripwire = @import("tripwire"); const unicode = @import("../unicode/main.zig"); const Selection = @import("Selection.zig"); const PageList = @import("PageList.zig"); @@ -8795,7 +8795,7 @@ test "Screen: resize more cols with cursor at prompt" { defer s.deinit(); // zig fmt: off - try s.testWriteString("ABCDE\n"); + try s.testWriteString("ABCDE\n"); s.cursorSetSemanticContent(.{ .prompt = .initial }); try s.testWriteString("> "); s.cursorSetSemanticContent(.{ .input = .clear_eol }); @@ -8836,7 +8836,7 @@ test "Screen: resize more cols with cursor not at prompt" { defer s.deinit(); // zig fmt: off - try s.testWriteString("ABCDE\n"); + try s.testWriteString("ABCDE\n"); s.cursorSetSemanticContent(.{ .prompt = .initial }); try s.testWriteString("> "); s.cursorSetSemanticContent(.{ .input = .clear_eol }); diff --git a/src/terminal/ScreenSet.zig b/src/terminal/ScreenSet.zig index 28fced9852..2ce2439091 100644 --- a/src/terminal/ScreenSet.zig +++ b/src/terminal/ScreenSet.zig @@ -8,7 +8,7 @@ const ScreenSet = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const lib = @import("lib.zig"); const testing = std.testing; const Allocator = std.mem.Allocator; diff --git a/src/terminal/Selection.zig b/src/terminal/Selection.zig index 398496da64..235ab665d5 100644 --- a/src/terminal/Selection.zig +++ b/src/terminal/Selection.zig @@ -2,7 +2,7 @@ const Selection = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const lib = @import("lib.zig"); const page = @import("page.zig"); diff --git a/src/terminal/Tabstops.zig b/src/terminal/Tabstops.zig index 8955447f2f..949960fe3c 100644 --- a/src/terminal/Tabstops.zig +++ b/src/terminal/Tabstops.zig @@ -10,11 +10,11 @@ const Tabstops = @This(); const std = @import("std"); -const tripwire = @import("../tripwire.zig"); +const tripwire = @import("tripwire"); const Allocator = std.mem.Allocator; const testing = std.testing; -const assert = @import("../quirks.zig").inlineAssert; -const fastmem = @import("../fastmem.zig"); +const assert = @import("quirks").inlineAssert; +const fastmem = @import("fastmem"); /// Unit is the type we use per tabstop unit (see file docs). const Unit = u8; diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index b157994f57..999f91b06a 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -6,8 +6,8 @@ const Terminal = @This(); const std = @import("std"); const build_options = @import("terminal_options"); const lib = @import("lib.zig"); -const assert = @import("../quirks.zig").inlineAssert; -const tripwire = @import("../tripwire.zig"); +const assert = @import("quirks").inlineAssert; +const tripwire = @import("tripwire"); const testing = std.testing; const Allocator = std.mem.Allocator; const simd = @import("../simd/main.zig"); diff --git a/src/terminal/apc/glyph/Glossary.zig b/src/terminal/apc/glyph/Glossary.zig index 28458dbb29..148a3df24a 100644 --- a/src/terminal/apc/glyph/Glossary.zig +++ b/src/terminal/apc/glyph/Glossary.zig @@ -6,7 +6,7 @@ const Glossary = @This(); const std = @import("std"); const assert = std.debug.assert; const Allocator = std.mem.Allocator; -const CircBuf = @import("../../../datastruct/circ_buf.zig").CircBuf; +const CircBuf = @import("datastruct").CircBuf; const FontGlyph = @import("../../../font/Glyph.zig"); const Glyf = @import("../../../font/opentype/glyf.zig").Glyf; diff --git a/src/terminal/bitmap_allocator.zig b/src/terminal/bitmap_allocator.zig index 787f0ace08..4785678115 100644 --- a/src/terminal/bitmap_allocator.zig +++ b/src/terminal/bitmap_allocator.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const size = @import("size.zig"); const getOffset = size.getOffset; diff --git a/src/terminal/c/terminal.zig b/src/terminal/c/terminal.zig index 63c996c0a5..ee1b2bca8c 100644 --- a/src/terminal/c/terminal.zig +++ b/src/terminal/c/terminal.zig @@ -31,7 +31,7 @@ const clipboard = @import("../clipboard.zig"); const c_io = @import("io.zig"); const snapshot_core = @import("../snapshot/main.zig"); const Result = @import("result.zig").Result; -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Handler = @import("../stream_terminal.zig").Handler; diff --git a/src/terminal/charsets.zig b/src/terminal/charsets.zig index 00a2d8d1f4..42d382d22a 100644 --- a/src/terminal/charsets.zig +++ b/src/terminal/charsets.zig @@ -1,6 +1,6 @@ const std = @import("std"); const build_options = @import("terminal_options"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const LibEnum = @import("../lib/enum.zig").Enum; /// The available charset slots for a terminal. diff --git a/src/terminal/color.zig b/src/terminal/color.zig index c04e19e849..81b053e97e 100644 --- a/src/terminal/color.zig +++ b/src/terminal/color.zig @@ -1,7 +1,7 @@ const colorpkg = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const x11_color = @import("x11_color.zig"); /// The default palette. diff --git a/src/terminal/dcs.zig b/src/terminal/dcs.zig index a76ab31baf..ee77d0cb64 100644 --- a/src/terminal/dcs.zig +++ b/src/terminal/dcs.zig @@ -1,6 +1,6 @@ const std = @import("std"); const build_options = @import("terminal_options"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const terminal = @import("main.zig"); const DCS = terminal.DCS; diff --git a/src/terminal/formatter.zig b/src/terminal/formatter.zig index 701a798bfb..aa300a3420 100644 --- a/src/terminal/formatter.zig +++ b/src/terminal/formatter.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const fastprint = @import("../fastprint.zig"); const lib = @import("lib.zig"); const Allocator = std.mem.Allocator; diff --git a/src/terminal/hash_map.zig b/src/terminal/hash_map.zig index abef87e3ba..18aa55e490 100644 --- a/src/terminal/hash_map.zig +++ b/src/terminal/hash_map.zig @@ -40,7 +40,7 @@ //! by any removal. const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const mem = std.mem; const Allocator = mem.Allocator; diff --git a/src/terminal/kitty/graphics_command.zig b/src/terminal/kitty/graphics_command.zig index ce791072bb..bfdcca351d 100644 --- a/src/terminal/kitty/graphics_command.zig +++ b/src/terminal/kitty/graphics_command.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const simd = @import("../../simd/main.zig"); diff --git a/src/terminal/kitty/graphics_exec.zig b/src/terminal/kitty/graphics_exec.zig index 58fa4d5c4d..a262a258d8 100644 --- a/src/terminal/kitty/graphics_exec.zig +++ b/src/terminal/kitty/graphics_exec.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const Terminal = @import("../Terminal.zig"); diff --git a/src/terminal/kitty/graphics_image.zig b/src/terminal/kitty/graphics_image.zig index 584195620e..dff8dfe5d2 100644 --- a/src/terminal/kitty/graphics_image.zig +++ b/src/terminal/kitty/graphics_image.zig @@ -1,15 +1,15 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const posix = std.posix; -const fastmem = @import("../../fastmem.zig"); +const fastmem = @import("fastmem"); const command = @import("graphics_command.zig"); const PageList = @import("../PageList.zig"); const sys = @import("../sys.zig"); -const LimitedAllocator = @import("../../datastruct/main.zig").LimitedAllocator; +const LimitedAllocator = @import("datastruct").LimitedAllocator; const log = std.log.scoped(.kitty_gfx); diff --git a/src/terminal/kitty/graphics_storage.zig b/src/terminal/kitty/graphics_storage.zig index 29a018e241..a2b61491d2 100644 --- a/src/terminal/kitty/graphics_storage.zig +++ b/src/terminal/kitty/graphics_storage.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; diff --git a/src/terminal/kitty/graphics_unicode.zig b/src/terminal/kitty/graphics_unicode.zig index 485502593d..01954ab6a5 100644 --- a/src/terminal/kitty/graphics_unicode.zig +++ b/src/terminal/kitty/graphics_unicode.zig @@ -2,7 +2,7 @@ //! Kitty graphics protocol unicode placeholder, virtual placement feature. const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const terminal = @import("../main.zig"); const kitty_gfx = terminal.kitty.graphics; diff --git a/src/terminal/mem.zig b/src/terminal/mem.zig index 7fa3148024..38403c9be4 100644 --- a/src/terminal/mem.zig +++ b/src/terminal/mem.zig @@ -6,7 +6,7 @@ //! not allocate memory or decide which terminal pages should be discarded. const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const log = std.log.scoped(.terminal_mem); diff --git a/src/terminal/osc.zig b/src/terminal/osc.zig index 6187772412..e9d39c0866 100644 --- a/src/terminal/osc.zig +++ b/src/terminal/osc.zig @@ -9,7 +9,7 @@ const std = @import("std"); const builtin = @import("builtin"); const build_options = @import("terminal_options"); const mem = std.mem; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = mem.Allocator; const lib = @import("lib.zig"); const LibEnum = lib.Enum; diff --git a/src/terminal/osc/parsers/clipboard_operation.zig b/src/terminal/osc/parsers/clipboard_operation.zig index ec8836fb01..edbaaffbc9 100644 --- a/src/terminal/osc/parsers/clipboard_operation.zig +++ b/src/terminal/osc/parsers/clipboard_operation.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Parser = @import("../../osc.zig").Parser; const Command = @import("../../osc.zig").Command; diff --git a/src/terminal/osc/parsers/color.zig b/src/terminal/osc/parsers/color.zig index d8b89f4119..92b896d5ea 100644 --- a/src/terminal/osc/parsers/color.zig +++ b/src/terminal/osc/parsers/color.zig @@ -6,7 +6,7 @@ const SpecialColor = @import("../../color.zig").Special; const RGB = @import("../../color.zig").RGB; const Parser = @import("../../osc.zig").Parser; const Command = @import("../../osc.zig").Command; -const SegmentedList = @import("../../../datastruct/segmented_list.zig").SegmentedList; +const SegmentedList = @import("datastruct").SegmentedList; const log = std.log.scoped(.osc_color); diff --git a/src/terminal/osc/parsers/iterm2.zig b/src/terminal/osc/parsers/iterm2.zig index b05dd1b2ab..0e9118f840 100644 --- a/src/terminal/osc/parsers/iterm2.zig +++ b/src/terminal/osc/parsers/iterm2.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const simd = @import("../../../simd/main.zig"); const Parser = @import("../../osc.zig").Parser; diff --git a/src/terminal/osc/parsers/kitty_clipboard_protocol.zig b/src/terminal/osc/parsers/kitty_clipboard_protocol.zig index 5bd0e2547a..6854428684 100644 --- a/src/terminal/osc/parsers/kitty_clipboard_protocol.zig +++ b/src/terminal/osc/parsers/kitty_clipboard_protocol.zig @@ -5,7 +5,7 @@ const std = @import("std"); const build_options = @import("terminal_options"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Parser = @import("../../osc.zig").Parser; const Command = @import("../../osc.zig").Command; diff --git a/src/terminal/osc/parsers/kitty_color.zig b/src/terminal/osc/parsers/kitty_color.zig index c59391ea05..bcb46e0dba 100644 --- a/src/terminal/osc/parsers/kitty_color.zig +++ b/src/terminal/osc/parsers/kitty_color.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Parser = @import("../../osc.zig").Parser; const Command = @import("../../osc.zig").Command; diff --git a/src/terminal/osc/parsers/kitty_dnd_protocol.zig b/src/terminal/osc/parsers/kitty_dnd_protocol.zig index 35d2390669..45d27e9366 100644 --- a/src/terminal/osc/parsers/kitty_dnd_protocol.zig +++ b/src/terminal/osc/parsers/kitty_dnd_protocol.zig @@ -3,7 +3,7 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Parser = @import("../../osc.zig").Parser; const Command = @import("../../osc.zig").Command; diff --git a/src/terminal/osc/parsers/kitty_text_sizing.zig b/src/terminal/osc/parsers/kitty_text_sizing.zig index a60ed5d750..032bf5a024 100644 --- a/src/terminal/osc/parsers/kitty_text_sizing.zig +++ b/src/terminal/osc/parsers/kitty_text_sizing.zig @@ -3,7 +3,7 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Parser = @import("../../osc.zig").Parser; const Command = @import("../../osc.zig").Command; diff --git a/src/terminal/osc/parsers/mouse_shape.zig b/src/terminal/osc/parsers/mouse_shape.zig index 4b96c038a7..9fc48b2050 100644 --- a/src/terminal/osc/parsers/mouse_shape.zig +++ b/src/terminal/osc/parsers/mouse_shape.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const assert = @import("../../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Parser = @import("../../osc.zig").Parser; const Command = @import("../../osc.zig").Command; diff --git a/src/terminal/page.zig b/src/terminal/page.zig index c2814ae984..7ff50b2055 100644 --- a/src/terminal/page.zig +++ b/src/terminal/page.zig @@ -3,11 +3,11 @@ const builtin = @import("builtin"); const build_options = @import("terminal_options"); const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const posix = std.posix; const windows = @import("../os/windows.zig"); -const fastmem = @import("../fastmem.zig"); +const fastmem = @import("fastmem"); const color = @import("color.zig"); const hyperlink = @import("hyperlink.zig"); const kitty = @import("kitty.zig"); diff --git a/src/terminal/ref_counted_set.zig b/src/terminal/ref_counted_set.zig index 97fa870880..4d3fccb032 100644 --- a/src/terminal/ref_counted_set.zig +++ b/src/terminal/ref_counted_set.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const size = @import("size.zig"); diff --git a/src/terminal/render.zig b/src/terminal/render.zig index 867cd62243..49ec8f0206 100644 --- a/src/terminal/render.zig +++ b/src/terminal/render.zig @@ -1,8 +1,8 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; -const fastmem = @import("../fastmem.zig"); +const fastmem = @import("fastmem"); const lib = @import("lib.zig"); const color = @import("color.zig"); const cursor = @import("cursor.zig"); diff --git a/src/terminal/search/Thread.zig b/src/terminal/search/Thread.zig index ecc7273996..e71c491066 100644 --- a/src/terminal/search/Thread.zig +++ b/src/terminal/search/Thread.zig @@ -17,8 +17,8 @@ const Mutex = std.Io.Mutex; const global = @import("../../global.zig"); const xev = global.xev; const internal_os = @import("../../os/main.zig"); -const BlockingQueue = @import("../../datastruct/main.zig").BlockingQueue; -const MessageData = @import("../../datastruct/main.zig").MessageData; +const BlockingQueue = @import("datastruct").BlockingQueue; +const MessageData = @import("datastruct").MessageData; const point = @import("../point.zig"); const FlattenedHighlight = @import("../highlight.zig").Flattened; const UntrackedHighlight = @import("../highlight.zig").Untracked; diff --git a/src/terminal/search/screen.zig b/src/terminal/search/screen.zig index 81e43ecaf2..5f637f9896 100644 --- a/src/terminal/search/screen.zig +++ b/src/terminal/search/screen.zig @@ -1,7 +1,7 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; -const tripwire = @import("../../tripwire.zig"); +const tripwire = @import("tripwire"); const Allocator = std.mem.Allocator; const point = @import("../point.zig"); const highlight = @import("../highlight.zig"); diff --git a/src/terminal/search/sliding_window.zig b/src/terminal/search/sliding_window.zig index 95b37d7300..6a9465af01 100644 --- a/src/terminal/search/sliding_window.zig +++ b/src/terminal/search/sliding_window.zig @@ -1,7 +1,7 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; -const CircBuf = @import("../../datastruct/main.zig").CircBuf; +const CircBuf = @import("datastruct").CircBuf; const terminal = @import("../main.zig"); const point = terminal.point; const size = terminal.size; diff --git a/src/terminal/search/viewport.zig b/src/terminal/search/viewport.zig index 93e63b88b6..edb03e4ae2 100644 --- a/src/terminal/search/viewport.zig +++ b/src/terminal/search/viewport.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const Allocator = std.mem.Allocator; const point = @import("../point.zig"); diff --git a/src/terminal/sgr.zig b/src/terminal/sgr.zig index e9b9354c3c..8d7dc3fdb7 100644 --- a/src/terminal/sgr.zig +++ b/src/terminal/sgr.zig @@ -1,7 +1,7 @@ //! SGR (Select Graphic Rendition) attrinvbute parsing and types. const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const lib = @import("lib.zig"); const color = @import("color.zig"); diff --git a/src/terminal/size.zig b/src/terminal/size.zig index 7be09739ed..f3a908d38f 100644 --- a/src/terminal/size.zig +++ b/src/terminal/size.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; /// The maximum size of a page in bytes. We use a u16 here because any /// smaller bit size by Zig is upgraded anyways to a u16 on mainstream diff --git a/src/terminal/stream.zig b/src/terminal/stream.zig index 65c7cc5e09..ea9314bbaa 100644 --- a/src/terminal/stream.zig +++ b/src/terminal/stream.zig @@ -1,7 +1,7 @@ const streampkg = @This(); const std = @import("std"); const build_options = @import("terminal_options"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const testing = std.testing; const Allocator = std.mem.Allocator; const simd = @import("../simd/main.zig"); diff --git a/src/terminal/stream_continuation.zig b/src/terminal/stream_continuation.zig index bd6b8f0f5e..68291e2b7d 100644 --- a/src/terminal/stream_continuation.zig +++ b/src/terminal/stream_continuation.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const Parser = @import("Parser.zig"); const UTF8Decoder = @import("UTF8Decoder.zig"); diff --git a/src/terminal/style.zig b/src/terminal/style.zig index ee4c0e5621..40c97e1dac 100644 --- a/src/terminal/style.zig +++ b/src/terminal/style.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const fastprint = @import("../fastprint.zig"); const color = @import("color.zig"); const sgr = @import("sgr.zig"); diff --git a/src/terminal/tmux/control.zig b/src/terminal/tmux/control.zig index b06560ddd5..b5362b7184 100644 --- a/src/terminal/tmux/control.zig +++ b/src/terminal/tmux/control.zig @@ -5,7 +5,7 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const oni = @import("oniguruma"); const log = std.log.scoped(.terminal_tmux); diff --git a/src/terminal/tmux/viewer.zig b/src/terminal/tmux/viewer.zig index 5f08008938..8275a1cb07 100644 --- a/src/terminal/tmux/viewer.zig +++ b/src/terminal/tmux/viewer.zig @@ -2,9 +2,9 @@ const std = @import("std"); const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const testing = std.testing; -const assert = @import("../../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const size = @import("../size.zig"); -const CircBuf = @import("../../datastruct/main.zig").CircBuf; +const CircBuf = @import("datastruct").CircBuf; const CursorStyle = @import("../cursor.zig").Style; const Screen = @import("../Screen.zig"); const ScreenSet = @import("../ScreenSet.zig"); diff --git a/src/terminal/x11_color.zig b/src/terminal/x11_color.zig index 7239a47dd5..6c1c306224 100644 --- a/src/terminal/x11_color.zig +++ b/src/terminal/x11_color.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const RGB = @import("color.zig").RGB; /// A single X11 color entry. diff --git a/src/termio/Exec.zig b/src/termio/Exec.zig index 016291712c..2eb3ef8673 100644 --- a/src/termio/Exec.zig +++ b/src/termio/Exec.zig @@ -5,7 +5,7 @@ const Exec = @This(); const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const posix = std.posix; @@ -15,7 +15,7 @@ const apprt = @import("../apprt.zig"); const build_config = @import("../build_config.zig"); const configpkg = @import("../config.zig"); const crash = @import("../crash/main.zig"); -const fastmem = @import("../fastmem.zig"); +const fastmem = @import("fastmem"); const internal_os = @import("../os/main.zig"); const renderer = @import("../renderer.zig"); const shell_integration = @import("shell_integration.zig"); diff --git a/src/termio/Termio.zig b/src/termio/Termio.zig index 7d6e179d82..41a262f625 100644 --- a/src/termio/Termio.zig +++ b/src/termio/Termio.zig @@ -5,7 +5,7 @@ pub const Termio = @This(); const std = @import("std"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const ArenaAllocator = std.heap.ArenaAllocator; const EnvMap = std.process.Environ.Map; diff --git a/src/termio/mailbox.zig b/src/termio/mailbox.zig index a053aaabe9..0f51df3ed3 100644 --- a/src/termio/mailbox.zig +++ b/src/termio/mailbox.zig @@ -4,7 +4,7 @@ const global = @import("../global.zig"); const xev = global.xev; const renderer = @import("../renderer.zig"); const termio = @import("../termio.zig"); -const BlockingQueue = @import("../datastruct/main.zig").BlockingQueue; +const BlockingQueue = @import("datastruct").BlockingQueue; const log = std.log.scoped(.io_writer); diff --git a/src/termio/message.zig b/src/termio/message.zig index e51865e39d..4ab286246e 100644 --- a/src/termio/message.zig +++ b/src/termio/message.zig @@ -3,7 +3,7 @@ const Allocator = std.mem.Allocator; const renderer = @import("../renderer.zig"); const terminal = @import("../terminal/main.zig"); const termio = @import("../termio.zig"); -const MessageData = @import("../datastruct/main.zig").MessageData; +const MessageData = @import("datastruct").MessageData; /// The messages that can be sent to an IO thread. /// diff --git a/src/termio/stream_handler.zig b/src/termio/stream_handler.zig index ddc5eb82b8..cffac5b4df 100644 --- a/src/termio/stream_handler.zig +++ b/src/termio/stream_handler.zig @@ -1,6 +1,6 @@ const std = @import("std"); const builtin = @import("builtin"); -const assert = @import("../quirks.zig").inlineAssert; +const assert = @import("quirks").inlineAssert; const Allocator = std.mem.Allocator; const global = @import("../global.zig"); const xev = global.xev;