Beispiel für ein Plugin mit Scheme-Code

Das world plugin

Betrachten wir das world Plugin im Verzeichnis

    $TEXMACS_PATH/examples/plugins

Es zeigt wie man TeXmacs erweitert mit ein wenig zusätzlichen Scheme-Code, den Sie in der Datei

world/progs/init-world.scm

finden. Um das Plugin zu testen müssen Sie sie das Verzeichnis world/progs/init-world.scm rekursiv in das Verzeichnis $TEXMACS_PATH/plugins bzw. $TEXMACS_HOME_PATH/plugins kopieren. Wenn Sie dann TeXmacs erneut starten, sollte das Plugin automatisch erkannt werden und eine entsprechendes Menü eingerichtet werden.

Wie es funktioniert.

Die Datei init-world.scm enthält den folgenden Code:

(define (world-initialize)

(menu-extend texmacs-extra-menu

(=> "World"

("Hello world" (insert-string "Hello world")))))

(plugin-configure world

(:require #t)

(:initialize (world-initialize)))

Die Konfigurations-Option :require spezifiziert eine Bedingung, die erfüllt sein muss, damit das Plugin von TeXmacs wird. Später werden wir damit überprüfen, ob bestimmte Programme vorhanden sind oder nicht. Hier ist sie, da auf wahr gesetzt, praktisch unwirksam. Wenn die Bedingung nicht erfüllt wäre, würde die Konfiguration abgebrochen.

Die Option :initialize gibt eine Anweisung, die durchgeführt werden soll, wenn die Bedingung erfüllt ist. In unserem Beispiel erzeugen wir im Hauptmenü einen Menü-Eintrag World und einen Menü-Punkt WorldHello world, der dazu benutzt werden kann, den Text „Hello world” in das Dokument einzufügen. Im allgemeinen sollte eine solche Routine kurz sein und ein Modul laden, das die wirkliche Initialisierung durchführt. Das hat den Vorteil, dass kleine init-myplugin.scm Dateien die Zeit, die TeXmacs zum Hochfahren braucht, kurz hält.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".