{ 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 = "un"; action = '' lua require("notify").dismiss({ silent = true, pending = true }) ''; 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 ''; }; }