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