Syntaxhervorhebung ändern, ohne den Hauptmodus zu ändern?

7

Ich möchte eine Python-Shell starten M-x python-shell. Wenn ich mit der Syntaxhervorhebung nicht zufrieden bin, kann ich sie verbessern (mehr Farben in den Puffer legen), ohne den Hauptmodus zu ändern? In vim wäre das einfach mit set filetype=python.

Die Python-Syntax selbst wird im Python-Shell-Modus nicht hervorgehoben. Ich möchte, dass sie hervorgehoben wird.

Eine einfache Lösung wird bevorzugt, weil ich gerade etwas über Emacs lerne.

Joelmob
quelle
5
Nicht klar, was Sie fragen. Welcher "Textmarker"? Wenn Sie fragen, ob Sie font-lock-keywordsfür einen bestimmten Modus wechseln können, dann ja. Abhängig davon, wie die Modusfunktion definiert ist, wird das erneute Aufrufen des Modus möglicherweise mithilfe des vom Modus definierten Modus neu hervorgehoben font-lock-keywordsund nicht mit dem, was Sie neu definiert haben. Um dies sicherer zu machen (jedoch ohne Garantie), müssten Sie font-lock-keywordsden Modus-Hook neu definieren , damit er jedes Mal wirksam wird, wenn der Modus eingeschaltet wird und nachdem der Modus-Code seine Aufgabe erfüllt hat.
Drew
1
Klärende: tun Sie machen wollen weg Syntaxhervorhebung, Sie gar nicht mögen die Standardfarbe ( „Gesicht“) Entscheidungen und wollen , dass sie sich ändern, oder haben Sie neue Markierung auf der bestehenden Hervorhebung hinzufügen? Wie @Drew vorgeschlagen hat, wird es font-lock-keywordsin gewisser Weise eine Rolle spielen , je nachdem, was Sie tun möchten.
Dan
@Brew meinte ich den Syntax-Textmarker. @ Dan Der aktuelle Python-Shell-Modus (in emacs23) färbt die Python-Syntax nicht, daher möchte ich Farbe hinzufügen.
Joelmob
@ Malabarba sollte jetzt behoben sein.
Joelmob
3
Können Sie nicht zu einem neueren wechseln python.el? IIRC, das seit Emacs 24.2 ausgelieferte, hatte auch eine Schriftsperre für die Shell.
Vamsi

Antworten:

4

Jeder Hauptmodus, der die Schriftsperre unterstützt, erfolgt über font-lock-defaults. Wenn Sie dies überprüfen python-mode, wird Folgendes angezeigt:

(set (make-local-variable 'font-lock-defaults)
     '(python-font-lock-keywords nil nil nil nil))

Wenn Sie sich in einem anderen Hauptmodus befinden, sollten Sie in der Lage sein font-lock-defaults, (python-font-lock-keywords nil nil nil nil)entweder interaktiv mit M-:oder über einen Hook einzustellen .

Alex Schröder
quelle