utiliser readline() pour l'achèvement
J'ai une question à propos de la Bibliothèque Readline.
Je veux savoir si Readline pouvez compléter automatiquement le nom de fichier à partir de répertoires dans un programme C ?
J'ai cherché et vu seulement le nom de la commande d'achèvement.
merci d'avance.
EDIT: j'ai copier le nom de fichier dans un tableau.
Ces fonctions que j'utilise :
dans le fichier rline.c, char *command_generator,char **tab_completion (const char *texte, int start, int end),nulle initialize_readline (). Je pense que je dois utiliser des char * filename_completion_function (char *texte, int etat) ? Quand je tape sur la touche "tab", il demande rien, bind() ne semblent pas être utilisé. Savez-vous si j'ai droit d'utilisation des fonctions ?
merci !!
OriginalL'auteur lilawood | 2011-07-17
Vous devez vous connecter pour publier un commentaire.
Nom de fichier d'achèvement est une fonctionnalité intégrée de readline, vous n'avez pas besoin de renseigner le nom de fichier des listes etc. Ici avec readline 6.1 le programme suivant permet de nom de fichier achèvement par défaut.
Il y a des façons de personnaliser ce mécanisme, par exemple, vous pouvez spécifier certaines fonctions telles que le
rl_filename_quoting_function
etrl_filename_dequoting_function
pour aider readline fournir le nom de fichier de devis pour votre application.Je pense que vous devez indiquer votre version de readline si cela ne fonctionne pas pour vous.
/etc/inputrc
contenu doit être analysé. Avez-vous desbash
, qui utilise readline? Le nom de fichier de l'achèvement des travaux il comme prévu?De toute façon,
info readline
est une très bonne documentation fournie vous pouvez utiliserinfo
lui-même 🙂 Si non, regardez Programmation avec GNU Readline.OriginalL'auteur unkulunkulu
À utiliser la bibliothèque readline spécifier -lreadline de votre compilateur. L'extrait de code suivant peut être compilé avec
OriginalL'auteur
J'ai été confus au sujet de la readline vous faisiez référence, mais il a été souligné à moi que vous parliez de l'un de l'bibliothèques GNU.
Pour un exemple de cette s'il vous plaît voir Fredrik lien à la bibliothèque GNU Readline.
Pour l'appliquer à vos besoins au lieu de les
string cmd[]
que vous voyez vous avez besoin d'utiliser un tableau de tous les noms de fichier dans le répertoire courant et le reste du code doit être la même.Merci pour cette remarque, j'ai édité dans une référence à Fredrik commentaire qui je viens de voir.
merci! Pour remplir le tableau, si j'utilise system("ls"), il fonctionne ? ou j'utilise une autre fonction C ?
ls peut fonctionner, vous pouvez également utiliser un DIR *, puis ajouter le nom des fichiers d'un tableau dynamique, ainsi que par l'obtention de tous les fichiers du répertoire courant.
Non, system("ls") ne sera pas le faire (il doit envoyer le ls de sortie vers stdout). Vous devez lire et comprendre les readline documentation.
OriginalL'auteur Jesus Ramos