* Deprecate argc . only argv needed * Remove all label-related stuff (OW YEAH) * Define API outside as r_line_... in ../include/ Readline compatibility ====================== * add support for readline-like callbacks - NO! they are ugly! we have our own callbacks - Make dietline fully compatible with readline (WHY?) - Optionally link against libreadline (NO PLZ) Design: ======= r_line API - N-level commands autocompletion - autocompletion methods: - from an array of strings - this array of strings can be generated by a callback that identifies the word number - we can just assign a function pointer to the tree of keywords - autocompletion function is defined by first word and Nword. - this is: ls [file] ls -[flags] [file] x @ [num] / files if word_count==0 && word[0]=='/': return autocomplete_filename RLineCompletion* level0 = { { }, {}, NULL }; typedef int (*RLineCompletion)(RLine *line); #define R_LINE_NCOMP 8 typedef struct r_line_t { char *prompt; int word; RLineCompletion *root; RLineCompletion *child[R_LINE_NCOMP]; /* 8 nested levels of completion */ } RLine; r_line_instance.root (&r_line_instance); r_line_instance.child[0] (); level0 completion level1 completion is defined by level0 word we need a stack of completion methods defined by each completion method - this can be done by a statik array of funptr --- // TODO : FULL READLINE COMPATIBILITY // rl_attempted_completion_function = rad_autocompletion; // char **rad_autocompletion(const char *text, int start, int end) // return matches = rl_completion_matches (text, rad_offset_matches);