summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThePrimeAgain <theprimeagain@theprimeagain.com>2026-01-14 18:48:41 -0700
committerThePrimeAgain <theprimeagain@theprimeagain.com>2026-01-14 18:48:41 -0700
commit75fd8aa73919e26a2b33871a78bae34e604ba558 (patch)
tree7f1064e38e62aa3c0c62248f4e0eb1cd605dbfac
parent6c88a9537ae829cd8a4b92312e115c311e6beb42 (diff)
downloada4-75fd8aa73919e26a2b33871a78bae34e604ba558.tar.xz
a4-75fd8aa73919e26a2b33871a78bae34e604ba558.zip
window building:
-rw-r--r--lua/99/window/init.lua54
-rw-r--r--scratch/refresh.lua20
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()