Befehle an TeXmacs senden

Die Anwendung kann command als ein ganz spezielles Ausgabe-Format benutzen. Es dient zur Übertragung von Scheme-befehlen an TeXmacs. Mit anderen Worten, der Block

DATA_BEGINcommand:cmdDATA_END

sendet den Befehl cmd an TeXmacs, der dort sofort nach dem Erhalt von DATA_END ausgeführt wird. Wir erinnern uns, dass derartige Blöcke in größere DATA_BEGIN-DATA_END Blöcke eingebettet sein können.

Das menus plugin

Das Beispiel menus zeigte, wie eine Anwendung TeXmacs-Menüs interaktiv ändern kann. Es besteht aus den folgenden Dateien

    menus/Makefile
    menus/progs/init-menus.scm
    menus/src/menus.cpp

Der Rumpf der Hauptschleife von menus.cpp besteht aus

char buffer[100];
cin.getline (buffer, 100, '\n');
cout << DATA_BEGIN << "verbatim:";
cout << DATA_BEGIN << "command:(menus-add \""
     << buffer << "\")" << DATA_END;
cout << "Added " << buffer << " to menu";
cout << DATA_END;
fflush (stdout);

Das Scheme-Makro menus-add wird in init-menus.scm definiert:

(menu-bind menus-menu

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

(menu-extend texmacs-extra-menu

(if (equal? (get-env "prog language") "menus")

(=> "Menus" (link menus-menu))))

(define-macro (menus-add s)

‘(menu-extend menus-menu

(,s (insert-string ,s))))

Die Konfiguration von menus erfolgt wie gewöhnlich:

(plugin-configure menus

(:require (url-exists-in-path? "menus.bin"))

(:launch "menus.bin")

(:session "Menus"))

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