mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-08-01 21:29:02 +00:00
Add a render-state row-cells getter that encodes the current cell's full grapheme cluster directly as UTF-8 into a caller-provided GhosttyBuffer. The getter writes the base codepoint first, followed by any extra grapheme codepoints, and follows the existing buffer-writer convention where len is bytes written on success or required capacity on GHOSTTY_OUT_OF_SPACE. Previously C consumers could query grapheme codepoints, but bindings that needed UTF-8 text had to reconstruct and encode the cluster themselves. That duplicated terminal internals in downstream bindings and made users pay for awkward cross-language struct handling. By owning the UTF-8/grapheme behavior in libghostty, bindings can use one stable C API and optionally wrap it with small binding-local helpers.
24 lines
905 B
Zig
24 lines
905 B
Zig
const std = @import("std");
|
|
const build_options = @import("terminal_options");
|
|
const lib = @import("../lib/main.zig");
|
|
|
|
/// The target for the terminal lib in particular.
|
|
pub const target: lib.Target = if (build_options.c_abi) .c else .zig;
|
|
|
|
/// The calling convention to use for C APIs.
|
|
///
|
|
/// This is always .c for now. I want to make this "Zig" when we're not
|
|
/// building the C ABI but there are bigger issues we need to resolve to
|
|
/// make that possible (change it and see for yourself).
|
|
pub const calling_conv: std.builtin.CallingConvention = .c;
|
|
|
|
/// Forwarded decls from lib that are used.
|
|
pub const alloc = lib.allocator;
|
|
pub const Buffer = lib.Buffer;
|
|
pub const Enum = lib.Enum;
|
|
pub const TaggedUnion = lib.TaggedUnion;
|
|
pub const Struct = lib.Struct;
|
|
pub const String = lib.String;
|
|
pub const checkGhosttyHEnum = lib.checkGhosttyHEnum;
|
|
pub const structSizedFieldFits = lib.structSizedFieldFits;
|