multi-mode

Manchmal ist es wünschenswert, mehrere unterschiedliche »major modes« in einem Buffer nutzen zu können. Ein solcher Fall tritt ein, wenn man Kommentare in einem Buffer mit Text in einer Programmiersprache editiert. Hier könnte es vorteilhaft sein, einen zu dem Mode des Programmcodes völlig unterschiedlichen Mode zu verwenden.

Ich habe diese Arbeitsweise angewendet, um Prolog-code zu editieren. Der Code selbst wird im prolog-mode bearbeitet und die Kommentare im LaTeX-mode.

Es ist wünschenswert verschiedene Modes zu verwenden, anstatt einen Mode anzureichern, weil viel Aufwand bereits in die verschiedenen Modes geflossen ist. Damit kann die Duplizierung dieser Arbeit vermieden werden.

Der multi-mode »minor mode« stellt ein Mittel bereit, um solch ein Feature umzusetzen.

Die Modes werden durch Startsequenzen beschrieben. Ich gehe davon aus, dass bestimmte Tokens (das sind Übergangszeichenketten) die Stellen bezeichnen, an denen auf einen neuer Mode umgeschaltet werden muss. Um einen Mode für eine Stelle im Buffer zu bestimmen ist es also nur notwendig, die letzte Übergangszeichenkette vor dem Punkt zu finden.

Der gewünschte Mode wird durch eine Liste von Paaren oder Tripeln beschrieben, die aus einer Übergangszeichenkette und einem Mode bestehen. Optional kann ein Funktionssymbol angegeben werden, das evaluiert wird, um den gewünschten Mode zu aktivieren. Zusätzlich muss noch der Mode angegeben werden, der genutzt werden soll, falls keine Übergangszeichenkette gefunden werden kann.

Download

Hier sind die Quellen und die Dokumentation verfügbar.

Quellcode für den Mode und die Dokumentation
multi-mode-el, 10 kb.