mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 08:46:08 +03:00
@ -961,7 +961,7 @@ pub fn LineIterator(comptime ReaderType: type) type {
|
||||
}
|
||||
|
||||
// Constructs a LineIterator (see docs for that).
|
||||
pub fn lineIterator(reader: anytype) LineIterator(@TypeOf(reader)) {
|
||||
fn lineIterator(reader: anytype) LineIterator(@TypeOf(reader)) {
|
||||
return .{ .r = reader };
|
||||
}
|
||||
|
||||
|
@ -2260,7 +2260,9 @@ pub fn loadFile(self: *Config, alloc: Allocator, path: []const u8) !void {
|
||||
std.log.info("reading configuration file path={s}", .{path});
|
||||
|
||||
var buf_reader = std.io.bufferedReader(file.reader());
|
||||
var iter = cli.args.lineIterator(buf_reader.reader());
|
||||
const reader = buf_reader.reader();
|
||||
const Iter = cli.args.LineIterator(@TypeOf(reader));
|
||||
var iter: Iter = .{ .r = reader, .filepath = path };
|
||||
try self.loadIter(alloc, &iter);
|
||||
try self.expandPaths(std.fs.path.dirname(path).?);
|
||||
}
|
||||
@ -2471,7 +2473,9 @@ pub fn loadRecursiveFiles(self: *Config, alloc_gpa: Allocator) !void {
|
||||
|
||||
log.info("loading config-file path={s}", .{path});
|
||||
var buf_reader = std.io.bufferedReader(file.reader());
|
||||
var iter = cli.args.lineIterator(buf_reader.reader());
|
||||
const reader = buf_reader.reader();
|
||||
const Iter = cli.args.LineIterator(@TypeOf(reader));
|
||||
var iter: Iter = .{ .r = reader, .filepath = path };
|
||||
try self.loadIter(alloc_gpa, &iter);
|
||||
try self.expandPaths(std.fs.path.dirname(path).?);
|
||||
}
|
||||
@ -2502,11 +2506,13 @@ fn expandPaths(self: *Config, base: []const u8) !void {
|
||||
|
||||
fn loadTheme(self: *Config, theme: []const u8) !void {
|
||||
// Find our theme file and open it. See the open function for details.
|
||||
const file: std.fs.File = (try themepkg.open(
|
||||
const themefile = (try themepkg.open(
|
||||
self._arena.?.allocator(),
|
||||
theme,
|
||||
&self._diagnostics,
|
||||
)) orelse return;
|
||||
const path = themefile.path;
|
||||
const file = themefile.file;
|
||||
defer file.close();
|
||||
|
||||
// From this point onwards, we load the theme and do a bit of a dance
|
||||
@ -2532,7 +2538,9 @@ fn loadTheme(self: *Config, theme: []const u8) !void {
|
||||
|
||||
// Load our theme
|
||||
var buf_reader = std.io.bufferedReader(file.reader());
|
||||
var iter = cli.args.lineIterator(buf_reader.reader());
|
||||
const reader = buf_reader.reader();
|
||||
const Iter = cli.args.LineIterator(@TypeOf(reader));
|
||||
var iter: Iter = .{ .r = reader, .filepath = path };
|
||||
try new_config.loadIter(alloc_gpa, &iter);
|
||||
|
||||
// Replay our previous inputs so that we can override values
|
||||
|
@ -108,14 +108,20 @@ pub fn open(
|
||||
arena_alloc: Allocator,
|
||||
theme: []const u8,
|
||||
diags: *cli.DiagnosticList,
|
||||
) error{OutOfMemory}!?std.fs.File {
|
||||
) error{OutOfMemory}!?struct {
|
||||
path: []const u8,
|
||||
file: std.fs.File,
|
||||
} {
|
||||
|
||||
// Absolute themes are loaded a different path.
|
||||
if (std.fs.path.isAbsolute(theme)) return try openAbsolute(
|
||||
arena_alloc,
|
||||
theme,
|
||||
diags,
|
||||
);
|
||||
if (std.fs.path.isAbsolute(theme)) {
|
||||
const file: std.fs.File = try openAbsolute(
|
||||
arena_alloc,
|
||||
theme,
|
||||
diags,
|
||||
) orelse return null;
|
||||
return .{ .path = theme, .file = file };
|
||||
}
|
||||
|
||||
const basename = std.fs.path.basename(theme);
|
||||
if (!std.mem.eql(u8, theme, basename)) {
|
||||
@ -135,8 +141,9 @@ pub fn open(
|
||||
const cwd = std.fs.cwd();
|
||||
while (try it.next()) |loc| {
|
||||
const path = try std.fs.path.join(arena_alloc, &.{ loc.dir, theme });
|
||||
if (cwd.openFile(path, .{})) |file| {
|
||||
return file;
|
||||
if (cwd.openFile(path, .{})) |file| return .{
|
||||
.path = path,
|
||||
.file = file,
|
||||
} else |err| switch (err) {
|
||||
// Not an error, just continue to the next location.
|
||||
error.FileNotFound => {},
|
||||
|
Reference in New Issue
Block a user