summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-11-12 20:29:43 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-11-12 20:29:43 +0000
commitdc8fb1e1dc72e96aeae151487a2d0ddd031801a9 (patch)
tree48eda0693f8e07fe3f58913aa86b2dbcf188d7fc
parenta3c89d76710cd09bdc7b3774f547576c13d8159c (diff)
Force default colours if terminal supports it.
-rw-r--r--CHANGES5
-rw-r--r--TODO2
-rw-r--r--local.c36
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 <nicm@users.sourceforge.net>
@@ -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));
}