Mon expérience personnelle opinion sur ce point est qu'un outil de type clippy est très difficile à manipuler. Comme les gens l'ont mentionné plus haut, je pense que la partie la plus difficile est de comprendre les intentions des utilisateurs lorsqu'ils écrivent du texte. Si vous mettez cela de côté et que vous avez un moyen clair d'ajouter de la sémantique à vos intentions, votre vie pourrait devenir beaucoup plus facile !
Ainsi, au lieu de suggestions en direct, je pense que, dans un premier temps, un flux de travail entrée-sortie-séquence pourrait être plus facile à tester et à obtenir des résultats.
Je pensais programmer un front-end vi généralisé pour l'appliquer à toutes sortes d'éditeurs/boîtes de texte (ex : pidgin).
L'un des résultats de ce processus de réflexion est que le langage d'entrée doit être quelque peu régulier (ou sans contexte au maximum). Ainsi, l'entrée d'une instance vi peut être représentée par une machine à états. Ceci n'est pas entièrement prouvé, mais plutôt une vague supposition ! Il est clair que plus d'efforts doivent être faits pour savoir si les commandes de répétition (par exemple : 13j) ne pourraient pas amener le langage à des grammaires sans contexte.
Si le langage d'entrée vi est régulier, vous aurez peut-être la possibilité d'utiliser le contrôle de modèle limité pour calculer une séquence de transitions d'état dans ce graphe d'état qui aboutit à la sortie requise. Je pense qu'actuellement, les moyens les plus efficaces de faire du model-checking borné sont les contre-exemples et la réduction du problème à une instance sat (il suffit de chercher sur Google).
J'aimerais connaître votre opinion à ce sujet, alors n'hésitez pas à commenter et, s'il y a quelque chose de plus, nous pourrons essayer d'en discuter.
edit
Je pense que vous pouvez essayer de faire le travail d'optimisation standard que font les compilateurs.
mais pas spécialement les macros q[a-z]
@[a-z]
pourrait être difficile à trouver et à remplacer. Je suppose qu'il s'agit de la NP complète.