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 / shell.cmd < prev    next >
OS/2 REXX Batch file  |  1996-04-25  |  2KB  |  129 lines

  1. ;    Shell.cmd:    MSDOS shell within MicroEMACS
  2. ;            written 1987 by Daniel Lawrence
  3.  
  4.     write-message "[Setting up SHELL window]"
  5.  
  6. store-procedure    getdir
  7.     shell-command "cd > eshell"
  8.     set %shtmp $cbufname
  9.     !force delete-buffer eshell
  10.     find-file eshell
  11.     beginning-of-file
  12.     set %shdir $line
  13.     select-buffer %shtmp
  14.     delete-buffer eshell
  15. !endm
  16.  
  17. store-procedure prompt
  18.     !if ¬ &equ $curcol 0
  19.         newline
  20.     !endif
  21.     !if ¬ &seq $line ""
  22.         open-line
  23.     !endif
  24.     insert-string &cat %shdir ">"
  25. !endm
  26.  
  27. store-procedure getline
  28.     beginning-of-line
  29.     set %shtmp $curline
  30.     !force search-forward ">"
  31.     !if ¬ &equ $curline %shtmp
  32.         set $curline %shtmp
  33.     !endif
  34.     !if &equ $curchar 10
  35.         set %shline ""
  36.     !else
  37.         kill-to-end-of-line
  38.         yank
  39.         set %shline $kill
  40.     !endif
  41.     newline
  42. !endm
  43.  
  44. store-procedure execline
  45.     shell-command &cat %shline " > shtmp"
  46.     !force insert-file shtmp
  47. !endm
  48.  
  49. ;    prompt and execute a command
  50.  
  51. store-procedure do-command
  52.     run getline
  53.     !if ¬ &seq %shline ""
  54.         !if &or &seq &left %shline 2 "cd" &seq &right %shline 1 ":"
  55.             shell-command %shline
  56.             run getdir
  57.         !else
  58.             run execline
  59.         !endif
  60.     !endif
  61.     run prompt
  62. !endm
  63.  
  64. store-procedure checkmode
  65.     !if &and %shmode ¬ &seq $cbufname "[I-SHELL]"
  66.         set $discmd FALSE
  67.         bind-to-key newline ^M
  68.         add-mode blue
  69.         add-mode WHITE
  70.         write-message "[Exiting Shell window]"
  71.         set %shmode FALSE
  72.         set $discmd TRUE
  73.     !endif
  74.     !if &and ¬ %shmode &seq $cbufname "[I-SHELL]"
  75.         set $discmd FALSE
  76.         write-message "[Entering Shell window]"
  77.         macro-to-key do-command ^M
  78.         run getdir
  79.         add-mode black
  80.         add-mode GREEN
  81.         end-of-file
  82.         run prompt
  83.         set %shmode TRUE
  84.         set $discmd TRUE
  85.     !endif
  86. !endm
  87.  
  88. ;    window movement (and deactivate us)
  89.  
  90. store-procedure do-next-window
  91.     next-window
  92.     run checkmode
  93. !endm
  94.  
  95. store-procedure do-previous-window
  96.     previous-window
  97.     run checkmode
  98. !endm
  99.  
  100. store-procedure do-delete-window
  101.     delete-window
  102.     run checkmode
  103. !endm
  104.  
  105. store-procedure do-find-file
  106.     find-file @"Find file:"
  107.     run checkmode
  108. !endm
  109.  
  110. store-procedure do-next-buffer
  111.     next-buffer
  112.     run checkmode
  113. !endm
  114.  
  115. store-procedure openshell
  116.     set $discmd FALSE
  117.     macro-to-key do-next-window ^XO
  118.     macro-to-key do-previous-window ^XP
  119.     macro-to-key do-previous-window ^X0
  120.     macro-to-key do-find-file ^X^F
  121.     macro-to-key do-next-buffer ^XX
  122.     select-buffer "[I-SHELL]"
  123.     run checkmode
  124.     set $discmd TRUE
  125. !endm
  126.  
  127.     set %shmode FALSE
  128.     run openshell
  129.