Création shell, autocompletion, capture de la touche <TAB>

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

J'essaie de créer un shell en Rust, et j'aimerais ajoute l'autocompletion. Si jamais il existe un programme comme rlwrap qui permet de le faire, ça me va ! J'aimerais capturer la touche <TAB> en ligne de commande et exécuter une fonction d'autocompletion. J'ai trouvé notamment getch() de ncurses, cependant faire un initscr(); efface l'écran. J'aimerais donc lier l'évènement touche <TAB> appuyée à une certaine fonction. Si jamais j'arrive à trouver un getchar bloquant qui ne demande pas d'entrée, je pourrais créer un thread afin de récupérer la touche en plus du read_line que je fais dans le thread principal.

Comment résoudre mon problème ?

Merci.

+0 -0

bash utilise GNU Readline qui s'occupe de l'auto-completion.

ache.one                                                                                   🦊

+0 -0
Auteur du sujet

Tu peux m'en dire plus ? J'ai essayé d'utiliser du code C ou la library rust readline ou encore rustyline mais j'ai du mal à trouver un code qui compile qui gère l'autocompletion. J'aimerais également pouvoir paramètrer cette autocompletion.

+0 -0

Voila un petit shell : https://gitlab.univ-nantes.fr/ache/kalash

Dans le fichier https://gitlab.univ-nantes.fr/ache/kalash/blob/master/core.c

Tu trouveras le callback de readline pour l'auto-completion.

Le tout est un mini-shell … Pour un TP. J'améliorerais le shell si j'ai le temps.

Comme bash, c'est du C par du Rust.

Édité par ache

ache.one                                                                                   🦊

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte