blob: 51e263a2a55c26004cd89dd5d54fc88c1f7f66ab (
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
|
(tset package.loaded :conf.wict-nvim nil)
(local ui (require :conf.wict-nvim))
(tset package.loaded :conf.wict-nvim.effects nil)
(local ui-eff (require :conf.wict-nvim.effects))
(tset package.loaded :conf.wictl-nvim nil)
(local wictl (require :conf.wictl-nvim))
(local Resolver (require :conf.wictl-nvim.resolvers))
(local ui-bld ui.builder)
(local M {})
(local ProjectBufs {})
(var selected nil)
(local term-ui (-> (ui-bld.For {:buffer (fn [] selected)
:maps [{:mode [:n :v :o]
:lhs :q
:rhs (fn [effects window]
(fn []
(P :quitting!)
(effects:close)))}]})
(ui-bld.Padding 2)
(ui-bld.Build (ui-eff:new))))
(fn M.open [idx]
(local new-term-buf (fn []
(local (buf_handle term_handle) (M.start idx))
(tset ProjectBufs (Resolver.project_key) idx
{: buf_handle : term_handle})
{: buf_handle : term_handle}))
(local proj (or (. ProjectBufs (Resolver.project_key))
(do
(local p [])
(tset ProjectBufs (Resolver.project_key) p)
p)))
(var term (or (. proj idx) (new-term-buf)))
(if (or (not (vim.api.nvim_buf_is_valid term.buf_handle))
(not (vim.api.nvim_buf_get_var term.buf_handle :terminal_job_id)))
(set term (new-term-buf)))
(set selected term.buf_handle)
(term-ui ui.root-frame))
(fn M.start [idx]
(P :starting)
(local term (. (wictl.Get-Terms-Config) idx))
(local prestart-buf (vim.api.nvim_get_current_buf))
(vim.cmd (.. "edit term://" term.cmd))
(local buf_handle (vim.api.nvim_get_current_buf))
(local term_handle vim.b.terminal_job_id)
(vim.api.nvim_buf_set_option buf_handle :bufhidden :hide)
(vim.api.nvim_set_current_buf prestart-buf)
(values buf_handle term_handle))
M
|