{ config, lib, ... }: let inherit (lib.modules) mkIf; inherit (lib.strings) optionalString; inherit (lib.options) mkEnableOption mkOption; inherit (lib.types) path enum nullOr; inherit (lib.nvim.dag) entryAfter; cfg = config.vim.debugMode; in { options.vim = { debugMode = { enable = mkEnableOption "debug mode"; level = mkOption { type = enum [2 3 4 5 8 9 11 12 13 14 15 16]; default = 16; description = '' Set verbosity level of Neovim while debug mode is enabled. Value must be be one of the levels expected by Neovim's [`verbose` option](https://neovim.io/doc/user/options.html#'verbose') ''; }; logFile = mkOption { type = nullOr path; default = null; description = '' Set the log file that will be used to store verbose messages set by the `verbose` option. ''; }; }; }; config.vim = mkIf cfg.enable { luaConfigRC.debug-mode = entryAfter ["basic"] '' -- Debug mode settings vim.o.verbose = ${toString cfg.level} ${optionalString (cfg.logFile != null) '' -- Set verbose log file vim.o.verbosefile = "${cfg.logFile}" ''} ''; }; }