Compare commits
11 Commits
983fc326d6
...
memes
| Author | SHA1 | Date | |
|---|---|---|---|
| 50831dc73d | |||
| 98e78d81ec | |||
| fd7db32917 | |||
| c81dce7148 | |||
| 205f650eac | |||
| 8067e29ea8 | |||
| 0d831aa9cf | |||
| ecf9983728 | |||
| a82c9464f4 | |||
| 481870e067 | |||
| 8ee3789cb9 |
4
dune
4
dune
@ -15,7 +15,11 @@
|
||||
zed
|
||||
lambda-term
|
||||
irmin-unix
|
||||
nottui
|
||||
nottui-pretty
|
||||
uuseg.string
|
||||
uutf
|
||||
uucp
|
||||
ocaml-compiler-libs.common
|
||||
ocaml-compiler-libs.bytecomp
|
||||
ocaml-compiler-libs.toplevel))
|
||||
|
||||
68
irc.ml
68
irc.ml
@ -244,6 +244,9 @@ module Communicator = struct
|
||||
end
|
||||
|
||||
module Panel = struct
|
||||
open Panel
|
||||
open Panel.Ui
|
||||
|
||||
type viewer =
|
||||
{ step: string
|
||||
; var: view Lwd.var
|
||||
@ -355,13 +358,6 @@ module Communicator = struct
|
||||
>>= fun t' -> Lwd.set root t' ; Lwt.return_unit )
|
||||
>>= fun watch -> Lwt.return (watch, root)
|
||||
|
||||
open Nottui
|
||||
module P = Nottui_pretty
|
||||
|
||||
let string ?attr text = P.ui (Nottui_widgets.string ?attr text)
|
||||
let ( ^^ ) = P.( ^^ )
|
||||
let ( ^/^ ) a b = P.(a ^^ break 1 ^^ b)
|
||||
|
||||
let channelview (store, path) =
|
||||
storeview store path
|
||||
>>= fun (_watch, root) ->
|
||||
@ -382,7 +378,7 @@ module Communicator = struct
|
||||
v'.node ) in
|
||||
Lwd.map sub ~f:(fun sub ->
|
||||
Ui.join_y
|
||||
(Nottui_widgets.string
|
||||
(Ui.string
|
||||
( String.make indent '>' ^ " "
|
||||
^ v'.step ) )
|
||||
sub ) ) in
|
||||
@ -433,39 +429,31 @@ module Communicator = struct
|
||||
messagelist ch mlist
|
||||
>>= fun watch -> update_messagelist (Some watch) () in
|
||||
Lwt.async (update_messagelist None) ;
|
||||
let doc =
|
||||
Lwd.map (Lwd.get mlist) ~f:(fun mlist ->
|
||||
List.fold_left
|
||||
Lwt.return
|
||||
(Lwd.map (Lwd.get mlist) ~f:(fun mlist ->
|
||||
scroll
|
||||
(List.fold_left
|
||||
(fun doc ((year, month, day, hour, sec), content) ->
|
||||
F.epr "Communicator.Panel.messagelist ch.content=%s@."
|
||||
F.epr
|
||||
"Communicator.Panel.messagelist ch.content=%s@."
|
||||
content ;
|
||||
doc
|
||||
^^ P.group
|
||||
( string
|
||||
^/^ Ui.string
|
||||
(F.str "%s.%s.%s.%s.%s" year month day hour
|
||||
sec )
|
||||
^^ string " | " ^^ string content )
|
||||
^^ P.hardline )
|
||||
P.empty mlist ) in
|
||||
Lwt.return
|
||||
(Panel.Nottui.scroll_area (Lwd.map doc ~f:(P.pretty 100)))
|
||||
^^ Ui.string " | " ^^ string content )
|
||||
Ui.empty mlist ) ) )
|
||||
|
||||
let commview (store, path) =
|
||||
channelview (store, List.rev (List.tl (List.rev path)))
|
||||
>>= fun (ch, cv) ->
|
||||
messageview ch
|
||||
>>= fun mv ->
|
||||
Lwt.return
|
||||
(Nottui_widgets.h_pane (Panel.Nottui.scroll_area cv) mv)
|
||||
Lwt.return (Lwd.map2 cv mv ~f:(fun c m -> join_x c m))
|
||||
|
||||
open Nottui_widgets
|
||||
|
||||
let panel ({store; view} : Tree.t) =
|
||||
let base = Lwd.var Nottui_widgets.empty_lwd in
|
||||
commview (store, view)
|
||||
>>= fun cv ->
|
||||
Lwd.set base cv ;
|
||||
Panel.Nottui.panel (Lwd.join (Lwd.get base)) ()
|
||||
let panel ({store; view} : Tree.t) : (Event.t -> atom Lwt.t) Lwt.t
|
||||
=
|
||||
commview (store, view) >>= fun cv -> Panel.Ui.panel cv
|
||||
end
|
||||
end
|
||||
|
||||
@ -481,8 +469,26 @@ let _ =
|
||||
>>= fun comm ->
|
||||
Communicator.Irc.Config.make_connection comm "irc.hackint.org"
|
||||
6697 "cqcaml"
|
||||
>|= fun () ->
|
||||
>>= fun () ->
|
||||
Lwt.async (fun () -> Communicator.Irc.connect comm) ;
|
||||
F.epr
|
||||
"root_actor := std_actor (Communicator.Panel.panel comm)@." ;
|
||||
root_actor := std_actor (Communicator.Panel.panel comm) )
|
||||
Communicator.Panel.panel comm
|
||||
>|= fun f ->
|
||||
root_actor :=
|
||||
std_actor
|
||||
(Lwt.return
|
||||
Panel.
|
||||
{ act=
|
||||
(fun _ events ->
|
||||
Lwt_list.fold_left_s
|
||||
(fun _ ev ->
|
||||
f ev
|
||||
>>= fun i ->
|
||||
Lwt.return (fun s ->
|
||||
( s
|
||||
, ( Gg.Box2.of_pts Gg.V2.zero (snd i)
|
||||
, fst i ) ) ) )
|
||||
Display.pane_empty events )
|
||||
; subpanels= []
|
||||
; tag= "irc" } ) )
|
||||
|
||||
361
opam-switch
Normal file
361
opam-switch
Normal file
@ -0,0 +1,361 @@
|
||||
opam-version: "2.0"
|
||||
compiler: ["ocaml-system.4.13.1"]
|
||||
roots: [
|
||||
"bogue.20210917"
|
||||
"findlib_top.v0.11.0"
|
||||
"glfw-ocaml.3.3.1-1"
|
||||
"huffman.0.1.2"
|
||||
"inuit.0.4.1"
|
||||
"irc-client.0.7.0"
|
||||
"irc-client-lwt.0.7.0"
|
||||
"irc-client-tls.0.7.0"
|
||||
"irc-client-unix.0.7.0"
|
||||
"irmin.2.9.0"
|
||||
"irmin-unix.2.9.0"
|
||||
"lambda-term.3.1.0"
|
||||
"lwd.0.1"
|
||||
"lwt_ppx.2.0.3"
|
||||
"merlin.4.4-413"
|
||||
"note.0.0.1"
|
||||
"nottui.0.1"
|
||||
"nottui-lwt.0.1"
|
||||
"nottui-pretty.0.1"
|
||||
"ocaml-manual.4.13.0"
|
||||
"ocaml-system.4.13.1"
|
||||
"ocamlformat.0.20.1"
|
||||
"odig.0.0.7"
|
||||
"odoc.2.0.2"
|
||||
"pp.1.1.2"
|
||||
"pprint.20211129"
|
||||
"tgls.0.8.5"
|
||||
"tsdl.0.9.8"
|
||||
"user-setup.0.7"
|
||||
"wall.0.4.1"
|
||||
"zed.3.1.0"
|
||||
]
|
||||
installed: [
|
||||
"angstrom.0.15.0"
|
||||
"arp.3.0.0"
|
||||
"asn1-combinators.0.2.6"
|
||||
"astring.0.8.5"
|
||||
"awa.0.0.4"
|
||||
"awa-mirage.0.0.4"
|
||||
"b0.0.0.3"
|
||||
"base.v0.14.2"
|
||||
"base-bigarray.base"
|
||||
"base-bytes.base"
|
||||
"base-threads.base"
|
||||
"base-unix.base"
|
||||
"base64.3.5.0"
|
||||
"bheap.2.0.0"
|
||||
"bigarray-compat.1.0.0"
|
||||
"bigstringaf.0.8.0"
|
||||
"biniou.1.2.1"
|
||||
"bogue.20210917"
|
||||
"bos.0.2.0"
|
||||
"ca-certs.0.2.2"
|
||||
"ca-certs-nss.3.71"
|
||||
"camomile.1.0.2"
|
||||
"carton.0.4.3"
|
||||
"carton-git.0.4.3"
|
||||
"carton-lwt.0.4.3"
|
||||
"cf.0.4"
|
||||
"cf-lwt.0.4"
|
||||
"charInfo_width.1.1.0"
|
||||
"checkseum.0.3.2"
|
||||
"cmdliner.1.0.4"
|
||||
"cohttp.4.0.0"
|
||||
"cohttp-lwt.4.0.0"
|
||||
"cohttp-lwt-unix.4.0.0"
|
||||
"conduit.4.0.2"
|
||||
"conduit-lwt.4.0.2"
|
||||
"conduit-lwt-unix.4.0.2"
|
||||
"conf-cairo.1"
|
||||
"conf-gles2.1"
|
||||
"conf-glfw3.2"
|
||||
"conf-gmp.3"
|
||||
"conf-gmp-powm-sec.3"
|
||||
"conf-libffi.2.0.0"
|
||||
"conf-libX11.1"
|
||||
"conf-m4.1"
|
||||
"conf-pkg-config.2"
|
||||
"conf-sdl2.1"
|
||||
"conf-sdl2-image.1"
|
||||
"conf-sdl2-ttf.1"
|
||||
"cppo.1.6.8"
|
||||
"crunch.3.2.0"
|
||||
"csexp.1.5.1"
|
||||
"cstruct.6.0.1"
|
||||
"cstruct-lwt.6.0.1"
|
||||
"cstruct-sexp.6.0.1"
|
||||
"cstruct-unix.6.0.1"
|
||||
"ctypes.0.20.0"
|
||||
"ctypes-foreign.0.18.0"
|
||||
"decompress.1.4.2"
|
||||
"digestif.1.1.0"
|
||||
"dispatch.0.5.0"
|
||||
"domain-name.0.3.1"
|
||||
"dot-merlin-reader.4.1"
|
||||
"duff.0.4"
|
||||
"dune.2.9.1"
|
||||
"dune-build-info.2.9.1"
|
||||
"dune-configurator.2.9.1"
|
||||
"duration.0.2.0"
|
||||
"easy-format.1.3.2"
|
||||
"either.1.0.0"
|
||||
"emile.1.1"
|
||||
"encore.0.8"
|
||||
"eqaf.0.8"
|
||||
"ethernet.3.0.0"
|
||||
"findlib_top.v0.11.0"
|
||||
"fix.20211125"
|
||||
"fmt.0.9.0"
|
||||
"fpath.0.7.3"
|
||||
"fsevents.0.3.0"
|
||||
"fsevents-lwt.0.3.0"
|
||||
"gg.0.9.3"
|
||||
"git.3.6.0"
|
||||
"git-cohttp.3.6.0"
|
||||
"git-cohttp-unix.3.6.0"
|
||||
"git-unix.3.6.0"
|
||||
"glfw-ocaml.3.3.1-1"
|
||||
"gmap.0.3.0"
|
||||
"graphql.0.13.0"
|
||||
"graphql-cohttp.0.13.0"
|
||||
"graphql-lwt.0.13.0"
|
||||
"graphql_parser.0.13.0"
|
||||
"graphv_core.0.1.1"
|
||||
"graphv_core_lib.0.1.1"
|
||||
"graphv_font.0.1.1"
|
||||
"graphv_font_js.0.1.1"
|
||||
"graphv_gles2.0.1.1"
|
||||
"graphv_gles2_native_impl.0.1.1"
|
||||
"graphv_webgl.0.1.1"
|
||||
"graphv_webgl_impl.0.1.1"
|
||||
"grenier.0.13"
|
||||
"hex.1.4.0"
|
||||
"hkdf.1.0.4"
|
||||
"huffman.0.1.2"
|
||||
"hxd.0.3.1"
|
||||
"index.1.5.0"
|
||||
"inotify.2.3"
|
||||
"integers.0.5.1"
|
||||
"inuit.0.4.1"
|
||||
"ipaddr.5.2.0"
|
||||
"ipaddr-sexp.5.2.0"
|
||||
"irc-client.0.7.0"
|
||||
"irc-client-lwt.0.7.0"
|
||||
"irc-client-tls.0.7.0"
|
||||
"irc-client-unix.0.7.0"
|
||||
"irmin.2.9.0"
|
||||
"irmin-fs.2.9.0"
|
||||
"irmin-git.2.9.0"
|
||||
"irmin-graphql.2.9.0"
|
||||
"irmin-http.2.9.0"
|
||||
"irmin-layers.2.9.0"
|
||||
"irmin-pack.2.9.0"
|
||||
"irmin-unix.2.9.0"
|
||||
"irmin-watcher.0.5.0"
|
||||
"jbuilder.1.0+beta20.2"
|
||||
"js_of_ocaml.3.11.0"
|
||||
"js_of_ocaml-compiler.3.11.0"
|
||||
"js_of_ocaml-ppx.3.11.0"
|
||||
"jsonm.1.0.1"
|
||||
"ke.0.4"
|
||||
"lambda-term.3.1.0"
|
||||
"logs.0.7.0"
|
||||
"lru.0.3.0"
|
||||
"lwd.0.1"
|
||||
"lwt.5.5.0"
|
||||
"lwt-dllist.1.0.1"
|
||||
"lwt_log.1.1.1"
|
||||
"lwt_ppx.2.0.3"
|
||||
"lwt_react.1.1.5"
|
||||
"macaddr.5.2.0"
|
||||
"macaddr-cstruct.5.2.0"
|
||||
"magic-mime.1.2.0"
|
||||
"menhir.20211128"
|
||||
"menhirLib.20211128"
|
||||
"menhirSdk.20211128"
|
||||
"merlin.4.4-413"
|
||||
"metrics.0.3.0"
|
||||
"mew.0.1.0"
|
||||
"mew_vi.0.5.0"
|
||||
"mimic.0.0.4"
|
||||
"mirage-clock.4.0.0"
|
||||
"mirage-clock-unix.4.0.0"
|
||||
"mirage-crypto.0.10.5"
|
||||
"mirage-crypto-ec.0.10.5"
|
||||
"mirage-crypto-pk.0.10.5"
|
||||
"mirage-crypto-rng.0.10.5"
|
||||
"mirage-device.2.0.0"
|
||||
"mirage-flow.3.0.0"
|
||||
"mirage-kv.4.0.0"
|
||||
"mirage-net.4.0.0"
|
||||
"mirage-no-solo5.1"
|
||||
"mirage-no-xen.1"
|
||||
"mirage-profile.0.9.1"
|
||||
"mirage-protocols.8.0.0"
|
||||
"mirage-random.3.0.0"
|
||||
"mirage-stack.4.0.0"
|
||||
"mirage-time.3.0.0"
|
||||
"mmap.1.1.0"
|
||||
"mtime.1.3.0"
|
||||
"note.0.0.1"
|
||||
"nottui.0.1"
|
||||
"nottui-lwt.0.1"
|
||||
"nottui-pretty.0.1"
|
||||
"notty.0.2.2"
|
||||
"num.1.4"
|
||||
"oasis.0.4.11"
|
||||
"ocaml.4.13.1"
|
||||
"ocaml-compiler-libs.v0.12.4"
|
||||
"ocaml-config.2"
|
||||
"ocaml-manual.4.13.0"
|
||||
"ocaml-migrate-parsetree.2.3.0"
|
||||
"ocaml-options-vanilla.1"
|
||||
"ocaml-syntax-shims.1.0.0"
|
||||
"ocaml-system.4.13.1"
|
||||
"ocaml-version.3.4.0"
|
||||
"ocamlbuild.0.14.0"
|
||||
"ocamlfind.1.9.1"
|
||||
"ocamlformat.0.20.1"
|
||||
"ocamlgraph.2.0.0"
|
||||
"ocamlify.0.0.1"
|
||||
"ocamlmod.0.0.9"
|
||||
"ocb-stubblr.0.1.1-1"
|
||||
"ocp-indent.1.8.1"
|
||||
"ocplib-endian.1.2"
|
||||
"odig.0.0.7"
|
||||
"odoc.2.0.2"
|
||||
"odoc-parser.1.0.0"
|
||||
"optint.0.1.0"
|
||||
"parsexp.v0.14.1"
|
||||
"pbkdf.1.2.0"
|
||||
"pecu.0.6"
|
||||
"pp.1.1.2"
|
||||
"pprint.20211129"
|
||||
"ppx_cstruct.6.0.1"
|
||||
"ppx_derivers.1.2.1"
|
||||
"ppx_deriving.5.2.1"
|
||||
"ppx_irmin.2.9.0"
|
||||
"ppx_repr.0.5.0"
|
||||
"ppx_sexp_conv.v0.14.3"
|
||||
"ppxlib.0.24.0"
|
||||
"progress.0.2.1"
|
||||
"psq.0.2.0"
|
||||
"ptime.0.8.6"
|
||||
"randomconv.0.1.3"
|
||||
"re.1.10.3"
|
||||
"react.1.2.1"
|
||||
"repr.0.5.0"
|
||||
"result.1.5"
|
||||
"rresult.0.6.0"
|
||||
"semaphore-compat.1.0.1"
|
||||
"seq.base"
|
||||
"sexplib.v0.14.0"
|
||||
"sexplib0.v0.14.0"
|
||||
"stb_image.0.5"
|
||||
"stb_truetype.0.6"
|
||||
"stdio.v0.14.0"
|
||||
"stdlib-shims.0.3.0"
|
||||
"stringext.1.6.0"
|
||||
"tcpip.7.0.0"
|
||||
"terminal.0.2.1"
|
||||
"terminal_size.0.1.4"
|
||||
"tgls.0.8.5"
|
||||
"tls.0.14.1"
|
||||
"tls-mirage.0.14.1"
|
||||
"topkg.1.0.4"
|
||||
"trie.1.0.0"
|
||||
"tsdl.0.9.8"
|
||||
"tsdl-image.0.3.2"
|
||||
"tsdl-ttf.0.3.2"
|
||||
"tyxml.4.5.0"
|
||||
"uchar.0.0.2"
|
||||
"uri.4.2.0"
|
||||
"uri-sexp.4.2.0"
|
||||
"user-setup.0.7"
|
||||
"uucp.14.0.0"
|
||||
"uuseg.14.0.0"
|
||||
"uutf.1.0.2"
|
||||
"vector.1.0.0"
|
||||
"wall.0.4.1"
|
||||
"webmachine.0.7.0"
|
||||
"x509.0.14.1"
|
||||
"yaml.3.0.0"
|
||||
"yojson.1.7.0"
|
||||
"zarith.1.12"
|
||||
"zed.3.1.0"
|
||||
]
|
||||
pinned: ["lwd.0.1" "nottui.0.1"]
|
||||
package "lwd" {
|
||||
opam-version: "2.0"
|
||||
version: "0.1"
|
||||
synopsis: "Lightweight reactive documents"
|
||||
maintainer: "fred@tarides.com"
|
||||
authors: "Frédéric Bour"
|
||||
license: "MIT"
|
||||
homepage: "https://github.com/let-def/lwd"
|
||||
doc: "https://let-def.github.io/lwd/doc"
|
||||
bug-reports: "https://github.com/let-def/lwd/issues"
|
||||
depends: [
|
||||
"dune" {>= "2.0"}
|
||||
"seq"
|
||||
"ocaml" {>= "4.03"}
|
||||
"qtest" {with-test}
|
||||
"qcheck" {with-test}
|
||||
]
|
||||
build: [
|
||||
["dune" "subst"] {pinned}
|
||||
[
|
||||
"dune"
|
||||
"build"
|
||||
"-p"
|
||||
name
|
||||
"-j"
|
||||
jobs
|
||||
"@install"
|
||||
"@runtest" {with-test}
|
||||
"@doc" {with-doc}
|
||||
]
|
||||
]
|
||||
dev-repo: "git+https://github.com/let-def/lwd.git"
|
||||
url {
|
||||
src: "git+file:///home/cqc/p/console/ref/lwd#master"
|
||||
}
|
||||
}
|
||||
package "nottui" {
|
||||
opam-version: "2.0"
|
||||
version: "0.1"
|
||||
synopsis: "UI toolkit for the terminal built on top of Notty and Lwd"
|
||||
maintainer: "fred@tarides.com"
|
||||
authors: "Frédéric Bour"
|
||||
license: "MIT"
|
||||
homepage: "https://github.com/let-def/lwd"
|
||||
doc: "https://let-def.github.io/lwd/doc"
|
||||
bug-reports: "https://github.com/let-def/lwd/issues"
|
||||
depends: [
|
||||
"dune" {>= "2.0"}
|
||||
"lwd"
|
||||
"notty"
|
||||
]
|
||||
build: [
|
||||
["dune" "subst"] {pinned}
|
||||
[
|
||||
"dune"
|
||||
"build"
|
||||
"-p"
|
||||
name
|
||||
"-j"
|
||||
jobs
|
||||
"@install"
|
||||
"@runtest" {with-test}
|
||||
"@doc" {with-doc}
|
||||
]
|
||||
]
|
||||
dev-repo: "git+https://github.com/let-def/lwd.git"
|
||||
url {
|
||||
src: "git+file:///home/cqc/p/console/ref/lwd#master"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user