Deux modes Python


10

J'ai essayé de configurer Emacs pour utiliser le mode Python approprié. À cette fin, j'ai lu quelques tutoriels. Plus important encore, celui-ci . Le didacticiel utilise le python-modepackage. Cependant, lorsque je l'installe via le gestionnaire de packages ( M-x package-install RET python-mode RET), je ne peux pas utiliser les raccourcis disponibles pour ce package.

J'ai ouvert un fichier Python pour tester certains raccourcis tels que C-c |, qui devraient évaluer l'expression sélectionnée. Cependant, à ma grande surprise, cela n'a pas fonctionné, j'ai donc décidé de trouver d'autres tutoriels sur le sujet. Cependant, dans ma ligne de mode, je vois Python, donc il y en a python-modeactivé.

Sur le wiki emacs, j'ai trouvé l'extrait de code suivant à ajouter à mon init.elfichier:

 (autoload 'python-mode "python-mode" "Python Mode." t)
 (add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
 (add-to-list 'interpreter-mode-alist '("python" . python-mode))

Lorsque j'ajoute cela, le python-modefonctionne réellement et les raccourcis susmentionnés fonctionnent également.

Je ne comprends pas bien ce que cela fait de plus que l'exécution manuelle M-x python-modedans un tampon de fichier python.

Lorsque j'ai supprimé toutes les traces de python-modedans mon dossier .emacs et ouvert un fichier python, j'ai remarqué que j'avais toujours un fichier python-mode. Donc, je suppose qu'il y a deux python-modes?

Je pense que je veux que le python-modede https://launchpad.net/python-mode . Il semble qu'il soit présent dans le référentiel de packages, mais je ne sais pas comment supprimer l'autre mode Python.

Quelqu'un pourrait-il élaborer s'il vous plaît?


1
Si vous souhaitez utiliser Ipython, ein est un excellent package. Il vous donne l'équivalent du bloc-notes Ipython dans Emacs. Démos ici . Il y a aussi d' anciennes démos du dépôt d'origine non entretenues.
Tu Do

C'est tout un texte pour une question assez simple. ;-) Ce serait bien de le réduire un peu.
Malabarba

Je suis d'accord. J'étais minutieux car d'autres sites SE me pensaient. Je vais le couper un peu dès que possible.
Christophe De Troyer

Réponses:


10

Eh bien oui il y a deux modes python: celui qui est livré avec emacs python.elet l'autre python-mode.elqui est en effet celui-ci: https://launchpad.net/python-mode

Votre tutoriel a référencé le dernier.

Votre python-modeextrait de configuration effectue les opérations suivantes:

;; by default, the function 'python-mode is associated with
;; the package python.el. The following changes that to python-mode.el:
(autoload 'python-mode "python-mode" "Python Mode." t)

;; open py files with python-mode
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))

;; sets python interpreter mode to be python-mode
(add-to-list 'interpreter-mode-alist '("python" . python-mode))

Alors est-ce que je supprime python.el ou dois-je les combiner? Ou existe-t-il un nom spécifique pour ce dernier mode python? Je veux que je init.elsois portable, donc la suppression python.eln'est peut-être pas une option.
Christophe De Troyer

Installez simplement python-mode.el et configurez-le avec l'extrait de code que vous avez publié. (ou lisez son fichier README)
Adobe

Je comprends ce que fait la commande, en combinaison avec cette réponse: superuser.com/questions/108233/… Merci d'avoir élaboré.
Christophe De Troyer

7

En tant que mainteneur de python-mode.el et en plus de répondre par @Adobe: python-mode.el ne décharge pas les commandes de python.el - les deux sont disponibles. En raison du nom de la carte en mode python - qui est utilisée par les deux et ne peut pas être modifiée sans casser beaucoup de choses - les raccourcis clavier et le menu sont fournis à partir du dernier chargé.

C-c |appelle py-execute-regionet fonctionne bien ici. Peut-être que python.el a été chargé par la suite et que la liaison a disparu. L'appel de la commande via Mx peut être une option que. En cas de problème, veuillez considérer un rapport de bogue sur https://bugs.launchpad.net/python-mode

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.