slackline.h - 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
---
slackline.h (849B)
---
1 #ifndef SLACKLINE_H
2 #define SLACKLINE_H
3
4 enum esc_seq {ESC_NONE, ESC, ESC_BRACKET, ESC_BRACKET_NUM};
5 enum mode {SL_DEFAULT, SL_EMACS, SL_VI};
6
7 struct slackline {
8 /* buffer */
9 char *buf;
10 char *ptr; /* ptr of cursor */
11 char *last; /* ptr of last byte of string */
12 size_t bufsize;
13
14 /* byte positions */
15 size_t bcur; /* first byte of the rune of the cursor */
16 size_t blen; /* amount of bytes of current string */
17
18 /* rune positions */
19 size_t rcur; /* cursor */
20 size_t rlen; /* amount of runes */
21
22 enum esc_seq esc;
23 char nummod;
24
25 /* UTF-8 handling */
26 char ubuf[6]; /* UTF-8 buffer */
27 size_t ubuf_len;
28
29 enum mode mode;
30 };
31
32 struct slackline *sl_init(void);
33 void sl_free(struct slackline *sl);
34 void sl_reset(struct slackline *sl);
35 int sl_keystroke(struct slackline *sl, int key);
36 void sl_mode(struct slackline *sl, enum mode mode);
37
38 #endif