This is not what I consider an elegant solution to the problem, but it
does work, and should keep the impact to a minimum.
When visual mode is off, this simply fixes the characteristic I was
seeing as a problem. This has the side effect of making the "-- more --"
prompt echo what the current color is (inverted so it should still stand
out), as well as making whatever text is being typed in be the current
color.
I'm not sure how this should be changed when visual mode is on. I've
taken the conservative approach and this /should/ have no effect when
visual mode is on.
On MU*s that do not use ANSI codes this patch should have no effect
whatsoever (please note the /should/ though).
-----8<-----------------------------------------------------------8<-----
--- output.c.0 Sat Mar 6 14:43:25 1999
+++ output.c Sun Dec 1 17:11:51 2002
@@ -191,7 +191,7 @@
/* Others */
#define Wrap (wrapsize ? wrapsize : columns)
-#define more_attrs (F_BOLD | F_REVERSE)
+#define MORE_ATTRS (F_BOLD | F_REVERSE)
#define moremin 1
#define morewait 50
@@ -388,7 +388,7 @@
ystatus = lines - isize;
prompt = fgprompt();
- (moreprompt = new_aline("--More--", more_attrs))->links++;
+ (moreprompt = new_aline("--More--", MORE_ATTRS))->links++;
init_term();
ch_hiliteattr();
@@ -1617,8 +1617,8 @@
Aline *line;
int start, end;
{
+ static attr_t current = 0;
attr_t attrs = line->attrs & F_HWRITE;
- attr_t current = 0;
attr_t new;
int i, ctrl;
int col = 0;
@@ -1635,8 +1635,11 @@
cx += end - start;
- if (!line->partials && hilite && attrs)
- attributes_on(current = attrs);
+ if (screen_mode >= 1) {
+ if (!line->partials && hilite && attrs)
+ attributes_on(current = attrs);
+ }
for (i = start; i < end; ++i) {
new = attrs;
@@ -1665,7 +1668,7 @@
col++;
}
}
- if (current) attributes_off(current);
+ if (screen_mode >= 1) {
+ if (current) attributes_off(current);
+ current = 0;
+ } else moreprompt->attrs = current ^ MORE_ATTRS;
}
void reset_outcount()
-----8<-----------------------------------------------------------8<-----