/* $VER: CompileE.ged v0.5 (8.8.94) by Leon Woestenberg (leon@stack.urc.tue.nl) This is an ARexx script for GoldED (© Dietmar Eilert), and enables you to compile E programs from the editor. Just add a menu item, and in the 'Command' window select this ARexx script. Also, set the output to 'NIL:'. You might as well add keybindings, window gadgets, a shortcut key or even API to call this script. Now just edit your source in the active window, and select the menu item (or key, gadget etc.) you added. The compiler will be invoked, and feedback will be showed in the status line of the active window. If necessary, unsaved changes will be saved first. After compilation, the status line will show the result. If there was an error, the cursor will jump exactly to the spot of error, and the error message of the compiler will be shown in the status line. Warnings or unreferences (not both) will also be shown but will not jump, nor beep, as this would get annoying very soon. Also, cursor slot (bookmark) 9 will contain the spot of trouble. */ /* adjust your EC filename here, especially after registering :) */ ec='ECDEMO' OPTIONS RESULTS IF (LEFT(ADDRESS(),6)~="GOLDED") THEN ADDRESS 'GOLDED.1' 'LOCK CURRENT QUIET' IF rc THEN EXIT options='ERRBYTE' 'QUIET' 'QUERY ANYTEXT' IF (result='TRUE') THEN DO 'QUERY DOC VAR FILEPATH' IF (UPPER(RIGHT(result,2))='.E') THEN DO 'QUERY MODIFY' IF (result='TRUE') THEN DO 'REQUEST STATUS="Saving changes..."' 'SAVE ALL' END 'REQUEST STATUS="Compiling source..."' ADDRESS COMMAND ec filepath options '>T:EC_Report' errorbyte=rc IF errorbyte>0 THEN DO 'FOLD OPEN=TRUE ALL' 'GOTO UNFOLD=TRUE BYTE=' || errorbyte 'PING 9' END IF OPEN(filehandle,'T:EC_Report','Read')~=0 THEN DO importance=0 DO WHILE ~EOF(filehandle) & importance~='ERROR' lastline=READLN(filehandle) /* messages ordered in accending importance */ IF (INDEX(lastline,'UNREFERENCED:')~=0) & (importance<1) THEN DO importance=1 message=lastline END IF (INDEX(lastline,'WARNING:')~=0) & (importance<2) THEN DO importance=2 message=lastline END IF (INDEX(lastline,'ERROR:')~=0) & (importance<3) THEN DO importance=3 message=lastline END IF (INDEX(lastline,'EC INTERNAL ERROR')~=0) & (importance<4) THEN DO importance=4 message=lastline END END ok=CLOSE(filehandle) IF importance=0 THEN message='Compilation succesful.' IF importance>=3 THEN 'BEEP' message=TRANSLATE(message,'''','"') 'FIX VAR message' 'REQUEST STATUS="' || message ||'"' END END ELSE DO 'REQUEST STATUS="Source has no .e extension!"' END END ELSE DO 'REQUEST STATUS="Say what?! Try typing some e source first :)"' END 'UNLOCK' EXIT