blob: ce4b89ba2deebae2bf46b51872c001f2fb18e557 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
use tui;
use tui::widget::list;
use tui::layout;
use bufio;
use os;
use strings;
use fmt;
export fn main() void = {
const scanner = bufio::newscanner(os::stdin);
defer bufio::finish(&scanner);
let items: []str = [];
for (let line: const str => bufio::scan_line(&scanner)!) {
append(items, strings::dup(line));
};
defer strings::freeall(items);
const state = tui::init()!;
defer tui::finish(&state);
let li = list::newscrolllist(
&state,
(1, 1),
void,
void,
items...
)!;
let vl = layout::newvlayout(&li);
defer layout::finishvlayout(&vl);
vl.layout.print(&vl);
for (true) {
const r = tui::read(&state)!;
if (r == 'j') {
list::down(&li);
};
if (r == 'k') {
list::up(&li);
};
if (r == 'J') {
list::framedown(&li);
};
if (r == 'K') {
list::frameup(&li);
};
if (r == 'g') {
list::top(&li);
};
if (r == 'G') {
list::bottom(&li);
};
if (r == 'q') {
break;
};
if (r == 'l') {
fmt::println(li.items[li.cursor])!;
break;
};
vl.layout.print(&vl);
};
};
|