diff options
author | scratko <m@scratko.xyz> | 2024-06-20 18:38:11 +0300 |
---|---|---|
committer | scratko <m@scratko.xyz> | 2024-06-23 23:25:46 +0300 |
commit | 74c6a747a58b38131534556ab95fa4dd4b514780 (patch) | |
tree | 68dae86f9ee994c2bc13681703a8c69e0e2b5f51 /readline.h | |
parent | 8f4f87eabec13330a2b3a974975053c1e4632a11 (diff) | |
download | shell-74c6a747a58b38131534556ab95fa4dd4b514780.tar.gz shell-74c6a747a58b38131534556ab95fa4dd4b514780.tar.bz2 shell-74c6a747a58b38131534556ab95fa4dd4b514780.zip |
Shell-edit releaseshell-edit
Autocomplete program and file names (tab).
Moving the cursor to edit commands (left and right arrows).
Deleting a character in a command (backspace).
Diffstat (limited to 'readline.h')
-rw-r--r-- | readline.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/readline.h b/readline.h new file mode 100644 index 0000000..b626cae --- /dev/null +++ b/readline.h @@ -0,0 +1,37 @@ +#ifndef READLINE_H_SENTRY +#define READLINE_H_SENTRY + +#include "readline.h" + +/* + * ends with these codes in escape sequence + * for the arrows + */ +enum keys{ + left_arrow = 'D', + right_arrow = 'C', + up_arrow = 'A', + down_arrow = 'B', + none = 0, + unknown_key = -1, + backspace = 127 +}; + +struct readline_type { + char *arr; + int cursor_pos; + int considered_index; + int last_element_index; + int allocation_size; +}; + +void readline_create_array(struct readline_type *readline); +void readline_add_char(struct readline_type *readline, int ch); +void readline_reset_array(struct readline_type *readline); +void readline_clear(struct readline_type *readline); +void readline_print(struct readline_type *readline_type); +enum keys readline_detect_arrow_keys(int ch); +void readline_move_along(struct readline_type *readline, enum keys found_key); +void readline_character_deletion(struct readline_type *readline); + +#endif |