From 9b2a06c5ce00cf6ab8ece4fc7a8441d99fd00f9c Mon Sep 17 00:00:00 2001 From: Amitav Nott Date: Wed, 3 Mar 2021 22:20:14 -0500 Subject: [PATCH] feat: floating windows and notifications! --- lua/harpoon/ui.lua | 47 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/lua/harpoon/ui.lua b/lua/harpoon/ui.lua index f1647bc..21bc2ea 100644 --- a/lua/harpoon/ui.lua +++ b/lua/harpoon/ui.lua @@ -63,6 +63,51 @@ M.nav_file = function(id) end end +function M.location_window(options) + local default_options = { + relative = 'editor', + style = 'minimal', + width = 30, + height = 15, + row = 2, + col = 2, + } + options = vim.tbl_extend('keep', options, default_options) + + local bufnr = options.bufnr or vim.fn.nvim_create_buf(false, true) + local win_id = vim.fn.nvim_open_win(bufnr, true, options) + + return { + bufnr = bufnr, + win_id = win_id, + } +end + +function M.notification(text) + local win_stats = vim.api.nvim_list_uis()[1] + local win_width = win_stats.width + + local prev_win = vim.api.nvim_get_current_win() + + local info = M.location_window({ + width = 20, + height = 2, + row = 1, + col = win_width - 21 + }) + + vim.api.nvim_buf_set_lines(info.bufnr, 0, 5, false, {"!!! Notification", text}) + vim.api.nvim_set_current_win(prev_win) + + return { + bufnr = info.bufnr, + win_id = info.win_id + } +end + +function M.close_notification(bufnr) + vim.api.nvim_buf_delete(bufnr) +end + return M -