ref: 17bbd3c623715b0ebb5c7cf5d2c8a1be0ec0e352
parent: c22df7a04d883e941f4b38c8ac48bd20ee9e0699
author: glenda <glenda@cirno>
date: Thu Apr 3 21:05:30 EDT 2025
add alt-detection, add ctrl-s to save and ctrl-shift-s to saveall
--- a/acme.c
+++ b/acme.c
@@ -410,6 +410,7 @@
if(*s == 'k' || *s == 'K') {
shiftdown = utfrune(s+1, Kshift) != nil;
ctldown = utfrune(s+1, Kctl) != nil;
+ altdown = utfrune(s+1, Kalt) != nil;
free(s);
break;
}
--- a/dat.h
+++ b/dat.h
@@ -559,6 +559,7 @@
Rune *delcmd; /* what command deleted the window. eg, Del, Delete, Delmesg */
int shiftdown;
int ctldown;
+int altdown;
Channel *cplumb; /* chan(Plumbmsg*) */
Channel *cwait; /* chan(Waitmsg) */
--- a/fns.h
+++ b/fns.h
@@ -5,6 +5,7 @@
#define fbufalloc() emalloc(BUFSIZE)
#define fbuffree(x) free(x)
+void putall(Text*, Text*, Text*, int, int, Rune*, int);
void plumblook(Plumbmsg*m);
void plumbshow(Plumbmsg*m);
void putsnarf(void);
--- a/text.c
+++ b/text.c
@@ -705,6 +705,20 @@
if(t->q0 != t->q1)
cut(t, t, nil, TRUE, FALSE, nil, 0);
return;
+ case 0x13: /* ^S: Save file */
+ typecommit(t);
+ if(t->what == Body && t->w) {
+ put(t, nil, nil, XXX, XXX, nil, 0);
+ }
+ return;
+ case 'S': /* Ctl-Shift-s to save all.
+ * there's probably a better way to do this */
+ if(ctldown){
+ typecommit(t);
+ putall(nil, nil, nil, 0, 0, nil, 0);
+ return;
+ }
+ break; /* just insert S */
case 0x16: /* ^V: paste from snarf buffer */
paste(t, t, nil, TRUE, TRUE, nil, 0);
return;
--
⑨