Créer un REPL avec auto-complétion et coloration syntaxique

… parce que curses ça va 5min

Le problème exposé dans ce sujet a été résolu.

Salut,

Comme vous avez peut-être vu dans la catégorie « Vos projets », je suis en train d'écrire un shell. J'aimerais implémenter une coloration syntaxique et une auto-complétion, mais si je reste avec les fonction basiques d'entrée/sortie de Python, à savoir input et print, je ne peux pas.

En effet, je ne peux pas colorer l'entrée utilisateur parce que je dois attendre qu'il tape Entrée. Et je peux pas implémenter un système d'auto-complétion parce que je ne peux ni détecter une tabulation, ni afficher du texte pendant l'entrée utilisateur.

Du coup, je me suis tourné vers un truc plus bas niveau, avec curses, et je recode donc depuis 3j toutes les fonctionnalités basiques d'une console digne de ce nom (prompt, curseur, historique des entrées, coloration au format ANSI, line-wrapping, etc…). Cependant, ça prend pas mal de temps et d'énergie pour quelque chose qui existe forcément.

Je me tourne donc vers vous parce que je ne trouve pas de librairie qui répond à toutes mes attentes.

Merci d'avance,

felko

PS: J'ai déjà regardé rapidement urwid, mais ça me paraît un peu trop lourd pour ce que je veux faire…

Salut,

  • J'avais pas vu prompt_toolkit, je pensais que c'était réservé à ptpython, je vais explorer de ce côté, merci beaucoup :)

  • cmd ne gère pas la coloration, et je ne peux toujours pas afficher la complétion en direct, comme fish le fait:

  • readline: même problème cmd

Edit: merci tleb

+0 -0

Je sais que bpython utilise curses, readline et Pygments pour fournir un shell interactif qui supporte l'autocompletion à la volée et la coloration syntaxique. Ça vaut peut-être le coup de regarder sous le capot.

+0 -0

Je sais que bpython utilise curses, readline et Pygments pour fournir un shell interactif qui supporte l'autocompletion à la volée et la coloration syntaxique. Ça vaut peut-être le coup de regarder sous le capot.

nohar

D'après ce que j'avais vu, bpython utilisait urwid, mais peut être que ça utilise aussi curses (de toute façon urwid est basé sur curses): https://github.com/bpython/bpython/blob/master/bpython/urwid.py

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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