mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-04-25 00:35:23 +00:00
docs: extract inline code examples into standalone projects
Extract inline @code blocks from vt headers (size_report.h, modes.h, sgr.h, paste.h, mouse.h, key.h) into standalone buildable examples under example/. Each header now uses Doxygen @snippet tags to include code from the example source files, keeping documentation in sync with code that is verified to compile and run. New example projects: c-vt-size-report and c-vt-modes. Existing examples (c-vt-sgr, c-vt-paste, c-vt-mouse-encode, c-vt-key-encode) gain snippet markers so their code can be referenced from the headers. Conceptual snippets in key.h, mouse.h, and key/encoder.h that show terminal-state usage patterns remain inline since they cannot be compiled standalone.
This commit is contained in:
@@ -2,12 +2,43 @@
|
||||
#include <stdio.h>
|
||||
#include <ghostty/vt.h>
|
||||
|
||||
int main() {
|
||||
//! [sgr-basic]
|
||||
void basic_example() {
|
||||
// Create parser
|
||||
GhosttySgrParser parser;
|
||||
GhosttyResult result = ghostty_sgr_new(NULL, &parser);
|
||||
assert(result == GHOSTTY_SUCCESS);
|
||||
|
||||
// Parse "bold, red foreground" sequence: ESC[1;31m
|
||||
uint16_t params[] = {1, 31};
|
||||
result = ghostty_sgr_set_params(parser, params, NULL, 2);
|
||||
assert(result == GHOSTTY_SUCCESS);
|
||||
|
||||
// Iterate through attributes
|
||||
GhosttySgrAttribute attr;
|
||||
while (ghostty_sgr_next(parser, &attr)) {
|
||||
switch (attr.tag) {
|
||||
case GHOSTTY_SGR_ATTR_BOLD:
|
||||
printf("Bold enabled\n");
|
||||
break;
|
||||
case GHOSTTY_SGR_ATTR_FG_8:
|
||||
printf("Foreground color: %d\n", attr.value.fg_8);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup
|
||||
ghostty_sgr_free(parser);
|
||||
}
|
||||
//! [sgr-basic]
|
||||
|
||||
void advanced_example() {
|
||||
GhosttySgrParser parser;
|
||||
GhosttyResult result = ghostty_sgr_new(NULL, &parser);
|
||||
assert(result == GHOSTTY_SUCCESS);
|
||||
|
||||
// Parse a complex SGR sequence from Kakoune
|
||||
// This corresponds to the escape sequence:
|
||||
// ESC[4:3;38;2;51;51;51;48;2;170;170;170;58;2;255;97;136m
|
||||
@@ -26,10 +57,9 @@ int main() {
|
||||
result = ghostty_sgr_set_params(parser, params, separators, sizeof(params) / sizeof(params[0]));
|
||||
assert(result == GHOSTTY_SUCCESS);
|
||||
|
||||
printf("Parsing Kakoune SGR sequence:\n");
|
||||
printf("\nParsing Kakoune SGR sequence:\n");
|
||||
printf("ESC[4:3;38;2;51;51;51;48;2;170;170;170;58;2;255;97;136m\n\n");
|
||||
|
||||
// Iterate through attributes
|
||||
GhosttySgrAttribute attr;
|
||||
int count = 0;
|
||||
while (ghostty_sgr_next(parser, &attr)) {
|
||||
@@ -124,8 +154,11 @@ int main() {
|
||||
}
|
||||
|
||||
printf("\nTotal attributes parsed: %d\n", count);
|
||||
|
||||
// Cleanup
|
||||
ghostty_sgr_free(parser);
|
||||
}
|
||||
|
||||
int main() {
|
||||
basic_example();
|
||||
advanced_example();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user