~petersanchez/st

65976c1a29f2945c3cfb6af74cd6440cf193021d — Devin J. Pohly 6 years ago 32d3b1d
Move config.h include from st.c to x.c

config.h includes references to KeySyms and other X stuff.  Until we
come up with a cleaner way to separate configuration, it is simpler
(leads to more code removal) to have this here.

Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
5 files changed, 91 insertions(+), 119 deletions(-)

M config.def.h
M st.c
M st.h
M win.h
M x.c
M config.def.h => config.def.h +36 -37
@@ 5,8 5,8 @@
 *
 * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
 */
char font[] = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
int borderpx = 2;
static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
static int borderpx = 2;

/*
 * What program is execed by st depends of these precedence rules:


@@ 16,54 16,54 @@ int borderpx = 2;
 * 4: value of shell in /etc/passwd
 * 5: value of shell in config.h
 */
static char shell[] = "/bin/sh";
static char *utmp = NULL;
static char stty_args[] = "stty raw pass8 nl -echo -iexten -cstopb 38400";
char *shell = "/bin/sh";
char *utmp = NULL;
char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400";

/* identification sequence returned in DA and DECID */
static char vtiden[] = "\033[?6c";
char *vtiden = "\033[?6c";

/* Kerning / character bounding-box multipliers */
float cwscale = 1.0;
float chscale = 1.0;
static float cwscale = 1.0;
static float chscale = 1.0;

/*
 * word delimiter string
 *
 * More advanced example: " `'\"()[]{}"
 */
static char worddelimiters[] = " ";
char *worddelimiters = " ";

/* selection timeouts (in milliseconds) */
unsigned int doubleclicktimeout = 300;
unsigned int tripleclicktimeout = 600;
static unsigned int doubleclicktimeout = 300;
static unsigned int tripleclicktimeout = 600;

/* alt screens */
int allowaltscreen = 1;

/* frames per second st should at maximum draw to the screen */
unsigned int xfps = 120;
unsigned int actionfps = 30;
static unsigned int xfps = 120;
static unsigned int actionfps = 30;

/*
 * blinking timeout (set to 0 to disable blinking) for the terminal blinking
 * attribute.
 */
unsigned int blinktimeout = 800;
static unsigned int blinktimeout = 800;

/*
 * thickness of underline and bar cursors
 */
unsigned int cursorthickness = 2;
static unsigned int cursorthickness = 2;

/*
 * bell volume. It must be a value between -100 and 100. Use 0 for disabling
 * it
 */
int bellvolume = 0;
static int bellvolume = 0;

/* default TERM value */
char termname[] = "st-256color";
char *termname = "st-256color";

/*
 * spaces per tab


@@ 80,10 80,10 @@ char termname[] = "st-256color";
 *
 *	stty tabs
 */
static unsigned int tabspaces = 8;
unsigned int tabspaces = 8;

/* Terminal colors (16 first used in escape sequence) */
const char *colorname[] = {
static const char *colorname[] = {
	/* 8 normal colors */
	"black",
	"red3",


@@ 118,8 118,8 @@ const char *colorname[] = {
 */
unsigned int defaultfg = 7;
unsigned int defaultbg = 0;
unsigned int defaultcs = 256;
unsigned int defaultrcs = 257;
static unsigned int defaultcs = 256;
static unsigned int defaultrcs = 257;

/*
 * Default shape of cursor


@@ 128,33 128,33 @@ unsigned int defaultrcs = 257;
 * 6: Bar ("|")
 * 7: Snowman ("☃")
 */
unsigned int cursorshape = 2;
static unsigned int cursorshape = 2;

/*
 * Default columns and rows numbers
 */

unsigned int cols = 80;
unsigned int rows = 24;
static unsigned int cols = 80;
static unsigned int rows = 24;

/*
 * Default colour and shape of the mouse cursor
 */
unsigned int mouseshape = XC_xterm;
unsigned int mousefg = 7;
unsigned int mousebg = 0;
static unsigned int mouseshape = XC_xterm;
static unsigned int mousefg = 7;
static unsigned int mousebg = 0;

/*
 * Color used to display font attributes when fontconfig selected a font which
 * doesn't match the ones requested.
 */
unsigned int defaultattr = 11;
static unsigned int defaultattr = 11;

/*
 * Internal mouse shortcuts.
 * Beware that overloading Button1 will disable the selection.
 */
MouseShortcut mshortcuts[] = {
static MouseShortcut mshortcuts[] = {
	/* button               mask            string */
	{ Button4,              XK_ANY_MOD,     "\031" },
	{ Button5,              XK_ANY_MOD,     "\005" },


@@ 164,7 164,7 @@ MouseShortcut mshortcuts[] = {
#define MODKEY Mod1Mask
#define TERMMOD (ControlMask|ShiftMask)

Shortcut shortcuts[] = {
static Shortcut shortcuts[] = {
	/* mask                 keysym          function        argument */
	{ XK_ANY_MOD,           XK_Break,       sendbreak,      {.i =  0} },
	{ ControlMask,          XK_Print,       toggleprinter,  {.i =  0} },


@@ 209,26 209,26 @@ Shortcut shortcuts[] = {
 * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
 * to be mapped below, add them to this array.
 */
KeySym mappedkeys[] = { -1 };
static KeySym mappedkeys[] = { -1 };

/*
 * State bits to ignore when matching key or button events.  By default,
 * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
 */
uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;

/*
 * Override mouse-select while mask is active (when MODE_MOUSE is set).
 * Note that if you want to use ShiftMask with selmasks, set this to an other
 * modifier, set to 0 to not use it.
 */
uint forceselmod = ShiftMask;
static uint forceselmod = ShiftMask;

/*
 * This is the huge key array which defines all compatibility to the Linux
 * world. Please decide about changes wisely.
 */
Key key[] = {
static Key key[] = {
	/* keysym           mask            string      appkey appcursor crlf */
	{ XK_KP_Home,       ShiftMask,      "\033[2J",       0,   -1,    0},
	{ XK_KP_Home,       ShiftMask,      "\033[1;2H",     0,   +1,    0},


@@ 451,7 451,7 @@ Key key[] = {
 * ButtonRelease and MotionNotify.
 * If no match is found, regular selection is used.
 */
uint selmasks[] = {
static uint selmasks[] = {
	[SEL_RECTANGULAR] = Mod1Mask,
};



@@ 459,8 459,7 @@ uint selmasks[] = {
 * Printable characters in ASCII, used to estimate the advance width
 * of single wide characters.
 */
char ascii_printable[] =
static char ascii_printable[] =
	" !\"#$%&'()*+,-./0123456789:;<=>?"
	"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
	"`abcdefghijklmnopqrstuvwxyz{|}~";


M st.c => st.c +4 -43
@@ 109,19 109,6 @@ typedef struct {
	int narg;              /* nb of args */
} STREscape;

/* function definitions used in config.h */
static void clipcopy(const Arg *);
static void clippaste(const Arg *);
static void numlock(const Arg *);
static void selpaste(const Arg *);
static void printsel(const Arg *);
static void printscreen(const Arg *) ;
static void iso14755(const Arg *);
static void toggleprinter(const Arg *);
static void sendbreak(const Arg *);

/* config.h for applying patches and the configuration. */
#include "config.h"

static void execsh(char **);
static void stty(char **);


@@ 199,14 186,6 @@ static uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8};
static Rune utfmin[UTF_SIZ + 1] = {       0,    0,  0x80,  0x800,  0x10000};
static Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF};

/* config.h array lengths */
size_t colornamelen = LEN(colorname);
size_t mshortcutslen = LEN(mshortcuts);
size_t shortcutslen = LEN(shortcuts);
size_t selmaskslen = LEN(selmasks);
size_t keyslen = LEN(key);
size_t mappedkeyslen = LEN(mappedkeys);

ssize_t
xwrite(int fd, const char *s, size_t len)
{


@@ 586,24 565,6 @@ getsel(void)
}

void
selpaste(const Arg *dummy)
{
	xselpaste();
}

void
clipcopy(const Arg *dummy)
{
	xclipcopy();
}

void
clippaste(const Arg *dummy)
{
	xclippaste();
}

void
selclear(void)
{
	if (sel.ob.x == -1)


@@ 1572,7 1533,7 @@ csihandle(void)
		break;
	case 'c': /* DA -- Device Attributes */
		if (csiescseq.arg[0] == 0)
			ttywrite(vtiden, sizeof(vtiden) - 1);
			ttywrite(vtiden, strlen(vtiden));
		break;
	case 'C': /* CUF -- Cursor <n> Forward */
	case 'a': /* HPR -- Cursor <n> Forward */


@@ 1791,7 1752,7 @@ strhandle(void)
				dec = base64dec(strescseq.args[2]);
				if (dec) {
					xsetsel(dec, CurrentTime);
					clipcopy(NULL);
					xclipcopy();
				} else {
					fprintf(stderr, "erresc: invalid base64\n");
				}


@@ 2134,7 2095,7 @@ tcontrolcode(uchar ascii)
	case 0x99:   /* TODO: SGCI */
		break;
	case 0x9a:   /* DECID -- Identify Terminal */
		ttywrite(vtiden, sizeof(vtiden) - 1);
		ttywrite(vtiden, strlen(vtiden));
		break;
	case 0x9b:   /* TODO: CSI */
	case 0x9c:   /* TODO: ST */


@@ 2206,7 2167,7 @@ eschandle(uchar ascii)
		}
		break;
	case 'Z': /* DECID -- Identify Terminal */
		ttywrite(vtiden, sizeof(vtiden) - 1);
		ttywrite(vtiden, strlen(vtiden));
		break;
	case 'c': /* RIS -- Reset to inital state */
		treset();

M st.h => st.h +14 -36
@@ 190,6 190,13 @@ typedef struct {
void die(const char *, ...);
void redraw(void);

void iso14755(const Arg *);
void numlock(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);


@@ 225,42 232,13 @@ extern pid_t pid;
extern int oldbutton;

/* config.h globals */
extern char font[];
extern int borderpx;
extern float cwscale;
extern float chscale;
extern unsigned int doubleclicktimeout;
extern unsigned int tripleclicktimeout;
extern char *shell;
extern char *utmp;
extern char *stty_args;
extern char *vtiden;
extern char *worddelimiters;
extern int allowaltscreen;
extern unsigned int xfps;
extern unsigned int actionfps;
extern unsigned int cursorthickness;
extern int bellvolume;
extern unsigned int blinktimeout;
extern char termname[];
extern const char *colorname[];
extern size_t colornamelen;
extern char *termname;
extern unsigned int tabspaces;
extern unsigned int defaultfg;
extern unsigned int defaultbg;
extern unsigned int defaultcs;
extern unsigned int defaultrcs;
extern unsigned int cursorshape;
extern unsigned int cols;
extern unsigned int rows;
extern unsigned int mouseshape;
extern unsigned int mousefg;
extern unsigned int mousebg;
extern unsigned int defaultattr;
extern MouseShortcut mshortcuts[];
extern size_t mshortcutslen;
extern Shortcut shortcuts[];
extern size_t shortcutslen;
extern KeySym mappedkeys[];
extern size_t mappedkeyslen;
extern uint ignoremod;
extern uint forceselmod;
extern Key key[];
extern size_t keyslen;
extern uint selmasks[];
extern size_t selmaskslen;
extern char ascii_printable[];

M win.h => win.h +0 -3
@@ 18,6 18,3 @@ void xsettitle(char *);
void xsetpointermotion(int);
void xselpaste(void);
void xsetsel(char *, Time);
void zoom(const Arg *);
void zoomabs(const Arg *);
void zoomreset(const Arg *);

M x.c => x.c +37 -0
@@ 20,6 20,25 @@ static char *argv0;
#include "st.h"
#include "win.h"

/* function definitions used in config.h */
static void clipcopy(const Arg *);
static void clippaste(const Arg *);
static void selpaste(const Arg *);
static void zoom(const Arg *);
static void zoomabs(const Arg *);
static void zoomreset(const Arg *);

/* config.h for applying patches and the configuration. */
#include "config.h"

/* config.h array lengths */
size_t colornamelen = LEN(colorname);
size_t mshortcutslen = LEN(mshortcuts);
size_t shortcutslen = LEN(shortcuts);
size_t selmaskslen = LEN(selmasks);
size_t keyslen = LEN(key);
size_t mappedkeyslen = LEN(mappedkeys);

/* XEMBED messages */
#define XEMBED_FOCUS_IN  4
#define XEMBED_FOCUS_OUT 5


@@ 189,6 208,24 @@ static char *opt_name  = NULL;
static char *opt_title = NULL;

void
clipcopy(const Arg *dummy)
{
	xclipcopy();
}

void
clippaste(const Arg *dummy)
{
	xclippaste();
}

void
selpaste(const Arg *dummy)
{
	xselpaste();
}

void
zoom(const Arg *arg)
{
	Arg larg;