0
|
1 $ verify = f$verify (0)
|
|
2 $ !
|
|
3 $ ! Kept_Editor.COM
|
|
4 $ ! Command file for use on VMS to spawn an Emacs process
|
|
5 $ ! that can be suspended with C-z and will not go away
|
|
6 $ ! when other programs are run. This is the normal way
|
|
7 $ ! for users to invoke Emacs on VMS; the command "emacs"
|
|
8 $ ! is normally defined to execute this file.
|
|
9 $ ! That definition, and other definitions used by it, are done by `emacs.com'.
|
|
10 $ ! Users who want to use Emacs should have their `login.com' files
|
|
11 $ ! execute `emacs.com', which is to be found in this directory.
|
|
12 $ !
|
|
13 $ ! Joe Kelsey
|
|
14 $ ! FlexComm Corp.
|
|
15 $ !
|
|
16 $ ! September, 1985
|
|
17 $ !
|
|
18 $ ! Run or attach to an editor in a kept fork.
|
|
19 $ !
|
|
20 $ ! Modified by Marty Sasaki to define the job logical name
|
|
21 $ ! "EMACS_FILE_NAME" with the value of the filename on the command
|
|
22 $ ! line. Lisp code can then use the value of the logical to resume or
|
|
23 $ ! to start editing in that file.
|
|
24 $ !
|
|
25 $ !
|
|
26 $ edit = ""
|
|
27 $ name = p1 + " " + f$trnlnm ( "TT" ) - ":"
|
|
28 $ priv_list = f$setprv ("NOWORLD, NOGROUP")
|
|
29 $ pid = 0
|
|
30 $ 10$:
|
|
31 $ proc = f$getjpi ( f$pid ( pid ), "PRCNAM")
|
|
32 $ if proc .eqs. name then -
|
|
33 $ goto attach
|
|
34 $ if pid .ne. 0 then -
|
|
35 $ goto 10$
|
|
36 $ spawn:
|
|
37 $ args = p2 + " " + p3 + " " + p4 + " " + p5 + " " + -
|
|
38 p6 + " " + p7 + " " + p8
|
|
39 $ priv_list = f$setprv ( priv_list )
|
|
40 $ write sys$error -
|
|
41 "[Spawning a new Kept ''P1']"
|
|
42 $ if p1 .nes. "TPU" then -
|
|
43 $ goto check_emacs
|
|
44 $ define/user sys$input sys$command
|
|
45 $ spawn /process="''NAME'" -
|
|
46 /nolog -
|
|
47 edit/'p1' 'args'
|
|
48 $ goto quit1
|
|
49 $ check_emacs:
|
|
50 $ if p1 .nes. "EMACS" then -
|
|
51 $ goto un_kempt
|
|
52 $ define/user sys$input sys$command
|
|
53 $ spawn /process="''NAME'" -
|
|
54 /nolog -
|
|
55 runemacs 'args'
|
|
56 $ goto quit1
|
|
57 $ un_kempt:
|
|
58 $ ! The editor is unruly - spawn a process and let the user deal with the
|
|
59 $ ! editor himself.
|
|
60 $ spawn /process="''NAME'" -
|
|
61 /nolog
|
|
62 $ goto quit1
|
|
63 $ attach:
|
|
64 $ priv_list = f$setprv ( priv_list )
|
|
65 $ message_status = f$environment("message")
|
|
66 $ set noon
|
|
67 $ on control_y then goto quit
|
|
68 $ set message /nofacility/noidentification/noseverity/notext
|
|
69 $ if p2 .eqs. "" then goto no_logical
|
|
70 $ temp = f$trnlnm("SYS$DISK") + f$directory() + p2
|
|
71 $ temp = f$edit(temp,"lowercase")
|
|
72 $ define/nolog/job emacs_file_name "''temp'"
|
|
73 $ no_logical:
|
|
74 $ write sys$error -
|
|
75 "[Attaching to process ''NAME']"
|
|
76 $ define/user sys$input sys$command
|
|
77 $ attach "''NAME'"
|
|
78 $ quit:
|
|
79 $ set noon
|
|
80 $ if p2 .eqs. "" then goto quit1
|
|
81 $ deassign/job emacs_file_name
|
|
82 $ quit1:
|
|
83 $ set message 'message_status
|
|
84 $ write sys$error -
|
|
85 "[Attached to DCL in directory ''F$TRNLNM("SYS$DISK")'''F$DIRECTORY()']"
|
|
86 $ if verify then -
|
|
87 $ set verify
|
|
88 $ exit
|