misc st patches and other things
This commit is contained in:
parent
72d0d47817
commit
3b0804dde2
6
config.h
6
config.h
|
@ -1,8 +1,6 @@
|
|||
/* See LICENSE file for copyright and license details. */
|
||||
|
||||
/*
|
||||
* appearance
|
||||
*
|
||||
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
|
||||
*/
|
||||
static char *font = "Fantasque Sans Mono:pixelsize=14:antialias=true:autohint=true";
|
||||
|
@ -190,8 +188,8 @@ static Shortcut shortcuts[] = {
|
|||
{ XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} },
|
||||
{ MODKEY, XK_h, zoom, {.f = +1} },
|
||||
{ MODKEY, XK_l, zoom, {.f = -1} },
|
||||
{ MODKEY, XK_C, clipcopy, {.i = 0} },
|
||||
{ MODKEY, XK_V, clippaste, {.i = 0} },
|
||||
{ MODKEY, XK_c, clipcopy, {.i = 0} },
|
||||
{ MODKEY, XK_v, clippaste, {.i = 0} },
|
||||
{ MODKEY, XK_k, kscrollup, {.i = -1} },
|
||||
{ MODKEY, XK_j, kscrolldown, {.i = -1} },
|
||||
};
|
||||
|
|
36
st.c
36
st.c
|
@ -1870,6 +1870,33 @@ csihandle(void)
|
|||
goto unknown;
|
||||
}
|
||||
break;
|
||||
case 't': /* title stack operations */
|
||||
switch (csiescseq.arg[0]) {
|
||||
case 22: /* pust current title on stack */
|
||||
switch (csiescseq.arg[1]) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
xpushtitle();
|
||||
break;
|
||||
default:
|
||||
goto unknown;
|
||||
}
|
||||
break;
|
||||
case 23: /* pop last title from stack */
|
||||
switch (csiescseq.arg[1]) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
xsettitle(NULL, 1);
|
||||
break;
|
||||
default:
|
||||
goto unknown;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
goto unknown;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1948,7 +1975,7 @@ strhandle(void)
|
|||
switch (par) {
|
||||
case 0:
|
||||
if (narg > 1) {
|
||||
xsettitle(strescseq.args[1]);
|
||||
xsettitle(strescseq.args[1], 0);
|
||||
xseticontitle(strescseq.args[1]);
|
||||
}
|
||||
return;
|
||||
|
@ -1958,7 +1985,7 @@ strhandle(void)
|
|||
return;
|
||||
case 2:
|
||||
if (narg > 1)
|
||||
xsettitle(strescseq.args[1]);
|
||||
xsettitle(strescseq.args[1], 0);
|
||||
return;
|
||||
case 52:
|
||||
if (narg > 2 && allowwindowops) {
|
||||
|
@ -2015,7 +2042,7 @@ strhandle(void)
|
|||
}
|
||||
break;
|
||||
case 'k': /* old title set compatibility */
|
||||
xsettitle(strescseq.args[0]);
|
||||
xsettitle(strescseq.args[0], 0);
|
||||
return;
|
||||
case 'P': /* DCS -- Device Control String */
|
||||
case '_': /* APC -- Application Program Command */
|
||||
|
@ -2440,6 +2467,7 @@ eschandle(uchar ascii)
|
|||
break;
|
||||
case 'c': /* RIS -- Reset to initial state */
|
||||
treset();
|
||||
xfreetitlestack();
|
||||
resettitle();
|
||||
xloadcols();
|
||||
break;
|
||||
|
@ -2734,7 +2762,7 @@ tresize(int col, int row)
|
|||
void
|
||||
resettitle(void)
|
||||
{
|
||||
xsettitle(NULL);
|
||||
xsettitle(NULL, 0);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
4
st.info
4
st.info
|
@ -161,7 +161,7 @@ st-mono| simpleterm monocolor,
|
|||
rin=\E[%p1%dT,
|
||||
ritm=\E[23m,
|
||||
rmacs=\E(B,
|
||||
rmcup=\E[?1049l,
|
||||
rmcup=\E[?1049l\E[23;0;0t,
|
||||
rmir=\E[4l,
|
||||
rmkx=\E[?1l\E>,
|
||||
rmso=\E[27m,
|
||||
|
@ -172,7 +172,7 @@ st-mono| simpleterm monocolor,
|
|||
sitm=\E[3m,
|
||||
sgr0=\E[0m,
|
||||
smacs=\E(0,
|
||||
smcup=\E[?1049h,
|
||||
smcup=\E[?1049h\E[22;0;0t,
|
||||
smir=\E[4h,
|
||||
smkx=\E[?1h\E=,
|
||||
smso=\E[7m,
|
||||
|
|
4
win.h
4
win.h
|
@ -32,7 +32,9 @@ void xloadcols(void);
|
|||
int xsetcolorname(int, const char *);
|
||||
int xgetcolor(int, unsigned char *, unsigned char *, unsigned char *);
|
||||
void xseticontitle(char *);
|
||||
void xsettitle(char *);
|
||||
void xfreetitlestack(void);
|
||||
void xsettitle(char *, int);
|
||||
void xpushtitle(void);
|
||||
int xsetcursor(int);
|
||||
void xsetmode(int, unsigned int);
|
||||
void xsetpointermotion(int);
|
||||
|
|
41
x.c
41
x.c
|
@ -63,6 +63,9 @@ static void ttysend(const Arg *);
|
|||
/* config.h for applying patches and the configuration. */
|
||||
#include "config.h"
|
||||
|
||||
/* size of title stack */
|
||||
#define TITLESTACKSIZE 8
|
||||
|
||||
/* XEMBED messages */
|
||||
#define XEMBED_FOCUS_IN 4
|
||||
#define XEMBED_FOCUS_OUT 5
|
||||
|
@ -220,6 +223,8 @@ static DC dc;
|
|||
static XWindow xw;
|
||||
static XSelection xsel;
|
||||
static TermWindow win;
|
||||
static int tstki; /* title stack index */
|
||||
static char *titlestack[TITLESTACKSIZE]; /* title stack */
|
||||
|
||||
/* Font Ring Cache */
|
||||
enum {
|
||||
|
@ -1626,10 +1631,30 @@ xseticontitle(char *p)
|
|||
}
|
||||
|
||||
void
|
||||
xsettitle(char *p)
|
||||
xfreetitlestack(void)
|
||||
{
|
||||
XTextProperty prop;
|
||||
DEFAULT(p, opt_title);
|
||||
for (int i = 0; i < LEN(titlestack); i++) {
|
||||
free(titlestack[i]);
|
||||
titlestack[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
xsettitle(char *p, int pop)
|
||||
{
|
||||
XTextProperty prop;
|
||||
|
||||
free(titlestack[tstki]);
|
||||
if (pop) {
|
||||
titlestack[tstki] = NULL;
|
||||
tstki = (tstki - 1 + TITLESTACKSIZE) % TITLESTACKSIZE;
|
||||
p = titlestack[tstki] ? titlestack[tstki] : opt_title;
|
||||
} else if (p) {
|
||||
titlestack[tstki] = xstrdup(p);
|
||||
} else {
|
||||
titlestack[tstki] = NULL;
|
||||
p = opt_title;
|
||||
}
|
||||
|
||||
if (Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle,
|
||||
&prop) != Success)
|
||||
|
@ -1639,6 +1664,16 @@ xsettitle(char *p)
|
|||
XFree(prop.value);
|
||||
}
|
||||
|
||||
void
|
||||
xpushtitle(void)
|
||||
{
|
||||
int tstkin = (tstki + 1) % TITLESTACKSIZE;
|
||||
|
||||
free(titlestack[tstkin]);
|
||||
titlestack[tstkin] = titlestack[tstki] ? xstrdup(titlestack[tstki]) : NULL;
|
||||
tstki = tstkin;
|
||||
}
|
||||
|
||||
int
|
||||
xstartdraw(void)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue