mirror of
https://github.com/urbit/shrub.git
synced 2024-12-26 21:44:11 +03:00
f285c7954e
This lets applications suggest to the client that they should gracefully unsubscribe from the session. Arguably this might be accomplished by %kick-ing the client and then crashing on their subsequent resubscribe, but this requires tracking their sole session id and has less semantic clarity on what's happening.
88 lines
5.5 KiB
Plaintext
88 lines
5.5 KiB
Plaintext
::
|
|
:::: /hoon/sole/sur
|
|
::
|
|
^?
|
|
|%
|
|
+$ sole-action :: sole to app
|
|
$: id=@ta :: duct id
|
|
$= dat
|
|
$% :: [%abo ~] :: reset interaction
|
|
[%det sole-change] :: command line edit
|
|
[%ret ~] :: submit and clear
|
|
[%clr ~] :: exit context
|
|
[%tab pos=@ud] :: tab complete
|
|
== ::
|
|
==
|
|
+$ sole-buffer (list @c) :: command state
|
|
+$ sole-change :: network change
|
|
$: ler=sole-clock :: destination clock
|
|
haw=@uvH :: source hash
|
|
ted=sole-edit :: state change
|
|
== ::
|
|
+$ sole-clock [own=@ud his=@ud] :: vector clock
|
|
+$ sole-edit :: shared state change
|
|
$% [%del p=@ud] :: delete one at
|
|
[%ins p=@ud q=@c] :: insert at
|
|
[%mor p=(list sole-edit)] :: combination
|
|
[%nop ~] :: no-op
|
|
[%set p=sole-buffer] :: discontinuity
|
|
== ::
|
|
+$ sole-effect :: app to sole
|
|
$% [%bel ~] :: beep
|
|
[%blk p=@ud q=@c] :: blink+match char at
|
|
[%bye ~] :: close session
|
|
[%clr ~] :: clear screen
|
|
[%det sole-change] :: edit command
|
|
[%err p=@ud] :: error point
|
|
[%klr p=styx] :: styled text line
|
|
[%mor p=(list sole-effect)] :: multiple effects
|
|
[%nex ~] :: save clear command
|
|
[%pro sole-prompt] :: set prompt
|
|
[%sag p=path q=*] :: save to jamfile
|
|
[%sav p=path q=@] :: save to file
|
|
[%tab p=(list [=cord =tank])] :: tab-complete list
|
|
[%tan p=(list tank)] :: classic tank
|
|
:: [%taq p=tanq] :: modern tank
|
|
[%txt p=tape] :: text line
|
|
[%url p=@t] :: activate url
|
|
== ::
|
|
+$ sole-command :: command state
|
|
$: pos=@ud :: cursor position
|
|
say=sole-share :: cursor
|
|
== ::
|
|
+$ sole-prompt :: prompt definition
|
|
$: vis=? :: command visible
|
|
tag=term :: history mode
|
|
cad=styx :: caption
|
|
== ::
|
|
+$ sole-share :: symmetric state
|
|
$: ven=sole-clock :: our vector clock
|
|
leg=(list sole-edit) :: unmerged edits
|
|
buf=sole-buffer :: sole state
|
|
== ::
|
|
:: ::
|
|
:: ::
|
|
++ sole-dialog :: standard dialog
|
|
|* out=$-(* *) :: output structure
|
|
$-(sole-input (sole-result out)) :: output function
|
|
:: ::
|
|
+$ sole-input tape :: prompt input
|
|
++ sole-result :: conditional result
|
|
|* out=$-(* *) :: output structure
|
|
$@(@ud (sole-product out)) :: error position
|
|
:: ::
|
|
++ sole-product :: success result
|
|
|* out=$-(* *) ::
|
|
%+ pair (list tank) ::
|
|
%+ each (unit out) :: ~ is abort
|
|
(pair sole-prompt (sole-dialog out)) :: ask and continue
|
|
:: ::
|
|
+$ sole-gen :: XX virtual type
|
|
$% [%say $-((sole-args) (cask))] :: direct noun
|
|
[%ask $-((sole-args) (sole-product (cask)))] :: dialog
|
|
== ::
|
|
++ sole-args :: generator arguments
|
|
|* _[* *] ::
|
|
,[[now=@da eny=@uvJ bek=beak] [,+<- ,+<+]] ::
|
|
--
|