Introduction
Introduction Statistics Contact Development Disclaimer Help
tsyn: handle non-black terminal forground colour - neatvi - [fork] simple vi-ty…
git clone git://src.adamsgaard.dk/neatvi
Log
Files
Refs
README
---
commit e14f2566479bd4cb53821e13d0518b11e4b89b94
parent c56b1c07c8afc6c7e7455f32c82c9b1f52ace59e
Author: Ali Gholami Rudi <[email protected]>
Date: Mon, 22 Jun 2015 18:23:24 +0430
syn: handle non-black terminal forground colour
Reported by Dirk-Wilhelm Peters <[email protected]>.
Diffstat:
M syn.c | 7 +++----
M term.c | 18 ++++++++++--------
M vi.h | 17 +++++++++++------
3 files changed, 24 insertions(+), 18 deletions(-)
---
diff --git a/syn.c b/syn.c
t@@ -24,10 +24,9 @@ static struct rset *syn_find(char *ft)
int syn_merge(int old, int new)
{
- int fg = SYN_FG(new) ? SYN_FG(new) : SYN_FG(old);
- int bg = SYN_BG(new) ? SYN_BG(new) : SYN_BG(old);
- int flg = (old | new) & (SYN_IT | SYN_BD | SYN_RV);
- return flg | fg | SYN_BGMK(bg);
+ int fg = SYN_FGSET(new) ? SYN_FG(new) : SYN_FG(old);
+ int bg = SYN_BGSET(new) ? SYN_BG(new) : SYN_BG(old);
+ return ((old | new) & SYN_FLG) | (bg << 8) | fg;
}
int *syn_highlight(char *ft, char *s)
diff --git a/term.c b/term.c
t@@ -173,17 +173,19 @@ char *term_att(int att, int old)
if (att == old)
return "";
s += sprintf(s, "\33[");
- if (fg & SYN_BD)
+ if (att & SYN_BD)
s += sprintf(s, ";1");
- if (fg & SYN_IT)
+ if (att & SYN_IT)
s += sprintf(s, ";3");
- else if (fg & SYN_RV)
+ else if (att & SYN_RV)
s += sprintf(s, ";7");
- if ((fg & 0xff) < 8)
- s += sprintf(s, ";%d", 30 + (fg & 0xff));
- else
- s += sprintf(s, ";38;5;%d", (fg & 0xff));
- if (bg) {
+ if (SYN_FGSET(att)) {
+ if ((fg & 0xff) < 8)
+ s += sprintf(s, ";%d", 30 + (fg & 0xff));
+ else
+ s += sprintf(s, ";38;5;%d", (fg & 0xff));
+ }
+ if (SYN_BGSET(att)) {
if ((bg & 0xff) < 8)
s += sprintf(s, ";%d", 40 + (bg & 0xff));
else
diff --git a/vi.h b/vi.h
t@@ -151,12 +151,17 @@ char *cmd_pipe(char *cmd, char *s, int iproc, int oproc);
int cmd_exec(char *cmd);
/* syntax highlighting */
-#define SYN_BD 0x100
-#define SYN_IT 0x200
-#define SYN_RV 0x400
-#define SYN_BGMK(b) ((b) << 16)
-#define SYN_FG(a) ((a) & 0xffff)
-#define SYN_BG(a) ((a) >> 16)
+#define SYN_BD 0x010000
+#define SYN_IT 0x020000
+#define SYN_RV 0x040000
+#define SYN_FGMK(f) (0x100000 | (f))
+#define SYN_BGMK(b) (0x200000 | ((b) << 8))
+
+#define SYN_FLG 0xff0000
+#define SYN_FGSET(a) ((a) & 0x1000ff)
+#define SYN_BGSET(a) ((a) & 0x20ff00)
+#define SYN_FG(a) ((a) & 0xff)
+#define SYN_BG(a) (((a) >> 8) & 0xff)
int *syn_highlight(char *ft, char *s);
char *syn_filetype(char *path);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.