Merge pull request #16 from spewspew/forpull - sam - An updated version of the … | |
git clone git://vernunftzentrum.de/sam.git | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 3f0e640d1eaf110d015506181383979f0b10a230 | |
parent d3d56423183ecfcf6207ca8adb5a59d2950acf39 | |
Author: Rob King <[email protected]> | |
Date: Tue, 30 Aug 2016 16:32:52 -0400 | |
Merge pull request #16 from spewspew/forpull | |
Add beginning of line and end of line movement commands. | |
Diffstat: | |
commands.h.def | 2 ++ | |
include/commands.h | 2 ++ | |
samterm/main.c | 39 +++++++++++++++++++++++++++++-- | |
3 files changed, 41 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/commands.h.def b/commands.h.def | |
@@ -30,6 +30,8 @@ | |
* Ccut - cut text to the snarf buffer | |
* Cexchange - exchange operating system and sam snarf buffers | |
* Cwrite - write the current file to disk | |
+ * Cbol - move to beginning of line | |
+ * Ceol - move to end of line | |
* | |
* The default configuration shipped with sam has the keyboard commands mapped | |
* to the "classic" Unix sam of the 1980s, plus the WordStar Diamond for cursor | |
diff --git a/include/commands.h b/include/commands.h | |
@@ -27,6 +27,8 @@ enum{ | |
Cpaste, | |
Cexchange, | |
Cwrite, | |
+ Ceol, | |
+ Cbol, | |
Cmax | |
}; /* virtual command keystrokes */ | |
diff --git a/samterm/main.c b/samterm/main.c | |
@@ -1,4 +1,4 @@ | |
-//* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
+/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
#include <u.h> | |
#include <libc.h> | |
#include <libg.h> | |
@@ -517,6 +517,39 @@ cmdcharright(Flayer *l, long a, Text *t) | |
} | |
static long | |
+cmdeol(Flayer *l, long a, Text *t) | |
+{ | |
+ flsetselect(l, a, a); | |
+ flushtyping(1); | |
+ while(a < t->rasp.nrunes) | |
+ if(raspc(&t->rasp, a++) == '\n') { | |
+ a--; | |
+ break; | |
+ } | |
+ | |
+ flsetselect(l, a, a); | |
+ center(l, a); | |
+ | |
+ return a; | |
+} | |
+ | |
+static long | |
+cmdbol(Flayer *l, long a, Text *t) | |
+{ | |
+ flsetselect(l, a, a); | |
+ flushtyping(1); | |
+ while(a > 0) | |
+ if(raspc(&t->rasp, --a) == '\n') { | |
+ a++; | |
+ break; | |
+ } | |
+ flsetselect(l, a, a); | |
+ center(l, a); | |
+ | |
+ return a; | |
+} | |
+ | |
+static long | |
cmdlineup(Flayer *l, long a, Text *t) | |
{ | |
flsetselect(l, a, a); | |
@@ -771,7 +804,9 @@ CommandEntry commands[Cmax] ={ | |
[Cdelword] = {cmddelword, 1}, | |
[Cdelbol] = {cmddelbol, 1}, | |
[Cdel] = {cmddel, 1}, | |
- [Cwrite] = {cmdwrite, 1} | |
+ [Cwrite] = {cmdwrite, 1}, | |
+ [Ceol] = {cmdeol, 0}, | |
+ [Cbol] = {cmdbol, 0} | |
}; | |
void |