$ verify = f$verify (0) $ ! $ ! Kept_Editor.COM $ ! Command file for use on VMS to spawn an Emacs process $ ! that can be suspended with C-z and will not go away $ ! when other programs are run. This is the normal way $ ! for users to invoke Emacs on VMS; the command "emacs" $ ! is normally defined to execute this file. $ ! That definition, and other definitions used by it, are done by `emacs.com'. $ ! Users who want to use Emacs should have their `login.com' files $ ! execute `emacs.com', which is to be found in this directory. $ ! $ ! Joe Kelsey $ ! FlexComm Corp. $ ! $ ! September, 1985 $ ! $ ! Run or attach to an editor in a kept fork. $ ! $ ! Modified by Marty Sasaki to define the job logical name $ ! "EMACS_FILE_NAME" with the value of the filename on the command $ ! line. Lisp code can then use the value of the logical to resume or $ ! to start editing in that file. $ ! $ ! $ edit = "" $ name = p1 + " " + f$trnlnm ( "TT" ) - ":" $ priv_list = f$setprv ("NOWORLD, NOGROUP") $ pid = 0 $ 10$: $ proc = f$getjpi ( f$pid ( pid ), "PRCNAM") $ if proc .eqs. name then - $ goto attach $ if pid .ne. 0 then - $ goto 10$ $ spawn: $ args = p2 + " " + p3 + " " + p4 + " " + p5 + " " + - p6 + " " + p7 + " " + p8 $ priv_list = f$setprv ( priv_list ) $ write sys$error - "[Spawning a new Kept ''P1']" $ if p1 .nes. "TPU" then - $ goto check_emacs $ define/user sys$input sys$command $ spawn /process="''NAME'" - /nolog - edit/'p1' 'args' $ goto quit1 $ check_emacs: $ if p1 .nes. "EMACS" then - $ goto un_kempt $ define/user sys$input sys$command $ spawn /process="''NAME'" - /nolog - runemacs 'args' $ goto quit1 $ un_kempt: $ ! The editor is unruly - spawn a process and let the user deal with the $ ! editor himself. $ spawn /process="''NAME'" - /nolog $ goto quit1 $ attach: $ priv_list = f$setprv ( priv_list ) $ message_status = f$environment("message") $ set noon $ on control_y then goto quit $ set message /nofacility/noidentification/noseverity/notext $ if p2 .eqs. "" then goto no_logical $ temp = f$trnlnm("SYS$DISK") + f$directory() + p2 $ temp = f$edit(temp,"lowercase") $ define/nolog/job emacs_file_name "''temp'" $ no_logical: $ write sys$error - "[Attaching to process ''NAME']" $ define/user sys$input sys$command $ attach "''NAME'" $ quit: $ set noon $ if p2 .eqs. "" then goto quit1 $ deassign/job emacs_file_name $ quit1: $ set message 'message_status $ write sys$error - "[Attached to DCL in directory ''F$TRNLNM("SYS$DISK")'''F$DIRECTORY()']" $ if verify then - $ set verify $ exit