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.