Befehle an TeXmacs senden |
Die Anwendung kann command als ein ganz spezielles
Ausgabe-Format benutzen. Es dient zur Übertragung von
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 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
(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"))