Files
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

118 lines
2.8 KiB
Plaintext

/*
** BRIEF -- Basic Reconfigurable Interactive Editing Facility
**
** Written by Dave Nanian and Michael Strickman.
*/
/*
** qh.cb:
**
** This macro provides a basic interface between BRIEF and
** QuickHelp. It allows you to call QuickHelp from within BRIEF,
** and it inserts the QuickHelp paste buffer into the BRIEF scrap
** if you pasted anything within QuickHelp. The C identifier at the
** cursor is passed to QuickHelp as a topic; if the topic is not found,
** QuickHelp displays an error message and displays the main QuickHelp
** screen.
**
** To use this macro, add the following lines to your initials macro:
**
** (autoload "qh" "qh")
** (assign_to_key "<Ctrl-h>" "qh")
**
** When you recompile your initials macro and restart BRIEF,
** context-sensitive QuickHelp will be assigned to the <Ctrl-h> key.
**
** Note that some versions of QuickHelp do not check what video page
** is currently being used. If QuickHelp doesn't seem to pop-up properly,
** put the -p flag in your BFLAGS.
*/
string add_to_path (string path, string file_name);
string _qh_get_id (void);
void qh (string ~topic);
void _qh_done (int ret_code);
void qh (string ~)
{
int screen_lines;
string topic,
command_line;
if (!get_parm (0, topic))
topic = _qh_get_id ();
/*
** To change the amount of the BRIEF screen QuickHelp overlays, change
** the screen percentage (currently 60%, see below).
*/
inq_screen_size (screen_lines);
sprintf (command_line, "qh -i%d %s >&nul", screen_lines * 60 / 100, topic);
_qh_done (dos (command_line));
}
void _qh_done (int ret_code)
{
if (ret_code == 0)
{
string paste_file = add_to_path (inq_environment ("TMP"), "paste.qh");
file_pattern (paste_file);
/*
** If a paste file exists, copy it to the BRIEF scrap and delete
** the file.
*/
if (find_file ())
{
int curr_buf = inq_buffer (),
paste_qh_buf = create_buffer ("QuickHelp", paste_file, 1);
set_buffer (paste_qh_buf);
top_of_buffer ();
drop_anchor ();
end_of_buffer ();
copy ();
set_buffer (curr_buf);
delete_buffer (paste_qh_buf);
del (paste_file);
message ("QuickHelp findings copied to scrap.");
}
}
else
error ("QuickHelp could not locate that topic.");
}
/*
** Retrieve a 'C' identifier from the current buffer
*/
string _qh_get_id (void)
{
int identifier_len;
string identifier;
save_position ();
/*
** Find non-identifier char to left.
*/
search_back ("<|[~_$a-zA-Z0-9][_$a-zA-Z]", 1);
/*
** Find identifier char to right, or end of buffer.
*/
if ((identifier_len = search_fwd ("[_$a-zA-Z0-9]+", -1) - 1) > 0)
identifier = read (identifier_len);
restore_position ();
returns (identifier);
}