Gibt es eine Möglichkeit, Python anstelle von Elisp zum Erweitern von Emacs zu verwenden?


11

Ich bin daran interessiert, andere Sprachen als elisp zu verwenden, um Emacs-Erweiterungen zu schreiben. Ist das überhaupt möglich? Welche Sprachen gibt es, wenn Python nicht unterstützt wird?

Antworten:


10

Wie Tephra sagte, ist Pymacs ein Paket, das dafür entwickelt wurde.

Es ist eine Schnittstelle zwischen Python und Emacs Lisp. Das Projekt ist nicht sehr aktiv, aber meines Wissens ist es mit der neuesten Version von Emacs voll funktionsfähig. Einige Python-Pakete verwenden es (z. B. Ropemacs ), sodass Änderungen an Emacs, die es beschädigen, wahrscheinlich behoben werden.

Der GitHub-Link zur Online-Dokumentation scheint tot zu sein, aber Sie können ihn immer noch auf der Wayback-Maschine finden . Die Wayback-Dokumentation ist nur für Version 0.23 verfügbar - die aktuelle Version ist 0.25. Die Änderungen sind jedoch ziemlich geringfügig. Der Ropemacs-Quellcode ist ein guter Ort, um nach Beispielen zu suchen, ebenso wie die anderen Projekte, die mit Pymacs implementiert wurden.

Das Problem mit Pymacs ist, dass es viel von dem wegnimmt, was Elisp als Sprache für einen erweiterbaren Texteditor nützlich macht. Sie müssen den Quellcode direkt bearbeiten, wenn Sie das Verhalten ändern möchten. Sie können Funktionen nicht einfach empfehlen und Elisp nicht im Speicher durchsuchen. Da Ihre Python-Implementierung von normalem Elisp abstrahiert ist, wird ein Großteil des selbstdokumentierenden Verhaltens entfernt, das Emacs großartig macht, und Fehler werden weniger informativ. Erweiterungssprachen wie diese sind in erster Linie nützlich für die Anbindung an externe Pakete, die in einer anderen Sprache geschrieben sind.


Es gibt jetzt eine aktualisierte Gabel dafür (es stellt sich heraus, dass der ursprüngliche Autor verstorben ist): github.com/dgentry/Pymacs
braham-snyder

7

Sie können Emacs in anderen Sprachen wie Haskell und OCaml erweitern .

Auf Reddit wird über Vor- und Nachteile diskutiert . Kurz gesagt, ich halte es nicht für eine gute Idee, andere Sprachen (außer möglicherweise C für die Leistung) zu verwenden, da eine zusätzliche Laufzeit erforderlich ist und andere in der Emacs-Community keine allgemeinen Kenntnisse über Nicht-Elisp-Erweiterungssprachen haben.


4

Es gibt so etwas wie Pymacs , eine Python-zu-Emacs-Lisp-Schnittstelle. Obwohl das Projekt nicht so aktiv zu sein scheint. Das Wiki enthält eine Liste anderer Module, mit denen Sie Emacs in etwas anderem als elisp erweitern können.

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.