![]() |
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")) |