initial
This commit is contained in:
146
config/ui/notify.nix
Normal file
146
config/ui/notify.nix
Normal file
@ -0,0 +1,146 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
notify.enable = lib.mkEnableOption "Enable notify module";
|
||||
};
|
||||
config = lib.mkIf config.notify.enable {
|
||||
plugins.notify = {
|
||||
enable = true;
|
||||
backgroundColour = "#000000";
|
||||
fps = 60;
|
||||
render = "default";
|
||||
timeout = 500;
|
||||
topDown = true;
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>un";
|
||||
action = ''
|
||||
<cmd>lua require("notify").dismiss({ silent = true, pending = true })<cr>
|
||||
'';
|
||||
options = {
|
||||
desc = "Dismiss All Notifications";
|
||||
};
|
||||
}
|
||||
];
|
||||
extraConfigLua = ''
|
||||
local notify = require("notify")
|
||||
|
||||
local function show_notification(message, level)
|
||||
notify(message, level, { title = "conform.nvim" })
|
||||
end
|
||||
|
||||
function ToggleLineNumber()
|
||||
if vim.wo.number then
|
||||
vim.wo.number = false
|
||||
show_notification("Line numbers disabled", "info")
|
||||
else
|
||||
vim.wo.number = true
|
||||
vim.wo.relativenumber = false
|
||||
show_notification("Line numbers enabled", "info")
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleRelativeLineNumber()
|
||||
if vim.wo.relativenumber then
|
||||
vim.wo.relativenumber = false
|
||||
show_notification("Relative line numbers disabled", "info")
|
||||
else
|
||||
vim.wo.relativenumber = true
|
||||
vim.wo.number = false
|
||||
show_notification("Relative line numbers enabled", "info")
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleWrap()
|
||||
if vim.wo.wrap then
|
||||
vim.wo.wrap = false
|
||||
show_notification("Wrap disabled", "info")
|
||||
else
|
||||
vim.wo.wrap = true
|
||||
vim.wo.number = false
|
||||
show_notification("Wrap enabled", "info")
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleInlayHints()
|
||||
local is_enabled = vim.lsp.inlay_hint.is_enabled()
|
||||
vim.lsp.inlay_hint.enable(not is_enabled)
|
||||
if is_enabled then
|
||||
show_notification("Inlay Hints disabled", "info")
|
||||
else
|
||||
show_notification("Inlay Hints enabled", "info")
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||
callback = function()
|
||||
local current_dir = vim.fn.getcwd()
|
||||
local is_nixpkgs = current_dir:match("nixpkgs$")
|
||||
if is_nixpkgs then
|
||||
vim.b.disable_autoformat = true
|
||||
show_notification("Autoformat-on-save disabled for nixpkgs", "info")
|
||||
else
|
||||
vim.b.disable_autoformat = false
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command("FormatToggle", function(args)
|
||||
local is_global = not args.bang
|
||||
local current_dir = vim.fn.getcwd()
|
||||
local is_nixpkgs = current_dir:match("nixpkgs$")
|
||||
|
||||
if is_global then
|
||||
vim.g.disable_autoformat = not vim.g.disable_autoformat
|
||||
if vim.g.disable_autoformat then
|
||||
show_notification("Autoformat-on-save disabled globally", "info")
|
||||
else
|
||||
show_notification("Autoformat-on-save enabled globally", "info")
|
||||
end
|
||||
elseif is_nixpkgs then
|
||||
vim.b.disable_autoformat = not vim.b.disable_autoformat
|
||||
if vim.b.disable_autoformat then
|
||||
show_notification("Autoformat-on-save disabled for nixpkgs", "info")
|
||||
else
|
||||
show_notification("Autoformat-on-save enabled for nixpkgs", "info")
|
||||
end
|
||||
else
|
||||
vim.b.disable_autoformat = not vim.b.disable_autoformat
|
||||
if vim.b.disable_autoformat then
|
||||
show_notification("Autoformat-on-save disabled for this buffer", "info")
|
||||
else
|
||||
show_notification("Autoformat-on-save enabled for this buffer", "info")
|
||||
end
|
||||
end
|
||||
end, {
|
||||
desc = "Toggle autoformat-on-save",
|
||||
bang = true,
|
||||
})
|
||||
|
||||
local filtered_message = { "No information available" }
|
||||
|
||||
-- Override notify function to filter out messages
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
vim.notify = function(message, level, opts)
|
||||
local merged_opts = vim.tbl_extend("force", {
|
||||
on_open = function(win)
|
||||
local buf = vim.api.nvim_win_get_buf(win)
|
||||
vim.api.nvim_buf_set_option(buf, "filetype", "markdown")
|
||||
end,
|
||||
}, opts or {})
|
||||
|
||||
for _, msg in ipairs(filtered_message) do
|
||||
if message == msg then
|
||||
return
|
||||
end
|
||||
end
|
||||
return notify(message, level, merged_opts)
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user