| slackline.h - lchat - A line oriented chat front end for ii. | |
| git clone git://git.suckless.org/lchat | |
| Log | |
| Files | |
| Refs | |
| 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 |