/* * pretty.ged -- Reformat Eiffel source using SmallEiffel's `pretty'. * * Copyright (C) 1999 Thomas Aglassiner * Freeware. Use at your own risk. */ version_info = "$VER: pretty.ged 1.2 (4.3.99)" OPTIONS RESULTS /* enable return codes */ if (LEFT(ADDRESS(), 6) ~= "GOLDED") then /* not started by GoldEd ? */ address 'GOLDED.1' 'LOCK CURRENT RELEASE=4' /* lock GUI, gain access */ if (RC ~= 0) then exit OPTIONS FAILAT 21 SIGNAL ON SYNTAX /* ensure clean exit */ /* ------------------------ INSERT YOUR CODE HERE: ------------------- */ pretty_options = '-default' CALL ADDLIB('rexxdossupport.library', 0, -30, 2) /* Obtain current filename */ 'QUERY DOC VAR=filename' IF RIGHT(filename,2) = '.e' THEN DO /* Save file, remember current position */ 'SAVE ALL' 'PING 0' 'REQUEST STATUS="Reformatting..."' /* Split filename to path and plain name */ delimiter_index = MAX(LASTPOS(':', filename), LASTPOS('/', filename)) directory = LEFT(filename, delimiter_index) filename = SUBSTR(filename, delimiter_index + 1) /* Change to directory where file is located to avoid problems * with non-ixemul paths */ CALL PRAGMA('Directory', directory) /* Delete possible backup */ backup_name = LEFT(filename, LENGTH(filename) - 1) || 'bak' IF EXISTS(backup_name) THEN DO CALL Delete(backup_name) END ADDRESS COMMAND 'rx >nil: golded:tools/eiffel/arexx/execute.rexx Port=SMALLEIFFEL.1 ' || , 'pretty ' || pretty_options || ' "' || filename || '"' IF RC = 0 THEN DO 'REQUEST STATUS=""' 'OPEN AGAIN FORCE' END ELSE DO 'REQUEST STATUS=""' 'REQUEST TITLE="Pretty Error" PROBLEM="Pretty exited with return code ' || RC || '"' END /* Restore position in editor */ 'PONG 0' END ELSE DO 'REQUEST TITLE="Pretty Error" PROBLEM="Filename suffix for pretty must be ''.e''"' END /* ---------------------------- END OF YOUR CODE --------------------- */ 'UNLOCK' /* VERY important: unlock GUI */ exit SYNTAX: SAY "Syntax error line" SIGL ":" ERRORTEXT(RC) 'UNLOCK' exit