Force default colours if terminal supports it.

This commit is contained in:
Nicholas Marriott 2007-11-12 20:29:43 +00:00
parent a3c89d7671
commit dc8fb1e1dc
3 changed files with 29 additions and 14 deletions

View File

@ -1,5 +1,8 @@
12 November 2007 12 November 2007
* (nicm) If the terminal supports default colours (AX present), force black
background and white foreground to default. This is useful on transparent
*terms for programs which don't do it themselves (like most(1)).
* (nicm) Fill in the rest of the man page. * (nicm) Fill in the rest of the man page.
* (nicm) kill-session command. * (nicm) kill-session command.
@ -203,4 +206,4 @@
(including mutt, emacs). No status bar yet and no key remapping or other (including mutt, emacs). No status bar yet and no key remapping or other
customisation. customisation.
$Id: CHANGES,v 1.66 2007-11-12 16:09:08 nicm Exp $ $Id: CHANGES,v 1.67 2007-11-12 20:29:43 nicm Exp $

2
TODO
View File

@ -51,6 +51,8 @@
- per-session toolbar state, other options - per-session toolbar state, other options
- commands: - commands:
kill server kill server
- force-default option: assume terminal supports default colours even if AX
is missing (like, eg, xterm-color in an aterm)
-- For 0.1 -------------------------------------------------------------------- -- For 0.1 --------------------------------------------------------------------
- fix most(1) problems after scrolling - fix most(1) problems after scrolling

28
local.c
View File

@ -1,4 +1,4 @@
/* $Id: local.c,v 1.18 2007-11-08 10:39:52 nicm Exp $ */ /* $Id: local.c,v 1.19 2007-11-12 20:29:43 nicm Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -766,23 +766,33 @@ local_attributes(u_char attr, u_char colr)
fg = (colr >> 4) & 0xf; fg = (colr >> 4) & 0xf;
if (fg != ((local_colr >> 4) & 0xf)) { if (fg != ((local_colr >> 4) & 0xf)) {
if (fg == 8) { if (tigetflag("AX") == TRUE) {
if (tigetflag("AX") == TRUE) if (fg == 7)
fg = 8;
} else {
if (fg == 8)
fg = 7;
}
if (fg == 8)
local_putp("\e[39m"); local_putp("\e[39m");
else if (set_a_foreground != NULL) else if (set_a_foreground != NULL)
local_putp(tparm(set_a_foreground, 7));
} else if (set_a_foreground != NULL)
local_putp(tparm(set_a_foreground, fg)); local_putp(tparm(set_a_foreground, fg));
} }
bg = colr & 0xf; bg = colr & 0xf;
if (bg != (local_colr & 0xf)) { if (bg != (local_colr & 0xf)) {
if (bg == 8) { if (tigetflag("AX") == TRUE) {
if (tigetflag("AX") == TRUE) if (bg == 0)
bg = 8;
} else {
if (bg == 8)
bg = 0;
}
if (bg == 8)
local_putp("\e[49m"); local_putp("\e[49m");
else if (set_a_background != NULL) else if (set_a_background != NULL)
local_putp(tparm(set_a_background, 0));
} else if (set_a_background != NULL)
local_putp(tparm(set_a_background, bg)); local_putp(tparm(set_a_background, bg));
} }