home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
CMDS
/
memacs400_cmds.lzh
/
MEMACS400
/
CMD
/
mdi.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1996-04-25
|
3KB
|
156 lines
;
; Screen juggling macroes for MicroEMACS 4.0 for Windows.
; Handles MDI features, including drag-and-drop.
;
; Pierre Perret - April 1993
; Updated for version 4.0 May 1995
;
global %scrwidth
global %filename
global %dropbuf
rename-screen $cbufname
restore-screen
set $newscreen TRUE ; A new screen for each new file
set %scrwidth 75
;set %scrwidth 80 ; 80 is more appropriate above 640x480
%scrwidth change-screen-width
set %filename ""
set %dropbuf "Dropped files" ; Special buffer used for drag-and-drop.
;
; Reads files in an MDI manner.
; Overcomes a bug in the "new screen" mechanism by re-sizing the screen.
; Called by the drag-and-drop mechanism as well.
;
store-procedure open-file
local %prevbuf
set %prevbuf $cbufname
;
; Are we called from drop-files?
;
!if &seq %filename ""
!force execute-named-command find-file
!else
!force find-file %filename &lower %filename
; the second argument is there to supply an alternate buffer name
!endif
!if $status
%scrwidth change-screen-width
!else
; find-file failed
!if ¬ &seq $cbufname %prevbuf
; buf name changed ==> it is a new file
%scrwidth change-screen-width
!endif
!endif
set %filename ""
!endm
macro-to-key open-file ^X^F
unbind-menu ">&File>&Open..."
macro-to-menu open-file "&Open...@0"
;
; Reads files in an MDI manner, with VIEW mode.
; Overcomes a bug in the "new screen" mechanism by re-sizing the screen.
;
store-procedure visit-file
local %prevbuf
set %prevbuf $cbufname
!force execute-named-command view-file
!if $status
%scrwidth change-screen-width
!else
; view-file failed
!if ¬ &seq $cbufname %prevbuf
; buf name changed ==> it is a new file
%scrwidth change-screen-width
!endif
!endif
!endm
macro-to-key visit-file ^X^V
unbind-menu ">&File>&View..."
macro-to-menu visit-file "&View...@1"
;
; Makes sure there is one screen per visible buffer.
; Does not affect screens whose name do not match an existing buffer.
;
store-procedure rebuild-screens
local %lastbuf
;
; If we happen to start with an invisible buffer, skip it.
;
!if &equ $cbflags &band 1 1
!force next-buffer
!if ¬ $status
!return
!endif
!endif
set %lastbuf $cbufname
*BufLoop
find-screen "Relay screen"
next-buffer
find-screen $cbufname
select-buffer $scrname
delete-other-windows
restore-screen
%scrwidth change-screen-width
!if ¬ &seq %lastbuf $cbufname
!goto BufLoop
!endif
!if &seq $scrname "Relay screen"
cycle-screens
!endif
!force delete-screen "Relay screen"
cascade-screens
!endm
macro-to-menu rebuild-screens ">S&creen>&Rebuild@0"
;
; Close both the screen and the buffer associated with it.
;
store-procedure kill-screen
local %prevbuf
local %prevscr
set %prevscr $scrname
set %prevbuf $cbufname
cycle-screens
!force delete-screen %prevscr
!if $status
!force delete-buffer %prevbuf
!endif
!endm
macro-to-key kill-screen A-K
macro-to-menu kill-screen ">S&creen>&Kill@6"
;
; Handle a drag-and-drop.
;
store-procedure drop-files
local %prevbuf
; Note that we pay no attention to the location of the drop.
set %prevbuf $cbufname
select-buffer %dropbuf
goto-line 2
select-buffer %prevbuf
set %filename #%dropbuf
!while ¬ &seq %filename "<END>"
run open-file
set %filename #%dropbuf
!endwhile
set %filename ""
!endm
macro-to-key drop-files MS!