nix-community.nixvim/plugins/utils/startify.nix

221 lines
6.9 KiB
Nix
Raw Normal View History

2021-02-11 15:24:00 +00:00
{ pkgs, lib, ... }@args:
let
helpers = import ../helpers.nix { lib = lib; };
in with lib; with helpers;
mkPlugin args {
name = "startify";
description = "Enable startify";
general: add package options (#127) * barbar: package option * Base16: package option * gruvbox: package option * nord: package option * one: package option * onedark: package option * tokyonight: package option * nvim-cmp: package option * coq: package option * lspkind: package option * helpers: added package option to mkPlugin * fugitive: package option * gitgutter: package option * gitsigns: package option * neogit: package option * ledger: package option * nix: package option * plantuml-syntax: package option * treesitter-context: package option + formatting * treesitter-refactor: package option + formatting * treesitter: package option * zig: package option * null-ls: package option * null-ls/servers: package option * lsp-lines: package option * lspsaga: package option * trouble: package option * luasnip: added description for package option * airline: package option * lightline: package option * lualine: package option * telescope: package option * telescope/frecency: package option * telescope/fzf-native: package option * telescope/media-files: package option * comment-nvim: package option * vim-commentary: package option * dashboard: package option * easyescape: package option * emmet: package option * endwise: package option * floaterm: package option * goyo: package option * intellitab: package option * mark-radar: package option * notify: package option * nvim-autopairs: package option * nvim-tree: package option * project-nvim: package option * specs: package option * startify: package option * surround: package option * undotree: package option
2023-01-19 10:45:15 +00:00
package = pkgs.vimPlugins.vim-startify;
2021-02-11 15:24:00 +00:00
options = {
sessionDir = mkDefaultOpt {
description = "Directory to save/load session";
global = "startify_session_dir";
type = types.str;
};
lists = mkDefaultOpt {
description = "Startify display lists. If it's a string, it'll be interpreted as literal lua code";
global = "startify_lists";
type = types.listOf (types.oneOf [(types.submodule {
options = {
type = mkOption {
type = types.str;
description = "The type of the list";
};
# TODO the header should be a literal lua string!
header = mkOption {
type = types.nullOr (types.listOf types.str);
description = "Optional header. It's a list of strings";
default = null;
};
indices = mkOption {
type = types.nullOr (types.listOf types.str);
description = "Optional indices for the current list";
default = null;
};
2021-02-11 15:24:00 +00:00
};
}) types.str]);
2021-02-11 15:24:00 +00:00
value = val: let
list = map (v: if builtins.isAttrs v then toLuaObject v else v) val;
in "{" + (concatStringsSep "," list) + "}";
};
bookmarks = mkDefaultOpt {
description = "A list of files or directories to bookmark.";
global = "startify_bookmarks";
type = with types; listOf (oneOf [str (attrsOf str)]);
};
commands = mkDefaultOpt {
description = "A list of commands to execute on selection";
global = "startify_commands";
type = with types; listOf (oneOf [ str (listOf str) attrs ]);
};
filesNumber = mkDefaultOpt {
description = "The number of files to list";
global = "startify_files_number";
type = types.int;
};
2021-03-19 15:09:39 +00:00
2021-02-11 15:24:00 +00:00
updateOldFiles = mkDefaultOpt {
description = "Update v:oldfiles on-the-fly, so that :Startify is always up-to-date";
global = "startify_update_oldfiles";
type = types.bool;
};
sessionAutoload = mkDefaultOpt {
description = "Load Session.vim";
global = "startify_session_autoload";
type = types.bool;
};
sessionBeforeSave = mkDefaultOpt {
description = "Commands to be executed before saving a session";
global = "startify_session_before_save";
type = types.listOf types.str;
};
sessionPersistence = mkDefaultOpt {
description = "Automatically update sessions";
global = "startify_session_persistence";
type = types.bool;
};
sessionDeleteBuffers = mkDefaultOpt {
description = "Delete all buffers when loading or closing a session";
global = "startify_session_delete_buffers";
type = types.bool;
};
changeToDir = mkDefaultOpt {
description = "When opening a file or bookmark, change to its directory";
global = "startify_change_to_dir";
type = types.bool;
};
changeToVcsRoot = mkDefaultOpt {
description = "When opening a file or bookmark, change to the root directory of the VCS";
global = "startify_change_to_vcs_root";
type = types.bool;
};
changeCmd = mkDefaultOpt {
description = "The default command for switching directories";
global = "startify_change_cmd";
type = types.enum [ "cd" "lcd" "tcd" ];
};
skipList = mkDefaultOpt {
description = "A list of regexes that is used to filter recently used files";
global = "startify_skiplist";
type = types.listOf types.str;
};
useUnicode = mkDefaultOpt {
description = "Use unicode box drawing characters for the fortune header";
global = "startify_fortune_use_unicode";
type = types.bool;
};
paddingLeft = mkDefaultOpt {
description = "Number of spaces used for left padding";
global = "startify_padding_left";
type = types.int;
};
skipListServer = mkDefaultOpt {
description = "Do not create the startify buffer if this is a Vim server instance with a name contained in this list";
global = "startify_skiplist_server";
type = types.listOf types.str;
};
enableSpecial = mkDefaultOpt {
description = "Show <empty buffer> and <quit>";
2021-02-11 15:24:00 +00:00
global = "startify_enable_special";
type = types.bool;
};
enableUnsafe = mkDefaultOpt {
description = "Improves start time but reduces accuracy of the file list";
global = "startify_enable_unsafe";
type = types.bool;
};
sessionRemoveLines = mkDefaultOpt {
description = "Lines matching any of the patterns in this list will be removed from the session file";
global = "startify_session_remove_lines";
type = types.listOf types.str;
};
sessionSaveVars = mkDefaultOpt {
description = "List of variables for Startify to save into the session file";
global = "startify_session_savevars";
type = types.listOf types.str;
};
sessionSaveCmds = mkDefaultOpt {
description = "List of cmdline commands to run when loading the session";
global = "startify_session_savecmds";
type = types.listOf types.str;
};
sessionNumber = mkDefaultOpt {
description = "Maximum number of sessions to display";
global = "startify_session_number";
type = types.listOf types.str;
};
sessionSort = mkDefaultOpt {
description = "Sort sessions by modification time rather than alphabetically";
global = "startify_session_sort";
type = types.bool;
};
customIndices = mkDefaultOpt {
description = "Use this list as indices instead of increasing numbers";
global = "startify_custom_indices";
type = types.listOf types.str;
};
customHeader = mkDefaultOpt {
description = "Define your own header";
global = "startify_custom_headers";
type = types.oneOf [ types.str (types.listOf types.str) ];
};
customQuotes = mkDefaultOpt {
description = "Own quotes for the cowsay header";
global = "startify_custom_header_quotes";
# TODO this should also support funcrefs!
type = types.listOf (types.listOf types.str);
};
customFooter = mkDefaultOpt {
description = "Custom footer";
global = "startify_custom_footer";
type = types.str;
};
disableAtVimEnter = mkDefaultOpt {
description = "Don't run Startify at Vim startup";
global = "startify_disable_at_vimenter";
type = types.bool;
};
relativePath = mkDefaultOpt {
description = "If the file is in or below the current working directory, use a relative path";
global = "startify_relative_path";
type = types.bool;
};
useEnv = mkDefaultOpt {
description = "Show environment variables in path, if their name is shorter than their value";
global = "startify_use_env";
type = types.bool;
};
};
}