/* Rexx */ /*-------------------------------------------------------------------*/ /* */ /* Edit Macro : CENTER */ /* */ /* Description : Centers the lines on the line */ /* */ /* Created on : 18 Oct 1998 */ /* Created by : Kevin Ferguson */ /* : Userid(MIT001) */ /* : using ABBYDALE.ALLFREE.EMACS(CENTER) */ /* */ /* Called by : Nothing */ /* */ /* Calls : Nothing */ /* */ /* Change Activity : */ /* */ /* ©Copyright of Abbydale Systems LLC. */ /* */ /*-------------------------------------------------------------------*/ Address ISREDIT "MACRO (left,right) NOPROCESS" If left = "?" Then do 'ISPEXEC DISPLAY PANEL(ASLCNTR1)' Exit (1) End If left ^= "" & right = " " then do ISREDIT '(L2,right) = BOUNDS' End Address ISPEXEC "CONTROL ERRORS RETURN" Address ISREDIT "PROCESS RANGE C" Address ISREDIT "(RC) = RANGE_CMD" If rc = 4 Then Do zedsmsg = "NO RANGE SPECIFIED" zedlmsg = "You MUST specify a range of lines to be centered using Cnn or CC" Address ISPEXEC "SETMSG MSG(ISRZ001)" Exit (12) End address ISREDIT "(FR) = LINENUM .ZFRANGE" address ISREDIT "(LR) = LINENUM .ZLRANGE" address ISREDIT "(LB,RB) = BOUNDS" If right ^= "" Then Do rb = right lb = left End i = fr Do while (i <= lr) Address ISREDIT Address ISREDIT "LABEL" i ".LJ" Address ISREDIT "SEEK P'-' .LJ .LJ" lb rb "FIRST" Address ISREDIT "(LLINE,LCOL) = CURSOR" Address ISREDIT "SEEK P'-' .LJ .LJ" lb rb "LAST" Address ISREDIT "(RLINE,RCOL) = CURSOR" midpt = (rb - lb) % 2 midpt = midpt + lb left = midpt - lcol right = rcol - midpt count = (left - right + 1) % 2 If count > 0 Then Address ISREDIT "SHIFT )" i count Else If count < 0 Then Do count = -1*count Address ISREDIT "SHIFT (" i count End If i = fr Then Address ISREDIT "LABEL" i ".LJX" i = i + 1 End Address ISREDIT "SEEK P'=' .LJ .LJ FIRST" Exit (0) /*-------------------------------------------------------------------*/ /* End of CENTER */ /*-------------------------------------------------------------------*/