Un esempio di plugin in Scheme

Il plugin world

Consideriamo il plugin world nella directory

    $TEXMACS_PATH/examples/plugins

Questo plugin mostra come estendere TeXmacs aggiungendo parti di codice scritte in linguaggio Scheme al file

    world/progs/init-world.scm

Per testare il plugin world è necessario copiare ricorsivamente la directory

    $TEXMACS_PATH/examples/plugins/world

in $TEXMACS_PATH/plugins o in $TEXMACS_HOME_PATH/plugins. Dopo aver rilanciato TeXmacs il plugin dovrebbe essere automaticamente riconosciuto (un menu World dovrebbe comparire nella barra dei menu).

Come funziona

Questo file contiene essenzialmente questa parte di codice:

(define (world-initialize)

(menu-extend texmacs-extra-menu

(=> "World"

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

(plugin-configure world

(:require #t)

(:initialize (world-initialize)))

Le opzioni di configurazione :require specificano le condizioni che devono essere soddisfatte per permettere a TeXmacs di riconoscere il plugin (ad esempio controllando se alcuni programmi sono o meno disponibili nel sistema). La configurazione fallisce se le richieste formulate non vengono soddisfatte.

L'opzione :initialize specifica quale istruzione deve essere eseguita in fase di inizializzazione (modulo soddisfazione delle richieste precedenti). Nel nostro esempio abbiamo solamente creato un nuovo livello di menu World con la voce WorldHello world, che permette di inserire il testo “Hello world”. In generale la routine di inizializzazione dovrebbe essere molto breve e, se necessario, richiamare un ulteriore modulo per l'effettiva inizializzazione del plugin. Mantenendo semplice la struttura del file init-mioplugin.scm verranno ridotti i tempi di avvio di TeXmacs.

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".