summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Vink <>2023-04-13 00:31:22 +0200
committerMike Vink <>2023-04-13 00:31:22 +0200
commit6c077a58826feddf831cd3a9c2d9c17899be0b68 (patch)
tree2169b8279b23f7ba992b39b611b8c028b14c6b65
parentb53108c413d6cb25e5a6ae55aef13a8173c052c9 (diff)
little bit
-rw-r--r--fnl/conf/wict-nvim/effects.fnl9
-rw-r--r--fnl/conf/wictl-nvim/init.fnl5
-rw-r--r--fnl/conf/wictl-nvim/term.fnl51
3 files changed, 58 insertions, 7 deletions
diff --git a/fnl/conf/wict-nvim/effects.fnl b/fnl/conf/wict-nvim/effects.fnl
index 160fbce..e4321da 100644
--- a/fnl/conf/wict-nvim/effects.fnl
+++ b/fnl/conf/wict-nvim/effects.fnl
@@ -2,7 +2,7 @@
(local window {})
(local aug vim.api.nvim_create_augroup)
-(local del-aug vim.api.nvim_del_augroup_by_id)
+(local del-aug (fn [] (vim.api.nvim_create_augroup :EffectsMgr {:clear true})))
(local au vim.api.nvim_create_autocmd)
(local winvar (fn [...] (pcall vim.api.nvim_win_get_var ...)))
(local unmap (fn [{: mode : lhs : opts}] (pcall vim.keymap.del mode lhs opts)))
@@ -15,6 +15,8 @@
(fn window.open [self buf frame]
(set frame.style :minimal)
(set self.handle (vim.api.nvim_open_win buf false frame))
+ (P self.handle :before-setvar)
+ (vim.api.nvim_buf_set_var buf :effect-window self)
(vim.api.nvim_win_set_var self.handle :effect-window self)
(if self.enter
(vim.api.nvim_set_current_win self.handle)))
@@ -47,11 +49,13 @@
(fn m.attach [self]
(set self.augroup (aug :EffectsMgr {:clear true}))
- (au [:WinEnter :BufEnter]
+ (au [:WinEnter]
{:group self.augroup
:pattern "*"
:callback (fn [cb-info]
+ (P :effectEnter)
(local (ok? win) (winvar 0 :effect-window))
+ (P ok? win)
(if (not ok?)
(self:close)
(do
@@ -59,6 +63,7 @@
(self:win-maps win)))))}))
(fn m.win-maps [self win]
+ (P win)
(if self.unmap
(self.unmap))
(set self.unmap (fn []
diff --git a/fnl/conf/wictl-nvim/init.fnl b/fnl/conf/wictl-nvim/init.fnl
index 3aeeb9b..bd04182 100644
--- a/fnl/conf/wictl-nvim/init.fnl
+++ b/fnl/conf/wictl-nvim/init.fnl
@@ -33,7 +33,8 @@
(local ensure-complete-project (fn [config]
(var config (or config {:terms []}))
(if (not config.terms)
- (set config.terms [{:name :k9s :cmd :k9s}]))
+ (set config.terms
+ [{:name :k9s :cmd :bash}]))
config))
(local get-project (fn []
@@ -53,3 +54,5 @@
(m.Save)
(m.Read cache_config)
(m.Get-Terms-Config)
+
+m
diff --git a/fnl/conf/wictl-nvim/term.fnl b/fnl/conf/wictl-nvim/term.fnl
index 1aea597..51e263a 100644
--- a/fnl/conf/wictl-nvim/term.fnl
+++ b/fnl/conf/wictl-nvim/term.fnl
@@ -1,11 +1,54 @@
-(local ui-bld (require :conf.wict-nvim))
+(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 {})
-(local ui (-> (ui-bld.For {:buffer M.selected-buffer})))
+(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.open [idx])
-(fn M.start [])
+(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