Zwei Python-Modi


10

Ich habe versucht, Emacs so zu konfigurieren, dass der richtige Python-Modus verwendet wird. Zu diesem Zweck habe ich einige Tutorials gelesen. Am wichtigsten ist dieser . Das Tutorial verwendet das python-modePaket. Wenn ich es jedoch über den Paketmanager ( M-x package-install RET python-mode RET) installiere, kann ich die für dieses Paket verfügbaren Verknüpfungen nicht verwenden.

Ich habe eine Python-Datei geöffnet, um einige Verknüpfungen zu testen, z. B. C-c |, die den ausgewählten Ausdruck auswerten sollen. Zu meiner Überraschung funktionierten diese jedoch nicht und ich beschloss, andere Tutorials zu diesem Thema zu finden. In meiner Moduszeile sehe ich jedoch Python, dass einige python-modeaktiviert sind.

Im Emacs-Wiki habe ich das folgende Snippet gefunden, das ich meiner init.elDatei hinzufügen kann:

 (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))

Wenn ich dies hinzufüge, python-modefunktioniert das tatsächlich und die oben genannten Verknüpfungen funktionieren auch.

Ich verstehe nicht richtig, was dies mehr bewirkt als die manuelle Ausführung M-x python-modein einem Python-Dateipuffer.

Als ich alle Spuren python-modein meinem .emacs-Ordner entfernte und eine Python-Datei öffnete, bemerkte ich, dass ich noch eine habe python-mode. Meine Vermutung ist also, dass es zwei python-modes gibt?

Ich denke ich möchte das python-modevon https://launchpad.net/python-mode . Es scheint, dass es im Paket-Repository vorhanden ist, aber ich bin nicht sicher, wie ich den anderen Python-Modus entfernen soll.

Könnte jemand bitte näher darauf eingehen?


1
Wenn Sie Ipython verwenden möchten, ist ein ein ausgezeichnetes Paket. Es gibt Ihnen das Äquivalent von Ipython Notebook in Emacs. Demos hier. Es gibt auch alte Demos aus dem ursprünglichen Repo, die jetzt nicht mehr gepflegt werden.
Tu Do

Das ist eine Menge Text für eine ziemlich einfache Frage. ;-) Wäre schön es ein bisschen zu kürzen.
Malabarba

Genau. Ich war gründlich, wie andere SE-Sites mir gedacht haben. Ich werde es so schnell wie möglich etwas kürzen.
Christophe De Troyer

Antworten:


10

Nun ja, es gibt zwei Python-Modi: Der eine, der mit Emacs geliefert wird, ist python.elder andere, python-mode.elder tatsächlich dieser ist: https://launchpad.net/python-mode

Ihr Tutorial hat auf das spätere verwiesen.

Ihr python-modeSetup-Snippet führt Folgendes aus:

;; 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))

Entferne ich python.el oder muss ich sie kombinieren? Oder gibt es einen bestimmten Namen für den letzteren Python-Modus? Ich möchte, dass mein init.elGerät tragbar ist, daher ist das Entfernen python.elmöglicherweise keine Option.
Christophe De Troyer

Installieren Sie einfach python-mode.el und richten Sie es mit dem von Ihnen geposteten Snippet ein. (oder lesen Sie die README-Datei)
Adobe

Ich verstehe, was der Befehl in Kombination mit dieser Antwort tut: superuser.com/questions/108233/… Vielen Dank für die Ausarbeitung.
Christophe De Troyer

7

Als Betreuer von python-mode.el und zusätzlich zur Antwort von @Adobe: python-mode.el entlädt keine Befehle aus python.el - beide sind verfügbar. Aufgrund des Namens der Python-Mode-Map, die von beiden verwendet wird und nicht geändert werden kann, ohne viele Dinge zu beschädigen, werden Tastenkombinationen und das Menü von der zuletzt geladenen geliefert.

C-c |ruft an py-execute-regionund funktioniert hier gut. Vielleicht wurde python.el danach geladen und die Bindung weg. Das Aufrufen des Befehls über Mx ist möglicherweise eine Option als. Bei Problemen lesen Sie bitte einen Fehlerbericht unter https://bugs.launchpad.net/python-mode

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.