2015-05-17 04:05:56 +03:00
|
|
|
:: :: ::
|
2015-06-08 22:48:35 +03:00
|
|
|
:::: /hoon/drum/lib :: ::
|
2015-05-17 04:05:56 +03:00
|
|
|
:: :: ::
|
|
|
|
/? 310 :: version
|
2015-09-02 03:24:18 +03:00
|
|
|
/- sole
|
2015-09-02 01:20:17 +03:00
|
|
|
/+ sole
|
2015-09-02 03:24:18 +03:00
|
|
|
[. ^sole]
|
2015-05-17 04:05:56 +03:00
|
|
|
!: :: ::
|
|
|
|
:::: :: ::
|
|
|
|
:: :: ::
|
|
|
|
|% :: ::
|
2016-05-02 21:56:00 +03:00
|
|
|
++ drum-part {$drum $1 drum-pith-1} ::
|
|
|
|
++ drum-part-old {$drum $0 drum-pith-0} ::
|
2016-08-12 05:40:06 +03:00
|
|
|
++ drum-pith-0 _!! :: forgotten
|
2016-05-02 21:56:00 +03:00
|
|
|
++ drum-pith-1 ::
|
|
|
|
$: sys/(unit bone) :: local console
|
2016-11-12 03:23:20 +03:00
|
|
|
eel/(set gill:^gall) :: connect to
|
|
|
|
ray/(set well:^gall) ::
|
2016-10-31 19:49:48 +03:00
|
|
|
fur/(map dude:^gall (unit server)) :: servers
|
2015-12-20 23:50:45 +03:00
|
|
|
bin/(map bone source) :: terminals
|
2015-05-17 04:05:56 +03:00
|
|
|
== ::
|
|
|
|
:: :: ::
|
|
|
|
:::: :: ::
|
|
|
|
:: :: ::
|
|
|
|
++ server :: running server
|
2015-12-20 23:50:45 +03:00
|
|
|
$: syd/desk :: app identity
|
|
|
|
cas/case :: boot case
|
2015-05-17 04:05:56 +03:00
|
|
|
== ::
|
2016-07-06 06:44:25 +03:00
|
|
|
++ kill :: kill ring
|
|
|
|
$: pos/@ud :: ring position
|
|
|
|
num/@ud :: number of entries
|
|
|
|
max/_60 :: max entries
|
|
|
|
old/(list (list @c)) :: entries proper
|
|
|
|
== ::
|
2015-05-17 04:05:56 +03:00
|
|
|
++ source :: input device
|
2016-06-30 09:11:26 +03:00
|
|
|
$: edg/_80 :: terminal columns
|
2015-12-20 23:50:45 +03:00
|
|
|
off/@ud :: window offset
|
2016-07-06 06:44:25 +03:00
|
|
|
kil/kill :: kill buffer
|
2015-12-20 23:50:45 +03:00
|
|
|
inx/@ud :: ring index
|
2016-11-08 04:40:00 +03:00
|
|
|
fug/(map gill:^gall (unit target)) :: connections
|
2015-12-20 23:50:45 +03:00
|
|
|
mir/(pair @ud (list @c)) :: mirrored terminal
|
2015-05-17 04:05:56 +03:00
|
|
|
== ::
|
|
|
|
++ history :: past input
|
2015-12-20 23:50:45 +03:00
|
|
|
$: pos/@ud :: input position
|
|
|
|
num/@ud :: number of entries
|
|
|
|
lay/(map @ud (list @c)) :: editing overlay
|
|
|
|
old/(list (list @c)) :: entries proper
|
2015-05-17 04:05:56 +03:00
|
|
|
== ::
|
|
|
|
++ search :: reverse-i-search
|
2015-12-20 23:50:45 +03:00
|
|
|
$: pos/@ud :: search position
|
|
|
|
str/(list @c) :: search string
|
2015-05-17 04:05:56 +03:00
|
|
|
== ::
|
|
|
|
++ target :: application target
|
2016-11-08 04:40:00 +03:00
|
|
|
$: $= blt :: curr & prev belts
|
|
|
|
%+ pair
|
|
|
|
(unit dill-belt:^dill)
|
|
|
|
(unit dill-belt:^dill)
|
2016-07-06 06:44:25 +03:00
|
|
|
ris/(unit search) :: reverse-i-search
|
2015-12-20 23:50:45 +03:00
|
|
|
hit/history :: all past input
|
|
|
|
pom/sole-prompt :: static prompt
|
|
|
|
inp/sole-command :: input state
|
2015-05-17 04:05:56 +03:00
|
|
|
== ::
|
2015-09-02 01:20:17 +03:00
|
|
|
--
|
2015-05-17 04:31:34 +03:00
|
|
|
:: :: ::
|
2015-05-17 04:05:56 +03:00
|
|
|
:::: :: ::
|
|
|
|
:: :: ::
|
2015-09-02 01:20:17 +03:00
|
|
|
|%
|
2015-05-17 04:05:56 +03:00
|
|
|
++ deft-apes :: default servers
|
2015-12-20 23:50:45 +03:00
|
|
|
|= our/ship
|
2016-10-31 19:49:48 +03:00
|
|
|
%- ~(gas in *(set well:^gall))
|
2016-11-12 04:26:19 +03:00
|
|
|
^- (list well:^gall)
|
2016-11-08 04:40:00 +03:00
|
|
|
=+ myr=(clan:title:jael our)
|
2016-09-02 05:37:58 +03:00
|
|
|
?: ?=($pawn myr)
|
2015-07-14 03:46:37 +03:00
|
|
|
[[%base %talk] [%base %dojo] ~]
|
2016-09-02 05:37:58 +03:00
|
|
|
?: ?=($earl myr)
|
2015-10-08 01:42:19 +03:00
|
|
|
[[%home %dojo] ~]
|
2015-06-09 18:23:40 +03:00
|
|
|
[[%home %talk] [%home %dojo] ~]
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
|
|
|
++ deft-fish :: default connects
|
2015-12-20 23:50:45 +03:00
|
|
|
|= our/ship
|
2016-11-08 04:40:00 +03:00
|
|
|
%- ~(gas in *(set gill:^gall))
|
|
|
|
^- (list gill:^gall)
|
2016-11-12 04:26:19 +03:00
|
|
|
?: ?=($earl (clan:title:jael our))
|
2016-11-08 04:40:00 +03:00
|
|
|
[[(sein:title:jael our) %talk] [our %dojo] ~]
|
2015-06-09 18:23:40 +03:00
|
|
|
[[our %talk] [our %dojo] ~]
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2016-07-06 06:44:25 +03:00
|
|
|
++ drum-make :: initial part
|
2015-12-20 23:50:45 +03:00
|
|
|
|= our/ship
|
2016-07-04 09:27:08 +03:00
|
|
|
^- drum-part
|
2015-05-17 04:05:56 +03:00
|
|
|
:* %drum
|
2016-07-06 06:44:25 +03:00
|
|
|
%1
|
2016-05-02 21:56:00 +03:00
|
|
|
~ :: sys
|
2015-05-17 04:05:56 +03:00
|
|
|
(deft-fish our) :: eel
|
|
|
|
(deft-apes our) :: ray
|
|
|
|
~ :: fur
|
|
|
|
~ :: bin
|
|
|
|
== ::
|
2016-07-06 06:44:25 +03:00
|
|
|
++ drum-port
|
2016-05-02 21:56:00 +03:00
|
|
|
|= old/?(drum-part drum-part-old) ^- drum-part
|
2016-08-12 05:40:06 +03:00
|
|
|
?- &2.old
|
|
|
|
$1 old
|
|
|
|
$0 !! :: XX unreachable, see issue #242
|
2016-07-06 06:44:25 +03:00
|
|
|
==
|
|
|
|
::
|
2015-05-17 04:05:56 +03:00
|
|
|
++ drum-path :: encode path
|
2016-11-12 04:26:19 +03:00
|
|
|
|= gyl/gill:^gall
|
|
|
|
^- wire
|
2015-06-02 23:52:33 +03:00
|
|
|
[%drum %phat (scot %p p.gyl) q.gyl ~]
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
|
|
|
++ drum-phat :: decode path
|
2016-11-08 04:40:00 +03:00
|
|
|
|= way/wire ^- gill:^gall
|
2015-12-09 04:54:26 +03:00
|
|
|
?>(?=({@ @ $~} way) [(slav %p i.way) i.t.way])
|
2015-09-02 01:20:17 +03:00
|
|
|
--
|
|
|
|
!:
|
|
|
|
::::
|
|
|
|
::
|
2016-11-12 02:14:47 +03:00
|
|
|
|= {bowl:^gall drum-part} :: main drum work
|
2016-08-28 08:04:28 +03:00
|
|
|
=+ (fall (~(get by bin) ost) *source)
|
2015-10-23 01:45:48 +03:00
|
|
|
=* dev -
|
2015-09-02 01:20:17 +03:00
|
|
|
=> |% :: arvo structures
|
|
|
|
++ pear :: request
|
2015-12-20 23:50:45 +03:00
|
|
|
$% {$sole-action p/sole-action} ::
|
2015-12-09 04:54:26 +03:00
|
|
|
{$talk-command command:talk} ::
|
2015-09-02 01:20:17 +03:00
|
|
|
== ::
|
|
|
|
++ lime :: update
|
2016-11-08 04:40:00 +03:00
|
|
|
$% {$dill-blit dill-blit:^dill} ::
|
2015-09-02 01:20:17 +03:00
|
|
|
== ::
|
|
|
|
++ card :: general card
|
2015-12-14 10:58:14 +03:00
|
|
|
$% {$conf wire dock $load ship term} ::
|
2015-12-09 04:54:26 +03:00
|
|
|
{$diff lime} ::
|
|
|
|
{$peer wire dock path} ::
|
|
|
|
{$poke wire dock pear} ::
|
|
|
|
{$pull wire dock $~} ::
|
2015-09-02 01:20:17 +03:00
|
|
|
== ::
|
|
|
|
++ move (pair bone card) :: user-level move
|
|
|
|
--
|
2016-11-08 04:40:00 +03:00
|
|
|
|_ {moz/(list move) biz/(list dill-blit:^dill)}
|
2015-09-02 01:20:17 +03:00
|
|
|
++ diff-sole-effect-phat ::
|
2016-07-04 09:27:08 +03:00
|
|
|
|= {way/wire fec/sole-effect}
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
=+ gyl=(drum-phat way)
|
|
|
|
?: (se-aint gyl) +>.$
|
|
|
|
(se-diff gyl fec)
|
|
|
|
::
|
|
|
|
++ peer ::
|
2016-09-08 08:30:47 +03:00
|
|
|
|= pax/path
|
2016-08-22 00:15:58 +03:00
|
|
|
~| [%drum-unauthorized our+our src+src] :: ourself
|
2016-11-08 04:40:00 +03:00
|
|
|
?> (team:title:jael our src) :: or our own moon
|
2016-09-08 08:30:47 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
(se-text "[{<src>}, driving {<our>}]")
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ poke-dill-belt ::
|
2016-11-08 04:40:00 +03:00
|
|
|
|= bet/dill-belt:^dill
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
(se-belt bet)
|
|
|
|
::
|
|
|
|
++ poke-start ::
|
2016-10-31 19:49:48 +03:00
|
|
|
|= wel/well:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
(se-born wel)
|
|
|
|
::
|
|
|
|
++ poke-link ::
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
(se-link gyl)
|
|
|
|
::
|
2015-10-20 23:48:11 +03:00
|
|
|
++ poke-unlink ::
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-10-20 23:48:11 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
(se-klin gyl)
|
|
|
|
::
|
2016-04-30 00:41:55 +03:00
|
|
|
++ poke-exit ::
|
2016-11-08 04:40:00 +03:00
|
|
|
|= $~
|
|
|
|
se-abet:(se-blit-sys `dill-blit:^dill`[%qit ~])
|
2016-04-30 00:41:55 +03:00
|
|
|
::
|
2016-04-30 02:18:59 +03:00
|
|
|
++ poke-put ::
|
|
|
|
|= {pax/path txt/@}
|
2016-05-02 21:56:00 +03:00
|
|
|
se-abet:(se-blit-sys [%sav pax txt]) ::
|
2016-04-30 02:18:59 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ reap-phat ::
|
2016-07-04 09:27:08 +03:00
|
|
|
|= {way/wire saw/(unit tang)}
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
=+ gyl=(drum-phat way)
|
|
|
|
?~ saw
|
|
|
|
(se-join gyl)
|
|
|
|
(se-dump:(se-drop & gyl) u.saw)
|
|
|
|
::
|
|
|
|
++ take-coup-phat ::
|
2016-07-04 09:27:08 +03:00
|
|
|
|= {way/wire saw/(unit tang)}
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
?~ saw +>
|
|
|
|
=+ gyl=(drum-phat way)
|
|
|
|
?: (se-aint gyl) +>.$
|
2016-09-08 08:30:47 +03:00
|
|
|
%- se-dump:(se-drop & gyl)
|
|
|
|
:_ u.saw
|
|
|
|
>[%drum-coup-fail src ost gyl]<
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ take-onto ::
|
2016-10-31 19:49:48 +03:00
|
|
|
|= {way/wire saw/(each suss:^gall tang)}
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
2015-12-09 04:54:26 +03:00
|
|
|
?> ?=({@ @ $~} way)
|
2015-09-02 01:20:17 +03:00
|
|
|
?> (~(has by fur) i.t.way)
|
2016-11-14 02:32:08 +03:00
|
|
|
=/ wel/well:^gall [i.way i.t.way]
|
2016-09-09 03:56:17 +03:00
|
|
|
?- saw
|
|
|
|
{$| *} (se-dump p.saw)
|
|
|
|
{$& *} ?> =(q.wel p.p.saw)
|
|
|
|
:: =. +>.$ (se-text "live {<p.saw>}")
|
|
|
|
+>.$(fur (~(put by fur) q.wel `[p.wel %da r.p.saw]))
|
2016-07-04 09:27:08 +03:00
|
|
|
==
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ quit-phat ::
|
2016-07-04 09:27:08 +03:00
|
|
|
|= way/wire
|
2015-09-02 01:20:17 +03:00
|
|
|
=< se-abet =< se-view
|
|
|
|
=+ gyl=(drum-phat way)
|
|
|
|
~& [%drum-quit src ost gyl]
|
|
|
|
(se-drop %| gyl)
|
|
|
|
:: :: ::
|
|
|
|
:::: :: ::
|
|
|
|
:: :: ::
|
|
|
|
++ se-abet :: resolve
|
|
|
|
^- (quip move *drum-part)
|
2016-09-02 05:42:59 +03:00
|
|
|
=* pith +>+>+<+
|
2015-09-02 01:20:17 +03:00
|
|
|
?. se-ably
|
|
|
|
=. . se-adit
|
2016-09-02 05:42:59 +03:00
|
|
|
[(flop moz) pith]
|
2016-05-02 21:56:00 +03:00
|
|
|
=. sys ?^(sys sys `ost)
|
2015-10-23 01:45:48 +03:00
|
|
|
=. . se-subze:se-adze:se-adit
|
2016-09-02 05:42:59 +03:00
|
|
|
:_ pith(bin (~(put by bin) ost dev))
|
|
|
|
%- flop
|
2015-09-02 01:20:17 +03:00
|
|
|
^- (list move)
|
2016-09-02 05:42:59 +03:00
|
|
|
?~ biz moz
|
|
|
|
:_ moz
|
|
|
|
[ost %diff %dill-blit ?~(t.biz i.biz [%mor (flop biz)])]
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-ably (~(has by sup) ost) :: caused by console
|
|
|
|
++ se-adit :: update servers
|
2015-10-23 01:45:48 +03:00
|
|
|
^+ .
|
|
|
|
%+ roll (~(tap in ray))
|
|
|
|
=< .(con +>)
|
2016-10-31 19:49:48 +03:00
|
|
|
|= {wel/well:^gall con/_..se-adit} ^+ con
|
2015-10-23 01:45:48 +03:00
|
|
|
=. +>.$ con
|
2016-07-04 09:27:08 +03:00
|
|
|
=+ hig=(~(get by fur) q.wel)
|
2015-12-10 12:17:19 +03:00
|
|
|
?: &(?=(^ hig) |(?=($~ u.hig) =(p.wel syd.u.u.hig))) +>.$
|
2015-10-23 01:45:48 +03:00
|
|
|
=. +>.$ (se-text "activated app {(trip p.wel)}/{(trip q.wel)}")
|
|
|
|
%- se-emit(fur (~(put by fur) q.wel ~))
|
|
|
|
[ost %conf [%drum p.wel q.wel ~] [our q.wel] %load our p.wel]
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-adze :: update connections
|
2015-10-23 01:45:48 +03:00
|
|
|
^+ .
|
|
|
|
%+ roll (~(tap in eel))
|
|
|
|
=< .(con +>)
|
2016-11-08 04:40:00 +03:00
|
|
|
|= {gil/gill:^gall con/_.} ^+ con
|
2015-10-23 01:45:48 +03:00
|
|
|
=. +>.$ con
|
|
|
|
?: (~(has by fug) gil)
|
|
|
|
+>.$
|
|
|
|
(se-peer gil)
|
|
|
|
::
|
|
|
|
++ se-subze :: downdate connections
|
|
|
|
=< .(dev (~(got by bin) ost))
|
|
|
|
=. bin (~(put by bin) ost dev)
|
|
|
|
^+ .
|
|
|
|
%- ~(rep by bin)
|
|
|
|
=< .(con +>)
|
2015-12-20 23:50:45 +03:00
|
|
|
|= {{ost/bone dev/source} con/_.} ^+ con
|
2015-10-23 01:45:48 +03:00
|
|
|
=+ xeno=se-subze-local:%_(con ost ost, dev dev)
|
|
|
|
xeno(ost ost.con, dev dev.con, bin (~(put by bin) ost dev.xeno))
|
|
|
|
::
|
|
|
|
++ se-subze-local
|
|
|
|
^+ .
|
|
|
|
%- ~(rep by fug)
|
|
|
|
=< .(con +>)
|
2016-11-08 04:40:00 +03:00
|
|
|
|= {{gil/gill:^gall *} con/_.} ^+ con
|
2015-10-23 01:45:48 +03:00
|
|
|
=. +>.$ con
|
|
|
|
?: (~(has in eel) gil)
|
|
|
|
+>.$
|
|
|
|
(se-nuke gil)
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-aint :: ignore result
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
^- ?
|
|
|
|
?. (~(has by bin) ost) &
|
|
|
|
=+ gyr=(~(get by fug) gyl)
|
2016-09-02 05:37:58 +03:00
|
|
|
|(?=($~ gyr) ?=($~ u.gyr))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-alas :: recalculate index
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
=+ [xin=0 wag=se-amor]
|
|
|
|
|- ^+ +>.^$
|
|
|
|
?~ wag +>.^$(inx 0)
|
|
|
|
?: =(i.wag gyl) +>.^$(inx xin)
|
|
|
|
$(wag t.wag, xin +(xin))
|
|
|
|
::
|
|
|
|
++ se-amor :: live targets
|
2016-11-08 04:40:00 +03:00
|
|
|
^- (list gill:^gall)
|
2016-08-28 08:25:19 +03:00
|
|
|
%+ skim (~(tap in eel))
|
2016-11-12 04:19:34 +03:00
|
|
|
|=(a/gill:^gall ?=({$~ $~ *} (~(get by fug) a)))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-anon :: rotate index
|
|
|
|
=+ wag=se-amor
|
|
|
|
?~ wag +
|
2015-12-21 00:16:39 +03:00
|
|
|
:: ~& [%se-anon inx+inx wag+wag nex+(mod +(inx) (lent se-amor))]
|
2016-08-28 08:25:19 +03:00
|
|
|
+(inx (mod +(inx) (lent wag)))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-agon :: current gill
|
2016-11-08 04:40:00 +03:00
|
|
|
^- (unit gill:^gall)
|
2015-09-02 01:20:17 +03:00
|
|
|
=+ wag=se-amor
|
|
|
|
?~ wag ~
|
2016-11-12 04:19:34 +03:00
|
|
|
`(snag inx `(list gill:^gall)`wag)
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-belt :: handle input
|
2016-11-08 04:40:00 +03:00
|
|
|
|= bet/dill-belt:^dill
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
2016-09-06 22:55:50 +03:00
|
|
|
?: ?=({?($cru $hey $rez $yow) *} bet) :: target-agnostic
|
2016-09-09 03:57:05 +03:00
|
|
|
?- bet
|
2016-09-06 22:55:50 +03:00
|
|
|
{$cru *} (se-dump:(se-text (trip p.bet)) q.bet)
|
2016-09-09 03:57:05 +03:00
|
|
|
{$hey *} +>(mir [0 ~]) :: refresh
|
|
|
|
{$rez *} +>(edg (dec p.bet)) :: resize window
|
|
|
|
{$yow *} ~&([%no-yow -.bet] +>)
|
|
|
|
==
|
2015-09-02 01:20:17 +03:00
|
|
|
=+ gul=se-agon
|
2016-09-08 08:21:09 +03:00
|
|
|
?: |(?=($~ gul) (se-aint u.gul))
|
2016-09-02 05:37:58 +03:00
|
|
|
(se-blit %bel ~)
|
2016-09-08 08:21:09 +03:00
|
|
|
ta-abet:(ta-belt:(se-tame u.gul) bet)
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-born :: new server
|
2016-10-31 19:49:48 +03:00
|
|
|
|= wel/well:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
?: (~(has in ray) wel)
|
|
|
|
(se-text "[already running {<p.wel>}/{<q.wel>}]")
|
2016-09-08 08:31:42 +03:00
|
|
|
%= +>
|
|
|
|
ray (~(put in ray) wel)
|
|
|
|
eel (~(put in eel) [our q.wel])
|
|
|
|
==
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-drop :: disconnect
|
2016-11-08 04:40:00 +03:00
|
|
|
|= {pej/? gyl/gill:^gall}
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
=+ lag=se-agon
|
|
|
|
?. (~(has by fug) gyl) +>.$
|
|
|
|
=. fug (~(del by fug) gyl)
|
|
|
|
=. eel ?.(pej eel (~(del in eel) gyl))
|
2016-07-04 09:27:08 +03:00
|
|
|
=. +>.$ ?. &(?=(^ lag) !=(gyl u.lag))
|
2015-09-02 01:20:17 +03:00
|
|
|
+>.$(inx 0)
|
|
|
|
(se-alas u.lag)
|
|
|
|
=. +>.$ (se-text "[unlinked from {<gyl>}]")
|
2015-09-08 23:26:31 +03:00
|
|
|
?: =(gyl [our %dojo]) :: undead dojo
|
2015-06-02 21:36:56 +03:00
|
|
|
(se-link gyl)
|
2015-10-08 01:42:19 +03:00
|
|
|
+>.$
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-dump :: print tanks
|
2015-12-20 23:50:45 +03:00
|
|
|
|= tac/(list tank)
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
?. se-ably (se-talk tac)
|
2016-09-04 06:55:02 +03:00
|
|
|
=/ wol/wall
|
|
|
|
(zing (turn (flop tac) |=(a/tank (~(win re a) [0 edg]))))
|
2015-09-02 01:20:17 +03:00
|
|
|
|- ^+ +>.^$
|
|
|
|
?~ wol +>.^$
|
|
|
|
$(wol t.wol, +>.^$ (se-blit %out (tuba i.wol)))
|
|
|
|
::
|
|
|
|
++ se-join :: confirm connection
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
=. +> (se-text "[linked to {<gyl>}]")
|
2016-09-02 05:37:58 +03:00
|
|
|
?> ?=($~ (~(got by fug) gyl))
|
2015-10-08 01:42:19 +03:00
|
|
|
(se-alas(fug (~(put by fug) gyl `*target)) gyl)
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-nuke :: teardown
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
2015-10-08 01:42:19 +03:00
|
|
|
(se-drop:(se-pull gyl) & gyl)
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
2015-10-20 23:48:11 +03:00
|
|
|
++ se-klin :: disconnect app
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-10-20 23:48:11 +03:00
|
|
|
+>(eel (~(del in eel) gyl))
|
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ se-link :: connect to app
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
+>(eel (~(put in eel) gyl))
|
|
|
|
::
|
|
|
|
++ se-blit :: give output
|
2016-11-08 04:40:00 +03:00
|
|
|
|= bil/dill-blit:^dill
|
2015-09-02 01:20:17 +03:00
|
|
|
+>(biz [bil biz])
|
|
|
|
::
|
2016-11-12 00:39:54 +03:00
|
|
|
++ se-blit-sys :: output to system
|
2016-11-08 04:40:00 +03:00
|
|
|
|= bil/dill-blit:^dill ^+ +>
|
2016-05-02 21:56:00 +03:00
|
|
|
?~ sys ~&(%se-blit-no-sys +>)
|
|
|
|
(se-emit [u.sys %diff %dill-blit bil])
|
2016-04-30 00:41:55 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ se-show :: show buffer, raw
|
2015-12-20 23:50:45 +03:00
|
|
|
|= lin/(pair @ud (list @c))
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
?: =(mir lin) +>
|
|
|
|
=. +> ?:(=(q.mir q.lin) +> (se-blit %pro q.lin))
|
|
|
|
=. +> ?:(=(p.mir p.lin) +> (se-blit %hop p.lin))
|
|
|
|
+>(mir lin)
|
|
|
|
::
|
2016-07-04 09:27:08 +03:00
|
|
|
++ se-just :: adjusted buffer
|
2015-12-20 23:50:45 +03:00
|
|
|
|= lin/(pair @ud (list @c))
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
=. off ?:((lth p.lin edg) 0 (sub p.lin edg))
|
|
|
|
(se-show (sub p.lin off) (scag edg (slag off q.lin)))
|
|
|
|
::
|
|
|
|
++ se-view :: flush buffer
|
2016-09-07 17:21:41 +03:00
|
|
|
^+ .
|
2015-09-02 01:20:17 +03:00
|
|
|
=+ gul=se-agon
|
2016-09-08 08:21:09 +03:00
|
|
|
?: |(?=($~ gul) (se-aint u.gul)) +
|
2016-09-07 17:21:41 +03:00
|
|
|
(se-just ta-vew:(se-tame u.gul))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-emit :: emit move
|
2015-12-20 23:50:45 +03:00
|
|
|
|= mov/move
|
2015-09-02 01:20:17 +03:00
|
|
|
%_(+> moz [mov moz])
|
|
|
|
::
|
2016-09-08 18:12:17 +03:00
|
|
|
++ se-talk
|
2016-07-04 09:27:08 +03:00
|
|
|
|= tac/(list tank)
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
2016-03-19 01:31:42 +03:00
|
|
|
:: XX talk should be usable for stack traces, see urbit#584 which this change
|
|
|
|
:: closed for the problems there
|
|
|
|
((slog (flop tac)) +>)
|
|
|
|
::(se-emit 0 %poke /drum/talk [our %talk] (said:talk our %drum now eny tac))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-text :: return text
|
2015-12-20 23:50:45 +03:00
|
|
|
|= txt/tape
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
?. se-ably (se-talk [%leaf txt]~)
|
|
|
|
(se-blit %out (tuba txt))
|
|
|
|
::
|
|
|
|
++ se-poke :: send a poke
|
2016-11-08 04:40:00 +03:00
|
|
|
|= {gyl/gill:^gall par/pear}
|
2016-09-07 07:32:40 +03:00
|
|
|
(se-emit [ost %poke (drum-path gyl) gyl par])
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-peer :: send a peer
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2016-09-07 07:32:40 +03:00
|
|
|
%- se-emit(fug (~(put by fug) gyl ~))
|
|
|
|
[ost %peer (drum-path gyl) gyl /sole]
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-pull :: cancel subscription
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2016-09-07 07:32:40 +03:00
|
|
|
(se-emit [ost %pull (drum-path gyl) gyl ~])
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-tame :: switch connection
|
2016-11-08 04:40:00 +03:00
|
|
|
|= gyl/gill:^gall
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ ta
|
2015-10-08 01:42:19 +03:00
|
|
|
~(. ta [& gyl] (need (~(got by fug) gyl)))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ se-diff :: receive results
|
2016-11-08 04:40:00 +03:00
|
|
|
|= {gyl/gill:^gall fec/sole-effect}
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
ta-abet:(ta-fec:(se-tame gyl) fec)
|
|
|
|
::
|
|
|
|
++ ta :: per target
|
2015-12-20 23:50:45 +03:00
|
|
|
|_ $: $: liv/? :: don't delete
|
2016-11-08 04:40:00 +03:00
|
|
|
gyl/gill:^gall :: target app
|
2015-09-02 01:20:17 +03:00
|
|
|
== ::
|
|
|
|
target :: target state
|
|
|
|
== ::
|
|
|
|
++ ta-abet :: resolve
|
|
|
|
^+ ..ta
|
2016-07-04 09:27:08 +03:00
|
|
|
?. liv
|
2015-10-08 01:42:19 +03:00
|
|
|
?: (~(has in (deft-fish our)) gyl)
|
2015-12-21 00:16:39 +03:00
|
|
|
(se-blit qit+~)
|
2015-10-22 23:23:44 +03:00
|
|
|
(se-nuke gyl)
|
2015-09-02 01:20:17 +03:00
|
|
|
..ta(fug (~(put by fug) gyl ``target`+<+))
|
|
|
|
::
|
2015-12-20 23:50:45 +03:00
|
|
|
++ ta-poke |=(a/pear +>(..ta (se-poke gyl a))) :: poke gyl
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-act :: send action
|
2015-12-20 23:50:45 +03:00
|
|
|
|= act/sole-action
|
2015-05-17 22:39:03 +03:00
|
|
|
^+ +>
|
2015-10-02 21:40:20 +03:00
|
|
|
(ta-poke %sole-action act)
|
2015-06-02 23:52:33 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-aro :: hear arrow
|
2015-12-20 23:50:45 +03:00
|
|
|
|= key/?($d $l $r $u)
|
2015-05-17 07:50:05 +03:00
|
|
|
^+ +>
|
2015-09-02 01:20:17 +03:00
|
|
|
?- key
|
2015-12-09 04:54:26 +03:00
|
|
|
$d =. ris ~
|
2016-07-04 09:27:08 +03:00
|
|
|
?. =(num.hit pos.hit)
|
2015-09-02 01:20:17 +03:00
|
|
|
(ta-mov +(pos.hit))
|
|
|
|
?: =(0 (lent buf.say.inp))
|
|
|
|
ta-bel
|
|
|
|
(ta-hom:ta-nex %set ~)
|
2015-12-09 04:54:26 +03:00
|
|
|
$l ?: =(0 pos.inp) ta-bel
|
2015-11-16 03:52:59 +03:00
|
|
|
+>(pos.inp (dec pos.inp), ris ~)
|
2015-12-09 04:54:26 +03:00
|
|
|
$r ?: =((lent buf.say.inp) pos.inp)
|
2015-09-02 01:20:17 +03:00
|
|
|
ta-bel
|
2015-11-16 03:52:59 +03:00
|
|
|
+>(pos.inp +(pos.inp), ris ~)
|
2015-12-09 04:54:26 +03:00
|
|
|
$u =. ris ~
|
2015-09-02 01:20:17 +03:00
|
|
|
?:(=(0 pos.hit) ta-bel (ta-mov (dec pos.hit)))
|
|
|
|
==
|
2015-05-17 07:50:05 +03:00
|
|
|
::
|
2016-07-06 06:44:25 +03:00
|
|
|
++ ta-bel :: beep
|
2016-09-09 03:57:05 +03:00
|
|
|
.(+> (se-blit %bel ~), q.blt ~) :: forget belt
|
|
|
|
::
|
|
|
|
++ ta-belt :: handle input
|
2016-11-14 02:28:37 +03:00
|
|
|
|= bet/dill-belt:^dill
|
2016-09-09 03:57:05 +03:00
|
|
|
^+ +>
|
2016-09-06 22:55:50 +03:00
|
|
|
?< ?=({?($cru $hey $rez $yow) *} bet) :: target-specific
|
2016-09-09 03:57:05 +03:00
|
|
|
=. blt [q.blt `bet] :: remember belt
|
|
|
|
?- bet
|
|
|
|
{$aro *} (ta-aro p.bet)
|
|
|
|
{$bac *} ta-bac
|
|
|
|
{$ctl *} (ta-ctl p.bet)
|
|
|
|
{$del *} ta-del
|
|
|
|
{$met *} (ta-met p.bet)
|
|
|
|
{$ret *} ta-ret
|
|
|
|
{$txt *} (ta-txt p.bet)
|
|
|
|
==
|
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-det :: send edit
|
2015-12-20 23:50:45 +03:00
|
|
|
|= ted/sole-edit
|
2015-05-17 04:05:56 +03:00
|
|
|
^+ +>
|
2015-09-02 01:20:17 +03:00
|
|
|
(ta-act %det [[his.ven.say.inp own.ven.say.inp] (sham buf.say.inp) ted])
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-bac :: hear backspace
|
|
|
|
^+ .
|
|
|
|
?^ ris
|
|
|
|
?: =(~ str.u.ris)
|
|
|
|
ta-bel
|
|
|
|
.(str.u.ris (scag (dec (lent str.u.ris)) str.u.ris))
|
|
|
|
?: =(0 pos.inp)
|
2016-09-04 03:35:17 +03:00
|
|
|
?~ buf.say.inp
|
|
|
|
(ta-act %clr ~)
|
|
|
|
ta-bel
|
|
|
|
(ta-hom %del (dec pos.inp))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ ta-ctl :: hear control
|
2015-12-20 23:50:45 +03:00
|
|
|
|= key/@ud
|
2015-05-17 04:05:56 +03:00
|
|
|
^+ +>
|
2015-09-02 01:20:17 +03:00
|
|
|
?+ key ta-bel
|
2015-12-09 04:54:26 +03:00
|
|
|
$a +>(pos.inp 0, ris ~)
|
|
|
|
$b (ta-aro %l)
|
|
|
|
$c ta-bel(ris ~)
|
|
|
|
$d ?: &(=(0 pos.inp) =(0 (lent buf.say.inp)))
|
2015-09-02 01:20:17 +03:00
|
|
|
+>(liv |)
|
|
|
|
ta-del
|
2015-12-09 04:54:26 +03:00
|
|
|
$e +>(pos.inp (lent buf.say.inp))
|
|
|
|
$f (ta-aro %r)
|
|
|
|
$g ?~ ris ta-bel
|
2015-11-16 03:52:59 +03:00
|
|
|
(ta-hom(pos.hit num.hit, ris ~) [%set ~])
|
2015-12-09 04:54:26 +03:00
|
|
|
$k =+ len=(lent buf.say.inp)
|
2015-09-02 01:20:17 +03:00
|
|
|
?: =(pos.inp len)
|
2016-07-04 09:27:08 +03:00
|
|
|
ta-bel
|
2016-09-03 08:09:53 +03:00
|
|
|
(ta-kil %r [pos.inp (sub len pos.inp)])
|
2015-12-09 04:54:26 +03:00
|
|
|
$l +>(+> (se-blit %clr ~))
|
|
|
|
$n (ta-aro %d)
|
|
|
|
$p (ta-aro %u)
|
2016-07-04 09:27:08 +03:00
|
|
|
$r ?~ ris
|
|
|
|
+>(ris `[pos.hit ~])
|
2015-09-02 01:20:17 +03:00
|
|
|
?: =(0 pos.u.ris)
|
|
|
|
ta-bel
|
|
|
|
(ta-ser ~)
|
2015-12-09 04:54:26 +03:00
|
|
|
$t =+ len=(lent buf.say.inp)
|
2015-09-02 01:20:17 +03:00
|
|
|
?: |(=(0 pos.inp) (lth len 2))
|
|
|
|
ta-bel
|
2016-08-28 07:44:28 +03:00
|
|
|
=+ sop=(sub pos.inp ?:(=(len pos.inp) 2 1))
|
|
|
|
%- ta-hom(ris ~)
|
|
|
|
(rep:edit [sop 2] (flop (swag [sop 2] buf.say.inp)))
|
2015-12-09 04:54:26 +03:00
|
|
|
$u ?: =(0 pos.inp)
|
2015-09-02 01:20:17 +03:00
|
|
|
ta-bel
|
2016-09-03 08:09:53 +03:00
|
|
|
(ta-kil %l [0 pos.inp])
|
2015-12-09 04:54:26 +03:00
|
|
|
$v ta-bel
|
2016-07-05 09:50:32 +03:00
|
|
|
$w ?: =(0 pos.inp)
|
|
|
|
ta-bel
|
2016-09-03 08:09:53 +03:00
|
|
|
=+ sop=(ta-off %l %ace pos.inp)
|
|
|
|
(ta-kil %l [(sub pos.inp sop) sop])
|
2015-12-09 04:54:26 +03:00
|
|
|
$x +>(+> se-anon)
|
2016-07-06 06:44:25 +03:00
|
|
|
$y ?: =(0 num.kil)
|
|
|
|
ta-bel
|
|
|
|
%- ta-hom(ris ~)
|
2016-08-28 07:44:28 +03:00
|
|
|
(cat:edit pos.inp (snag (sub num.kil pos.kil) old.kil))
|
2015-05-17 04:05:56 +03:00
|
|
|
==
|
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-del :: hear delete
|
2015-05-17 04:05:56 +03:00
|
|
|
^+ .
|
2015-09-02 01:20:17 +03:00
|
|
|
?: =((lent buf.say.inp) pos.inp)
|
|
|
|
.(+> (se-blit %bel ~))
|
|
|
|
(ta-hom %del pos.inp)
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-erl :: hear local error
|
2016-07-04 09:27:08 +03:00
|
|
|
|= pos/@ud
|
2015-09-02 01:20:17 +03:00
|
|
|
ta-bel(pos.inp (min pos (lent buf.say.inp)))
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-err :: hear remote error
|
2015-12-20 23:50:45 +03:00
|
|
|
|= pos/@ud
|
2015-09-02 01:20:17 +03:00
|
|
|
(ta-erl (~(transpose sole say.inp) pos))
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-fec :: apply effect
|
2015-12-20 23:50:45 +03:00
|
|
|
|= fec/sole-effect
|
2015-05-17 04:05:56 +03:00
|
|
|
^+ +>
|
2016-09-09 03:56:17 +03:00
|
|
|
?- fec
|
|
|
|
{$bel *} ta-bel
|
|
|
|
{$blk *} +>
|
|
|
|
{$clr *} +>(+> (se-blit fec))
|
|
|
|
{$det *} (ta-got +.fec)
|
|
|
|
{$err *} (ta-err p.fec)
|
|
|
|
{$mor *} |- ^+ +>.^$
|
|
|
|
?~ p.fec +>.^$
|
|
|
|
$(p.fec t.p.fec, +>.^$ ^$(fec i.p.fec))
|
|
|
|
{$nex *} ta-nex
|
|
|
|
{$pro *} (ta-pro +.fec)
|
2016-09-04 06:55:02 +03:00
|
|
|
{$tan *} +>(+> (se-dump p.fec))
|
2016-09-09 03:56:17 +03:00
|
|
|
{$sag *} +>(+> (se-blit fec))
|
|
|
|
{$sav *} +>(+> (se-blit fec))
|
2016-09-04 06:55:02 +03:00
|
|
|
{$txt *} +>(+> (se-text p.fec))
|
2016-09-09 03:56:17 +03:00
|
|
|
{$url *} +>(+> (se-blit fec))
|
2015-09-02 01:20:17 +03:00
|
|
|
==
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-dog :: change cursor
|
2015-12-20 23:50:45 +03:00
|
|
|
|= ted/sole-edit
|
2015-09-02 01:20:17 +03:00
|
|
|
%_ +>
|
|
|
|
pos.inp
|
|
|
|
=+ len=(lent buf.say.inp)
|
|
|
|
%+ min len
|
|
|
|
|- ^- @ud
|
2016-09-09 03:56:17 +03:00
|
|
|
?- ted
|
|
|
|
{$del *} ?:((gth pos.inp p.ted) (dec pos.inp) pos.inp)
|
|
|
|
{$ins *} ?:((gte pos.inp p.ted) +(pos.inp) pos.inp)
|
|
|
|
{$mor *} |- ^- @ud
|
|
|
|
?~ p.ted pos.inp
|
|
|
|
$(p.ted t.p.ted, pos.inp ^$(ted i.p.ted))
|
|
|
|
{$nop *} pos.inp
|
|
|
|
{$set *} len
|
2015-09-02 01:20:17 +03:00
|
|
|
==
|
|
|
|
==
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-got :: apply change
|
2015-12-20 23:50:45 +03:00
|
|
|
|= cal/sole-change
|
2015-09-02 01:20:17 +03:00
|
|
|
=^ ted say.inp (~(receive sole say.inp) cal)
|
|
|
|
(ta-dog ted)
|
2015-06-02 23:52:33 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-hom :: local edit
|
2015-12-20 23:50:45 +03:00
|
|
|
|= ted/sole-edit
|
2015-06-02 23:52:33 +03:00
|
|
|
^+ +>
|
2015-09-02 01:20:17 +03:00
|
|
|
=. +> (ta-det ted)
|
|
|
|
=. +> (ta-dog(say.inp (~(commit sole say.inp) ted)) ted)
|
|
|
|
+>
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2016-09-03 04:55:07 +03:00
|
|
|
++ ta-jump :: buffer pos
|
|
|
|
|= {dir/?($l $r) til/?($ace $edg $wrd) pos/@ud}
|
|
|
|
^- @ud
|
|
|
|
%- ?:(?=($l dir) sub add)
|
|
|
|
[pos (ta-off dir til pos)]
|
|
|
|
::
|
2016-09-03 08:09:53 +03:00
|
|
|
++ ta-kil :: kill selection
|
|
|
|
|= {dir/?($l $r) sel/{@ @}}
|
|
|
|
^+ +>
|
|
|
|
=+ buf=(swag sel buf.say.inp)
|
|
|
|
%. (cut:edit sel)
|
|
|
|
%= ta-hom
|
2016-08-28 07:31:35 +03:00
|
|
|
ris ~
|
2016-09-03 08:09:53 +03:00
|
|
|
kil
|
|
|
|
?. ?& ?=(^ old.kil)
|
|
|
|
?=(^ p.blt)
|
|
|
|
?| ?=({$ctl ?($k $u $w)} u.p.blt)
|
|
|
|
?=({$met ?($d $bac)} u.p.blt)
|
|
|
|
== ==
|
|
|
|
%= kil :: prepend
|
|
|
|
num +(num.kil)
|
|
|
|
pos +(num.kil)
|
|
|
|
old (scag max.kil `(list (list @c))`[buf old.kil])
|
|
|
|
==
|
|
|
|
%= kil :: cumulative yanks
|
|
|
|
pos num.kil
|
|
|
|
old :_ t.old.kil
|
|
|
|
?- dir
|
|
|
|
$l (welp buf i.old.kil)
|
|
|
|
$r (welp i.old.kil buf)
|
2016-08-28 07:31:35 +03:00
|
|
|
== ==
|
|
|
|
==
|
|
|
|
::
|
2016-07-04 04:35:09 +03:00
|
|
|
++ lcas :: lowercase
|
|
|
|
|* a/(list @)
|
|
|
|
^+ a
|
|
|
|
%+ turn a
|
|
|
|
|=(a/@ ?.(&((gte a 'A') (lte a 'Z')) a (add 32 a)))
|
|
|
|
::
|
|
|
|
++ ucas :: uppercase
|
|
|
|
|* a/(list @)
|
|
|
|
^+ a
|
|
|
|
%+ turn a
|
|
|
|
|=(a/@ ?.(&((gte a 'a') (lte a 'z')) a (sub a 32)))
|
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-met :: meta key
|
2015-12-20 23:50:45 +03:00
|
|
|
|= key/@ud
|
2016-07-03 07:35:42 +03:00
|
|
|
?+ key ta-bel
|
2016-09-09 03:56:17 +03:00
|
|
|
$dot ?. &(?=(^ old.hit) ?=(^ i.old.hit))
|
2016-07-03 05:53:23 +03:00
|
|
|
ta-bel
|
2016-09-09 03:56:17 +03:00
|
|
|
=+ old=`(list @c)`i.old.hit
|
2016-09-04 03:24:55 +03:00
|
|
|
=+ sop=(ta-jump(buf.say.inp old) %l %ace (lent old))
|
2016-07-03 05:53:23 +03:00
|
|
|
%- ta-hom(ris ~)
|
2016-09-04 03:24:55 +03:00
|
|
|
(cat:edit pos.inp (slag sop old))
|
2016-07-03 07:35:42 +03:00
|
|
|
::
|
2016-07-03 05:53:23 +03:00
|
|
|
$bac ?: =(0 pos.inp)
|
|
|
|
ta-bel
|
2016-09-03 08:09:53 +03:00
|
|
|
=+ sop=(ta-off %l %edg pos.inp)
|
|
|
|
(ta-kil %l [(sub pos.inp sop) sop])
|
2016-07-03 07:35:42 +03:00
|
|
|
::
|
2016-07-03 05:53:23 +03:00
|
|
|
$b ?: =(0 pos.inp)
|
|
|
|
ta-bel
|
2016-09-03 04:55:07 +03:00
|
|
|
+>(pos.inp (ta-jump %l %edg pos.inp))
|
2016-07-03 21:39:40 +03:00
|
|
|
::
|
|
|
|
$c ?: =(pos.inp (lent buf.say.inp))
|
|
|
|
ta-bel
|
2016-09-03 04:55:07 +03:00
|
|
|
=+ sop=(ta-jump %r %wrd pos.inp)
|
|
|
|
%- ta-hom(pos.inp (ta-jump %r %edg sop))
|
2016-08-28 07:44:28 +03:00
|
|
|
(rep:edit [sop 1] (ucas (swag [sop 1] buf.say.inp)))
|
2016-07-03 21:39:40 +03:00
|
|
|
::
|
2016-07-03 05:53:23 +03:00
|
|
|
$d ?: =(pos.inp (lent buf.say.inp))
|
|
|
|
ta-bel
|
2016-09-03 08:09:53 +03:00
|
|
|
(ta-kil %r [pos.inp (ta-off %r %edg pos.inp)])
|
2016-07-03 07:35:42 +03:00
|
|
|
::
|
2016-07-03 05:53:23 +03:00
|
|
|
$f ?: =(pos.inp (lent buf.say.inp))
|
|
|
|
ta-bel
|
2016-09-03 04:55:07 +03:00
|
|
|
+>(pos.inp (ta-jump %r %edg pos.inp))
|
2016-07-03 21:39:40 +03:00
|
|
|
::
|
2016-07-05 07:48:56 +03:00
|
|
|
$r %- ta-hom(lay.hit (~(put by lay.hit) pos.hit ~))
|
2016-08-28 07:44:28 +03:00
|
|
|
:- %set
|
|
|
|
?: =(pos.hit num.hit) ~
|
|
|
|
(snag (sub num.hit +(pos.hit)) old.hit)
|
2016-07-05 07:48:56 +03:00
|
|
|
::
|
2016-09-03 04:55:07 +03:00
|
|
|
$t =+ a=(ta-jump %r %edg pos.inp)
|
|
|
|
=+ b=(ta-jump %l %edg a)
|
|
|
|
=+ c=(ta-jump %l %edg b)
|
2016-07-04 03:57:43 +03:00
|
|
|
?: =(b c)
|
|
|
|
ta-bel
|
2016-09-03 04:55:07 +03:00
|
|
|
=+ next=[b (sub a b)]
|
|
|
|
=+ prev=[c (ta-off %r %edg c)]
|
2016-08-28 07:44:28 +03:00
|
|
|
%- ta-hom(pos.inp a)
|
2016-07-04 03:57:43 +03:00
|
|
|
:~ %mor
|
2016-08-28 07:44:28 +03:00
|
|
|
(rep:edit next (swag prev buf.say.inp))
|
|
|
|
(rep:edit prev (swag next buf.say.inp))
|
2016-07-04 03:57:43 +03:00
|
|
|
==
|
2016-07-03 21:39:40 +03:00
|
|
|
::
|
|
|
|
?($u $l)
|
|
|
|
?: =(pos.inp (lent buf.say.inp))
|
|
|
|
ta-bel
|
2016-07-04 04:35:09 +03:00
|
|
|
=+ case=?:(?=($u key) ucas lcas)
|
2016-09-03 04:55:07 +03:00
|
|
|
=+ sop=(ta-jump %r %wrd pos.inp)
|
|
|
|
=+ sel=[sop (ta-off %r %edg sop)]
|
2016-07-03 21:39:40 +03:00
|
|
|
%- ta-hom
|
2016-09-03 04:55:07 +03:00
|
|
|
(rep:edit sel (case (swag sel buf.say.inp)))
|
2016-07-06 06:44:25 +03:00
|
|
|
::
|
|
|
|
$y ?. ?& (gth num.kil 0)
|
|
|
|
?=(^ p.blt)
|
2016-08-28 07:44:28 +03:00
|
|
|
?| ?=({$ctl $y} u.p.blt)
|
|
|
|
?=({$met $y} u.p.blt)
|
2016-07-06 06:44:25 +03:00
|
|
|
== ==
|
|
|
|
ta-bel
|
|
|
|
=+ las=(lent (snag (sub num.kil pos.kil) old.kil))
|
|
|
|
=+ pos=?:(=(1 pos.kil) num.kil (dec pos.kil))
|
|
|
|
%- ta-hom(pos.kil pos, ris ~)
|
2016-08-28 07:44:28 +03:00
|
|
|
%+ rep:edit
|
|
|
|
[(sub pos.inp las) las]
|
|
|
|
(snag (sub num.kil pos) old.kil)
|
2016-07-02 06:31:51 +03:00
|
|
|
==
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-mov :: move in history
|
2015-12-20 23:50:45 +03:00
|
|
|
|= sop/@ud
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
?: =(sop pos.hit) +>
|
|
|
|
%+ %= ta-hom
|
|
|
|
pos.hit sop
|
2016-07-04 09:27:08 +03:00
|
|
|
lay.hit %+ ~(put by lay.hit)
|
|
|
|
pos.hit
|
2015-09-02 01:20:17 +03:00
|
|
|
buf.say.inp
|
|
|
|
==
|
|
|
|
%set
|
|
|
|
%- (bond |.((snag (sub num.hit +(sop)) old.hit)))
|
|
|
|
(~(get by lay.hit) sop)
|
|
|
|
::
|
|
|
|
++ ta-nex :: advance history
|
2016-09-09 03:56:17 +03:00
|
|
|
?: ?| ?=($~ buf.say.inp)
|
|
|
|
&(?=(^ old.hit) =(buf.say.inp i.old.hit))
|
2016-06-30 09:11:26 +03:00
|
|
|
==
|
|
|
|
%_(. pos.hit num.hit, ris ~, lay.hit ~)
|
2015-09-02 01:20:17 +03:00
|
|
|
%_ .
|
|
|
|
num.hit +(num.hit)
|
|
|
|
pos.hit +(num.hit)
|
|
|
|
ris ~
|
|
|
|
lay.hit ~
|
|
|
|
old.hit [buf.say.inp old.hit]
|
|
|
|
==
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2016-09-03 04:55:07 +03:00
|
|
|
++ ta-off :: buffer pos offset
|
|
|
|
|= {dir/?($l $r) til/?($ace $edg $wrd) pos/@ud}
|
|
|
|
^- @ud
|
|
|
|
%- ?- til $ace ace:offset
|
|
|
|
$edg edg:offset
|
|
|
|
$wrd wrd:offset
|
|
|
|
==
|
|
|
|
?- dir $l (flop (scag pos buf.say.inp))
|
|
|
|
$r (slag pos buf.say.inp)
|
|
|
|
==
|
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-pro :: set prompt
|
2015-12-20 23:50:45 +03:00
|
|
|
|= pom/sole-prompt
|
2015-09-02 01:20:17 +03:00
|
|
|
+>(pom pom(cad :(welp (scow %p p.gyl) ":" (trip q.gyl) cad.pom)))
|
|
|
|
::
|
|
|
|
++ ta-ret :: hear return
|
2015-10-08 01:42:19 +03:00
|
|
|
(ta-act %ret ~)
|
2015-05-17 04:05:56 +03:00
|
|
|
::
|
2015-09-02 01:20:17 +03:00
|
|
|
++ ta-ser :: reverse search
|
2015-12-20 23:50:45 +03:00
|
|
|
|= ext/(list @c)
|
2015-05-17 04:05:56 +03:00
|
|
|
^+ +>
|
2015-12-10 12:17:19 +03:00
|
|
|
?: |(?=($~ ris) =(0 pos.u.ris)) ta-bel
|
2015-11-16 03:14:41 +03:00
|
|
|
=+ sop=?~(ext (dec pos.u.ris) pos.u.ris)
|
2015-09-02 01:20:17 +03:00
|
|
|
=+ tot=(weld str.u.ris ext)
|
2015-11-16 03:14:41 +03:00
|
|
|
=+ dol=(slag (sub num.hit sop) old.hit)
|
2015-09-02 01:20:17 +03:00
|
|
|
=+ ^= ser
|
|
|
|
=+ ^= beg
|
2015-12-20 23:50:45 +03:00
|
|
|
|= {a/(list @c) b/(list @c)} ^- ?
|
2015-09-02 01:20:17 +03:00
|
|
|
?~(a & ?~(b | &(=(i.a i.b) $(a t.a, b t.b))))
|
2015-12-20 23:50:45 +03:00
|
|
|
|= {a/(list @c) b/(list @c)} ^- ?
|
2015-09-02 01:20:17 +03:00
|
|
|
?~(a & ?~(b | |((beg a b) $(b t.b))))
|
2016-07-04 09:27:08 +03:00
|
|
|
=+ ^= sup
|
2015-12-09 04:54:26 +03:00
|
|
|
|- ^- (unit @ud)
|
2015-09-02 01:20:17 +03:00
|
|
|
?~ dol ~
|
|
|
|
?: (ser tot i.dol)
|
|
|
|
`sop
|
|
|
|
$(sop (dec sop), dol t.dol)
|
|
|
|
?~ sup ta-bel
|
2015-11-16 03:14:41 +03:00
|
|
|
(ta-mov(str.u.ris tot, pos.u.ris u.sup) (dec u.sup))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ ta-txt :: hear text
|
2015-12-20 23:50:45 +03:00
|
|
|
|= txt/(list @c)
|
2015-09-02 01:20:17 +03:00
|
|
|
^+ +>
|
|
|
|
?^ ris
|
|
|
|
(ta-ser txt)
|
2016-08-28 07:44:28 +03:00
|
|
|
(ta-hom (cat:edit pos.inp txt))
|
2015-09-02 01:20:17 +03:00
|
|
|
::
|
|
|
|
++ ta-vew :: computed prompt
|
2015-12-09 04:54:26 +03:00
|
|
|
|- ^- (pair @ud (list @c))
|
2016-08-28 07:44:44 +03:00
|
|
|
=; vew/(pair (list @c) tape)
|
|
|
|
[(add pos.inp (lent q.vew)) (weld (tuba q.vew) p.vew)]
|
|
|
|
?: vis.pom
|
|
|
|
:- buf.say.inp :: default prompt
|
|
|
|
?~ ris
|
|
|
|
cad.pom
|
|
|
|
:(welp "(reverse-i-search)'" (tufa str.u.ris) "': ")
|
|
|
|
:- (reap (lent buf.say.inp) `@c`'*') :: hidden input
|
|
|
|
%+ welp
|
|
|
|
cad.pom
|
|
|
|
?~ buf.say.inp ~
|
|
|
|
:(welp "<" (scow %p (end 4 1 (sham buf.say.inp))) "> ")
|
2015-05-17 04:05:56 +03:00
|
|
|
--
|
2016-08-28 07:44:28 +03:00
|
|
|
++ edit :: produce sole-edits
|
|
|
|
|%
|
|
|
|
++ cat :: mass insert
|
|
|
|
|= {pos/@ud txt/(list @c)}
|
|
|
|
^- sole-edit
|
|
|
|
:- %mor
|
|
|
|
|- ^- (list sole-edit)
|
|
|
|
?~ txt ~
|
|
|
|
[[%ins pos i.txt] $(pos +(pos), txt t.txt)]
|
|
|
|
::
|
|
|
|
++ cut :: mass delete
|
|
|
|
|= {pos/@ud num/@ud}
|
|
|
|
^- sole-edit
|
|
|
|
:- %mor
|
|
|
|
|- ^- (list sole-edit)
|
|
|
|
?: =(0 num) ~
|
|
|
|
[[%del pos] $(num (dec num))]
|
|
|
|
::
|
|
|
|
++ rep :: mass replace
|
|
|
|
|= {{pos/@ud num/@ud} txt/(list @c)}
|
|
|
|
^- sole-edit
|
|
|
|
:~ %mor
|
|
|
|
(cut pos num)
|
|
|
|
(cat pos txt)
|
|
|
|
==
|
|
|
|
--
|
2016-09-03 04:55:07 +03:00
|
|
|
++ offset :: calculate offsets
|
|
|
|
|%
|
|
|
|
++ alnm :: alpha-numeric
|
|
|
|
|= a/@ ^- ?
|
|
|
|
?| &((gte a '0') (lte a '9'))
|
|
|
|
&((gte a 'A') (lte a 'Z'))
|
|
|
|
&((gte a 'a') (lte a 'z'))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ ace :: next whitespace
|
|
|
|
|= a/(list @)
|
|
|
|
=| {b/_| i/@ud}
|
|
|
|
|- ^- @ud
|
|
|
|
?~ a i
|
2016-09-04 03:24:55 +03:00
|
|
|
=/ c !=(32 i.a)
|
2016-09-03 04:55:07 +03:00
|
|
|
=. b |(b c)
|
|
|
|
?: &(b !|(=(0 i) c)) i
|
|
|
|
$(i +(i), a t.a)
|
|
|
|
::
|
|
|
|
++ edg :: next word boundary
|
|
|
|
|= a/(list @)
|
|
|
|
=| {b/_| i/@ud}
|
|
|
|
|- ^- @ud
|
|
|
|
?~ a i
|
|
|
|
=/ c (alnm i.a)
|
|
|
|
=. b |(b c)
|
|
|
|
?: &(b !|(=(0 i) c)) i
|
|
|
|
$(i +(i), a t.a)
|
|
|
|
::
|
|
|
|
++ wrd :: next or current word
|
|
|
|
|= a/(list @)
|
|
|
|
=| i/@ud
|
|
|
|
|- ^- @ud
|
|
|
|
?: |(?=($~ a) (alnm i.a)) i
|
|
|
|
$(i +(i), a t.a)
|
|
|
|
--
|
2015-05-17 04:05:56 +03:00
|
|
|
--
|