diff --git a/arvo/dill.hoon b/arvo/dill.hoon index 224c35191..c270cf117 100644 --- a/arvo/dill.hoon +++ b/arvo/dill.hoon @@ -54,7 +54,7 @@ [%sag p=path q=*] :: save to jamfile [%sav p=path q=@] :: save to file == :: -++ gill ,@tas :: general contact +++ gill (pair ship term) :: general contact -- :: => |% :: console protocol ++ axle :: all dill state @@ -374,7 +374,8 @@ =: ore.all `p.q.hic dug.all ~ == - =^ moz all abet:(need (ax (need hey.all) [%flow %seat %dojo %talk ~])) + =^ moz all + abet:(need (ax (need hey.all) [%flow %seat [p.q.hic %dojo] ~])) [moz ..^$] =+ nus=(ax hen q.hic) ?~ nus diff --git a/arvo/gall.hoon b/arvo/gall.hoon index fbebe5ac7..757ac11bc 100644 --- a/arvo/gall.hoon +++ b/arvo/gall.hoon @@ -1162,8 +1162,8 @@ =. qel.sat (~(put by qel.sat) ost qul) ?: =(10 qul) ~& [%yawn-told-full ost our hen] - +>.$(qic.sat ~, vey.sat (~(put to vey.sat) hen %nuke p.kon)) - :: +>.$(qic.sat ~) + +>.$(qic.sat ~, vey.sat (~(put to vey.sat) hen %nuke p.kon)) + +>.$(qic.sat ~) :: %load =+ [hom=(slot 2 q.p.kon) old=(slot 3 q.p.kon)] diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index 0c4d8a337..b1decc642 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -2862,10 +2862,11 @@ ++ rash |*([naf=@ sab=_rule] (scan (trip naf) sab)) :: ++ ruse |* [los=tape sab=_rule] =+ vex=(sab [[0 0] los]) - ?. =((lent los) q.p.vex) ~ + =+ len=(lent los) + ?. =(len q.p.vex) [%| p=q.p.vex] ?~ q.vex - [~ u=~] - [~ u=[~ u=p.u.q.vex]] + [%| p=len] + [%& p=p.u.q.vex] ++ rush |*([naf=@ sab=_rule] (rust (trip naf) sab)) ++ rust |* [los=tape sab=_rule] =+ vex=((full sab) [[1 1] los]) diff --git a/main/app/dojo/core.hook b/main/app/dojo/core.hook index 0283b460e..0f453b530 100644 --- a/main/app/dojo/core.hook +++ b/main/app/dojo/core.hook @@ -22,6 +22,7 @@ ++ dojo-command :: $% [%flat p=path q=dojo-source] :: noun to unix atom [%pill p=path q=dojo-source] :: noun to unix pill + :: [%tree p=path q=dojo-source] :: noun to unix tree [%poke p=goal q=dojo-source] :: make and poke [%show p=dojo-source] :: print [%verb p=term q=dojo-source] :: store variable @@ -31,19 +32,18 @@ q=dojo-build :: general build == :: ++ dojo-build :: one ford step - $% :: [%ca p=mark q=dojo-build] :: cast - [%ex p=twig] :: hoon expression + $% [%ex p=twig] :: hoon expression [%di p=dojo-model] :: dialog [%dv p=path] :: gate from source - [%fi p=(list dojo-filter) q=dojo-source] :: filter pipeline + [%fi p=dojo-filter q=dojo-source] :: filter [%sc p=dojo-model] :: script [%tu p=(list dojo-source)] :: tuple [%va p=term] :: dojo variable == :: ++ dojo-filter :: pipeline filter - $% [%a p=twig] :: direct gate + $% [%a p=twig] :: function gate [%b p=mark] :: simple transmute - [%c p=dojo-source] :: full filter + [%c p=dojo-model] :: formal filter == :: ++ dojo-model :: data construction $: p=dojo-server :: core source diff --git a/main/app/seat/core.hook b/main/app/seat/core.hook index ee741e989..49006a50c 100644 --- a/main/app/seat/core.hook +++ b/main/app/seat/core.hook @@ -15,10 +15,10 @@ $: edg=_79 :: terminal columns off=@ud :: window offset kil=(unit (list ,@c)) :: kill buffer - apt=(list term) :: application ring + apt=(list gill) :: application ring maz=(unit (list ,@c)) :: master window - feg=(map term target) :: live applications - mir=(pair ,@ud (list ,@c)) :: mirrored state + feg=(map gill target) :: live applications + mir=(pair ,@ud (list ,@c)) :: mirrored terminal == :: ++ master :: master buffer $: pos=@ud :: cursor position @@ -30,6 +30,10 @@ lay=(map ,@ud (list ,@c)) :: editing overlay old=(list (list ,@c)) :: entries proper == :: + ++ action :: user action + $% [%add p=(list gill)] :: add agents + [%del p=(list gill)] :: delete agents + == :: ++ search :: reverse-i-search $: pos=@ud :: search position str=(list ,@c) :: search string @@ -67,6 +71,33 @@ |_ $: hid=hide :: system state house :: program state == :: +++ sp + |% ++ sp-action + %+ knee *action |. ~+ + ;~ pose + (stag %add ;~(pfix lus sp-gills)) + (stag %del ;~(pfix hep sp-gills)) + == + :: + ++ sp-gills + ;~ pose + %+ cook + |= a=ship + [[a %dojo] [a %talk] ~] + ;~(pfix sig fed:ag) + :: + (most ;~(plug com ace) sp-gill) + == + :: + ++ sp-gill + ;~ pose + (stag our.hid sym) + ;~ plug + ;~(pfix sig fed:ag) + ;~(pfix fas sym) + == + == + -- ++ se :: per source |_ [moz=(list move) [her=ship ost=bone] source] ++ se-abet :: resolve @@ -115,37 +146,59 @@ == :: ++ se-drop :: passive drop - |= nam=term + |= gyl=gill ^+ +> - ?> (~(has by feg) nam) - =: feg (~(del by feg) nam) - apt (skip apt |=(a=term =(nam a))) + ?> (~(has by feg) gyl) + =: feg (~(del by feg) gyl) + apt (skip apt |=(a=gill =(gyl a))) == ?^ apt +> ?^ maz +> +>(maz `~) :: + ++ ruse |* [los=tape sab=_rule] :: XX + =+ vex=(sab [[0 0] los]) + =+ len=(lent los) + ?. =(len q.p.vex) [%| p=q.p.vex] + ?~ q.vex + [%| p=len] + [%& p=p.u.q.vex] + :: ++ se-join :: add connection - |= nam=term + |= gyl=gill ^+ +> - ?< (~(has by feg) nam) - +>(maz ~, apt [nam apt], feg (~(put by feg) nam *target)) + ?< (~(has by feg) gyl) + +>(maz ~, apt [gyl apt], feg (~(put by feg) gyl *target)) :: ++ se-nuke :: active drop - |= nam=term + |= gyl=gill ^+ +> - (se-drop:(se-send nam %nuke [her ~[nam]] her) nam) + (se-drop:(se-send gyl %nuke [p.gyl ~[q.gyl]] her) gyl) :: ++ se-like :: act in master |= buf=(list ,@c) - (se-link (crip (tufa buf))) + =+ fey=(ruse (tufa buf) sp-action:sp) + ?- -.fey + %| (se-blit %bel ~) + %& ?- -.p.fey + %add + |- ^+ +>.^$ + ?~ p.p.fey +>.^$ + $(p.p.fey t.p.p.fey, +>.^$ (se-link i.p.p.fey)) + :: + %del + |- ^+ +>.^$ + ?~ p.p.fey +>.^$ + $(p.p.fey t.p.p.fey, +>.^$ (se-drop i.p.p.fey)) + == + == :: ++ se-link :: connect to app - |= nam=term + |= gyl=gill ^+ +> - %. nam + %. gyl =< se-join - (se-send nam %show [her ~[nam]] her /console) + (se-send gyl %show [p.gyl ~[q.gyl]] her /console) :: ++ se-blit :: give output |= bil=dill-blit @@ -175,7 +228,7 @@ |- ^- (list ,@c) ?~ apt [`@c`0x23 `@c`0x20 ~] =+ nex=$(apt t.apt) - %+ welp (tuba (trip i.apt)) + %+ welp (tuba (trip q.i.apt)) ?~(t.apt nex `_nex`[`@c`0x2c `@c`0x20 nex]) ?~ apt ~&(%se-no-view [0 ~]) @@ -192,15 +245,16 @@ %_(+> moz [mov moz]) :: ++ se-send :: send a message - |= [nam=term nog=note-gall] - (se-emit ost %pass [(scot %p her) nam ~] %g nog) + |= [gyl=gill nog=note-gall] + (se-emit ost %pass [(scot %p her) (scot %p p.gyl) q.gyl ~] %g nog) :: ++ se-tame - |= nam=term - ~(. ta [& nam] (~(got by feg) nam)) + |= gyl=gill + ^+ ta + ~(. ta [& gyl] (~(got by feg) gyl)) :: ++ se-pour :: receive results - |= [nam=term sil=sign-gall] + |= [gyl=gill sil=sign-gall] ^+ +> ?- -.sil %mean @@ -212,24 +266,27 @@ +>.$ :: %rush - ta-abet:ta-rap:(ta-fec:(se-tame nam) +>.sil) + ta-abet:ta-rap:(ta-fec:(se-tame gyl) +>.sil) == :: ++ ta :: per target |_ $: $: liv=? :: don't delete - nam=term :: target app + gyl=gill :: target app == :: target :: target state == :: ++ ta-abet :: resolve ^+ ..ta - ?. liv (se-nuke nam) - %_(+> feg (~(put by feg) nam +<+)) + ?. liv (se-nuke gyl) + %_(+> feg (~(put by feg) gyl +<+)) :: ++ ta-act :: send action |= act=console-action ^+ +> - %_(+> +> (se-send nam %mess [her ~[nam]] her %console-action !>(act))) + %_ +> + +> + (se-send gyl %mess [p.gyl ~[q.gyl]] her %console-action !>(act)) + == :: ++ ta-aro :: hear arrow |= key=?(%d %l %r %u) @@ -369,7 +426,7 @@ == :: ++ ta-rap :: send %took - .(+> (se-send nam %took [her ~[nam]] her)) + .(+> (se-send gyl %took [p.gyl ~[q.gyl]] her)) :: ++ ta-dog :: change cursor |= ted=console-edit @@ -520,7 +577,6 @@ :: ++ poke-dill-belt |= [ost=bone her=ship bet=dill-belt] - :: ~& %seat-poke ^- [(list move) _+>] =< se-abet =< se-view @@ -530,10 +586,11 @@ |= [ost=bone pax=path sih=*] ^- [(list move) _+>] =+ sih=((hard sign) sih) - ?> ?=([@ @ ~] pax) + ?> ?=([@ @ @ ~] pax) =< se-abet =< se-view - (~(se-pour se ~ [(slav %p i.pax) ost] (~(got by bin) ost)) i.t.pax +.sih) + =+ gyl=[(slav %p i.t.pax) i.t.t.pax] + (~(se-pour se ~ [(slav %p i.pax) ost] (~(got by bin) ost)) gyl +.sih) :: ++ pull |= ost=bone diff --git a/main/sur/console/core.hook b/main/sur/console/core.hook index 6b85e6ff9..2911169d0 100644 --- a/main/sur/console/core.hook +++ b/main/sur/console/core.hook @@ -110,5 +110,5 @@ [%sag p=path q=*] :: save to jamfile [%sav p=path q=@] :: save to file == :: -++ gill ,@tas :: general contact +++ gill (pair ship term) :: general contact --