0ad3d4eddf
Created run-patches.sh, runs all patches on clean st 0.8.1 code. All old patches remvoed, including trasparency diff. Not including solarized theme, don't see value of it. Commented colornames array with color indexs from 0-15, includes index 255, and afterwards bg, fg and cursor, change those for background, foreground and cursor color. Seems better than solarized toggle. Updated README.
140 lines
3.2 KiB
C
140 lines
3.2 KiB
C
/* See LICENSE for license details. */
|
|
|
|
#include <stdint.h>
|
|
#include <sys/types.h>
|
|
|
|
/* Arbitrary size */
|
|
#define HISTSIZE 2000
|
|
|
|
/* macros */
|
|
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
#define MAX(a, b) ((a) < (b) ? (b) : (a))
|
|
#define LEN(a) (sizeof(a) / sizeof(a)[0])
|
|
#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b))
|
|
#define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d))
|
|
#define DEFAULT(a, b) (a) = (a) ? (a) : (b)
|
|
#define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
|
|
#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || \
|
|
(a).bg != (b).bg)
|
|
#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + \
|
|
(t1.tv_nsec-t2.tv_nsec)/1E6)
|
|
#define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
|
|
|
|
#define TRUECOLOR(r,g,b) (1 << 24 | (r) << 16 | (g) << 8 | (b))
|
|
#define IS_TRUECOL(x) (1 << 24 & (x))
|
|
#define TLINE(y) ((y) < term.scr ? term.hist[((y) + term.histi - term.scr \
|
|
+ HISTSIZE + 1) % HISTSIZE] : term.line[(y) - term.scr])
|
|
|
|
enum glyph_attribute {
|
|
ATTR_NULL = 0,
|
|
ATTR_BOLD = 1 << 0,
|
|
ATTR_FAINT = 1 << 1,
|
|
ATTR_ITALIC = 1 << 2,
|
|
ATTR_UNDERLINE = 1 << 3,
|
|
ATTR_BLINK = 1 << 4,
|
|
ATTR_REVERSE = 1 << 5,
|
|
ATTR_INVISIBLE = 1 << 6,
|
|
ATTR_STRUCK = 1 << 7,
|
|
ATTR_WRAP = 1 << 8,
|
|
ATTR_WIDE = 1 << 9,
|
|
ATTR_WDUMMY = 1 << 10,
|
|
ATTR_BOLD_FAINT = ATTR_BOLD | ATTR_FAINT,
|
|
};
|
|
|
|
enum selection_mode {
|
|
SEL_IDLE = 0,
|
|
SEL_EMPTY = 1,
|
|
SEL_READY = 2
|
|
};
|
|
|
|
enum selection_type {
|
|
SEL_REGULAR = 1,
|
|
SEL_RECTANGULAR = 2
|
|
};
|
|
|
|
enum selection_snap {
|
|
SNAP_WORD = 1,
|
|
SNAP_LINE = 2
|
|
};
|
|
|
|
typedef unsigned char uchar;
|
|
typedef unsigned int uint;
|
|
typedef unsigned long ulong;
|
|
typedef unsigned short ushort;
|
|
|
|
typedef uint_least32_t Rune;
|
|
|
|
#define Glyph Glyph_
|
|
typedef struct {
|
|
Rune u; /* character code */
|
|
ushort mode; /* attribute flags */
|
|
uint32_t fg; /* foreground */
|
|
uint32_t bg; /* background */
|
|
} Glyph;
|
|
|
|
typedef Glyph *Line;
|
|
|
|
typedef union {
|
|
int i;
|
|
uint ui;
|
|
float f;
|
|
const void *v;
|
|
} Arg;
|
|
|
|
typedef struct {
|
|
uint b;
|
|
uint mask;
|
|
void (*func)(const Arg *);
|
|
const Arg arg;
|
|
} MouseKey;
|
|
|
|
void die(const char *, ...);
|
|
void redraw(void);
|
|
void draw(void);
|
|
|
|
void iso14755(const Arg *);
|
|
void printscreen(const Arg *);
|
|
void printsel(const Arg *);
|
|
void sendbreak(const Arg *);
|
|
void toggleprinter(const Arg *);
|
|
|
|
int tattrset(int);
|
|
void tnew(int, int);
|
|
void tresize(int, int);
|
|
void tsetdirtattr(int);
|
|
void ttyhangup(void);
|
|
int ttynew(char *, char *, char *, char **);
|
|
size_t ttyread(void);
|
|
void ttyresize(int, int);
|
|
void ttywrite(const char *, size_t, int);
|
|
|
|
void resettitle(void);
|
|
|
|
void selclear(void);
|
|
void selinit(void);
|
|
void selstart(int, int, int);
|
|
void selextend(int, int, int, int);
|
|
int selected(int, int);
|
|
char *getsel(void);
|
|
|
|
size_t utf8encode(Rune, char *);
|
|
|
|
void *xmalloc(size_t);
|
|
void *xrealloc(void *, size_t);
|
|
char *xstrdup(char *);
|
|
|
|
void kscrolldown(const Arg *);
|
|
void kscrollup(const Arg *);
|
|
|
|
/* config.h globals */
|
|
extern char *utmp;
|
|
extern char *stty_args;
|
|
extern char *vtiden;
|
|
extern char *worddelimiters;
|
|
extern int allowaltscreen;
|
|
extern char *termname;
|
|
extern unsigned int tabspaces;
|
|
extern unsigned int alpha;
|
|
extern unsigned int defaultfg;
|
|
extern unsigned int defaultbg;
|
|
extern MouseKey mkeys[];
|