From 36efe9413da7656e6c7436824d11fb61dc9e8e8d Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Fri, 9 Mar 2018 14:23:44 +0000 Subject: [PATCH] vile: hook into build Until we get rid of curses it's a bit large --- Applications/util/Makefile.6809 | 9 ++++++- Applications/util/Makefile.z80 | 4 +++ Applications/util/vile.c | 43 ++++++++++++++++++++++++++++++--- 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/Applications/util/Makefile.6809 b/Applications/util/Makefile.6809 index 4b3c1581..94eb18f1 100644 --- a/Applications/util/Makefile.6809 +++ b/Applications/util/Makefile.6809 @@ -118,18 +118,22 @@ SRCTC = tget.c \ tchelp.c \ marksman.c +SRCCURSES = vile.c + SKIPPED = OBJS = $(SRCS:.c=.o) OBJSNS = $(SRCSNS:.c=.o) OBJTC = $(SRCTC:.c=.o) +OBJCURSES = $(SRCCURSES:.c=.o) APPS = $(OBJS:.o=) APPSNS = $(OBJSNS:.o=) APPTC = $(OBJTC:.o=) +APPCURSES = $(OBJCURSES:.o=) -all: $(APPS) $(APPSNS) $(APPTC) size.report +all: $(APPS) $(APPSNS) $(APPTC) $(APPCURSES) size.report $(APPS): $(CRT0) $(APPSNS): $(CRT0NS) @@ -140,6 +144,9 @@ $(APPS) $(APPSNS): %: %.o $(APPTC): %: %.o $(LINKER) -o $@ $(LINKER_OPT) $(CRT0) -ltermcap6809 $^ +$(APPCURSES): %: %.o + $(LINKER) -o $@ $(LINKER_OPT) $(CRT0) -lcurses6809 -ltermcap6809 $^ + size.report: $(APPS) $(APPSNS) $(APPTC) ls -l $^ > $@ diff --git a/Applications/util/Makefile.z80 b/Applications/util/Makefile.z80 index b3e0fcc3..be6d0599 100644 --- a/Applications/util/Makefile.z80 +++ b/Applications/util/Makefile.z80 @@ -105,6 +105,7 @@ SRCS = banner.c \ uptime.c \ uud.c \ uue.c \ + vile.c \ wc.c \ which.c \ who.c \ @@ -144,6 +145,9 @@ tchelp: tchelp.rel tget: tget.rel $(FCC) $(PLATFORM) $(OPTS) $< -o $@ -ltermcap +vile: vile.rel + $(FCC) $(PLATFORM) $(OPTS) $< -o $@ -lcurses -ltermcap + %: %.rel $(FCC) $(PLATFORM) $(OPTS) $< -o $@ diff --git a/Applications/util/vile.c b/Applications/util/vile.c index 0d70ea3c..963e3497 100644 --- a/Applications/util/vile.c +++ b/Applications/util/vile.c @@ -31,17 +31,20 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include #include #include #include +#include #include +#include #ifndef BUF #define BUF 16384 #endif /* BUF */ #ifndef HUP -#define HUP "ae.hup" +#define HUP "vile.hup" #endif /* HUP */ typedef struct keytable_t { @@ -154,6 +157,7 @@ int prevline(int); int save(char *); char *ptr(int); +void warning(const char *); void display(void); void movegap(void); int insertch(char); @@ -196,15 +200,20 @@ int join(void); int eword(void); int findleft(void); int findright(void); +int zz(void); #undef CTRL #define CTRL(x) ((x) & 0x1f) keytable_t modeless[] = { +#ifdef KEY_LEFT { KEY_LEFT, 0, left }, { KEY_RIGHT, 0, right }, { KEY_DOWN, 0, down }, { KEY_UP, 0, up }, + { KEY_BACKSPACE, 0, backsp }, + { KEY_DC, 0, delete }, +#endif { CTRL('w'), 0, wleft }, { CTRL('e'), 0, wright }, { CTRL('n'), 0, pgdown }, @@ -213,9 +222,7 @@ keytable_t modeless[] = { { CTRL('d'), NORPT, lnend }, { CTRL('t'), NORPT, top }, { CTRL('b'), NORPT, bottom }, - { KEY_BACKSPACE, 0, backsp }, { '\b', 0, backsp }, - { KEY_DC, 0, delete }, { CTRL('f'), NORPT, file }, { CTRL('r'), NORPT, redraw }, { CTRL('\\'), NORPT, quit }, @@ -258,10 +265,12 @@ keytable_t modeless[] = { */ keytable_t modual[] = { +#ifdef KEY_LEFT { KEY_LEFT, 0, left }, { KEY_RIGHT, 0, right }, { KEY_DOWN, 0, down }, { KEY_UP, 0, up }, +#endif { 27, NORPT, noop }, { 'h', 0, left }, { '\b', 0, left }, @@ -291,7 +300,7 @@ keytable_t modual[] = { { 'W', NORPT, file }, { 'R', NORPT, redraw }, { 'Q', NORPT, quit }, - { 'Z', NORPT, flip }, + { 'Z', NORPT, zz }, { 'd', 0, delete_line }, /* Should be dd */ { 'a', NORPT, append_mode }, { 'A', NORPT, append_end }, @@ -712,6 +721,20 @@ int save(char *fn) return (ok); } +int zz(void) +{ + int c = getch(); + if (c != 'Z' && c != 'z') { + beep(); + return 0; + } + /* Check if changed ? */ + if (!save(filename)) + warning(strerror(errno)); + else + exit(0); +} + int flip(void) { table = table == modual ? modeless : modual; @@ -723,6 +746,18 @@ int noop(void) return 0; } +void warning(const char *p) +{ + /* This sort of assumes the error fits one line */ + /* Ideally inverse video etc and clr to end */ + mvaddstr(LINES-1, 0, p); + clrtoeol(); + refresh(); + beep(); + getch(); + display(); +} + void display(void) { char *p; -- 2.34.1