mirror of
https://github.com/urbit/shrub.git
synced 2024-12-15 12:43:31 +03:00
754 lines
28 KiB
Plaintext
754 lines
28 KiB
Plaintext
!:
|
|
:: dill (4d), terminal handling
|
|
::
|
|
|= pit=vase
|
|
=> |% :: interface tiles
|
|
++ gift :: out result <-$
|
|
$% [%bbye ~] :: reset prompt
|
|
[%blit p=(list blit)] :: terminal output
|
|
[%init p=@p] :: report install
|
|
[%logo @] :: logout
|
|
[%veer p=@ta q=path r=@t] :: install vane
|
|
[%vega p=path] :: reboot by path
|
|
[%verb ~] ::
|
|
== ::
|
|
++ kiss :: in request ->$
|
|
$% [%belt p=belt] :: terminal input
|
|
[%blew p=blew] :: terminal config
|
|
[%boot p=*] :: weird %dill boot
|
|
[%crud p=@tas q=(list tank)] :: error with trace
|
|
[%flog p=flog] :: wrapped error
|
|
[%hail ~] :: terminal refresh
|
|
[%hook ~] :: this term hung up
|
|
[%harm ~] :: all terms hung up
|
|
[%init p=ship] :: after gall ready
|
|
[%noop ~] :: no operation
|
|
[%talk p=tank] ::
|
|
[%text p=tape] ::
|
|
== ::
|
|
++ flog :: sent to %dill
|
|
$% [%crud p=@tas q=(list tank)] ::
|
|
[%text p=tape] ::
|
|
== ::
|
|
++ mess :: message to terminal
|
|
$% [%term-ctrl p=(hypo ,%hail)] ::
|
|
[%term-in p=(hypo term-in)] ::
|
|
== ::
|
|
++ move ,[p=duct q=(mold note gift)] :: local move
|
|
++ note :: out request $->
|
|
$% $: %a ::
|
|
$% [%make p=(unit ,@t) q=@ud r=@ s=?] ::
|
|
[%sith p=@p q=@uw r=?] ::
|
|
== == ::
|
|
$: %c ::
|
|
$% [%warp p=sock q=riff] ::
|
|
== == ::
|
|
$: %d ::
|
|
$% [%crud p=@tas q=(list tank)] ::
|
|
[%text p=tape] ::
|
|
== == ::
|
|
$: %g ::
|
|
$% [%mess p=[p=ship q=path] q=ship r=mess] ::
|
|
[%nuke p=[p=ship q=path] q=ship] ::
|
|
[%show p=[p=ship q=path] q=ship r=path] ::
|
|
[%took p=[p=ship q=path] q=ship] ::
|
|
== == ::
|
|
$: %t ::
|
|
$% [%wait p=@da] ::
|
|
== == == ::
|
|
++ riff ,[p=desk q=(unit rave)] :: see %clay
|
|
++ sign :: in result $<-
|
|
$?
|
|
$: %c ::
|
|
$% [%writ p=riot] ::
|
|
== == ::
|
|
$: %g ::
|
|
$% [%logo p=@] ::
|
|
[%mean p=ares] ::
|
|
[%nice ~] ::
|
|
$: %rush ::
|
|
$% [%term-line q=term-line] ::
|
|
[%hymn q=manx] ::
|
|
== == ::
|
|
[%verb ~] ::
|
|
[%sage p=path q=*] ::
|
|
[%veer p=@ta q=path r=@t] ::
|
|
[%vega p=path] ::
|
|
== == ::
|
|
$: %t ::
|
|
$% [%wake ~] ::
|
|
== ==
|
|
$: @tas :: by any
|
|
$% [%crud p=@tas q=(list tank)] ::
|
|
[%init p=@p] ::
|
|
[%note p=@tD q=tank] ::
|
|
== == == ::
|
|
++ term-in ::
|
|
$: pax=path ::
|
|
$= jof ::
|
|
$% [%line p=cord] ::
|
|
[%res p=span] ::
|
|
[%cmd p=char] ::
|
|
[%type p=?] ::
|
|
== == ::
|
|
++ term-line ,[p=[p=cord q=prom r=cord] q=(list cord) r=(list tark)]
|
|
++ tark ?(tank [%stem p=@da q=tank r=tank]) ::
|
|
:::::::: :: dill tiles
|
|
++ bein :: terminal control
|
|
$: $: bul=@ud :: buffer length
|
|
bus=@ud :: cursor in buffer
|
|
but=(list ,@c) :: buffer text
|
|
buy=prom :: input style
|
|
== ::
|
|
$: hiz=@ud :: history depth
|
|
hux=path :: history path
|
|
hym=(map ,@ud (list ,@c)) :: history overlay
|
|
hyt=hist :: history object
|
|
hyr=(unit (list ,@c)) :: history search
|
|
== ::
|
|
$: pol=@ud :: length of prompt
|
|
pot=tape :: prompt text
|
|
== ::
|
|
== ::
|
|
++ blew ,[p=@ud q=@ud] :: columns rows
|
|
++ belt :: raw console input
|
|
$% [%aro p=?(%d %l %r %u)] :: arrow key
|
|
[%bac ~] :: true backspace
|
|
[%ctl p=@ud] :: control-key
|
|
[%del ~] :: true delete
|
|
[%met p=@ud] :: meta-key
|
|
[%ret ~] :: return
|
|
[%txt p=(list ,@c)] :: utf32 text
|
|
== ::
|
|
++ blit :: raw console output
|
|
$% [%bel ~] :: make a noise
|
|
[%clr ~] :: clear the screen
|
|
[%hop p=@ud] :: set cursor position
|
|
[%lin p=(list ,@c)] :: set current line
|
|
[%mor ~] :: newline
|
|
[%sag p=path q=*] :: save to jamfile
|
|
[%sav p=path q=@] :: save to file
|
|
== ::
|
|
++ blot :: kill ring
|
|
$: p=@ud :: length
|
|
q=@ud :: depth
|
|
r=(list (list ,@c)) :: kills
|
|
== ::
|
|
++ blur ,[p=@ud q=(unit bein) r=blot] :: columns, prompt
|
|
++ kyev ::
|
|
$: p=(set ?(%ctrl %shift %alt %meta)) ::
|
|
q=$|(cord [%act speck]) ::
|
|
== ::
|
|
++ speck ::
|
|
$? %ctrl %shift %alt %meta %entr %esc ::
|
|
%caps %uncap %pgup %pgdn %home %end ::
|
|
%baxp %del %ins %up %down %left ::
|
|
%right ::
|
|
== ::
|
|
++ yard :: terminal state
|
|
$: p=? :: verbose
|
|
q=blur :: display state
|
|
r=(map path hist) :: history
|
|
s=[p=? q=@da] :: typing?/last typed
|
|
== ::
|
|
:: XX LEGACY 12-16-2014
|
|
++ yord :: old terminal state
|
|
$: p=? :: verbose
|
|
q=blur :: display state
|
|
r=(map path hist) :: history
|
|
== ::
|
|
-- =>
|
|
|%
|
|
++ dy
|
|
|= [hen=duct our=ship now=@da def=(unit duct) dug=(map duct yard)]
|
|
=+ ^= yar ^- yard
|
|
=+ yur=(~(get by dug) hen)
|
|
?^ yur u.yur
|
|
?^ def (~(got by dug) u.def)
|
|
[& [80 ~ *blot] ~ | *@da]
|
|
=| mos=(list move)
|
|
|%
|
|
++ beep (curb [[%bel ~] ~]) :: send beep
|
|
++ curb :: send blits
|
|
|= wab=(list blit)
|
|
^+ +>
|
|
?~ wab +>
|
|
+>(mos [[hen [%give %blit (flop wab)]] mos])
|
|
::
|
|
++ wod :: word forward
|
|
|= bed=bein
|
|
^- @ud
|
|
?: =(bul.bed bus.bed)
|
|
bus.bed
|
|
?: =(' ' (snag bus.bed but.bed))
|
|
$(bus.bed +(bus.bed))
|
|
|-
|
|
^- @ud
|
|
?: =(bul.bed bus.bed)
|
|
bus.bed
|
|
?: =(' ' (snag bus.bed but.bed))
|
|
bus.bed
|
|
$(bus.bed +(bus.bed))
|
|
::
|
|
++ wob :: word backward
|
|
|= bed=bein
|
|
^- @ud
|
|
?: =(0 bus.bed)
|
|
bus.bed
|
|
?: =(' ' (snag (dec bus.bed) but.bed))
|
|
$(bus.bed (dec bus.bed))
|
|
|-
|
|
^- @ud
|
|
?: =(0 bus.bed)
|
|
bus.bed
|
|
?: =(' ' (snag (dec bus.bed) but.bed))
|
|
bus.bed
|
|
$(bus.bed (dec bus.bed))
|
|
::
|
|
++ edit :: change the bed
|
|
|= bed=bein
|
|
^+ +>
|
|
=. q.q.yar [~ bed]
|
|
?> ?=(^ q.q.yar)
|
|
%- curb
|
|
|- ^- (list blit)
|
|
?^ hyr.u.q.q.yar
|
|
=+ ris=:(weld "(reverse-i-search)'" (tufa u.hyr.u.q.q.yar) "': ")
|
|
%= $
|
|
pot.bed ris
|
|
pol.bed (lent ris)
|
|
hyr.u.q.q.yar ~
|
|
==
|
|
:~ [%hop (add pol.bed bus.bed)]
|
|
:- %lin
|
|
%+ weld pot.bed
|
|
?- buy.bed
|
|
%none but.bed
|
|
%text but.bed
|
|
%pass `(list ,@)`(runt [(lent but.bed) '*'] ~)
|
|
==
|
|
==
|
|
::
|
|
++ fume :: print tank, prefix
|
|
|= [pef=@tD tac=tank]
|
|
^+ +>
|
|
=+ wol=(~(win re tac) 2 p.q.yar)
|
|
%- furl
|
|
%+ turn wol
|
|
|= a=tape ^- tape
|
|
?> ?=([@ @ *] a)
|
|
[pef ' ' t.t.a]
|
|
::
|
|
++ furl :: print wall
|
|
|= wol=(list tape)
|
|
^+ +>
|
|
=. +>
|
|
%- curb
|
|
%- flop
|
|
|- ^- (list blit)
|
|
?~ wol ~
|
|
[[%lin (tuba i.wol)] [%mor ~] $(wol t.wol)]
|
|
?~ q.q.yar +>
|
|
(edit(q.q.yar ~) u.q.q.yar)
|
|
::
|
|
++ gore :: move in history
|
|
|= hup=@ud
|
|
^+ +>
|
|
=+ but=(goth hup)
|
|
=+ bul=(lent but)
|
|
%- edit
|
|
?> ?=(^ q.q.yar)
|
|
%= u.q.q.yar
|
|
hiz hup
|
|
hym %+ ~(put by hym.u.q.q.yar)
|
|
hiz.u.q.q.yar
|
|
but.u.q.q.yar
|
|
bus bul
|
|
bul bul
|
|
but but
|
|
==
|
|
::
|
|
++ goth :: extract history
|
|
|= hup=@ud
|
|
?> ?=(^ q.q.yar)
|
|
=+ byt=(~(get by hym.u.q.q.yar) hup)
|
|
?^ byt u.byt
|
|
(tuba (rip 3 (snag hup q.hyt.u.q.q.yar)))
|
|
::
|
|
++ kill :: add to kill ring
|
|
|= txt=(list ,@c)
|
|
^+ +>
|
|
=> ?. =(16 p.r.q.yar) .
|
|
.(p.r.q.yar 15, r.r.q.yar (scag 15 r.r.q.yar))
|
|
%= +>
|
|
p.r.q.yar +(p.r.q.yar)
|
|
q.r.q.yar 0
|
|
r.r.q.yar [txt r.r.q.yar]
|
|
==
|
|
::
|
|
++ look :: search in history
|
|
|= [hup=@ud txt=(list ,@c)]
|
|
^+ +>
|
|
=+ ^= beg
|
|
|= [a=(list ,@c) b=(list ,@c)] ^- ?
|
|
?~(a & ?~(b | &(=(i.a i.b) $(a t.a, b t.b))))
|
|
=+ ^= mid
|
|
|= [a=(list ,@c) b=(list ,@c)] ^- ?
|
|
?~(a & ?~(b | |((beg a b) $(b t.b))))
|
|
?> ?=(^ q.q.yar)
|
|
?: =(hup p.hyt.u.q.q.yar)
|
|
beep
|
|
=+ but=(goth hup)
|
|
?: (mid txt but)
|
|
(gore(hyr.u.q.q.yar [~ txt]) hup)
|
|
$(hup +(hup))
|
|
::
|
|
++ leap :: accept response
|
|
|= [tea=wire sih=sign]
|
|
^+ +>
|
|
?- -.+.sih
|
|
%crud :: error trace
|
|
=. q.+.sih [[%leaf (trip p.+.sih)] q.+.sih]
|
|
|- ^+ +>.^$
|
|
?~ q.+.sih +>.^$
|
|
(fume:$(q.+.sih t.q.+.sih) '!' `tank`i.q.+.sih)
|
|
::
|
|
%mean ~& %dill-mean +>.$
|
|
%nice +>.$
|
|
%note ?.(p.yar +>.$ (fume p.+.sih q.+.sih)) :: debug message
|
|
?(%rush %rust) :: XX reset prompt
|
|
=. mos :_(mos [hen %pass tea %g %took [our /terminal] our])
|
|
?> ?=(%term-line +>-.sih)
|
|
=. +>.$
|
|
=+ lis=(scag 1.000 r.q.sih)
|
|
=- (furl (zing (turn (flop lis) -)))
|
|
|= a=tark
|
|
^- wall
|
|
?+ -.a (~(win re a) 0 p.q.yar)
|
|
%stem
|
|
?: =(q.s.yar p.a) ~
|
|
~[(welp ~(ram re q.a) ~(ram re r.a))]
|
|
==
|
|
?. (levy r.q.sih |=(a=tark ?=(%stem -.a)))
|
|
+>.$ :: XX separate prompt/history messages
|
|
%- edit
|
|
=| bed=bein
|
|
=+ ^= hyt ^- hist
|
|
=+ hyt=(~(get by r.yar) /)
|
|
?~(hyt *hist u.hyt)
|
|
?: &(?=(^ q.q.yar) =(/ hux.u.q.q.yar))
|
|
=+ bun=(rip 5 (turf r.p.q.sih))
|
|
%= u.q.q.yar
|
|
bul ?~ r.p.q.sih bul.u.q.q.yar (lent bun)
|
|
bus ?~ r.p.q.sih bus.u.q.q.yar (lent bun)
|
|
but ?~ r.p.q.sih but.u.q.q.yar bun
|
|
hyt [+(p.hyt) [%$ q.hyt]]
|
|
pot (trip p.p.q.sih)
|
|
pol (met 3 p.p.q.sih)
|
|
buy q.p.q.sih
|
|
==
|
|
%_ bed
|
|
bul (met 3 r.p.q.sih)
|
|
bus (met 3 r.p.q.sih)
|
|
but (rip 3 r.p.q.sih)
|
|
buy q.p.q.sih
|
|
hux /
|
|
hiz 0
|
|
hyt [+(p.hyt) [%$ q.hyt]]
|
|
pot (trip p.p.q.sih)
|
|
pol (met 3 p.p.q.sih)
|
|
==
|
|
::
|
|
%sage :: write a jamfile
|
|
%= +>.$
|
|
mos :_(mos [hen [%give %blit [%sag p.+.sih q.+.sih] ~]])
|
|
==
|
|
?(%init %logo %veer %vega %verb) :: drop-throughs
|
|
+>(mos :_(mos [hen %give +.sih]))
|
|
%writ :: file exists
|
|
%_ +>.$
|
|
mos
|
|
:_ mos
|
|
[hen %pass /term-show %g %show [our /terminal] our /lines]
|
|
==
|
|
::
|
|
%wake
|
|
?: (lte (sub now ~s15) q.s.yar)
|
|
%_ +>.$
|
|
mos
|
|
:_ mos
|
|
[hen %pass /activity %t %wait (add q.s.yar ~s15)]
|
|
==
|
|
%_ +>.$
|
|
p.s.yar |
|
|
mos :_(mos (poke %term-in -:!>(*term-in) / %type %|))
|
|
==
|
|
==
|
|
::
|
|
++ lear :: handle request
|
|
|= kyz=kiss
|
|
^+ +>
|
|
?- -.kyz
|
|
%flog !!
|
|
%noop +>
|
|
%belt :: terminal input
|
|
=. +>.$
|
|
?. ?=(?(%bac %del %ret %txt) -.p.kyz) +>.$
|
|
?: p.s.yar +>.$(s.yar [& now])
|
|
%_ +>.$
|
|
s.yar [& now]
|
|
mos
|
|
:_ :_ mos
|
|
[hen %pass /activity %t %wait (add ?:(p.s.yar q.s.yar now) ~s15)]
|
|
(poke %term-in -:!>(*term-in) / %type %&)
|
|
==
|
|
?~ q.q.yar
|
|
%^ furl
|
|
"Downloading files from ticketing ship, please wait until"
|
|
"a prompt shows up. This could take several minutes."
|
|
~
|
|
?^ hyr.u.q.q.yar :: live search
|
|
?+ p.kyz $(hiz.u.q.q.yar 0, hyr.u.q.q.yar ~)
|
|
[%bac *]
|
|
?: =(~ u.hyr.u.q.q.yar)
|
|
(curb [[%bel ~] ~])
|
|
%- edit
|
|
%= u.q.q.yar
|
|
hyr [~ (scag (dec (lent u.hyr.u.q.q.yar)) u.hyr.u.q.q.yar)]
|
|
==
|
|
::
|
|
[%txt *] (look hiz.u.q.q.yar (weld u.hyr.u.q.q.yar p.p.kyz))
|
|
[%ctl %g] (edit u.q.q.yar(bul 0, bus 0, but ~, hiz 0, hyr ~))
|
|
[%ctl %r]
|
|
?: =(p.hyt.u.q.q.yar hiz.u.q.q.yar)
|
|
beep
|
|
(look +(hiz.u.q.q.yar) u.hyr.u.q.q.yar)
|
|
==
|
|
?- -.p.kyz
|
|
%aro :: arrow
|
|
?- p.p.kyz
|
|
%d :: down
|
|
?: =(0 hiz.u.q.q.yar)
|
|
beep
|
|
(gore (dec hiz.u.q.q.yar))
|
|
::
|
|
%l :: left
|
|
?: =(0 bus.u.q.q.yar)
|
|
beep
|
|
(edit u.q.q.yar(bus (dec bus.u.q.q.yar)))
|
|
::
|
|
%r :: right
|
|
?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
|
beep
|
|
(edit u.q.q.yar(bus +(bus.u.q.q.yar)))
|
|
::
|
|
%u
|
|
=+ hup=+(hiz.u.q.q.yar)
|
|
?: =(hup p.hyt.u.q.q.yar)
|
|
beep
|
|
(gore hup)
|
|
==
|
|
::
|
|
%bac :: backspace
|
|
^+ +>.$
|
|
?: =(0 bus.u.q.q.yar)
|
|
(curb `(list blit)`[[%bel ~] ~])
|
|
%- edit
|
|
%= u.q.q.yar
|
|
bus (dec bus.u.q.q.yar)
|
|
bul (dec bul.u.q.q.yar)
|
|
but
|
|
%+ weld
|
|
(scag (dec bus.u.q.q.yar) but.u.q.q.yar)
|
|
(slag bus.u.q.q.yar but.u.q.q.yar)
|
|
==
|
|
::
|
|
%ctl :: control
|
|
?+ p.p.kyz
|
|
beep
|
|
%a (edit u.q.q.yar(bus 0))
|
|
%b $(kyz [%belt %aro %l])
|
|
%d ?: ?& =(0 bul.u.q.q.yar)
|
|
=(0 bus.u.q.q.yar)
|
|
==
|
|
+>.$(mos :_(mos (poke %term-in -:!>(*term-in) / %cmd %d)))
|
|
$(kyz [%belt %del ~])
|
|
%e (edit u.q.q.yar(bus bul.u.q.q.yar))
|
|
%f $(kyz [%belt %aro %r])
|
|
%g +>.$(mos :_(mos (poke %term-in -:!>(*term-in) / %cmd %g)))
|
|
%k ?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
|
beep
|
|
=> .(+>.$ (kill (slag bus.u.q.q.yar but.u.q.q.yar)))
|
|
%- edit
|
|
?> ?=(^ q.q.yar)
|
|
%= u.q.q.yar
|
|
bul bus.u.q.q.yar
|
|
but (scag bus.u.q.q.yar but.u.q.q.yar)
|
|
==
|
|
%t ?: (lth bul.u.q.q.yar 2)
|
|
beep
|
|
=+ ^= pos
|
|
?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
|
(sub bus.u.q.q.yar 2)
|
|
?: =(0 bus.u.q.q.yar)
|
|
bus.u.q.q.yar
|
|
(dec bus.u.q.q.yar)
|
|
%- edit
|
|
%= u.q.q.yar
|
|
bus (add 2 pos)
|
|
but %+ weld
|
|
%+ weld
|
|
(scag pos but.u.q.q.yar)
|
|
^- (list ,@c) :+
|
|
(snag +(pos) but.u.q.q.yar)
|
|
(snag pos but.u.q.q.yar)
|
|
~
|
|
(slag (add 2 pos) but.u.q.q.yar)
|
|
==
|
|
%l +>.$(mos :_(mos [hen %give %blit [[%clr ~] ~]]))
|
|
%n $(kyz [%belt %aro %d])
|
|
%o %_ +>.$
|
|
mos
|
|
:_ :_ mos
|
|
[hen %pass /term-show %g %nuke [our /terminal] our]
|
|
[hen %pass /term-show %g %show [our /terminal] our /lines]
|
|
==
|
|
%p $(kyz [%belt %aro %u])
|
|
%u ?: =(0 bus.u.q.q.yar)
|
|
beep
|
|
=> .(+>.$ (kill (scag bus.u.q.q.yar but.u.q.q.yar)))
|
|
%- edit
|
|
?> ?=(^ q.q.yar)
|
|
%= u.q.q.yar
|
|
bus 0
|
|
bul (sub bul.u.q.q.yar bus.u.q.q.yar)
|
|
but (slag bus.u.q.q.yar but.u.q.q.yar)
|
|
==
|
|
%r (edit u.q.q.yar(hyr [~ ~]))
|
|
%w ?: =(0 bus.u.q.q.yar)
|
|
beep
|
|
=+ bow=(wob u.q.q.yar)
|
|
=+ sow=(sub bus.u.q.q.yar bow)
|
|
=> .(+>.$ (kill (swag [bow sow] but.u.q.q.yar)))
|
|
%- edit
|
|
?> ?=(^ q.q.yar)
|
|
%= u.q.q.yar
|
|
bus bow
|
|
bul (sub bul.u.q.q.yar sow)
|
|
but %+ welp
|
|
(scag bow but.u.q.q.yar)
|
|
(slag bus.u.q.q.yar but.u.q.q.yar)
|
|
==
|
|
%x +>.$(mos :_(mos (poke %term-in -:!>(*term-in) / %cmd %x)))
|
|
%y ?: =(0 p.r.q.yar)
|
|
beep
|
|
$(kyz [%belt %txt (snag q.r.q.yar r.r.q.yar)])
|
|
==
|
|
::
|
|
%del :: delete
|
|
?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
|
beep
|
|
%- edit
|
|
%= u.q.q.yar
|
|
bul (dec bul.u.q.q.yar)
|
|
but
|
|
%+ weld
|
|
(scag bus.u.q.q.yar but.u.q.q.yar)
|
|
(slag +(bus.u.q.q.yar) but.u.q.q.yar)
|
|
==
|
|
::
|
|
%met :: meta
|
|
?+ p.p.kyz
|
|
beep
|
|
%f
|
|
?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
|
beep
|
|
(edit u.q.q.yar(bus (wod u.q.q.yar)))
|
|
::
|
|
%b
|
|
?: =(0 bus.u.q.q.yar)
|
|
beep
|
|
(edit u.q.q.yar(bus (wob u.q.q.yar)))
|
|
::
|
|
%y
|
|
?: =(0 p.r.q.yar)
|
|
beep
|
|
=+ dol=(snag q.r.q.yar r.r.q.yar)
|
|
=+ leo=(lent dol)
|
|
?. (gte bus.u.q.q.yar leo)
|
|
beep
|
|
=+ pey=(sub bus.u.q.q.yar leo)
|
|
?. =(dol (swag [pey leo] but.u.q.q.yar))
|
|
beep
|
|
=. q.r.q.yar ?:(=(p.r.q.yar +(q.r.q.yar)) 0 +(q.r.q.yar))
|
|
=+ ney=(snag q.r.q.yar r.r.q.yar)
|
|
=+ lye=(lent ney)
|
|
%- edit
|
|
%= u.q.q.yar
|
|
bus (sub (add bus.u.q.q.yar lye) leo)
|
|
bul (sub (add bul.u.q.q.yar lye) leo)
|
|
but %+ weld
|
|
(scag pey but.u.q.q.yar)
|
|
%+ weld
|
|
`(list ,@c)`ney :: XX weird fuse-loop
|
|
(slag bus.u.q.q.yar but.u.q.q.yar)
|
|
==
|
|
==
|
|
::
|
|
%ret :: return
|
|
?: =(%none buy.u.q.q.yar) beep
|
|
=+ jab=(rap 3 (tufa but.u.q.q.yar))
|
|
%= +>.$
|
|
q.q.yar ~
|
|
r.yar
|
|
?: |(=(%$ jab) =(%pass buy.u.q.q.yar))
|
|
r.yar
|
|
%+ ~(put by r.yar)
|
|
hux.u.q.q.yar
|
|
[p.hyt.u.q.q.yar [jab ?~(q.hyt.u.q.q.yar ~ +.q.hyt.u.q.q.yar)]]
|
|
::
|
|
mos
|
|
:* (poke %term-ctrl -:!>(%hail) %hail)
|
|
[hen %give [%bbye ~]]
|
|
(poke %term-in -:!>(*term-in) / %line jab)
|
|
[hen %give [%blit [[%mor ~] ~]]]
|
|
mos
|
|
==
|
|
==
|
|
::
|
|
%txt :: text keys
|
|
?: =(%none buy.u.q.q.yar) beep
|
|
=+ let=(lent p.p.kyz)
|
|
%- edit
|
|
%= u.q.q.yar
|
|
bus (add let bus.u.q.q.yar)
|
|
bul (add let bul.u.q.q.yar)
|
|
but
|
|
;: weld
|
|
(scag bus.u.q.q.yar but.u.q.q.yar)
|
|
p.p.kyz
|
|
(slag bus.u.q.q.yar but.u.q.q.yar)
|
|
==
|
|
==
|
|
==
|
|
::
|
|
%blew +>.$(p.q.yar p.p.kyz) :: window size
|
|
%boot
|
|
%= +>.$
|
|
mos
|
|
:_(mos [hen %pass ~ (note %a p.kyz)])
|
|
==
|
|
::
|
|
%crud :: error trace
|
|
=. q.kyz [[%leaf (trip p.kyz)] q.kyz]
|
|
|- ^+ +>.^$
|
|
?~ q.kyz +>.^$
|
|
(fume:$(q.kyz t.q.kyz) '!' `tank`i.q.kyz)
|
|
::
|
|
%hail :: refresh
|
|
+>.$
|
|
::+>.$(mos :_(mos (poke %term-ctrl -:!>(%hail) %hail)))
|
|
::
|
|
%harm :: all terms hung up
|
|
=+ nug=((map duct yard) [[hen (~(get by dug) hen)] ~ ~])
|
|
^+ +>.$
|
|
%= +>.$
|
|
dug nug
|
|
::S mos :_(mos [hen %pass ~ %b kyz])
|
|
==
|
|
::
|
|
%hook :: this term hung up
|
|
~& %dill-hook-not-implemented
|
|
+>.$
|
|
::S +>.$(dug (~(del by dug) hen), mos :_(mos [hen %pass ~ %b kyz]))
|
|
::
|
|
%init
|
|
=. def `(fall def +.hen)
|
|
%= +>.$
|
|
our p.kyz
|
|
mos
|
|
:_ mos
|
|
[(need def) %pass / %c %warp [p.kyz p.kyz] %main `[%& %y [%ud 1] /]]
|
|
==
|
|
::
|
|
%talk (furl (~(win re p.kyz) 0 p.q.yar)) :: program output
|
|
%text $(kyz [%talk %leaf p.kyz]) :: simple message
|
|
==
|
|
::
|
|
++ poke
|
|
|= msg=mess
|
|
^- move
|
|
:^ hen %pass /term-mess
|
|
:^ %g %mess [our /terminal]
|
|
:- our msg
|
|
::
|
|
++ yerk :: complete core
|
|
^- [p=(list move) q=ship r=(unit duct) s=(map duct yard)]
|
|
:^ (flop mos) our def
|
|
(~(put by dug) hen yar)
|
|
--
|
|
--
|
|
=| $: %1 ::
|
|
our=ship ::
|
|
def=(unit duct) ::
|
|
dug=(map duct yard) ::
|
|
== ::
|
|
|= [now=@da eny=@ ski=sled] :: current invocation
|
|
|% :: poke/peek pattern
|
|
++ call :: handle request
|
|
|= $: hen=duct
|
|
hic=(hypo (hobo kiss))
|
|
==
|
|
^- [p=(list move) q=_..^$]
|
|
=> %= . :: XX temporary
|
|
q.hic
|
|
^- kiss
|
|
?: ?=(%soft -.q.hic)
|
|
:: ~& [%dill-call-soft (,@tas `*`-.p.q.hic)]
|
|
((hard kiss) p.q.hic)
|
|
?: (~(nest ut -:!>(*kiss)) | p.hic) q.hic
|
|
~& [%dill-call-flub (,@tas `*`-.q.hic)]
|
|
((hard kiss) q.hic)
|
|
==
|
|
?: ?=(%flog -.q.hic)
|
|
:_ ..^$
|
|
%+ turn (~(tap by dug) *(list ,[p=duct q=yard]))
|
|
|=([a=duct b=yard] [a %slip %d p.q.hic])
|
|
=+ res=yerk:(lear:(dy hen our now def dug) q.hic)
|
|
[-.res ..^$(our +<.res, dug +>+.res, def +>-.res)]
|
|
::
|
|
++ doze
|
|
|= [now=@da hen=duct]
|
|
^- (unit ,@da)
|
|
~
|
|
::
|
|
++ load :: XX LEGACY 12-16-2014
|
|
|= $= old
|
|
$% [%0 our=ship def=(unit duct) dug=(map duct yord)]
|
|
[%1 our=ship def=(unit duct) dug=(map duct yard)]
|
|
==
|
|
^+ ..^$
|
|
?- -.old
|
|
%1 %_(..^$ our our.old, def def.old, dug dug.old)
|
|
%0 %= $
|
|
old
|
|
%= old
|
|
- %1
|
|
dug (~(run by dug.old) |=(yor=yord [p q r | *@da]:yor))
|
|
==
|
|
==
|
|
==
|
|
::
|
|
++ scry
|
|
|= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path]
|
|
^- (unit (unit (pair mark ,*)))
|
|
[~ ~ [%tank >dug<]]
|
|
::
|
|
++ stay [%1 our def dug]
|
|
++ take :: process move
|
|
|= [tea=wire hen=duct hin=(hypo sign)]
|
|
^- [p=(list move) q=_..^$]
|
|
=+ res=yerk:(leap:(dy hen our now def dug) tea q.hin)
|
|
[-.res ..^$(our +<.res, dug +>+.res, def +>-.res)]
|
|
--
|