Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Besoin d'avis sur config pour IDE python

5 réponses
Avatar
mazert
Bonjour,

Je suis retombé amoureux d'Emacs récemment, quand j'ai eu besoin d'avoir
une sorte de mini IDE pour python en console. Partit de rien avec un
"fucking manual" comme compagnon de voyage, depuis une semaine j'essai
d'obtenir quelque chose de correct.

J'utilise les composants suivants.

- Une fenêtre édition (qui communique avec le shell)
- Une fenêtre top-level (shell)
- Le plugin autocomplete
- Le plugin flymake
- Le colorscheme monokai (pas vraiment important)
- Le mode majeur Python.el

Voici ce que ça donne en rendu :
https://img.bi/#/o7XKbNX!qpropLUYVpEPHjrCATyAEciP7SLM1BWDJComLrzZ

Et en fichier de configuration (.emacs) :
https://pastee.org/u3sff

J'ai piqué des idées à droite à gauche et obtenu de l'aide sur IRC, ça
fonctionne assez bien, mais avant de planter l'épée dans le sol en guise
de victoire, pensez vous que des choses puissent être améliorées ou que
certains plugins soient plus appropriés.

Par exemple le plugin autocomplete est bien pour l'emacsLisp mais moyen
pour le python dans un sens où il ne reconnaît pas les noms de méthodes
(juste les fonctions, et sans la doc).

Quand on démarre, le curseur est dans la fenêtre du shell, je voudrais
qu'il reste dans la fenêtre d'édition. Je pensais utiliser (next-window)
mais ça n'a curieusement aucun effet.

Je peux effacer le prompt python (>>>) avec un retour chariot ce qui est
assez étrange, peut on y remédier ?


Merci d'avance pour vos réponses.

5 réponses

Avatar
Pascal J. Bourguignon
mazert writes:

Bonjour,

Je suis retombé amoureux d'Emacs récemment, quand j'ai eu besoin d'avoir
une sorte de mini IDE pour python en console. Partit de rien avec un
"fucking manual" comme compagnon de voyage, depuis une semaine j'essai
d'obtenir quelque chose de correct.

J'utilise les composants suivants.

- Une fenêtre édition (qui communique avec le shell)
- Une fenêtre top-level (shell)
- Le plugin autocomplete
- Le plugin flymake
- Le colorscheme monokai (pas vraiment important)
- Le mode majeur Python.el

Voici ce que ça donne en rendu :
https://img.bi/#/o7XKbNX!qpropLUYVpEPHjrCATyAEciP7SLM1BWDJComLrzZ

Et en fichier de configuration (.emacs) :
https://pastee.org/u3sff

J'ai piqué des idées à droite à gauche et obtenu de l'aide sur IRC, ça
fonctionne assez bien, mais avant de planter l'épée dans le sol en guise
de victoire, pensez vous que des choses puissent être améliorées ou que
certains plugins soient plus appropriés.

Par exemple le plugin autocomplete est bien pour l'emacsLisp mais moyen
pour le python dans un sens où il ne reconnaît pas les noms de méthodes
(juste les fonctions, et sans la doc).

Quand on démarre, le curseur est dans la fenêtre du shell, je voudrais
qu'il reste dans la fenêtre d'édition. Je pensais utiliser (next-window)
mais ça n'a curieusement aucun effet.

Je peux effacer le prompt python (>>>) avec un retour chariot ce qui est
assez étrange, peut on y remédier ?



Oui, c'est possible, en marquant de texte en lecture-seule.

M-x run-python ouvre un buffer dans le mode inferior-python-mode, qui
est un sous-mode de comint-mode.

Alors il devrait être assez facile d'ajouter a filtre de sortie de
comint, pour détecter les invites (en utilisant les variables:
python-shell-prompt-regexp
python-shell-prompt-output-regexp
python-shell-prompt-block-regexp
), et en ajoutant sur le texte correspondant une propriété read-only:

Voir (info "(elisp) Special Properties"), la fonction
set-text-properties, et la variable comint-output-filter-functions.



--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
Avatar
Damien Wyart
Bonjour,

* mazert in fr.comp.applications.emacs:
Je suis retombé amoureux d'Emacs récemment, quand j'ai eu besoin
d'avoir une sorte de mini IDE pour python en console. Partit de rien
avec un "fucking manual" comme compagnon de voyage, depuis une semaine
j'essai d'obtenir quelque chose de correct.

J'utilise les composants suivants.

- Une fenêtre édition (qui communique avec le shell)
- Une fenêtre top-level (shell)
- Le plugin autocomplete
- Le plugin flymake
- Le colorscheme monokai (pas vraiment important)
- Le mode majeur Python.el

Par exemple le plugin autocomplete est bien pour l'emacsLisp mais
moyen pour le python dans un sens où il ne reconnaît pas les noms de
méthodes (juste les fonctions, et sans la doc).



Il y a beaucoup de choix dans le domaine de l'utilisation d'Emacs pour
écrire du code Python (paquets individuels et tout-en-un proposant un
tout assez homogène). Vu tes choix actuels, j'ai l'impression que pas
mal d'options assez reconnues te sont inconnues (ou que tu n'as pas
souhaité les approfondir).

Pour le mode majeur, même s'il est moins connu maintenant, certaines
personnes (j'en fait partie ;-) préfèrent python-mode.el ; tu peux
toujours le tester pour te faire une idée.

Côté complétion, autocomplete seul est limité, je te conseille de
regarder jedi, anaconda ou rope (qui ne fait pas que ça).

Enfin, il y a deux projets, avec des philosphies différentes, qui
proposent une sélection de paquets qui fonctionnent bien ensemble avec
des réglages pertinents : elpy et emacs-for-python. Même si tu ne
choisis pas de les utiliser, les paquets qu'ils proposent pourront
t'intéresser individuellement.

Voici quelques liens (si tu ne dois n'en retenir que 2, ce sont elpy et
emacs-for-python, qui te suggèreront d'autres paquets) :

http://www.xiaohanyu.me/oh-my-emacs/modules/ome-python.html (un peu
désordonné mais pas mal de liens intéressants)
http://wikemacs.org/wiki/Python
http://elpy.readthedocs.org/en/latest/index.html
https://github.com/jorgenschaefer/elpy/wiki/Features
https://github.com/gabrielelanaro/emacs-for-python/
http://tkf.github.io/emacs-jedi/released/
https://github.com/proofit404/anaconda-mode
http://www.jesshamrick.com/2012/09/18/emacs-as-a-python-ide/ (obsolète
de l'avis même de l'auteur mais des infos intéressantes)

--
DW
Avatar
Damien Wyart
J'ai oublié de citer le travail d'Andrea Crotti, qui se veut un juste
milieu entre minimalisme et IDE lourd :

https://github.com/AndreaCrotti/minimal-emacs-configuration
https://www.youtube.com/watch?v Z7szFuz18

--
DW
Avatar
Damien Wyart
* mazert in fr.comp.applications.emacs:
Je peux effacer le prompt python (>>>) avec un retour chariot ce qui
est assez étrange, peut on y remédier ?



ipython peut être intégré à Emacs, ce qui rend le mode "shell Python"
plus agréable.
http://www.emacswiki.org/PythonProgrammingInEmacs#toc5

C'est bien intégré à python-mode (que j'ai cité dans ma première
réponse).

--
DW
Avatar
mazert
Le 16/10/2014 07:47, Damien Wyart a écrit :
Il y a beaucoup de choix dans le domaine de l'utilisation d'Emacs pour
écrire du code Python (paquets individuels et tout-en-un proposant un
tout assez homogène). Vu tes choix actuels, j'ai l'impression que pas
mal d'options assez reconnues te sont inconnues (ou que tu n'as pas
souhaité les approfondir).



Oui surtout au niveau du timer d'1 sec pour l'ouverture du buffer, ça
fait un peu fouilli mais j'ai pas pu faire autrement pour que ça marche ^^

En fait, j'ai décidé de partir de ce que Emacs propose par défaut puis
ajouter certaines fonctionnalités adaptées à un usage du type IDLE.
Après les solutions tout en un.. l'avantage c'est que ça marche, mais on
ne touche pas vraiment à la technique, et ce n'est pas forcement adapté
à notre usage (en pensant à Elpy qui malgrès tout à l'air bien, mais
trop uzinagaz).

Pour le mode majeur, même s'il est moins connu maintenant, certaines
personnes (j'en fait partie ;-) préfèrent python-mode.el ; tu peux
toujours le tester pour te faire une idée.



J'ai eu des problèmes de compilation avec python-mode (depuis le repo
marmelade), mais il semble intéressant pour faciliter l'exécution du
code entre autre. Après je trouve que le mode de base est suffisant pour
une utilisation "standard".

Côté complétion, autocomplete seul est limité, je te conseille de
regarder jedi, anaconda ou rope (qui ne fait pas que ça).



Jedi me plait beaucoup mais la encore : erreur de compilation. De plus,
il lui faut des éléments externe à emacs, ce qui me deplait un peu par
principe. Parmi les liens que vous m'avez envoyé j'en connaissais une
partie, mais il y en a un qui ma fait découvrir yasnipett qui est
vraiment très sympa pour l'autocomplétion, adressé aux fénéants
(productifs) de l'extrème. En plus les schema sont assez simple à créer,
ça en fait un bon plugin.

https://github.com/capitaomorte/yasnippet

Quand j'aurais le temps ce week end, je tenterai de debugger la
compilation pour les deux dur à cuire, et voir un peu ce que je garde ou
pas, merci pour vos indications :) .

Pour mon problème de revenir à la fenêtre précédente, il fallait ajouter
le paramètre -1 à la fonction ce qui nous donne :
(other-window -1)