# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 65976c1a29f2945c3cfb6af74cd6440cf193021d
    parent 32d3b1d00f66eda4f5446f3b32cabed2c9a77a40
    Author: Devin J. Pohly <djpohly@gmail.com>
    Date:   Tue, 17 Oct 2017 15:21:04 -0500

    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>

    Diffstat:
    Mconfig.def.h | 73++++++++++++++++++++++++++++++++++++-------------------------------------
    Mst.c | 47++++-------------------------------------------
    Mst.h | 50++++++++++++++------------------------------------
    Mwin.h | 3---
    Mx.c | 37+++++++++++++++++++++++++++++++++++++

    5 files changed, 91 insertions(+), 119 deletions(-)
    diff --git a/config.def.h b/config.def.h
    @@ -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{|}~";
    -
    diff --git a/st.c b/st.c
    @@ -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();
    diff --git a/st.h b/st.h
    @@ -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[];
    diff --git a/win.h b/win.h
    @@ -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 *);
    diff --git a/x.c b/x.c
    @@ -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;