start: 1.6.39 reine ANSI-C Sourcen Makefiles ueber cpp Verwendung von awk {{{ origami 1.6.39 -> 1.6.40 os_init_args_read() in os.h und main eingebaut. Wird NACH dem Parsen der Argumente aufgerufen. Hilfe bei -h gibt etwas ausfuehrlichere Informationen. Entsprechend haben sich die defines fuer OWN_ARG_USAGE geaendert. Es gibt zwei (LONG/SHORT), welche beide nur Strings sein duerfen. Bei deren Definition (in messages.c) wird jetzt die Eigenschaft von ANSI-C verwendet, dass "foo" "bar" zu "foobar" wird. Falls '#define PORTER "blah.fasel\n"' in os.h gemacht wird, wird der Text bei der Copyrightmessage angehaengt. dicken bug bzgl exit-fold behoben ( origami empty-file Leerzeile erzeuen enter-fold newline delete-line exit-fold WUMMM, das Ding haengt ) Analog zu -X auf der Kommandozeile gibts jetzt im rc-File: Falls das Symbol RC_OS_EXT_HANDLE definiert ist, wird es als Macro RC_OS_EXT_HANDLE(rc-file) aufgerufen. Der Port kann dann einen String bis zum naechsten Null-Character lesen. Was er damit macht, ist Origami egal. Ist das Symbol unbekannt, wird der Sting einfach ueberlesen. Analog zu os_init_args_read() gibts auch ein define fuer os_init_rc_read() eingebaut. In der Statuszeile kann mittels -W name, name vor dem Filenamen angezeigt werden. Unterscheidung bzgl verschiedener Logins moeglich. 1.6.41: screen.c: Wenn xterm verwendet wird, und Origami nicht in einer Pipe steckt, fragt Origami nur einmal das Environment nach der Groesse. Alle folgenden Abfragen gehen dann direkt ans xterm. Damit ist auf jedenfall die richtige Fenstergroesse bestimmbar. Beim ersten mal wird das Environment abgefragt, da das Terminal und stdin/stdout noch nicht richtig eingestellt sind. VERSION wird jetzt in envvar_str.h definiert Die prompt-Befehle so modifiziert, dass auch eine Meldung ohne Warten auf Eingabe abgesetzt werden kann. Einen Bug in display.c bzgl Bildschirmsteuerung bei fehlendem al/dl behoben. In den whole_screen_xx Funktionen musste das up/down_a_bit NACH dem Umsetzen der Pointer aufgerufen werden. Aus dem gleichen Grund Funktionen in foldhelp.c (insert_(after/before)) geaendert. set's koennen zugewiesen werden. => M_SET_COPY eingebaut 1.6.42 Origami kann jetzt directories editieren. Es wird dirfold aufgerufen. Dieses Feature muss beim Compilieren mit #define DIREDT enabled werden. Das Commando kann ueber ein extra Define geaendert werden. Es wird besser erkannt, ob die Filenamen zu Directories gehoeren. Die entsprechenden Funktionen sind in einem neuen File filetyp.c. File, die mit open-file gelesen werden, werden an die Liste der Command-line Files angehaengt. Damit wirkt dann next/prev-file auch auf diese. Ein Exit des obersten Files laesst den User jetzt in eine List der editierten/per Commandline uebergeben Files sehen. Diese wird wie ein Directory behandelt. }}} {{{ keybind 1.6.39 -> 1.6.40 bugs im Optimierer ausgebaut undeclare eingebaut ( os-extension ( "blah " "fasel )) eingebaut. Der text wird einfach im rc-File abgelgt. Origami ueberlist es in der Regel, ausser, ein entsprechender Handler ist beim Port definiert. 1.6.40 -> 1.6.41: keybind -f/-F eingebaut (keybind.c,scanner.c): Jedes File wird erst durch einen Filter geschickt, bevor es gelesen wird. Statt fopen(name,READ) wird also popen("filter name",READ) verwendet. Die entsprechenden Aufrufe fuer fopen sind durch einen Prozeduraufruf ersetzt. Darin wird nicht nur die Pipe geoeffnet, sondern vorher mit access geprueft, ob das File ueberhaupt da ist. Anwendung: Neben der Standardanwendung, Strings o.ae.durch cpp oder aehnlich Filter zu ersetzen, kann man damit OCL erweitern. Ports, die os-extension verwenden, koennen dann eigene Statements definieren, die im Preprocessor ausgefiltert und in normale os-extension Befehle umgesetzt werden. {{{ z.B. Amiga Menues : ; einfach kopieren @if-using ( AMIGAOPP ) ; amigaopp kann hiernach suchen! ( menus ( name0 ( name00 action00 ) ; erst ab hier parsen! ( name01 action01 ) ) ( name1 ( name10 action10 ) ( name11 action11 ) ( name12 action12 ) ) ) @fi ; hier kann das Parsen aufhoeren! : ; einfach kopieren => : ; @if deleted ( os-extension (" menus#name0#name00#name01##name1#name10#name11#name12### ) ) ( keybind action00 ( $menu "0 "0 ) ) ( keybind action01 ( $menu "0 "1 ) ) ( keybind action10 ( $menu "1 "0 ) ) ( keybind action11 ( $menu "1 "1 ) ) ( keybind action12 ( $menu "1 "2 ) ) ; @fi deleted : }}} Ein solcher Preprocessor koennte ziemlich einfach sein. Er muesste einfach nach den richtigen @if-usings suchen, und den darin beefindlichen Code uebersetzen. Die darn verwendete Sprache kann ja so einfach sein, dass keine Probleme auftreten! -F macht das gleiche, nur wird NUR das toplevel-File gefiltert. Die andere Moeglichkeit wird auf langsamen Kisten evtl ZU langsam. Bei beiden kann ueber defines ein Standard-Filter vordefiniert werden. (keybind foo ()) ist auch moeglich, wenn foo ueber defmac definiert wurde, und das Macro die Laenge 1 hat! Den OCL-Optimizer in ein extra File gelegt. Zeige in der Hilfe auch die Origamiversion an. Name fuer die default-Variablen auch in envar_str.h OS_KB_NAMES kann definiert werden. Es ist in die Liste der Tokennamen eingesetzt, um z.B. spezifische Identifier auf error zu setzen, falls spezielle Namen durch os-spezifische Filter behandelt werden sollen. undeclare auf Origami-Funktionen (enter-fold .. ) erweitert. Bei " " in der Keysequence, wird statt " " jetzt "space" in die bindinglist im rc-File aufgenommen. set's koennen zugewiesen werden. => defset innerhalb von Macros erlaubt. }}} {{{ dirfold 1.6.42 Optionen -s (single directory) und -M eingebaut. Mit diesen Optionen wird diredit realisiert. }}} {{{ bindings 1.6.39 -> 1.6.40 undeclare bei diversen Bibliotheksfiles verwendet modeori bzgl wordstar Ebene verbessert Die Bindungen fuer die Movements sind jetzt logisch staerker an der Belegung des Blocks SUN-Cursorblocks orientiert. Die Verwendung der Puffer ist jetzt auf andere Tastenkombinationen gelegt. Dabei habe ich mich nicht mehr an die Wordstar-Sourcen gestuetzt. Die neue Belegung duerfte dafuer logischer sein, und auch C-Q als zusaetzlichen meta-Key besser unterstuetzen. bug im regions Paket (tabs und Falten) ausgebaut 1.6.41 Die C-Q Sequenzen fuer modeori umgestellt. Modeori fuer file-requester vorbereitet: @use ( FILEREQUEST ) ( defmac file-requester ( ; die Sequenz, die den requester aufmacht ) ) genuegen, um den Requester bei allen normalen Fileoperationen aufzurufen. Neues Macropaket file-buffers ins fun-Directory gelegt, welches ein Sichern und Lesen von kill/Move und delete-Buffer in ein File ermoeglicht. file-buffers in ModeOri als zusaetzlichen Mode integriert. usermacros fuer Modeori eingebaut Makefile setzt installiert auch die Directories. }}} {{{ docs 1.6.39 -> 1.6.40 awk verwendet, um den Anhang fuer Token/Messages an die docs anzuhaengen. Die awk-Skripte benutzen dabei auch Variablen als Zaehler. Die Commandline options werden ebenfalls als Anhang behandelt. beim Installieren wird nur ein origami.ms abgelegt, welches ueber awk, soelim, tbl erzeugt wird. 1.6.40 -> 1.6.41 variablen und Versionsnamen werden ueber ein Skript aus envvar_str.h gewonnen. set's koennen zugewiesen werden. => defset innerhalb von Macros erlaubt. 1.6.41 -> 1.6.42 neue Behandlung von Directories und next/prev file erwaehnt. TODO: Die os spezifischen Manualteile, die bisher in den verschiedenen README's versteckt sind, sollten jeweils als roff-Sourcen der Form: ori-amiga.ms: {{{ read original origami docs .so origami.ms }}} {{{ amiga appendix .bp .NH 2 Origami and Amiga .LP blah fasel.. }}} zur Verfuegung stehen. Wer Probleme mit Roff hat, kann die Texte ja erst mal als normalen Text abgeben. Der Text sollte aber inhaltlich einigermassen vollstaendig sein und inhaltlich und stilistisch als Anhang geschrieben sein. }}} {{{ man 1.6.39 -> 1.6.40 Die Optionen fuer Origami in ein extra File gelegt, um diese auch in den docs angeben zu koennen. File mit .so included. Entsprechend das install so geaendert, das das .so mittels soelim eliminiert wird. 1.6.40 -> 1.6.41 Manuals verwenden die gleichen Namen wie in evvar_str.h vorgegeben. Daher wird auch hier das bei doc verwendete awk-Skript gebraucht. }}}