diff options
| author | Julian Hurst <julian.hurst92@gmail.com> | 2022-06-15 10:46:03 +0200 |
|---|---|---|
| committer | Julian Hurst <julian.hurst92@gmail.com> | 2022-06-15 10:46:03 +0200 |
| commit | a95fcb445bbc9299eb1d974ce34db8cf24622c10 (patch) | |
| tree | c88fee737c02c8f8894f2e08c35d85fa9a45dfd7 /handlers.ha | |
| parent | aa288b25a00385e8b034735838f3d5cc512df93f (diff) | |
| download | ilhare-a95fcb445bbc9299eb1d974ce34db8cf24622c10.tar.gz | |
Externalize modules and add .gitignore
Diffstat (limited to 'handlers.ha')
| -rw-r--r-- | handlers.ha | 51 |
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; |
