{ config, lib, ... }: let inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) optionals; inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.binds) mkBinding; cfg = config.vim.session.nvim-session-manager; in { config = mkIf cfg.enable { vim = { startPlugins = [ "nvim-session-manager" "plenary-nvim" ] ++ optionals cfg.usePicker ["dressing-nvim"]; maps.normal = mkMerge [ (mkBinding cfg.mappings.loadSession ":SessionManager load_session" "Load session") (mkBinding cfg.mappings.deleteSession ":SessionManager delete_session" "Delete session") (mkBinding cfg.mappings.saveCurrentSession ":SessionManager save_current_session" "Save current session") (mkBinding cfg.mappings.loadLastSession ":SessionManager load_last_session" "Load last session") # TODO: load_current_dir_session ]; pluginRC.nvim-session-manager = entryAnywhere '' local Path = require('plenary.path') local sm = require('session_manager.config') require('session_manager').setup(${toLuaObject cfg.setupOpts}) ''; }; }; }