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>
122 lines
2.2 KiB
Plaintext
122 lines
2.2 KiB
Plaintext
/*
|
|
** BRIEF -- Basic Reconfigurable Interactive Editing Facility
|
|
**
|
|
** Written by Dave Nanian and Michael Strickman.
|
|
*/
|
|
|
|
/*
|
|
** savehist.cb:
|
|
**
|
|
** This file saves the current history information to the state file
|
|
** on exit. To use it, put the string "-msavehist" (no quotes) after the
|
|
** "-mrestore" or "-mpwb" in your BFLAGS. For example:
|
|
**
|
|
** set bflags=-mrestore -msavehist
|
|
**
|
|
** - or -
|
|
**
|
|
** set bflags=-mpwb -mscrapper
|
|
*/
|
|
|
|
extern _save_state (),
|
|
_restore ();
|
|
|
|
extern int _history_buf;
|
|
|
|
replacement _save_state ()
|
|
{
|
|
if (_history_buf)
|
|
{
|
|
int curr_buf = set_buffer (_history_buf),
|
|
end_line,
|
|
end_col;
|
|
|
|
save_position ();
|
|
top_of_buffer ();
|
|
drop_anchor ();
|
|
|
|
if (end_of_buffer ())
|
|
inq_position (end_line, end_col);
|
|
|
|
raise_anchor ();
|
|
restore_position ();
|
|
set_buffer (curr_buf);
|
|
|
|
if (end_line)
|
|
{
|
|
string ext;
|
|
|
|
inq_names (NULL, ext);
|
|
|
|
if (ext == "sts")
|
|
{
|
|
save_position ();
|
|
top_of_buffer ();
|
|
|
|
if (search_fwd ("<[\t ]@\\[brief-history\\]", 1, 1))
|
|
{
|
|
drop_anchor ();
|
|
search_fwd ("<[\t ]@\\[end-brief-history\\]*\\c>", 1, 1);
|
|
delete_block ();
|
|
}
|
|
restore_position ();
|
|
|
|
set_buffer (_history_buf);
|
|
top_of_buffer ();
|
|
translate ("<", ";", 1, 1);
|
|
end_col++; // Compensate for extra character
|
|
set_buffer (curr_buf);
|
|
}
|
|
|
|
insert ("[brief-history]\n");
|
|
transfer (_history_buf, 1, 1, end_line, end_col);
|
|
insert ("[end-brief-history]\n");
|
|
}
|
|
}
|
|
returns (_save_state ());
|
|
}
|
|
|
|
|
|
replacement _restore ()
|
|
{
|
|
_restore ();
|
|
top_of_buffer ();
|
|
|
|
if (search_fwd ("<\\[brief-history\\]>"))
|
|
{
|
|
down ();
|
|
drop_anchor (4);
|
|
|
|
search_fwd ("<\\[end-brief-history\\]>");
|
|
|
|
if (inq_mark_size ())
|
|
{
|
|
int start_line,
|
|
start_col,
|
|
end_line,
|
|
end_col,
|
|
curr_buf;
|
|
string ext;
|
|
|
|
prev_char (2);
|
|
inq_position (end_line, end_col);
|
|
swap_anchor ();
|
|
inq_position (start_line, start_col);
|
|
|
|
inq_names (NULL, ext);
|
|
|
|
curr_buf = set_buffer (_history_buf);
|
|
transfer (curr_buf, start_line, start_col, end_line, end_col);
|
|
|
|
if (ext == "sts")
|
|
{
|
|
top_of_buffer ();
|
|
translate ("<;", "", 1, 1);
|
|
}
|
|
|
|
set_buffer (curr_buf);
|
|
}
|
|
raise_anchor ();
|
|
}
|
|
}
|