Introduction
Introduction Statistics Contact Development Disclaimer Help
Fix command key handling. - sam - An updated version of the sam text editor.
git clone git://vernunftzentrum.de/sam.git
Log
Files
Refs
LICENSE
---
commit 7776eb1dd3c6958ae4f1b31b1b1c10cc66e8c8ac
parent acd47eb278b12d22ba95ee1b190f2e0d2f3112a0
Author: Rob King <[email protected]>
Date: Thu, 11 Aug 2016 13:04:17 -0500
Fix command key handling.
Diffstat:
config.h | 3 +--
samterm/main.c | 136 +++++++++++++++----------------
2 files changed, 65 insertions(+), 74 deletions(-)
---
diff --git a/config.h b/config.h
@@ -12,8 +12,7 @@
#define USE64BITS 1
/* Command key definitions. These should generally be ASCII control codes.
- * They should be unique. Set them to (still unique) negative values to
- * disable them.
+ * Define them to 0 to disable a key.
*/
#define LINEUP 0x05 /* Ctrl-E */
#define LINEDOWN 0x18 /* Ctrl-X */
diff --git a/samterm/main.c b/samterm/main.c
@@ -560,78 +560,70 @@ type(Flayer *l, int res) /* what a bloody mess thi…
outTsll(Torigin, t->tag, l->origin, l->f.maxlines+1);
/* backspacing immediately after outcmd(): sorry */
} else if (moving){
- switch(c){
- case CHARLEFT: /* ctrl-s */
- flsetselect(l, a, a);
- flushtyping(0);
- if (a > 0)
- a--;
- flsetselect(l, a, a);
- center(l, a);
- break;
-
- case CHARRIGHT: /* ctrl-d */
- flsetselect(l, a, a);
- flushtyping(0);
- if (a < t->rasp.nrunes)
- a++;
- flsetselect(l, a, a);
- center(l, a);
- break;
-
- case LINEUP: /* ctrl-e */
- flsetselect(l, a, a);
- flushtyping(1);
- if (a > 0){
- long n0, n1, count = 0;
- while (a > 0 && raspc(&t->rasp, a - 1) != …
- a--;
- count++;
- }
- if (a > 0){
- n1 = a;
- a--;
- while (a > 0 && raspc(&t->rasp, a - 1)…
- a--;
-
- n0 = a;
- a = (n0 + count >= n1) ? n1 - 1 : n0 +…
- flsetselect(l, a, a);
- center(l, a);
- }
- }
- break;
-
- case LINEDOWN: /* ctrl-x */
- flsetselect(l, a, a);
- flushtyping(1);
- if (a < t->rasp.nrunes){
- long p0, count = 0;
-
- p0 = a;
- while (a > 0 && raspc(&t->rasp, a - 1)…
- a--;
- count++;
- }
-
- a = p0;
- while (a < t->rasp.nrunes && raspc(&t-…
- a++;
-
- if (a < t->rasp.nrunes){
- a++;
- while (a < t->rasp.nru…
- a++;
- count--;
- }
- if (a != p0){
- flsetselect(l, a, a);
- center(l, a);
- }
- }
- }
- break;
- }
+ if (c == CHARLEFT){
+ flsetselect(l, a, a);
+ flushtyping(0);
+ if (a > 0)
+ a--;
+ flsetselect(l, a, a);
+ center(l, a);
+ } else if (c == CHARRIGHT){
+ flsetselect(l, a, a);
+ flushtyping(0);
+ if (a < t->rasp.nrunes)
+ a++;
+ flsetselect(l, a, a);
+ center(l, a);
+ } else if (c == LINEUP){
+ flsetselect(l, a, a);
+ flushtyping(1);
+ if (a > 0){
+ long n0, n1, count = 0;
+ while (a > 0 && raspc(&t->rasp, a - 1) != '\n'){
+ a--;
+ count++;
+ }
+ if (a > 0){
+ n1 = a;
+ a--;
+ while (a > 0 && raspc(&t->rasp, a - 1) != '\n')
+ a--;
+
+ n0 = a;
+ a = (n0 + count >= n1) ? n1 - 1 : n0 + count;
+ flsetselect(l, a, a);
+ center(l, a);
+ }
+ }
+ } else if (c == LINEDOWN){
+ flsetselect(l, a, a);
+ flushtyping(1);
+ if (a < t->rasp.nrunes){
+ long p0, count = 0;
+
+ p0 = a;
+ while (a > 0 && raspc(&t->rasp, a - 1) != '\n'){
+ a--;
+ count++;
+ }
+
+ a = p0;
+ while (a < t->rasp.nrunes && raspc(&t->rasp, a) != '\n')
+ a++;
+
+ if (a < t->rasp.nrunes){
+ a++;
+ while (a < t->rasp.nrunes && count > 0 && raspc(&t->rasp, …
+ a++;
+ count--;
+ }
+ if (a != p0){
+ flsetselect(l, a, a);
+ center(l, a);
+ }
+ }
+ }
+ }
}else if(backspacing && !lock){
if(l->f.p0>0 && a>0){
switch(c){
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.