diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2007-11-12 20:29:43 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2007-11-12 20:29:43 +0000 |
commit | dc8fb1e1dc72e96aeae151487a2d0ddd031801a9 (patch) | |
tree | 48eda0693f8e07fe3f58913aa86b2dbcf188d7fc | |
parent | a3c89d76710cd09bdc7b3774f547576c13d8159c (diff) |
Force default colours if terminal supports it.
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | local.c | 36 |
3 files changed, 29 insertions, 14 deletions
@@ -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 $ @@ -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 @@ -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)); } |