Files
TeslaRel410/sda4/BRIEF/MACROS/BRACE.CB
T
CydandClaude Fable 5 db7745fcd0 sda4: commit the Glaze developer hard-drive dump
Un-ignored: the dev drive is the ground truth the restoration and
emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer
source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio
content). Kept in-repo for the pod-owner community.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 19:41:15 -05:00

98 lines
2.0 KiB
Plaintext

/*
** BRIEF -- Basic Reconfigurable Interactive Editing Facility
**
** Written by Dave Nanian and Michael Strickman.
*/
/* brace.cb:
**
** This macro is an attempt at a "locate the unmatched brace" utility.
** Although it attempts to be fairly smart about things, it has an IQ of
** 4 or 5, so be careful before taking its word for something.
**
** It DOES NOT WORK if there are braces inside quotes, apostrophes, or
** comments. The macro can, however, be modified to ignore everything
** inside these structures (and check for the appropriate mismatches).
*/
#define TRUE 1
#define BACK 1
#define DONE 2
int char_search (int backward);
void brace ()
{
int tot_count,
start_line,
start_col,
mismatch,
char_we_got,
backward;
string msg_pattern = "Checking braces, %d unmatched {s.",
msg_text;
inq_position (start_line, start_col);
top_of_buffer ();
while (backward < DONE)
{
while (char_search (backward) && !mismatch)
{
sprintf (msg_text, msg_pattern, tot_count);
message (msg_text);
if (backward)
char_we_got = index ("}{", read (1));
else
char_we_got = index ("{}", read (1));
if (char_we_got == 1)
++tot_count;
else if (char_we_got == 2)
if (tot_count)
--tot_count;
else
{
if (backward)
message ("Mismatched opening brace.");
else
message ("Mismatched closing brace.");
mismatch = TRUE;
}
if (!mismatch)
if (backward)
prev_char ();
else
next_char ();
}
if (!mismatch)
if (tot_count)
{
end_of_buffer ();
tot_count = 0;
backward = BACK;
msg_pattern = "Locating mismatch, %d unmatched }s.";
}
else
backward = DONE;
else
backward = DONE;
}
if (!mismatch)
{
message ("All braces match.");
move_abs (start_line, start_col);
}
}
int char_search (int backward)
{
if (backward)
returns (search_back ("[\\{\\}]"));
else
returns (search_fwd ("[\\{\\}]"));
}