radare2/libr/line/TODO

61 lines
1.6 KiB
Plaintext
Raw Normal View History

* 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]
/<tab> 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);