From 1d8e7906c9606c956c6b40d8d088c8d2110dc0c0 Mon Sep 17 00:00:00 2001 From: traxys Date: Fri, 29 Dec 2023 15:24:42 +0100 Subject: [PATCH] plugins: Introduce helpers.defaultNullOpts.mkLuaFn (#855) This allows to avoid calling `mkRaw` on lua functions, as they will get applied automatically. This could also help in the future to refactor the use of Lua code to make it more user-friendly. --- lib/helpers.nix | 27 ++++++++++++++++++ plugins/bufferlines/barbecue.nix | 12 ++++---- plugins/bufferlines/bufferline.nix | 16 +++++------ plugins/colorschemes/tokyonight.nix | 8 +++--- plugins/completion/nvim-cmp/default.nix | 5 ++-- plugins/dap/dap-python.nix | 4 +-- plugins/dap/dap-ui.nix | 4 +-- plugins/dap/dap-virtual-text.nix | 4 +-- plugins/filetrees/neo-tree.nix | 4 +-- plugins/languages/lean.nix | 4 +-- plugins/languages/rust.nix | 4 +-- .../treesitter/treesitter-context.nix | 4 +-- plugins/lsp/helpers.nix | 4 +-- plugins/lsp/inc-rename.nix | 4 +-- plugins/lsp/wtf.nix | 8 +++--- plugins/none-ls/default.nix | 16 +++++------ plugins/pluginmanagers/packer.nix | 14 ++++------ plugins/telescope/file-browser.nix | 8 +++--- plugins/utils/auto-save.nix | 4 +-- plugins/utils/auto-session.nix | 8 +++--- plugins/utils/coverage.nix | 4 +-- plugins/utils/flash.nix | 17 +++++------ plugins/utils/notify.nix | 8 +++--- plugins/utils/nvim-bqf.nix | 4 +-- plugins/utils/nvim-ufo.nix | 8 +++--- plugins/utils/oil.nix | 8 +++--- plugins/utils/persistence.nix | 4 +-- plugins/utils/startup.nix | 4 +-- plugins/utils/toggleterm.nix | 28 +++++++++---------- plugins/utils/wilder.nix | 12 ++++---- 30 files changed, 140 insertions(+), 119 deletions(-) diff --git a/lib/helpers.nix b/lib/helpers.nix index a3d31426..125a4355 100644 --- a/lib/helpers.nix +++ b/lib/helpers.nix @@ -140,6 +140,33 @@ with lib; rec { # documentation mkNullableWithRaw = type: mkNullable (maybeRaw type); + mkLuaFn = default: desc: + lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + description = let + defaultDesc = '' + default: + ```lua + ${default} + ``` + ''; + in + if desc == "" + then '' + (lua function) + + ${defaultDesc} + '' + else '' + ${desc} + + (lua function) + + ${defaultDesc} + ''; + apply = mkRaw; + }; mkNum = default: mkNullable (maybeRaw lib.types.number) (toString default); mkInt = default: mkNullable (maybeRaw lib.types.int) (toString default); # Positive: >0 diff --git a/plugins/bufferlines/barbecue.nix b/plugins/bufferlines/barbecue.nix index dbf733c4..29bed68a 100644 --- a/plugins/bufferlines/barbecue.nix +++ b/plugins/bufferlines/barbecue.nix @@ -59,7 +59,7 @@ in { ''; modified = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function(bufnr) return vim.bo[bufnr].modified @@ -75,7 +75,7 @@ in { ''; leadCustomSection = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function() return " " @@ -87,7 +87,7 @@ in { ''; customSection = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function() return " " @@ -173,10 +173,10 @@ in { show_dirname = showDirname; show_basename = showBasename; show_modified = showModified; - modified = helpers.mkRaw modified; + inherit modified; show_navic = showNavic; - lead_custom_section = helpers.mkRaw leadCustomSection; - custom_section = helpers.mkRaw customSection; + lead_custom_section = leadCustomSection; + custom_section = customSection; inherit theme; context_follow_icon_color = contextFollowIconColor; symbols = { diff --git a/plugins/bufferlines/bufferline.nix b/plugins/bufferlines/bufferline.nix index 3b9bdd68..c8862e28 100644 --- a/plugins/bufferlines/bufferline.nix +++ b/plugins/bufferlines/bufferline.nix @@ -172,7 +172,7 @@ in { "Separator style"; nameFormatter = - helpers.defaultNullOpts.mkStr "null" + helpers.defaultNullOpts.mkLuaFn "null" '' A lua function that can be used to modify the buffer's label. The argument 'buf' containing a name, path and bufnr is supplied. @@ -191,7 +191,7 @@ in { showBufferCloseIcons = helpers.defaultNullOpts.mkBool true "Show buffer close icons"; getElementIcon = - helpers.defaultNullOpts.mkStr "null" + helpers.defaultNullOpts.mkLuaFn "null" '' Lua function returning an element icon. @@ -231,7 +231,7 @@ in { (with types; either bool (enum ["nvim_lsp" "coc"])) "false" "diagnostics"; diagnosticsIndicator = - helpers.defaultNullOpts.mkStr "null" + helpers.defaultNullOpts.mkLuaFn "null" "Either `null` or a function that returns the diagnistics indicator."; diagnosticsUpdateInInsert = @@ -265,7 +265,7 @@ in { }; customFilter = - helpers.defaultNullOpts.mkStr "null" + helpers.defaultNullOpts.mkLuaFn "null" '' ``` fun(buf: number, bufnums: number[]): boolean @@ -299,14 +299,14 @@ in { left_trunc_marker = leftTruncMarker; right_trunc_marker = rightTruncMarker; separator_style = separatorStyle; - name_formatter = helpers.mkRaw nameFormatter; + name_formatter = nameFormatter; truncate_names = truncateNames; tab_size = tabSize; max_name_length = maxNameLength; color_icons = colorIcons; show_buffer_icons = showBufferIcons; show_buffer_close_icons = showBufferCloseIcons; - get_element_icon = helpers.mkRaw getElementIcon; + get_element_icon = getElementIcon; show_close_icon = showCloseIcon; show_tab_indicators = showTabIndicators; show_duplicate_prefix = showDuplicatePrefix; @@ -316,7 +316,7 @@ in { max_prefix_length = maxPrefixLength; sort_by = sortBy; inherit diagnostics; - diagnostics_indicator = helpers.mkRaw diagnosticsIndicator; + diagnostics_indicator = diagnosticsIndicator; diagnostics_update_in_insert = diagnosticsUpdateInInsert; inherit offsets; groups = { @@ -336,7 +336,7 @@ in { debug = { inherit (debug) logging; }; - custom_filter = helpers.mkRaw customFilter; + custom_filter = customFilter; } // cfg.extraOptions; diff --git a/plugins/colorschemes/tokyonight.nix b/plugins/colorschemes/tokyonight.nix index 62b5ccd6..ec5227a6 100644 --- a/plugins/colorschemes/tokyonight.nix +++ b/plugins/colorschemes/tokyonight.nix @@ -51,14 +51,14 @@ in { helpers.defaultNullOpts.mkBool false "When true, section headers in the lualine theme will be bold"; onColors = - helpers.defaultNullOpts.mkStr "function(colors) end" + helpers.defaultNullOpts.mkLuaFn "function(colors) end" '' Override specific color groups to use other groups or a hex color. function will be called with a ColorScheme table. `@param colors ColorScheme` ''; onHighlights = - helpers.defaultNullOpts.mkStr "function(highlights, colors) end" + helpers.defaultNullOpts.mkLuaFn "function(highlights, colors) end" '' Override specific highlights to use other groups or a hex color. function will be called with a Highlights and ColorScheme table @@ -79,8 +79,8 @@ in { dim_inactive = dimInactive; lualine_bold = lualineBold; day_brightness = dayBrightness; - on_colors = helpers.mkRaw onColors; - on_highlights = helpers.mkRaw onHighlights; + on_colors = onColors; + on_highlights = onHighlights; }; in '' require("tokyonight").setup(${helpers.toLuaObject setupOptions}) diff --git a/plugins/completion/nvim-cmp/default.nix b/plugins/completion/nvim-cmp/default.nix index 77e68487..9e73c29d 100644 --- a/plugins/completion/nvim-cmp/default.nix +++ b/plugins/completion/nvim-cmp/default.nix @@ -212,7 +212,7 @@ in { "An array of completion fields to specify their order."; format = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function(_, vim_item) return vim_item @@ -572,8 +572,7 @@ in { formatting = with formatting; { expandable_indicator = expandableIndicator; - inherit fields; - format = helpers.mkRaw format; + inherit fields format; }; matching = with matching; { diff --git a/plugins/dap/dap-python.nix b/plugins/dap/dap-python.nix index b52ef80e..ae2b504f 100644 --- a/plugins/dap/dap-python.nix +++ b/plugins/dap/dap-python.nix @@ -26,7 +26,7 @@ in { includeConfigs = helpers.defaultNullOpts.mkBool true "Add default configurations."; - resolvePython = helpers.mkNullOrOption types.str '' + resolvePython = helpers.defaultNullOpts.mkLuaFn "null" '' Function to resolve path to python to use for program or test execution. By default the `VIRTUAL_ENV` and `CONDA_PREFIX` environment variables are used if present. ''; @@ -75,7 +75,7 @@ in { table.insert(require("dap").configurations.python, ${toLuaObject cfg.customConfigurations}) '') + (optionalString (cfg.resolvePython != null) '' - require("dap-python").resolve_python = ${toLuaObject (mkRaw cfg.resolvePython)} + require("dap-python").resolve_python = ${toLuaObject cfg.resolvePython} '') + (optionalString (cfg.testRunner != null) '' require("dap-python").test_runner = ${toLuaObject cfg.testRunner}; diff --git a/plugins/dap/dap-ui.nix b/plugins/dap/dap-ui.nix index d3f31b37..4270eceb 100644 --- a/plugins/dap/dap-ui.nix +++ b/plugins/dap/dap-ui.nix @@ -186,7 +186,7 @@ in { maxValueLines = helpers.defaultNullOpts.mkInt 100 "Maximum number of lines to allow a value to fill before trimming."; }; - selectWindow = helpers.mkNullOrOption types.str '' + selectWindow = helpers.defaultNullOpts.mkLuaFn "null" '' A function which returns a window to be used for opening buffers such as a stack frame location. ''; }; @@ -212,7 +212,7 @@ in { max_value_lines = maxValueLines; }; - select_window = helpers.mkRaw selectWindow; + select_window = selectWindow; } // cfg.extraOptions; in diff --git a/plugins/dap/dap-virtual-text.nix b/plugins/dap/dap-virtual-text.nix index 21dd9a49..1a344c3c 100644 --- a/plugins/dap/dap-virtual-text.nix +++ b/plugins/dap/dap-virtual-text.nix @@ -36,7 +36,7 @@ in { clearOnContinue = helpers.defaultNullOpts.mkBool false "Clear virtual text on `continue` (might cause flickering when stepping)."; - displayCallback = helpers.defaultNullOpts.mkStr '' + displayCallback = helpers.defaultNullOpts.mkLuaFn '' function(variable, buf, stackframe, node, options) if options.virt_text_pos == 'inline' then return ' = ' .. variable.value @@ -72,7 +72,7 @@ in { only_first_definition = onlyFirstDefinition; all_references = allReferences; clear_on_continue = clearOnContinue; - display_callback = helpers.mkRaw displayCallback; + display_callback = displayCallback; virt_text_pos = virtTextPos; all_frames = allFrames; virt_lines = virtLines; diff --git a/plugins/filetrees/neo-tree.nix b/plugins/filetrees/neo-tree.nix index 851ade2e..63e4e727 100644 --- a/plugins/filetrees/neo-tree.nix +++ b/plugins/filetrees/neo-tree.nix @@ -153,7 +153,7 @@ in { "Used when sorting files and directories in the tree"; sortFunction = - helpers.defaultNullOpts.mkStr "nil" + helpers.defaultNullOpts.mkLuaFn "nil" "Uses a custom function for sorting files and directories in the tree"; usePopupsForInput = @@ -1041,7 +1041,7 @@ in { popup_border_style = popupBorderStyle; resize_timer_interval = resizeTimerInterval; sort_case_insensitive = sortCaseInsensitive; - sort_function = mkRaw sortFunction; + sort_function = sortFunction; use_popups_for_input = usePopupsForInput; use_default_mappings = useDefaultMappings; source_selector = with sourceSelector; { diff --git a/plugins/languages/lean.nix b/plugins/languages/lean.nix index 9ae01359..0b63a882 100644 --- a/plugins/languages/lean.nix +++ b/plugins/languages/lean.nix @@ -187,7 +187,7 @@ in { height = helpers.defaultNullOpts.mkPositiveInt 5 "Height of the window."; - onLines = helpers.mkNullOrOption types.str '' + onLines = helpers.defaultNullOpts.mkLuaFn "nil" '' A callback which will be called with (multi-line) stderr output. e.g., use: @@ -302,7 +302,7 @@ in { enable height ; - on_lines = helpers.mkRaw onLines; + on_lines = onLines; }; inherit lsp3; } diff --git a/plugins/languages/rust.nix b/plugins/languages/rust.nix index 2c6d5d18..590f1c19 100644 --- a/plugins/languages/rust.nix +++ b/plugins/languages/rust.nix @@ -24,7 +24,7 @@ in { "how to execute terminal commands"; onInitialized = - helpers.defaultNullOpts.mkStr "null" + helpers.defaultNullOpts.mkLuaFn "null" '' Callback to execute once rust-analyzer is done initializing the workspace The callback receives one parameter indicating the `health` of the server: @@ -143,7 +143,7 @@ in { helpers.ifNonNull' cfg.executor (helpers.mkRaw "require(${rust-tools.executors}).${cfg.executor}"); - on_initialized = helpers.mkRaw cfg.onInitialized; + on_initialized = cfg.onInitialized; reload_workspace_from_cargo_toml = cfg.reloadWorkspaceFromCargoToml; inlay_hints = with cfg.inlayHints; { diff --git a/plugins/languages/treesitter/treesitter-context.nix b/plugins/languages/treesitter/treesitter-context.nix index 2c146303..2296c279 100644 --- a/plugins/languages/treesitter/treesitter-context.nix +++ b/plugins/languages/treesitter/treesitter-context.nix @@ -50,7 +50,7 @@ in { The Z-index of the context window. ''; - onAttach = helpers.mkNullOrOption types.str '' + onAttach = helpers.defaultNullOpts.mkLuaFn "nil" '' The implementation of a lua function which takes an integer `buf` as parameter and returns a boolean. Return `false` to disable attaching. @@ -70,7 +70,7 @@ in { separator zindex ; - on_attach = helpers.mkRaw onAttach; + on_attach = onAttach; } // cfg.extraOptions; in diff --git a/plugins/lsp/helpers.nix b/plugins/lsp/helpers.nix index 1e6ff37d..e5092931 100644 --- a/plugins/lsp/helpers.nix +++ b/plugins/lsp/helpers.nix @@ -61,7 +61,7 @@ `:LspStart` (|lspconfig-commands|). ''; - rootDir = helpers.mkNullOrOption types.str '' + rootDir = helpers.defaultNullOpts.mkLuaFn "nil" '' A function (or function handle) which returns the root of the project used to determine if lspconfig should launch a new language server, or attach a previously launched server when you open a new buffer matching the filetype of the server. @@ -110,7 +110,7 @@ extraOptions = { inherit (cfg) cmd filetypes autostart; - root_dir = helpers.mkRaw cfg.rootDir; + root_dir = cfg.rootDir; on_attach = helpers.ifNonNull' cfg.onAttach ( diff --git a/plugins/lsp/inc-rename.nix b/plugins/lsp/inc-rename.nix index feb3b41b..958f4abc 100644 --- a/plugins/lsp/inc-rename.nix +++ b/plugins/lsp/inc-rename.nix @@ -30,7 +30,7 @@ with lib; { the type of the external input buffer to use ''; - postHook = helpers.defaultNullOpts.mkNullable types.str "null" '' + postHook = helpers.defaultNullOpts.mkLuaFn "null" '' callback to run after renaming, receives the result table (from LSP handler) as an argument ''; }; @@ -43,7 +43,7 @@ with lib; { preview_empty_name = cfg.previewEmptyName; show_message = cfg.showMessage; input_buffer_type = cfg.inputBufferType; - post_hook = helpers.mkRaw cfg.postHook; + post_hook = cfg.postHook; }; in mkIf cfg.enable { diff --git a/plugins/lsp/wtf.nix b/plugins/lsp/wtf.nix index b9f23c6e..36ea3d58 100644 --- a/plugins/lsp/wtf.nix +++ b/plugins/lsp/wtf.nix @@ -72,9 +72,9 @@ in { "Default search engine."; hooks = { - requestStarted = helpers.mkNullOrOption types.str "Callback for request start."; + requestStarted = helpers.defaultNullOpts.mkLuaFn "nil" "Callback for request start."; - requestFinished = helpers.mkNullOrOption types.str "Callback for request finished."; + requestFinished = helpers.defaultNullOpts.mkLuaFn "nil" "Callback for request finished."; }; winhighlight = helpers.defaultNullOpts.mkStr "Normal:Normal,FloatBorder:FloatBorder" '' @@ -96,8 +96,8 @@ in { additional_instructions = additionalInstructions; search_engine = searchEngine; hooks = { - request_started = helpers.mkRaw hooks.requestStarted; - request_finished = helpers.mkRaw hooks.requestFinished; + request_started = hooks.requestStarted; + request_finished = hooks.requestFinished; }; inherit winhighlight; } diff --git a/plugins/none-ls/default.nix b/plugins/none-ls/default.nix index 2c9d60c1..4bb9e17f 100644 --- a/plugins/none-ls/default.nix +++ b/plugins/none-ls/default.nix @@ -137,17 +137,17 @@ in { custom callback for null-ls, or leave this undefined. ''; - onInit = helpers.defaultNullOpts.mkStr "null" '' + onInit = helpers.defaultNullOpts.mkLuaFn "null" '' Defines an `on_init` callback to run when null-ls initializes. From here, you can make changes to the client (the first argument) or `initialize_result` (the second argument, which as of now is not used). ''; - onExit = helpers.defaultNullOpts.mkStr "null" '' + onExit = helpers.defaultNullOpts.mkLuaFn "null" '' Defines an `on_exit` callback to run when the null-ls client exits. ''; - rootDir = helpers.defaultNullOpts.mkStr "null" '' + rootDir = helpers.defaultNullOpts.mkLuaFn "null" '' Determines the root of the null-ls server. On startup, null-ls will call `root_dir` with the full path to the first file that null-ls attaches to. @@ -161,7 +161,7 @@ in { directory. ''; - shouldAttach = helpers.defaultNullOpts.mkStr "null" '' + shouldAttach = helpers.defaultNullOpts.mkLuaFn "null" '' A user-defined function that controls whether to enable null-ls for a given buffer. Receives `bufnr` as its first argument. @@ -257,10 +257,10 @@ in { log_level = logLevel; notify_format = notifyFormat; on_attach = helpers.mkRaw onAttach'; - on_init = helpers.mkRaw onInit; - on_exit = helpers.mkRaw onExit; - root_dir = helpers.mkRaw rootDir; - should_attach = helpers.mkRaw shouldAttach; + on_init = onInit; + on_exit = onExit; + root_dir = rootDir; + should_attach = shouldAttach; temp_dir = tempDir; update_in_insert = updateInInsert; diff --git a/plugins/pluginmanagers/packer.nix b/plugins/pluginmanagers/packer.nix index 54ebefac..811fab46 100644 --- a/plugins/pluginmanagers/packer.nix +++ b/plugins/pluginmanagers/packer.nix @@ -29,9 +29,9 @@ in { helpers.mkNullOrOption str "Specifies an alias under which to install the plugin"; - installer = helpers.mkNullOrOption str "A custom installer"; + installer = helpers.defaultNullOpts.mkLuaFn "nil" "A custom installer"; - updater = helpers.mkNullOrOption str "A custom updater"; + updater = helpers.defaultNullOpts.mkLuaFn "nil" "A custom updater"; after = helpers.mkNullOrOption (either str (listOf str)) @@ -157,14 +157,12 @@ in { then { "__unkeyed" = plugin.name; - inherit (plugin) disable as; - - installer = helpers.mkRaw plugin.installer; - - updater = helpers.mkRaw plugin.updater; - inherit (plugin) + disable + as + installer + updater after rtp opt diff --git a/plugins/telescope/file-browser.nix b/plugins/telescope/file-browser.nix index 233d07c0..e18817ee 100644 --- a/plugins/telescope/file-browser.nix +++ b/plugins/telescope/file-browser.nix @@ -78,11 +78,11 @@ in { Induces slow-down w/ plenary finder (true if `fd` available). ''; - browseFiles = helpers.defaultNullOpts.mkStr "fb_finders.browse_files" '' + browseFiles = helpers.defaultNullOpts.mkLuaFn "fb_finders.browse_files" '' A custom lua function to override for the file browser. ''; - browseFolders = helpers.defaultNullOpts.mkStr "fb_finders.browse_folders" '' + browseFolders = helpers.defaultNullOpts.mkLuaFn "fb_finders.browse_folders" '' A custom lua function to override for the folder browser. ''; @@ -151,8 +151,8 @@ in { ; add_dirs = addDirs; auto_depth = autoDepth; - browse_files = helpers.mkRaw browseFiles; - browse_folders = helpers.mkRaw browseFolders; + browse_files = browseFiles; + browse_folders = browseFolders; collapse_dirs = collapseDirs; cwd_to_path = cwdToPath; dir_icon = dirIcon; diff --git a/plugins/utils/auto-save.nix b/plugins/utils/auto-save.nix index 9ccd1fbf..c6a4f3b0 100644 --- a/plugins/utils/auto-save.nix +++ b/plugins/utils/auto-save.nix @@ -69,7 +69,7 @@ in { ''; condition = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function(buf) local fn = vim.fn @@ -120,7 +120,7 @@ in { cleaning_interval = cleaningInterval; }; trigger_events = cfg.triggerEvents; - condition = helpers.mkRaw cfg.condition; + inherit (cfg) condition; write_all_buffers = cfg.writeAllBuffers; debounce_delay = cfg.debounceDelay; callbacks = with cfg.callbacks; diff --git a/plugins/utils/auto-session.nix b/plugins/utils/auto-session.nix index cd646d2e..5621c4e8 100644 --- a/plugins/utils/auto-session.nix +++ b/plugins/utils/auto-session.nix @@ -81,12 +81,12 @@ in { Restore session for upcoming cwd on cwd change. ''; - preCwdChangedHook = helpers.mkNullOrOption types.str '' + preCwdChangedHook = helpers.defaultNullOpts.mkLuaFn "nil" '' lua function hook. This is called after auto_session code runs for the `DirChangedPre` autocmd. ''; - postCwdChangedHook = helpers.mkNullOrOption types.str '' + postCwdChangedHook = helpers.defaultNullOpts.mkLuaFn "nil" '' lua function hook. This is called after auto_session code runs for the `DirChanged` autocmd. ''; @@ -160,8 +160,8 @@ in { then with cfg.cwdChangeHandling; { restore_upcoming_session = restoreUpcomingSession; - pre_cwd_changed_hook = helpers.mkRaw preCwdChangedHook; - post_cwd_changed_hook = helpers.mkRaw postCwdChangedHook; + pre_cwd_changed_hook = preCwdChangedHook; + post_cwd_changed_hook = postCwdChangedHook; } else cfg.cwdChangeHandling; bypass_session_save_file_types = cfg.bypassSessionSaveFileTypes; diff --git a/plugins/utils/coverage.nix b/plugins/utils/coverage.nix index 28c034e2..945dc97a 100644 --- a/plugins/utils/coverage.nix +++ b/plugins/utils/coverage.nix @@ -140,7 +140,7 @@ in { "Fail text highlight group of the summary pop-up."; }; - loadCoverageCb = helpers.mkNullOrOption types.str '' + loadCoverageCb = helpers.defaultNullOpts.mkLuaFn "nil" '' A lua function that will be called when a coverage file is loaded. Example: @@ -278,7 +278,7 @@ in { summary_pass = summaryPass; summary_fail = summaryFail; }; - load_coverage_cb = helpers.mkRaw loadCoverageCb; + load_coverage_cb = loadCoverageCb; inherit signs; sign_group = signGroup; summary = with summary; { diff --git a/plugins/utils/flash.nix b/plugins/utils/flash.nix index 3f84c4fd..0d5effbb 100644 --- a/plugins/utils/flash.nix +++ b/plugins/utils/flash.nix @@ -155,7 +155,7 @@ in { }; format = - helpers.defaultNullOpts.mkStr '' + helpers.defaultNullOpts.mkLuaFn '' format = function(opts) return { { opts.match.label, opts.hl_group } } end @@ -186,7 +186,7 @@ in { }; }; - action = helpers.mkNullOrOption types.str '' + action = helpers.defaultNullOpts.mkLuaFn "nil" '' action to perform when picking a label. defaults to the jumping logic depending on the mode. @type fun(match:Flash.Match, state:Flash.State) @@ -198,7 +198,7 @@ in { When `true`, flash will try to continue the last search ''; - config = helpers.mkNullOrOption types.str '' + config = helpers.defaultNullOpts.mkLuaFn "nil" '' Set config to a function to dynamically change the config @type fun(opts:Flash.Config) ''; @@ -298,7 +298,7 @@ in { ''; charActions = - helpers.defaultNullOpts.mkStr '' + helpers.defaultNullOpts.mkLuaFn '' function(motion) return { [";"] = "next", -- set to right to always go right @@ -406,14 +406,12 @@ in { rainbow = { inherit (c.label.rainbow) enabled shade; }; - format = helpers.mkRaw c.label.format; + inherit (c.label) format; }; highlight = { inherit (c.highlight) backdrop matches priority groups; }; - action = helpers.mkRaw c.action; - inherit (c) pattern continue; - config = helpers.mkRaw c.config; + inherit (c) action pattern continue config; prompt = { inherit (c.prompt) enabled prefix; win_config = c.prompt.winConfig; @@ -443,8 +441,7 @@ in { inherit (c) enabled autohide; jump_labels = c.jumpLabels; multi_line = c.multiLine; - inherit (c) keys; - char_actions = helpers.mkRaw c.charActions; + inherit (c) keys charActions; }); treesitter = mkModeConfig cfg.modes.treesitter (c: {}); treesitter_search = mkModeConfig cfg.modes.treesitterSearch (c: {}); diff --git a/plugins/utils/notify.nix b/plugins/utils/notify.nix index 51916abf..3c8dd99a 100644 --- a/plugins/utils/notify.nix +++ b/plugins/utils/notify.nix @@ -71,11 +71,11 @@ in { trace = "✎"; }; - onOpen = helpers.mkNullOrOption types.str '' + onOpen = helpers.defaultNullOpts.mkLuaFn "nil" '' Function called when a new window is opened, use for changing win settings/config. ''; - onClose = helpers.mkNullOrOption types.str '' + onClose = helpers.defaultNullOpts.mkLuaFn "nil" '' Function called when a new window is closed. ''; @@ -130,8 +130,8 @@ in { } ) icons; - on_open = helpers.mkRaw onOpen; - on_close = helpers.mkRaw onClose; + on_open = onOpen; + on_close = onClose; inherit render; minimum_width = minimumWidth; inherit fps; diff --git a/plugins/utils/nvim-bqf.nix b/plugins/utils/nvim-bqf.nix index 97fd4eac..84aab9ab 100644 --- a/plugins/utils/nvim-bqf.nix +++ b/plugins/utils/nvim-bqf.nix @@ -70,7 +70,7 @@ in { Add label of current item buffer at the end of the item line. ''; - shouldPreviewCb = helpers.mkNullOrOption types.str '' + shouldPreviewCb = helpers.defaultNullOpts.mkLuaFn "nil" '' A callback function to decide whether to preview while switching buffer, with (bufnr: number, qwinid: number) parameters. ''; @@ -135,7 +135,7 @@ in { win_vheight = winVheight; inherit wrap; buf_label = bufLabel; - should_preview_cb = helpers.mkRaw shouldPreviewCb; + should_preview_cb = shouldPreviewCb; }; func_map = cfg.funcMap; filter = { diff --git a/plugins/utils/nvim-ufo.nix b/plugins/utils/nvim-ufo.nix index 4b29b419..98044d29 100644 --- a/plugins/utils/nvim-ufo.nix +++ b/plugins/utils/nvim-ufo.nix @@ -20,7 +20,7 @@ in { while opening the folded line, `0` value will disable the highlight ''; - providerSelector = helpers.defaultNullOpts.mkStr "null" '' + providerSelector = helpers.defaultNullOpts.mkLuaFn "null" '' A lua function as a selector for fold providers. ''; @@ -31,7 +31,7 @@ in { run `UfoInspect` for details if your provider has extended the kinds. ''; - foldVirtTextHandler = helpers.defaultNullOpts.mkStr "null" "A lua function to customize fold virtual text"; + foldVirtTextHandler = helpers.defaultNullOpts.mkLuaFn "null" "A lua function to customize fold virtual text"; enableGetFoldVirtText = helpers.defaultNullOpts.mkBool false '' Enable a function with `lnum` as a parameter to capture the virtual text @@ -58,9 +58,9 @@ in { options = with cfg; { open_fold_hl_timeout = openFoldHlTimeout; - provider_selector = helpers.mkRaw providerSelector; + provider_selector = providerSelector; close_fold_kinds = closeFoldKinds; - fold_virt_text_handler = helpers.mkRaw foldVirtTextHandler; + fold_virt_text_handler = foldVirtTextHandler; enable_get_fold_virt_text = enableGetFoldVirtText; preview = with preview; { diff --git a/plugins/utils/oil.nix b/plugins/utils/oil.nix index eea27500..3dd9a12e 100644 --- a/plugins/utils/oil.nix +++ b/plugins/utils/oil.nix @@ -289,7 +289,7 @@ in { ''; isHiddenFile = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function(name, bufnr) return vim.startswith(name, ".") @@ -298,7 +298,7 @@ in { "This function defines what is considered a 'hidden' file."; isAlwaysHidden = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function(name, bufnr) return false @@ -381,8 +381,8 @@ in { use_default_keymaps = cfg.useDefaultKeymaps; view_options = with cfg.viewOptions; { show_hidden = showHidden; - is_hidden_file = helpers.mkRaw isHiddenFile; - is_always_hidden = helpers.mkRaw isAlwaysHidden; + is_hidden_file = isHiddenFile; + is_always_hidden = isAlwaysHidden; }; float = with cfg.float; { inherit padding; diff --git a/plugins/utils/persistence.nix b/plugins/utils/persistence.nix index a42bc10e..134667fa 100644 --- a/plugins/utils/persistence.nix +++ b/plugins/utils/persistence.nix @@ -41,7 +41,7 @@ with lib; { helpers.defaultNullOpts.mkNullable (with types; listOf (enum sessionOpts)) ''["buffers" "curdir" "tabpages" "winsize" "skiprtp"]'' "sessionoptions used for saving"; - preSave = helpers.mkNullOrOption types.str "a function to call before saving the session"; + preSave = helpers.defaultNullOpts.mkLuaFn "nil" "a function to call before saving the session"; saveEmpty = helpers.defaultNullOpts.mkBool false '' don't save if there are no open file buffers @@ -57,7 +57,7 @@ with lib; { extraConfigLua = let opts = { inherit (cfg) dir options; - pre_save = helpers.mkRaw cfg.preSave; + pre_save = cfg.preSave; save_empty = cfg.saveEmpty; }; in '' diff --git a/plugins/utils/startup.nix b/plugins/utils/startup.nix index f778a359..a730564e 100644 --- a/plugins/utils/startup.nix +++ b/plugins/utils/startup.nix @@ -191,7 +191,7 @@ in { - if > 1 numbers of column ''; - after = helpers.mkNullOrOption types.str '' + after = helpers.defaultNullOpts.mkLuaFn "nil" '' A function that gets executed at the end. ''; @@ -312,7 +312,7 @@ in { { mapping_keys = mappingKeys; cursor_column = cursorColumn; - after = helpers.mkRaw after; + inherit after; empty_lines_between_mappings = emptyLinesBetweenMappings; disable_statuslines = disableStatuslines; inherit paddings; diff --git a/plugins/utils/toggleterm.nix b/plugins/utils/toggleterm.nix index b64b29e2..d7aee9ec 100644 --- a/plugins/utils/toggleterm.nix +++ b/plugins/utils/toggleterm.nix @@ -39,27 +39,27 @@ in { normal mode. ''; - onCreate = helpers.mkNullOrOption types.str '' + onCreate = helpers.defaultNullOpts.mkLuaFn "nil" '' Function to run when the terminal is first created. ''; - onOpen = helpers.mkNullOrOption types.str '' + onOpen = helpers.defaultNullOpts.mkLuaFn "nil" '' Function to run when the terminal opens. ''; - onClose = helpers.mkNullOrOption types.str '' + onClose = helpers.defaultNullOpts.mkLuaFn "nil" '' Function to run when the terminal closes. ''; - onStdout = helpers.mkNullOrOption types.str '' + onStdout = helpers.defaultNullOpts.mkLuaFn "nil" '' Callback for processing output on stdout. ''; - onStderr = helpers.mkNullOrOption types.str '' + onStderr = helpers.defaultNullOpts.mkLuaFn "nil" '' Callback for processing output on stderr. ''; - onExit = helpers.mkNullOrOption types.str '' + onExit = helpers.defaultNullOpts.mkLuaFn "nil" '' Function to run when terminal process exits. ''; @@ -160,7 +160,7 @@ in { enabled = helpers.defaultNullOpts.mkBool false ""; nameFormatter = - helpers.defaultNullOpts.mkStr + helpers.defaultNullOpts.mkLuaFn '' function(term) return term.name @@ -177,12 +177,12 @@ in { else helpers.mkRaw size ); open_mapping = helpers.ifNonNull' openMapping (helpers.mkRaw "[[${openMapping}]]"); - on_create = helpers.mkRaw onCreate; - on_open = helpers.mkRaw onOpen; - on_close = helpers.mkRaw onClose; - on_stdout = helpers.mkRaw onStdout; - on_stderr = helpers.mkRaw onStderr; - on_exit = helpers.mkRaw onExit; + on_create = onCreate; + on_open = onOpen; + on_close = onClose; + on_stdout = onStdout; + on_stderr = onStderr; + on_exit = onExit; hide_numbers = hideNumbers; shade_filetypes = shadeFiletypes; shade_terminals = shadeTerminals; @@ -197,7 +197,7 @@ in { float_opts = floatOpts; winbar = with winbar; { inherit enabled; - name_formatter = helpers.mkRaw nameFormatter; + name_formatter = nameFormatter; }; }; in diff --git a/plugins/utils/wilder.nix b/plugins/utils/wilder.nix index 7148cfcb..a445d02c 100644 --- a/plugins/utils/wilder.nix +++ b/plugins/utils/wilder.nix @@ -175,7 +175,7 @@ in { ``` ''; - renderer = helpers.mkNullOrOption types.str '' + renderer = helpers.defaultNullOpts.mkLuaFn "nil" '' Sets the renderer to used to display the completions. See `|wilder-renderer|`. @@ -190,7 +190,7 @@ in { ``` ''; - preHook = helpers.mkNullOrOption types.str '' + preHook = helpers.defaultNullOpts.mkLuaFn "nil" '' A function which takes a `ctx`. This function is called when wilder starts, or when wilder becomes unhidden. See `|wilder-hidden|`. @@ -198,7 +198,7 @@ in { `ctx` contains no keys. ''; - postHook = helpers.mkNullOrOption types.str '' + postHook = helpers.defaultNullOpts.mkLuaFn "nil" '' A function which takes a `ctx`. This function is called when wilder stops, or when wilder becomes hidden. See `|wilder-hidden|`. @@ -237,9 +237,9 @@ in { pipeline = helpers.ifNonNull' pipeline (map helpers.mkRaw pipeline); - renderer = helpers.mkRaw renderer; - preHook = helpers.mkRaw preHook; - postHook = helpers.mkRaw postHook; + inherit renderer; + pre_hook = preHook; + post_hook = postHook; } // cfg.extraOptions; in