Refactor headers - lchat - A line oriented chat front end for ii.
(HTM) git clone git://git.suckless.org/lchat
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit 19b4d99293ad470c98406b94935565750339b716
(DIR) parent 6e73830497114901db5f864abc76b2964283fa77
(HTM) Author: Tom Schwindl <schwindl@posteo.de>
Date: Thu, 29 Dec 2022 13:02:59 +0100
Refactor headers
slackline_internals.h:
contains common operations for the `slackline` struct not meant to be used
outside of slackline.
slackline.h:
contains the API for slackline. The `slackline` struct may become opaque
in the future.
Diffstat:
M slackline.h | 6 ++++--
A slackline_internals.h | 14 ++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
---
(DIR) diff --git a/slackline.h b/slackline.h
@@ -1,9 +1,8 @@
#ifndef SLACKLIINE_H
#define SLACKLIINE_H
-#include <stdbool.h>
-
enum esc_seq {ESC_NONE, ESC, ESC_BRACKET, ESC_BRACKET_NUM};
+enum mode {SL_DEFAULT, SL_EMACS, SL_VI};
struct slackline {
/* buffer */
@@ -26,11 +25,14 @@ struct slackline {
/* UTF-8 handling */
char ubuf[6]; /* UTF-8 buffer */
size_t ubuf_len;
+
+ enum mode mode;
};
struct slackline *sl_init(void);
void sl_free(struct slackline *sl);
void sl_reset(struct slackline *sl);
int sl_keystroke(struct slackline *sl, int key);
+void sl_mode(struct slackline *sl, enum mode mode);
#endif
(DIR) diff --git a/slackline_internals.h b/slackline_internals.h
@@ -0,0 +1,14 @@
+#ifndef SLACKLINE_INTERNALS_H
+#define SLACKLINE_INTERNALS_H
+
+#include "slackline.h"
+
+enum direction {LEFT, RIGHT, HOME, END};
+
+size_t sl_postobyte(struct slackline *sl, size_t pos);
+char *sl_postoptr(struct slackline *sl, size_t pos);
+void sl_backspace(struct slackline *sl);
+void sl_move(struct slackline *sl, enum direction dir);
+void sl_emacs(struct slackline *sl, int key);
+
+#endif