return { { "folke/noice.nvim", opts = function(_, opts) return vim.tbl_extend("force", { cmdline = { view = "cmdline", enabled = true, }, messages = { enabled = true, }, -- the completion menu for the cmdline popupmenu = { enabled = true, backend = "nui" -- do not use the "vscode style" middle of the screen popup (nui?) -- Side effect: apparently fixed an issue with "Save changes to ..." popup being slow to respond(?) } }, opts) end }, { "rcarriga/nvim-notify", opts = function(_, opts) local stages_util = require("notify.stages.util") -- mix between https://github.com/rcarriga/nvim-notify/issues/105 -- and https://github.com/rcarriga/nvim-notify/blob/master/lua/notify/stages/static.lua -- Basically: No border + move notifications up as they expire local function static_no_border_and_move_up(direction) return { function(state) local next_height = state.message.height + 2 local next_row = stages_util.available_slot(state.open_windows, next_height, stages_util.DIRECTION.TOP_DOWN) if not next_row then return nil end return { relative = "editor", anchor = "NE", width = state.message.width, height = state.message.height, col = vim.opt.columns:get(), row = next_row, border = "none", style = "minimal", } end, function(state, win) return { col = vim.opt.columns:get(), time = true, row = { stages_util.slot_after_previous(win, state.open_windows, stages_util.DIRECTION.TOP_DOWN), frequency = 3, complete = function() return true end, } } end, } end return { render = "compact", stages = static_no_border_and_move_up(), on_open = function(win) vim.api.nvim_win_set_config(win, { focusable = false }) end, } end } }