# st

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

| Log | Files | Refs | README | LICENSE

    commit 02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27
    parent 7a4eefe87cb7661c8a77286d05b6c3afb467f806
    Author: Mark Edgar <medgar123@gmail.com>
    Date:   Sat,  5 Oct 2013 11:45:17 +0200

    Simplify Mod1 logic in kpress(), eliminating locals and a memcpy.

    Diffstat:
    Mst.c | 23++++++++++-------------

    1 file changed, 10 insertions(+), 13 deletions(-)
    diff --git a/st.c b/st.c
    @@ -3563,8 +3563,8 @@ void
     kpress(XEvent *ev) {
     	XKeyEvent *e = &ev->xkey;
     	KeySym ksym;
    -	char xstr[31], buf[32], *customkey, *cp = buf;
    -	int len, ret;
    +	char buf[32], *customkey;
    +	int len;
     	long c;
     	Status status;
     	Shortcut *bp;
    @@ -3572,7 +3572,7 @@ kpress(XEvent *ev) {
     	if(IS_SET(MODE_KBDLOCK))
     		return;

    -	len = XmbLookupString(xw.xic, e, xstr, sizeof(xstr), &ksym, &status);
    +	len = XmbLookupString(xw.xic, e, buf, sizeof buf, &ksym, &status);
     	e->state &= ~Mod2Mask;
     	/* 1. shortcuts */
     	for(bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
    @@ -3586,26 +3586,23 @@ kpress(XEvent *ev) {
     	if((customkey = kmap(ksym, e->state))) {
     		len = strlen(customkey);
     		memcpy(buf, customkey, len);
    -	/* 3. hardcoded (overrides X lookup) */
    +	/* 3. composed string from input method */
     	} else {
     		if(len == 0)
     			return;

     		if(len == 1 && e->state & Mod1Mask) {
     			if(IS_SET(MODE_8BIT)) {
    -				if(*xstr < 0177) {
    -					c = *xstr | 0x80;
    -					ret = utf8encode(&c, cp);
    -					cp += ret;
    -					len = 0;
    +				if(*buf < 0177) {
    +					c = *buf | 0x80;
    +					len = utf8encode(&c, buf);
     				}
     			} else {
    -				*cp++ = '\033';
    +				buf[1] = buf[0];
    +				buf[0] = '\033';
    +				len = 2;
     			}
     		}
    -
    -		memcpy(cp, xstr, len);
    -		len = cp - buf + len;
     	}

     	ttywrite(buf, len);