add config.h - gramscii - A simple editor for ASCII box-and-arrow charts | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit 1be4c30c5e1526484665c382d784e0de9fe9d8de | |
parent 3a8eeffc5b3ef3d23984913d841e3a0aa5f68e16 | |
Author: KatolaZ <[email protected]> | |
Date: Wed, 24 Jul 2019 12:34:29 +0100 | |
add config.h | |
Diffstat: | |
M Makefile | 3 ++- | |
M TODO | 4 ++-- | |
A config.h | 16 ++++++++++++++++ | |
M gramscii.c | 20 ++++++++------------ | |
4 files changed, 28 insertions(+), 15 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
@@ -3,6 +3,7 @@ | |
include config.mk | |
SRC = gramscii.c | |
+INCLUDES = config.h | |
all: options gramscii | |
@@ -14,6 +15,6 @@ options: | |
@echo "-+-+-+-+-+-+-+-+-+-+-" | |
-gramscii: | |
+gramscii: $(SRC) $(INCLUDES) | |
$(CC) $(CFLAGS) -o $@ $(SRC) | |
diff --git a/TODO b/TODO | |
@@ -1,5 +1,4 @@ | |
-+ optimize redraws (i.e., avoid to redraw if possible) | |
-- move configs in config.h | |
++ optimize redraws (redraw only the modified rectangle) | |
- change screen management (i.e., dynamic array of lines) | |
- add action multiplier (e.g., "7h" moves left by 7 cols) | |
- add scripting mode option ("-s"?) | |
@@ -25,6 +24,7 @@ | |
- catch SIGWINCH and react appropriately (after scroll is | |
enabled) | |
- auto-arrow 'A' (automatic end-char) | |
+* move configs in config.h | |
* get screen geometry | |
* allow the use of [ENTER] to confirm arrow, boxes (useful | |
for scripting) | |
diff --git a/config.h b/config.h | |
@@ -0,0 +1,16 @@ | |
+/* Config options */ | |
+ | |
+/** MARKERS -- the first character is the default one **/ | |
+/* markers for horizontal lines */ | |
+char hlines[] = {"-~=#*@._ "}; | |
+/* markers for vertical lines */ | |
+char vlines[] = {"|H#*@:;i "}; | |
+/* markers for corners */ | |
+char corners[] = {"+'H#*@.\"`"}; | |
+/* markers for arrow start points */ | |
+char st_marks[] = {"+o-|<>^v*"}; | |
+/* markers for arrow endpoints */ | |
+char end_marks[] = {">+o-|<^v*"}; | |
+ | |
+/** LONG_STEP (movements through uppercase HJKL) **/ | |
+#define LONG_STEP 5 | |
diff --git a/gramscii.c b/gramscii.c | |
@@ -12,6 +12,8 @@ | |
#include <string.h> | |
#include <sys/ioctl.h> | |
+#include "config.h" | |
+ | |
#define MOVE 0x00 | |
#define BOX 0x01 | |
#define ARROW 0x02 | |
@@ -40,7 +42,6 @@ | |
#define ARR_U '^' | |
#define ARR_D 'v' | |
- | |
#define HOME 0x01 | |
#define END 0x02 | |
#define MIDDLE 0x04 | |
@@ -51,7 +52,7 @@ | |
#define MIN(x,y) (x) < (y) ? (x) : (y) | |
#define MAX(x,y) (x) > (y) ? (x) : (y) | |
-#define DEBUG 1 | |
+/** #define DEBUG 1 **/ | |
char **screen; | |
int WIDTH, HEIGHT; | |
@@ -64,11 +65,6 @@ int step; | |
int force_new; | |
char cursor; | |
char corner; | |
-char hlines[] = {"-~=#@._ "}; | |
-char vlines[] = {"|H#@:;i "}; | |
-char corners[] = {"+'H#@.\""}; | |
-char st_marks[] = {"+o-|<>^v"}; | |
-char end_marks[] = {">+o-|<^v"}; | |
int hlines_sz= sizeof(hlines) -1; | |
int vlines_sz= sizeof(vlines) -1; | |
@@ -308,22 +304,22 @@ void handle_goto(){ | |
int move_around(char c){ | |
switch(c){ | |
- case 'H': step = 5;/** FALLTHROUGH **/ | |
+ case 'H': step = LONG_STEP;/** FALLTHROUGH **/ | |
case 'h': | |
dir = DIR_L; | |
x -= step; | |
break; | |
- case 'J': step = 5;/** FALLTHROUGH **/ | |
+ case 'J': step = LONG_STEP;/** FALLTHROUGH **/ | |
case 'j': | |
dir = DIR_D; | |
y += step; | |
break; | |
- case 'K': step = 5;/** FALLTHROUGH **/ | |
+ case 'K': step = LONG_STEP;/** FALLTHROUGH **/ | |
case 'k': | |
dir = DIR_U; | |
y -= step; | |
break; | |
- case 'L': step = 5;/** FALLTHROUGH **/ | |
+ case 'L': step = LONG_STEP;/** FALLTHROUGH **/ | |
case 'l': | |
dir = DIR_R; | |
x += step; | |
@@ -687,7 +683,7 @@ void load_file(){ | |
void new_file(){ | |
check_modified(); | |
erase_screen(); | |
- go_to(MIDDLE); | |
+ go_to(HOME); | |
redraw(); | |
fname[0] = '\0'; | |
modified=0; |