From dc8fb1e1dc72e96aeae151487a2d0ddd031801a9 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Mon, 12 Nov 2007 20:29:43 +0000 Subject: [PATCH] Force default colours if terminal supports it. --- CHANGES | 5 ++++- TODO | 2 ++ local.c | 36 +++++++++++++++++++++++------------- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index 6ec8d15a..e0e5f80e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,8 @@ 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) kill-session command. @@ -203,4 +206,4 @@ (including mutt, emacs). No status bar yet and no key remapping or other 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 $ diff --git a/TODO b/TODO index 83be9766..6d7168d7 100644 --- a/TODO +++ b/TODO @@ -51,6 +51,8 @@ - per-session toolbar state, other options - commands: 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 -------------------------------------------------------------------- - fix most(1) problems after scrolling diff --git a/local.c b/local.c index 62abab55..2d19a716 100644 --- a/local.c +++ b/local.c @@ -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 @@ -766,23 +766,33 @@ local_attributes(u_char attr, u_char colr) fg = (colr >> 4) & 0xf; if (fg != ((local_colr >> 4) & 0xf)) { - if (fg == 8) { - if (tigetflag("AX") == TRUE) - local_putp("\e[39m"); - else if (set_a_foreground != NULL) - local_putp(tparm(set_a_foreground, 7)); - } else if (set_a_foreground != NULL) + if (tigetflag("AX") == TRUE) { + if (fg == 7) + fg = 8; + } else { + if (fg == 8) + fg = 7; + } + + if (fg == 8) + local_putp("\e[39m"); + else if (set_a_foreground != NULL) local_putp(tparm(set_a_foreground, fg)); } bg = colr & 0xf; if (bg != (local_colr & 0xf)) { - if (bg == 8) { - if (tigetflag("AX") == TRUE) - local_putp("\e[49m"); - else if (set_a_background != NULL) - local_putp(tparm(set_a_background, 0)); - } else if (set_a_background != NULL) + if (tigetflag("AX") == TRUE) { + if (bg == 0) + bg = 8; + } else { + if (bg == 8) + bg = 0; + } + + if (bg == 8) + local_putp("\e[49m"); + else if (set_a_background != NULL) local_putp(tparm(set_a_background, bg)); }