From 12774bd120511685dda664e567b0744b0e295fa3 Mon Sep 17 00:00:00 2001 From: Michael Raitza Date: Mon, 24 Feb 2020 15:50:22 +0100 Subject: [PATCH] Pimp playground, re-bind several UI keys --- playground.factor | 53 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/playground.factor b/playground.factor index e2221ba..dc03e5b 100644 --- a/playground.factor +++ b/playground.factor @@ -1,7 +1,11 @@ ! Set up factor UI and editor integration for this project ! Use emacs as the editor and switch UI to dark mode ! Run this to start development in the UI -USING: editors.emacs io.backend kernel threads ui ui.theme.switching vocabs.loader ; +USING: accessors combinators combinators.short-circuit continuations +editors.emacs fuel.remote io.backend kernel namespaces sequences syntax threads +tools.continuations ui ui.commands ui.gadgets.editors ui.gestures +ui.theme.switching ui.tools ui.tools.browser ui.tools.common ui.tools.listener +vocabs vocabs.hierarchy vocabs.loader vocabs.metadata vocabs.parser ; ! Add project's root to vocabulary roots and load all project components ! current-directory get @@ -9,8 +13,53 @@ USING: editors.emacs io.backend kernel threads ui ui.theme.switching vocabs.load ! Fire up the UI. This gives you graphical code walker support without the need ! to open a graphical listener window first. -IN: scratchpad +IN: playground : setup-ui ( dark? -- ) [ dark-mode ] [ light-mode ] if [ [ ] with-ui ] in-thread ; + +: ui-commands ( -- ) + browser-gadget "toolbar" f { + { T{ key-down f { C+ } "t" } com-back } + { T{ key-down f { C+ } "f" } com-forward } + { T{ key-down f { A+ } "H" } com-home } + { T{ key-down f f "F1" } browser-help } + { T{ key-down f { A+ } "F1" } glossary } + } define-command-map + + interactor "interactor" f { + { T{ key-down f f "RET" } evaluate-input } + { T{ key-down f { C+ } "u" } clear-editor } + } define-command-map + + listener-gadget "scrolling" + "The listener's scroller can be scrolled from the keyboard." + { + { T{ key-down f { C+ } "y" } com-scroll-up } + { T{ key-down f { C+ } "e" } com-scroll-down } + { T{ key-down f { C+ } "b" } com-page-up } + { T{ key-down f { C+ } "f" } com-page-down } + } define-command-map + + ; + +: run ( -- ) + t setup-ui + fuel-start-remote-listener* + ui-commands + ui-tools-main ; + +MAIN: run + +: pg-vocabs-to-load ( root prefix -- seq ) + disk-vocabs-in-root/prefix [ { + [ don't-load? ] + [ name>> "llvm" = ] + [ name>> "llvm.ffi" = ] + [ name>> "llvm.reader" = ] + [ name>> "llvm.wrappers" = ] + [ name>> "llvm.examples.sumfunc" = ] + } 1|| ] reject no-prefixes ; + +: pg-load-all ( -- ) "" [ vocab-roots get ] dip [ pg-vocabs-to-load require-all ] curry each ;