diff options
| author | ThePrimeAgain <theprimeagain@theprimeagain.com> | 2026-01-14 18:48:41 -0700 |
|---|---|---|
| committer | ThePrimeAgain <theprimeagain@theprimeagain.com> | 2026-01-14 18:48:41 -0700 |
| commit | 75fd8aa73919e26a2b33871a78bae34e604ba558 (patch) | |
| tree | 7f1064e38e62aa3c0c62248f4e0eb1cd605dbfac | |
| parent | 6c88a9537ae829cd8a4b92312e115c311e6beb42 (diff) | |
| download | a4-75fd8aa73919e26a2b33871a78bae34e604ba558.tar.xz a4-75fd8aa73919e26a2b33871a78bae34e604ba558.zip | |
window building:
| -rw-r--r-- | lua/99/window/init.lua | 54 | ||||
| -rw-r--r-- | scratch/refresh.lua | 20 |
2 files changed, 56 insertions, 18 deletions
diff --git a/lua/99/window/init.lua b/lua/99/window/init.lua index 3c85714..1381a20 100644 --- a/lua/99/window/init.lua +++ b/lua/99/window/init.lua @@ -67,6 +67,20 @@ local function create_window_full_screen() } end +--- @param config _99.window.Config +---@param offset_bottom number | nil +--- @return _99.window.Config +local function create_window_inside(config, offset_bottom) + offset_bottom = offset_bottom or 0 + return { + width = config.width - 2, + height = 1, + row = config.row + config.height - offset_bottom, + col = config.col + 1, + anchor = config.anchor, + } +end + --- @return _99.window.Config local function create_centered_window() local width, height = get_ui_dimensions() @@ -242,6 +256,17 @@ function M.display_centered_message(message) return window end +--- @param win _99.window.Window +--- @param name string +local function set_defaul_win_options(win, name) + vim.api.nvim_buf_set_name(win.buf_id, name) + vim.wo[win.win_id].number = true + vim.bo[win.buf_id].filetype = "99" + vim.bo[win.buf_id].buftype = "acwrite" + vim.bo[win.buf_id].bufhidden = "wipe" + vim.bo[win.buf_id].swapfile = false +end + --- @param cb fun(success: boolean, result: string): nil --- @param opts {} function M.capture_input(cb, opts) @@ -249,18 +274,32 @@ function M.capture_input(cb, opts) --- TODO: styling should be extendable M.clear_active_popups() + local config = create_centered_window() + local help = create_window_inside(config) + local behaviors = create_window_inside(config, 1) + local win = create_floating_window(config, { title = " 99 Prompt ", border = "rounded", }) - vim.api.nvim_buf_set_name(win.buf_id, "99-prompt") - vim.wo[win.win_id].number = true - vim.bo[win.buf_id].filetype = "99" - vim.bo[win.buf_id].buftype = "acwrite" - vim.bo[win.buf_id].bufhidden = "wipe" - vim.bo[win.buf_id].swapfile = false + local help_win = create_floating_window(help, { + title = "", + border = "none", + }) + + local behaviors_win = create_floating_window(behaviors, { + title = "", + border = "none", + }) + + set_defaul_win_options(win, "99-prompt") + set_defaul_win_options(help_win, "99-prompt-help") + set_defaul_win_options(behaviors_win, "99-prompt-behaviors") + + vim.wo[behaviors_win.win_id].number = false + vim.wo[help_win.win_id].number = false local group = vim.api.nvim_create_augroup( "99_present_prompt_" .. win.buf_id, @@ -290,6 +329,9 @@ function M.capture_input(cb, opts) M.clear_active_popups() cb(false, "") end, { buffer = win.buf_id, nowait = true }) + + vim.api.nvim_buf_set_lines(help_win.buf_id, 1, 1, false, {"help"}) + vim.api.nvim_buf_set_lines(behaviors_win.buf_id, 1, 1, false, {"beh"}) end --- not worried about perf, we will likely only ever have 1 maybe 2 windows diff --git a/scratch/refresh.lua b/scratch/refresh.lua index 2d7b27b..3e07ad7 100644 --- a/scratch/refresh.lua +++ b/scratch/refresh.lua @@ -1,15 +1,11 @@ +local Window = require("99.window") +Window.clear_active_popups() R("99") -local foo_bar = {fizz = 3} -function fizz_buzz(count) - local result = {} - for i = 1, count do - end - return result -end - ---- @param numbers number[] -function sort(numbers) - table.sort(numbers) - return numbers +function test() + local Window = require("99.window") + Window.capture_input(function(input) + print(input) + end, {}) end +test() |
