diff --git a/pkg/arvo/lib/hood/drum.hoon b/pkg/arvo/lib/hood/drum.hoon index 001e07324..5399edeea 100644 --- a/pkg/arvo/lib/hood/drum.hoon +++ b/pkg/arvo/lib/hood/drum.hoon @@ -122,7 +122,7 @@ =+ (~(gut by bin) ses *source) =* dev - =| moz=(list card:agent:gall) -=| biz=(list dill-blit:dill) +=| biz=(list blit:dill) ::TODO should be per-session |% ++ this . ++ klr klr:format @@ -284,13 +284,13 @@ ^- (list card:agent:gall) ?~ biz (flop moz) :_ (flop moz) - =/ =dill-blit:dill ?~(t.biz i.biz [%mor (flop biz)]) + =/ =blit:dill ?~(t.biz i.biz [%mor (flop biz)]) ::TODO remove /drum after dill cleans up ::TODO but once we remove it, the empty trailing segment of :: /dill/[ses] would prevent outsiders from subscribing :: to the default session... =/ to=(list path) [/dill/[ses] ?~(ses ~[/drum] ~)] - [%give %fact to %dill-blit !>(dill-blit)] + [%give %fact to %dill-blit !>(blit)] :: ++ se-adze :: update connections ^+ . @@ -473,7 +473,7 @@ +>(eel (~(put in eel) gyl)) :: ++ se-blit :: give output - |= bil=dill-blit:dill + |= bil=blit:dill +>(biz [bil biz]) :: ++ se-blit-sys :: output to system @@ -640,7 +640,7 @@ %d ?^ buf.say.inp ta-del ?: =([our.hid %dojo] gyl) - +>(..ta (se-blit qit+~)) :: quit pier + +>(..ta (se-blit-sys %qit ~)) :: quit pier +>(..ta (se-klin gyl)) :: unlink app %e +>(pos.inp (lent buf.say.inp)) %f (ta-aro %r) diff --git a/pkg/arvo/sys/lull.hoon b/pkg/arvo/sys/lull.hoon index d89745182..32a1de2c5 100644 --- a/pkg/arvo/sys/lull.hoon +++ b/pkg/arvo/sys/lull.hoon @@ -1088,8 +1088,9 @@ [%clr ~] :: clear the screen [%hop p=$@(@ud [r=@ud c=@ud])] :: set cursor col/pos [%klr p=stub] :: put styled - [%put p=(list @c)] :: put text at cursor + [%mor p=(list blit)] :: multiple blits [%nel ~] :: newline + [%put p=(list @c)] :: put text at cursor [%sag p=path q=*] :: save to jamfile [%sav p=path q=@] :: save to file [%url p=@t] :: activate url @@ -1099,12 +1100,12 @@ $% belt :: client input [%cru p=@tas q=(list tank)] :: echo error [%hey ~] :: refresh + ::TODO inconsistent with %hit and %hop [%rez p=@ud q=@ud] :: resize, cols, rows [%yow p=gill:gall] :: connect to app == :: +$ dill-blit :: arvo output $% blit :: client output - [%mor p=(list dill-blit)] :: multiple blits [%qit ~] :: close console == :: +$ flog :: sent to %dill diff --git a/pkg/arvo/sys/vane/dill.hoon b/pkg/arvo/sys/vane/dill.hoon index e2c1e4d2e..afb827c32 100644 --- a/pkg/arvo/sys/vane/dill.hoon +++ b/pkg/arvo/sys/vane/dill.hoon @@ -178,13 +178,10 @@ ++ from :: receive blit |= bit=dill-blit ^+ +> - ?: ?=(%mor -.bit) - |- ^+ +>.^$ - ?~ p.bit +>.^$ - $(p.bit t.p.bit, +>.^$ ^$(bit i.p.bit)) ?: ?=(%qit -.bit) (dump %logo ~) - (done %blit [bit ~]) + ::TODO so why is this a (list blit) again? + (done %blit bit ~) :: ++ sponsor ^- ship diff --git a/pkg/base-dev/lib/dill.hoon b/pkg/base-dev/lib/dill.hoon index d4cecdf14..d3592c07d 100644 --- a/pkg/base-dev/lib/dill.hoon +++ b/pkg/base-dev/lib/dill.hoon @@ -18,6 +18,7 @@ %nel b+& %url s+p.blit %wyp b+& + %mor a+(turn p.blit ^blit) :: %sag %- pairs diff --git a/pkg/interface/webterm/lib/blit.ts b/pkg/interface/webterm/lib/blit.ts index 534328433..5285675f1 100644 --- a/pkg/interface/webterm/lib/blit.ts +++ b/pkg/interface/webterm/lib/blit.ts @@ -10,7 +10,9 @@ export const csi = (cmd: string, ...args: number[]) => { export const showBlit = (term: Terminal, blit: Blit) => { let out = ''; - if ('bel' in blit) { + if ('mor' in blit) { + return blit.mor.map(b => showBlit(term, b)); + } else if ('bel' in blit) { out += '\x07'; } else if ('clr' in blit) { term.clear(); diff --git a/pkg/npm/api/term/types.ts b/pkg/npm/api/term/types.ts index df4767cff..362973f31 100644 --- a/pkg/npm/api/term/types.ts +++ b/pkg/npm/api/term/types.ts @@ -27,8 +27,9 @@ export type Blit = | { clr: null } // clear the screen | { hop: number | { r: number, c: number } } // set cursor col/pos | { klr: Stub[] } // put styled - | { put: string[] } // put text at cursor + | { mor: Blit[] } // multiple blits | { nel: null } // newline + | { put: string[] } // put text at cursor | { sag: { path: string, file: string } } // save to jamfile | { sav: { path: string, file: string } } // save to file | { url: string } // activate url diff --git a/pkg/urbit/vere/io/term.c b/pkg/urbit/vere/io/term.c index e2b6376ca..ba5775cbd 100644 --- a/pkg/urbit/vere/io/term.c +++ b/pkg/urbit/vere/io/term.c @@ -1353,7 +1353,17 @@ _term_ef_blit(u3_utty* uty_u, _term_it_show_tour(uty_u, u3k(u3t(blt))); } break; - case c3__mor: //TMP backwards compatibility + case c3__mor: { + if (u3_nul != u3t(blt)) { + u3_noun bis = u3t(blt); + while (u3_nul != bis) { + _term_ef_blit(uty_u, u3k(u3h(bis))); + bis = u3t(bis); + } + break; + } + //TMP fall through to nel for backwards compatibility + } case c3__nel: { _term_it_show_nel(uty_u); } break;