Hi there,
I've done some light hacking on st, and am attaching 3
little patches as a result. I really like st, by the way,
and am finding it very stable and great for everyday use.
nofinalnewlinesel.patch
This doesn't add a newline to the selection if the next
line isn't selected. This was really annoying me; I'm
delighted to have it fixed :)
printtostderr.patch
There were a couple of error-like messages that were going
to stdout; this sends them to stderr instead.
removeerrkeyprint.patch
This removes the errkey stderr printing of key codes which
don't need to send anything. There's no need for me to get
a message on stderr every time I press shift.
Hope you like them,
Nick
diff -r 7bae6f59e9f6 st.c
--- a/st.c Sun Jan 23 12:30:01 2011 +0100
+++ b/st.c Thu Mar 31 14:17:34 2011 +0100
@@ -420,8 +420,8 @@
memcpy(ptr, term.line[y][x].c, sl);
ptr += sl;
}
- if(ls)
- *ptr = '\n', ptr++;
+ if(ls && y < sel.e.y)
+ *ptr++ = '\n';
}
*ptr = 0;
}
diff -r 7bae6f59e9f6 st.c
--- a/st.c Sun Jan 23 12:30:01 2011 +0100
+++ b/st.c Thu Mar 31 14:20:33 2011 +0100
@@ -935,7 +935,7 @@
switch(escseq.mode) {
default:
unknown:
- printf("erresc: unknown csi ");
+ fprintf(stderr, "erresc: unknown csi ");
csidump();
/* die(""); */
break;
@@ -1207,7 +1207,7 @@
term.c.attr.mode &= ~ATTR_GFX;
break;
default:
- printf("esc unhandled charset: ESC ( %c\n", ascii);
+ fprintf(stderr, "esc unhandled charset: ESC ( %c\n", ascii);
}
term.esc = 0;
} else {
diff -r 7bae6f59e9f6 st.c
--- a/st.c Sun Jan 23 12:30:01 2011 +0100
+++ b/st.c Thu Mar 31 14:21:37 2011 +0100
@@ -1794,8 +1794,7 @@
if(meta && len == 1)
ttywrite("\033", 1);
ttywrite(buf, len);
- } else /* 4. nothing to send */
- fprintf(stderr, "errkey: %d\n", (int)ksym);
+ }
break;
}
}