aboutsummaryrefslogtreecommitdiff
path: root/handlers.ha
diff options
context:
space:
mode:
authorJulian Hurst <julian.hurst92@gmail.com>2022-06-15 10:46:03 +0200
committerJulian Hurst <julian.hurst92@gmail.com>2022-06-15 10:46:03 +0200
commita95fcb445bbc9299eb1d974ce34db8cf24622c10 (patch)
treec88fee737c02c8f8894f2e08c35d85fa9a45dfd7 /handlers.ha
parentaa288b25a00385e8b034735838f3d5cc512df93f (diff)
downloadilhare-a95fcb445bbc9299eb1d974ce34db8cf24622c10.tar.gz
Externalize modules and add .gitignore
Diffstat (limited to 'handlers.ha')
-rw-r--r--handlers.ha51
1 files changed, 31 insertions, 20 deletions
diff --git a/handlers.ha b/handlers.ha
index 68d7556..c50e454 100644
--- a/handlers.ha
+++ b/handlers.ha
@@ -1,6 +1,6 @@
-use libui;
-use libui::widget;
-use libui::widget::list;
+use libtui;
+use libtui::widget;
+use libtui::widget::list;
use sort;
use slices;
use encoding::utf8;
@@ -14,15 +14,26 @@ use unix::tty;
let itemscopy: []str = [];
-fn globalrunehandler(ui: *libui::ttyui, r: rune) bool = {
- if (r == 'q') {
- return true;
+fn globalrunehandler(ui: *libtui::ttyui, r: libtui::key) bool = {
+ match (r) {
+ case let r: rune =>
+ if (r == 'q') {
+ return true;
+ };
+ case let r: libtui::specialkey =>
+ yield;
};
return false;
};
-fn runehandler(l: *widget::widget, r: rune) bool = {
+fn runehandler(l: *widget::widget, r: libtui::key) bool = {
const l = l: *list::listwidget;
+ const r = match (r) {
+ case let r: rune =>
+ yield r;
+ case let r: libtui::specialkey =>
+ return false;
+ };
switch (r) {
case 'j' =>
list::down(l);
@@ -34,7 +45,7 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
list::pageup(l);
case 'l' =>
// to print properly suspend the ui, print, then resume
- libui::suspend(&l.widget.ui);
+ libtui::suspend(&l.widget.ui);
//fmt::println(l.items[l.cursor])!;
match (list::selected(*l)) {
case let s: str =>
@@ -45,7 +56,7 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
defer free(out);
fmt::println(out)!;
};
- libui::resume(&l.widget.ui);
+ libtui::resume(&l.widget.ui);
return true;
case 'g' =>
list::top(l);
@@ -65,7 +76,7 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
};
case '?' =>
// TODO add commandline support maybe
- libui::suspend(&l.widget.ui);
+ libtui::suspend(&l.widget.ui);
fmt::fprint(l.widget.ui.f, '?')!;
let line = match (bufio::scanline(l.widget.ui.f)) {
case let s: []u8 =>
@@ -82,10 +93,10 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
searchforward = false;
let c = l.cursor;
list::rsearch(l, searchterm);
- libui::resume(&l.widget.ui);
+ libtui::resume(&l.widget.ui);
case '/' =>
// TODO add commandline support maybe
- libui::suspend(&l.widget.ui);
+ libtui::suspend(&l.widget.ui);
fmt::fprint(l.widget.ui.f, '/')!;
let line = match (bufio::scanline(l.widget.ui.f)) {
case let s: []u8 =>
@@ -102,7 +113,7 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
searchforward = true;
let c = l.cursor;
list::search(l, searchterm);
- libui::resume(&l.widget.ui);
+ libtui::resume(&l.widget.ui);
case 'o' =>
// order
sort::strings(l.items);
@@ -114,7 +125,7 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
list::setitems(l, itemscopy...);
case 's' =>
// TODO add commandline support maybe
- libui::suspend(&l.widget.ui);
+ libtui::suspend(&l.widget.ui);
fmt::fprint(l.widget.ui.f, "s: ")!;
let line = match (bufio::scanline(l.widget.ui.f)) {
case let s: []u8 =>
@@ -128,10 +139,10 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
};
defer free(line);
list::containsmark(l, strings::fromutf8(line));
- libui::resume(&l.widget.ui);
+ libtui::resume(&l.widget.ui);
case 'S' =>
// TODO add commandline support maybe
- libui::suspend(&l.widget.ui);
+ libtui::suspend(&l.widget.ui);
fmt::fprint(l.widget.ui.f, "S: ")!;
let line = match (bufio::scanline(l.widget.ui.f)) {
case let s: []u8 =>
@@ -145,10 +156,10 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
};
defer free(line);
list::fnmatchmark(l, strings::fromutf8(line));
- libui::resume(&l.widget.ui);
+ libtui::resume(&l.widget.ui);
case 'r' =>
// TODO add commandline support maybe
- libui::suspend(&l.widget.ui);
+ libtui::suspend(&l.widget.ui);
fmt::fprint(l.widget.ui.f, "r: ")!;
let line = match (bufio::scanline(l.widget.ui.f)) {
case let s: []u8 =>
@@ -168,7 +179,7 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
case let e: regex::error =>
fmt::fprintln(os::stderr, regex::strerror(e))!;
};
- libui::resume(&l.widget.ui);
+ libtui::resume(&l.widget.ui);
case ' ' =>
list::tmark(l);
list::down(l);
@@ -183,7 +194,7 @@ fn runehandler(l: *widget::widget, r: rune) bool = {
fmt::fprintln(os::stderr, "newline")!;
};
};
- libui::clear(l.widget.ui);
+ libtui::clear(l.widget.ui);
match (list::print(l)) {
case void =>
yield;