home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / rexx / GoldEd / TeX-Server-Start.ged < prev    next >
Text File  |  1994-03-22  |  6KB  |  219 lines

  1. /*
  2.     $VER: TeX-Server-Start.ged V0.96 (19.3.94) Axel Burghardt
  3. */
  4.  
  5. Title  = "TeX-Server-Start V0.96"
  6. Port   = "TEX.1"
  7. Bold   = ""
  8. Invers = ""
  9. Norm   = ""
  10. FALSE  = 0
  11. TRUE   = 1
  12.  
  13. say Invers Title "für GoldEd" Norm
  14.  
  15. SIGNAL ON Break_C
  16. SIGNAL ON Break_D
  17. SIGNAL ON SYNTAX
  18.  
  19. OPTIONS RESULTS
  20.  
  21. /* ------------------ Support-Bibliothek öffnen ------------------- */
  22.  
  23. IF ~show('L','rexxsupport.library') THEN
  24.   IF ~addlib('rexxsupport.library',0,-30,0) THEN DO
  25.     say "Kann 'rexxsupport.library' nicht öffnen!"
  26.     EXIT 20
  27.   END
  28.  
  29. /* -------------------- Wann den Editor rufen? -------------------- */
  30.  
  31. Oldedit = upper(NewGetenv(TEXREXX))
  32. IF "EDIT" = Oldedit THEN DO
  33.   OPTIONS PROMPT "Bei erstem Fehler GoldEd starten? (J/N)"
  34.   PARSE UPPER PULL jn .
  35.   IF LEFT(jn,1) = "N" THEN
  36.     Newedit = "e"
  37.   ELSE
  38.     Newedit = "EDIT"
  39. END
  40. ELSE DO
  41.   OPTIONS PROMPT "Bei erstem Fehler GoldEd starten? (J/N)"
  42.   PARSE UPPER PULL jn .
  43.   IF LEFT(jn,1) = "J" THEN
  44.     Newedit = "EDIT"
  45.   ELSE
  46.     Newedit = "e"
  47. END
  48.  
  49. IF upper(Newedit) ~= Oldedit THEN 
  50.     call NewSetenv(Texrexx,Newedit)
  51.  
  52. Drop Newedit Oldedit
  53.  
  54. OPTIONS PROMPT "Immer nach TeX-Format fragen (J/N) ? "
  55. PARSE UPPER PULL jn .
  56. IF (left(jn,1) = "J") THEN 
  57.   call setclip("TEXQUERY","TRUE")
  58. ELSE 
  59.   call setclip("TEXQUERY")
  60.  
  61. OPTIONS PROMPT "? >"
  62. DROP jn
  63.  
  64. /* ----------------------- Öffne ARexx-Port ----------------------- */
  65.  
  66. IF ~openport(Port) THEN DO
  67.   say Bold"Konnte" Port "nicht öffnen!"Norm
  68.   EXIT 20
  69. END
  70. ELSE
  71.   say Bold"ARexx-Port" Port "geöffnet!"Norm
  72.  
  73. /* ------------------ Endlosschleife des Servers ------------------ */
  74.  
  75. Empty = FALSE
  76. DO UNTIL Com = 'QUIT'
  77.   IF ~Empty THEN DO
  78.       call setclip("Textime")
  79.       say Bold"TeX-Server ("Port") wartet auf Kommandos..."Norm
  80.   END
  81.   call waitpkt(Port)
  82.   Packet = getpkt(Port)
  83.   IF (Packet == NULL()) THEN 
  84.     EMPTY = TRUE
  85.   ELSE DO
  86.     Empty = FALSE
  87.     parse value getarg(PACKET) with Com Format Fullname
  88.     call reply(PACKET,0)
  89.  
  90.     IF Com = 'SHOWDVI' THEN DO
  91.       IF (show('P','showdvi')) THEN DO
  92.         say Bold"ShowDVI nach vorne..."Norm
  93.         address 'showdvi' 
  94.         tofront
  95.       END
  96.       ELSE DO
  97.         say Bold"ShowDVI" upper(Format)||Norm
  98.         address command 'Run >NIL: showdvi' Format
  99.       END
  100.     END
  101.  
  102.     IF Com = 'COMPILE' THEN DO
  103.       IF '&' ~= left(Format,1) THEN 
  104.         Format = '&' || Format
  105.       ELSE 
  106.         IF '&' = Format THEN 
  107.           Format = ""    /* dann Default von VirTeX nehmen */
  108.  
  109.       Fullname = strip(Fullname)
  110.  
  111. /* -------------- Aus 'RAM DISK:xxx' wird 'RAM:xxx' --------------- */
  112.  
  113.       IF "RAM DISK:" = upper(left(Fullname,9)) THEN Fullname = "RAM:"||substr(Fullname,10)
  114.       IF 0 ~= index(Fullname," ") THEN
  115.           say "Leerzeichen im Dateinamen" upper(Fullname) "nicht erlaubt!"
  116.       ELSE DO
  117.         parse value namestruc(Fullname) with Ivol Idir Iname .
  118.  
  119.         Texdir = left(Fullname,Ivol+Idir)               /* TeX:doc/sample.tex-> TeX:doc/ */
  120.         Nameonly = substr(Fullname,1+Ivol+Idir)         /* sample.tex */
  121.         Baseonly = substr(Fullname,1+Ivol+Idir,Iname)   /* sample */
  122.         Fullbase = left(Fullname,Ivol+Idir+Iname)       /* TeX:doc/sample */
  123.  
  124.         IF 0=Ivol THEN DO
  125.           say "Absoluter Pfad (z.B. <device|volumename>:...) verwenden!"
  126.         END
  127.         ELSE
  128.           IF (substr(Fullname,1+Ivol+Idir+Iname,1) ~= ".") THEN DO
  129.             say "Dateiname benötigt .<extension>!"
  130.           END
  131.           ELSE DO
  132.             IF ~exists(Fullname) THEN DO
  133.               say "Datei" upper(FULLNAME) "nicht gefunden!"
  134.             END
  135.             ELSE DO
  136.               call delete(Fullbase || ".log")
  137.               Virtex = getclip("virtex")       /* TeX oder BigTeX */
  138.               IF "" = Virtex THEN Virtex = 'VIRTEX'
  139.  
  140.               say Bold||Virtex Format Texdir||Nameonly||Norm
  141.               call pragma('Directory',Texdir)
  142.               call setclip("Texfile",Fullname)
  143.               Now = time('s')
  144.               call setclip("Textime",Now)
  145.  
  146.               address command Virtex '< *' Format Nameonly
  147.               IF RC == 0 THEN DO
  148.                 say Bold"Keine Fehler gefunden!"Norm
  149.                 IF (show('P','showdvi')) THEN DO
  150.                   address 'showdvi'
  151.                   getfile
  152.                   Loadfile = RESULT
  153.                   getdir
  154.                   Loaddir = RESULT
  155.                   IF right(Loadeddir,1)~=':' & right(Loadeddir,1) ~= '/' THEN Loadeddir = Loadeddir || '/'
  156.                   IF Texdir = Loadeddir & 1 = index(upper(Loadedfile||".dvi"),upper(Baseonly||".dvi")) THEN DO
  157.                     say Bold"Aktualisiere ShowDVI..."Norm
  158.                     loadagain
  159.                   END
  160.                   ELSE DO
  161.                     say Bold"Lade" upper(Fullbase)".DVI in ShowDVI."Norm
  162.                     loadnew Fullbase".DVI"
  163.                   END
  164.                   tofront
  165.                 END /* Show */
  166.                 ELSE DO
  167.                   say Bold"ShowDVI läuft noch nicht!"Norm
  168.                 END
  169.               END
  170.             END  /* exists */
  171.         END  /* !ivol, "." */
  172.       END  /* !index */
  173.     END  /* compile */
  174.   END  /* Packet != NULL */
  175. END  /* do */
  176.  
  177. /* --------------------- ARexx-Port schließen --------------------- */
  178.  
  179. CALL CLOSEPORT Port
  180. say Bold"ARexx-Port" Port "geschlossen!"Norm
  181. say Bold"Fenster schließen mit CLOSE-Gadget oder CTRL-\."Norm
  182.  
  183. SIGNAL Cleanup
  184.  
  185. BREAK_C:
  186. BREAK_D:
  187. say Bold"ARexx-Skript abgebrochen!"Norm
  188.  
  189. Cleanup:
  190. CALL SETCLIP("TEXFILE")
  191. CALL SETCLIP("TEXTIME")
  192. CALL SETCLIP("TEXQUERY")
  193. EXIT
  194.  
  195. NewGetenv: PROCEDURE
  196.  PARSE ARG name
  197.  IF open(TEMPFILE,"ENV:"||name,'r') THEN DO
  198.    gives = readln(TEMPFILE)
  199.    CALL close TEMPFILE
  200.  END
  201.  ELSE gives = ""
  202.  RETURN gives
  203.  
  204. NewSetenv: PROCEDURE
  205.  PARSE ARG name,content
  206.  ADDRESS COMMAND "SetEnv" name content
  207.  RETURN
  208.  
  209. /* ----------------------- Fehlerbehandlung ----------------------- */
  210.  
  211. SYNTAX:
  212.  
  213. 'REQUEST BODY="Fehler in Zeile' SIGL ':' ERRORTEXT(RC) '"'
  214. 'MARK HIDE'
  215. 'GOTO LINE='SIGL
  216. 'MARK SET'
  217. 'UNLOCK'
  218. EXIT 5
  219.