mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-10 09:14:31 +02:00
treewide: Reformat with nixfmt
This commit is contained in:
parent
c6281260dc
commit
62f32bfc71
459 changed files with 28139 additions and 26377 deletions
|
@ -7,148 +7,138 @@
|
|||
}:
|
||||
with lib;
|
||||
# TODO:add support for additional filetypes. This requires autocommands!
|
||||
helpers.neovim-plugin.mkNeovimPlugin config {
|
||||
name = "telescope";
|
||||
originalName = "telescope.nvim";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-nvim;
|
||||
helpers.neovim-plugin.mkNeovimPlugin config {
|
||||
name = "telescope";
|
||||
originalName = "telescope.nvim";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-nvim;
|
||||
|
||||
maintainers = [maintainers.GaetanLepage];
|
||||
maintainers = [ maintainers.GaetanLepage ];
|
||||
|
||||
extraPackages = [pkgs.bat];
|
||||
extraPackages = [ pkgs.bat ];
|
||||
|
||||
# TODO introduced 2024-03-24: remove 2024-05-24
|
||||
deprecateExtraOptions = true;
|
||||
optionsRenamedToSettings = ["defaults"];
|
||||
# TODO introduced 2024-03-24: remove 2024-05-24
|
||||
deprecateExtraOptions = true;
|
||||
optionsRenamedToSettings = [ "defaults" ];
|
||||
|
||||
imports = [./extensions];
|
||||
imports = [ ./extensions ];
|
||||
|
||||
extraOptions = {
|
||||
keymaps = mkOption {
|
||||
type = with types;
|
||||
attrsOf
|
||||
(
|
||||
either
|
||||
str
|
||||
(submodule {
|
||||
options = {
|
||||
action = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
mode = helpers.keymaps.mkModeOption "n";
|
||||
options = helpers.keymaps.mapConfigOptions;
|
||||
};
|
||||
})
|
||||
);
|
||||
description = "Keymaps for telescope.";
|
||||
default = {};
|
||||
example = {
|
||||
"<leader>fg" = "live_grep";
|
||||
"<C-p>" = {
|
||||
action = "git_files";
|
||||
options.desc = "Telescope Git Files";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keymapsSilent = mkOption {
|
||||
type = types.bool;
|
||||
description = "Whether telescope keymaps should be silent";
|
||||
default = false;
|
||||
};
|
||||
|
||||
highlightTheme = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The colorscheme to use for syntax highlighting";
|
||||
default = config.colorscheme;
|
||||
};
|
||||
|
||||
enabledExtensions = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "A list of enabled extensions. Don't use this directly";
|
||||
default = [];
|
||||
internal = true;
|
||||
visible = false;
|
||||
};
|
||||
};
|
||||
|
||||
callSetup = false;
|
||||
extraConfig = cfg: {
|
||||
extraConfigVim = mkIf (cfg.highlightTheme != null) ''
|
||||
let $BAT_THEME = '${cfg.highlightTheme}'
|
||||
'';
|
||||
|
||||
keymaps =
|
||||
mapAttrsToList
|
||||
(
|
||||
key: mapping: let
|
||||
actionStr =
|
||||
if isString mapping
|
||||
then mapping
|
||||
else mapping.action;
|
||||
in {
|
||||
mode = mapping.mode or "n";
|
||||
inherit key;
|
||||
action.__raw = "require('telescope.builtin').${actionStr}";
|
||||
|
||||
options =
|
||||
{
|
||||
silent = cfg.keymapsSilent;
|
||||
}
|
||||
// (mapping.options or {});
|
||||
}
|
||||
)
|
||||
cfg.keymaps;
|
||||
|
||||
extraConfigLua = ''
|
||||
require('telescope').setup(${helpers.toLuaObject cfg.settings})
|
||||
|
||||
local __telescopeExtensions = ${helpers.toLuaObject cfg.enabledExtensions}
|
||||
for i, extension in ipairs(__telescopeExtensions) do
|
||||
require('telescope').load_extension(extension)
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
settingsOptions = {
|
||||
defaults = helpers.mkNullOrOption (with types; attrsOf anything) ''
|
||||
Default configuration for telescope.
|
||||
'';
|
||||
|
||||
pickers = helpers.mkNullOrOption (with types; attrsOf anything) ''
|
||||
Default configuration for builtin pickers.
|
||||
'';
|
||||
|
||||
extensions = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
default = {};
|
||||
# NOTE: We hide this option from the documentation as users should use the top-level
|
||||
# `extensions.*` options.
|
||||
# They can still directly change this `settings.adapters` option.
|
||||
# In this case, they are responsible for explicitly installing the manually added extensions.
|
||||
visible = false;
|
||||
};
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
defaults = {
|
||||
file_ignore_patterns = [
|
||||
"^.git/"
|
||||
"^.mypy_cache/"
|
||||
"^__pycache__/"
|
||||
"^output/"
|
||||
"^data/"
|
||||
"%.ipynb"
|
||||
];
|
||||
set_env.COLORTERM = "truecolor";
|
||||
sorting_strategy = "ascending";
|
||||
selection_caret = "> ";
|
||||
layout_config.prompt_position = "top";
|
||||
mappings = {
|
||||
i = {
|
||||
"<A-j>".__raw = "require('telescope.actions').move_selection_next";
|
||||
"<A-k>".__raw = "require('telescope.actions').move_selection_previous";
|
||||
};
|
||||
extraOptions = {
|
||||
keymaps = mkOption {
|
||||
type =
|
||||
with types;
|
||||
attrsOf (
|
||||
either str (submodule {
|
||||
options = {
|
||||
action = mkOption { type = types.str; };
|
||||
mode = helpers.keymaps.mkModeOption "n";
|
||||
options = helpers.keymaps.mapConfigOptions;
|
||||
};
|
||||
})
|
||||
);
|
||||
description = "Keymaps for telescope.";
|
||||
default = { };
|
||||
example = {
|
||||
"<leader>fg" = "live_grep";
|
||||
"<C-p>" = {
|
||||
action = "git_files";
|
||||
options.desc = "Telescope Git Files";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
keymapsSilent = mkOption {
|
||||
type = types.bool;
|
||||
description = "Whether telescope keymaps should be silent";
|
||||
default = false;
|
||||
};
|
||||
|
||||
highlightTheme = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The colorscheme to use for syntax highlighting";
|
||||
default = config.colorscheme;
|
||||
};
|
||||
|
||||
enabledExtensions = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "A list of enabled extensions. Don't use this directly";
|
||||
default = [ ];
|
||||
internal = true;
|
||||
visible = false;
|
||||
};
|
||||
};
|
||||
|
||||
callSetup = false;
|
||||
extraConfig = cfg: {
|
||||
extraConfigVim = mkIf (cfg.highlightTheme != null) ''
|
||||
let $BAT_THEME = '${cfg.highlightTheme}'
|
||||
'';
|
||||
|
||||
keymaps = mapAttrsToList (
|
||||
key: mapping:
|
||||
let
|
||||
actionStr = if isString mapping then mapping else mapping.action;
|
||||
in
|
||||
{
|
||||
mode = mapping.mode or "n";
|
||||
inherit key;
|
||||
action.__raw = "require('telescope.builtin').${actionStr}";
|
||||
|
||||
options = {
|
||||
silent = cfg.keymapsSilent;
|
||||
} // (mapping.options or { });
|
||||
}
|
||||
) cfg.keymaps;
|
||||
|
||||
extraConfigLua = ''
|
||||
require('telescope').setup(${helpers.toLuaObject cfg.settings})
|
||||
|
||||
local __telescopeExtensions = ${helpers.toLuaObject cfg.enabledExtensions}
|
||||
for i, extension in ipairs(__telescopeExtensions) do
|
||||
require('telescope').load_extension(extension)
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
settingsOptions = {
|
||||
defaults = helpers.mkNullOrOption (with types; attrsOf anything) ''
|
||||
Default configuration for telescope.
|
||||
'';
|
||||
|
||||
pickers = helpers.mkNullOrOption (with types; attrsOf anything) ''
|
||||
Default configuration for builtin pickers.
|
||||
'';
|
||||
|
||||
extensions = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
default = { };
|
||||
# NOTE: We hide this option from the documentation as users should use the top-level
|
||||
# `extensions.*` options.
|
||||
# They can still directly change this `settings.adapters` option.
|
||||
# In this case, they are responsible for explicitly installing the manually added extensions.
|
||||
visible = false;
|
||||
};
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
defaults = {
|
||||
file_ignore_patterns = [
|
||||
"^.git/"
|
||||
"^.mypy_cache/"
|
||||
"^__pycache__/"
|
||||
"^output/"
|
||||
"^data/"
|
||||
"%.ipynb"
|
||||
];
|
||||
set_env.COLORTERM = "truecolor";
|
||||
sorting_strategy = "ascending";
|
||||
selection_caret = "> ";
|
||||
layout_config.prompt_position = "top";
|
||||
mappings = {
|
||||
i = {
|
||||
"<A-j>".__raw = "require('telescope.actions').move_selection_next";
|
||||
"<A-k>".__raw = "require('telescope.actions').move_selection_previous";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -4,44 +4,44 @@
|
|||
helpers,
|
||||
...
|
||||
}:
|
||||
with lib; rec {
|
||||
mkExtension = {
|
||||
name,
|
||||
defaultPackage,
|
||||
extensionName ? name,
|
||||
settingsOptions ? {},
|
||||
settingsExample ? null,
|
||||
extraOptions ? {},
|
||||
imports ? [],
|
||||
optionsRenamedToSettings ? [],
|
||||
extraConfig ? cfg: {},
|
||||
}: {
|
||||
# TODO remove this once all deprecation warnings will have been removed.
|
||||
imports = let
|
||||
basePluginPath = ["plugins" "telescope" "extensions" name];
|
||||
settingsPath = basePluginPath ++ ["settings"];
|
||||
in
|
||||
imports
|
||||
++ (
|
||||
map
|
||||
(
|
||||
option: let
|
||||
optionPath =
|
||||
if isString option
|
||||
then [option]
|
||||
else option; # option is already a path (i.e. a list)
|
||||
with lib;
|
||||
rec {
|
||||
mkExtension =
|
||||
{
|
||||
name,
|
||||
defaultPackage,
|
||||
extensionName ? name,
|
||||
settingsOptions ? { },
|
||||
settingsExample ? null,
|
||||
extraOptions ? { },
|
||||
imports ? [ ],
|
||||
optionsRenamedToSettings ? [ ],
|
||||
extraConfig ? cfg: { },
|
||||
}:
|
||||
{
|
||||
# TODO remove this once all deprecation warnings will have been removed.
|
||||
imports =
|
||||
let
|
||||
basePluginPath = [
|
||||
"plugins"
|
||||
"telescope"
|
||||
"extensions"
|
||||
name
|
||||
];
|
||||
settingsPath = basePluginPath ++ [ "settings" ];
|
||||
in
|
||||
imports
|
||||
++ (map (
|
||||
option:
|
||||
let
|
||||
optionPath = if isString option then [ option ] else option; # option is already a path (i.e. a list)
|
||||
|
||||
optionPathSnakeCase = map helpers.toSnakeCase optionPath;
|
||||
in
|
||||
mkRenamedOptionModule
|
||||
(basePluginPath ++ optionPath)
|
||||
(settingsPath ++ optionPathSnakeCase)
|
||||
)
|
||||
optionsRenamedToSettings
|
||||
);
|
||||
mkRenamedOptionModule (basePluginPath ++ optionPath) (settingsPath ++ optionPathSnakeCase)
|
||||
) optionsRenamedToSettings);
|
||||
|
||||
options.plugins.telescope.extensions.${name} =
|
||||
{
|
||||
options.plugins.telescope.extensions.${name} = {
|
||||
enable = mkEnableOption "the `${name}` telescope extension";
|
||||
|
||||
package = helpers.mkPackageOption name defaultPackage;
|
||||
|
@ -51,32 +51,30 @@ with lib; rec {
|
|||
options = settingsOptions;
|
||||
example = settingsExample;
|
||||
};
|
||||
}
|
||||
// extraOptions;
|
||||
} // extraOptions;
|
||||
|
||||
config = let
|
||||
cfg = config.plugins.telescope.extensions.${name};
|
||||
in
|
||||
mkIf cfg.enable
|
||||
(
|
||||
mkMerge [
|
||||
config =
|
||||
let
|
||||
cfg = config.plugins.telescope.extensions.${name};
|
||||
in
|
||||
mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
extraPlugins = [cfg.package];
|
||||
extraPlugins = [ cfg.package ];
|
||||
|
||||
plugins.telescope = {
|
||||
enabledExtensions = [extensionName];
|
||||
enabledExtensions = [ extensionName ];
|
||||
settings.extensions.${extensionName} = cfg.settings;
|
||||
};
|
||||
}
|
||||
(extraConfig cfg)
|
||||
]
|
||||
);
|
||||
};
|
||||
]);
|
||||
};
|
||||
|
||||
mkModeMappingsOption = mode: defaults:
|
||||
mkModeMappingsOption =
|
||||
mode: defaults:
|
||||
mkOption {
|
||||
type = with helpers.nixvimTypes; attrsOf strLuaFn;
|
||||
default = {};
|
||||
default = { };
|
||||
description = ''
|
||||
Keymaps in ${mode} mode.
|
||||
|
||||
|
@ -88,11 +86,10 @@ with lib; rec {
|
|||
apply = mapAttrs (_: helpers.mkRaw);
|
||||
};
|
||||
|
||||
mkMappingsOption = {
|
||||
insertDefaults,
|
||||
normalDefaults,
|
||||
}: {
|
||||
i = mkModeMappingsOption "insert" insertDefaults;
|
||||
n = mkModeMappingsOption "normal" normalDefaults;
|
||||
};
|
||||
mkMappingsOption =
|
||||
{ insertDefaults, normalDefaults }:
|
||||
{
|
||||
i = mkModeMappingsOption "insert" insertDefaults;
|
||||
n = mkModeMappingsOption "normal" normalDefaults;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,123 +5,134 @@
|
|||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
telescopeHelpers = import ./_helpers.nix {inherit lib helpers config pkgs;};
|
||||
with lib;
|
||||
let
|
||||
telescopeHelpers = import ./_helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
helpers
|
||||
config
|
||||
pkgs
|
||||
;
|
||||
};
|
||||
in
|
||||
telescopeHelpers.mkExtension {
|
||||
name = "file-browser";
|
||||
extensionName = "file_browser";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-file-browser-nvim;
|
||||
telescopeHelpers.mkExtension {
|
||||
name = "file-browser";
|
||||
extensionName = "file_browser";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-file-browser-nvim;
|
||||
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"theme"
|
||||
"path"
|
||||
"cwd"
|
||||
"cwdToPath"
|
||||
"grouped"
|
||||
# "files" TODO this warning is causing an 'infinite recursion error'... No idea why
|
||||
"addDirs"
|
||||
"depth"
|
||||
"autoDepth"
|
||||
"selectBuffer"
|
||||
"hidden"
|
||||
"respectGitignore"
|
||||
"browseFiles"
|
||||
"browseFolders"
|
||||
"hideParentDir"
|
||||
"collapseDirs"
|
||||
"quiet"
|
||||
"dirIcon"
|
||||
"dirIconHl"
|
||||
"displayStat"
|
||||
"hijackNetrw"
|
||||
"useFd"
|
||||
"gitStatus"
|
||||
"promptPath"
|
||||
];
|
||||
imports = [
|
||||
(
|
||||
mkRemovedOptionModule
|
||||
["plugins" "telescope" "extensions" "file-browser" "mappings"]
|
||||
''
|
||||
Use `plugins.telescope.extension.file-browser.settings.mappings` instead but beware, you need to specify the full name of the callback:
|
||||
Example:
|
||||
```
|
||||
mappings = {
|
||||
i = {
|
||||
"<A-c>" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"<S-CR>" = "require('telescope._extensions.file_browser.actions').create_from_prompt";
|
||||
"<A-r>" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
};
|
||||
n = {
|
||||
"c" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"r" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
"m" = "require('telescope._extensions.file_browser.actions').move";
|
||||
};
|
||||
}
|
||||
```
|
||||
''
|
||||
)
|
||||
];
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"theme"
|
||||
"path"
|
||||
"cwd"
|
||||
"cwdToPath"
|
||||
"grouped"
|
||||
# "files" TODO this warning is causing an 'infinite recursion error'... No idea why
|
||||
"addDirs"
|
||||
"depth"
|
||||
"autoDepth"
|
||||
"selectBuffer"
|
||||
"hidden"
|
||||
"respectGitignore"
|
||||
"browseFiles"
|
||||
"browseFolders"
|
||||
"hideParentDir"
|
||||
"collapseDirs"
|
||||
"quiet"
|
||||
"dirIcon"
|
||||
"dirIconHl"
|
||||
"displayStat"
|
||||
"hijackNetrw"
|
||||
"useFd"
|
||||
"gitStatus"
|
||||
"promptPath"
|
||||
];
|
||||
imports = [
|
||||
(mkRemovedOptionModule
|
||||
[
|
||||
"plugins"
|
||||
"telescope"
|
||||
"extensions"
|
||||
"file-browser"
|
||||
"mappings"
|
||||
]
|
||||
''
|
||||
Use `plugins.telescope.extension.file-browser.settings.mappings` instead but beware, you need to specify the full name of the callback:
|
||||
Example:
|
||||
```
|
||||
mappings = {
|
||||
i = {
|
||||
"<A-c>" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"<S-CR>" = "require('telescope._extensions.file_browser.actions').create_from_prompt";
|
||||
"<A-r>" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
};
|
||||
n = {
|
||||
"c" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"r" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
"m" = "require('telescope._extensions.file_browser.actions').move";
|
||||
};
|
||||
}
|
||||
```
|
||||
''
|
||||
)
|
||||
];
|
||||
|
||||
settingsOptions = {
|
||||
theme = helpers.mkNullOrStr ''
|
||||
Custom theme, will use your global theme by default.
|
||||
'';
|
||||
settingsOptions = {
|
||||
theme = helpers.mkNullOrStr ''
|
||||
Custom theme, will use your global theme by default.
|
||||
'';
|
||||
|
||||
path = helpers.defaultNullOpts.mkStr ''{__raw = "vim.loop.cwd()";}'' ''
|
||||
Directory to browse files from.
|
||||
`vim.fn.expanded` automatically.
|
||||
'';
|
||||
path = helpers.defaultNullOpts.mkStr ''{__raw = "vim.loop.cwd()";}'' ''
|
||||
Directory to browse files from.
|
||||
`vim.fn.expanded` automatically.
|
||||
'';
|
||||
|
||||
cwd = helpers.defaultNullOpts.mkStr ''{__raw = "vim.loop.cwd()";}'' ''
|
||||
Directory to browse folders from.
|
||||
`vim.fn.expanded` automatically.
|
||||
'';
|
||||
cwd = helpers.defaultNullOpts.mkStr ''{__raw = "vim.loop.cwd()";}'' ''
|
||||
Directory to browse folders from.
|
||||
`vim.fn.expanded` automatically.
|
||||
'';
|
||||
|
||||
cwd_to_path = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether folder browser is launched from `path` rather than `cwd`.
|
||||
'';
|
||||
cwd_to_path = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether folder browser is launched from `path` rather than `cwd`.
|
||||
'';
|
||||
|
||||
grouped = helpers.defaultNullOpts.mkBool false ''
|
||||
Group initial sorting by directories and then files.
|
||||
'';
|
||||
grouped = helpers.defaultNullOpts.mkBool false ''
|
||||
Group initial sorting by directories and then files.
|
||||
'';
|
||||
|
||||
files = helpers.defaultNullOpts.mkBool true ''
|
||||
Start in file (true) or folder (false) browser.
|
||||
'';
|
||||
files = helpers.defaultNullOpts.mkBool true ''
|
||||
Start in file (true) or folder (false) browser.
|
||||
'';
|
||||
|
||||
add_dirs = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether the file browser shows folders.
|
||||
'';
|
||||
add_dirs = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether the file browser shows folders.
|
||||
'';
|
||||
|
||||
depth = helpers.defaultNullOpts.mkUnsignedInt 1 ''
|
||||
File tree depth to display, `false` for unlimited depth.
|
||||
'';
|
||||
depth = helpers.defaultNullOpts.mkUnsignedInt 1 ''
|
||||
File tree depth to display, `false` for unlimited depth.
|
||||
'';
|
||||
|
||||
auto_depth = helpers.defaultNullOpts.mkBool false ''
|
||||
Unlimit or set `depth` to `auto_depth` & unset grouped on prompt for file_browser.
|
||||
'';
|
||||
auto_depth = helpers.defaultNullOpts.mkBool false ''
|
||||
Unlimit or set `depth` to `auto_depth` & unset grouped on prompt for file_browser.
|
||||
'';
|
||||
|
||||
select_buffer = helpers.defaultNullOpts.mkBool false ''
|
||||
Select current buffer if possible.
|
||||
May imply `hidden=true`.
|
||||
'';
|
||||
select_buffer = helpers.defaultNullOpts.mkBool false ''
|
||||
Select current buffer if possible.
|
||||
May imply `hidden=true`.
|
||||
'';
|
||||
|
||||
hidden =
|
||||
helpers.defaultNullOpts.mkNullable
|
||||
hidden =
|
||||
helpers.defaultNullOpts.mkNullable
|
||||
(
|
||||
with types;
|
||||
either
|
||||
bool
|
||||
(submodule {
|
||||
options = {
|
||||
file_browser = helpers.defaultNullOpts.mkBool false "";
|
||||
either bool (submodule {
|
||||
options = {
|
||||
file_browser = helpers.defaultNullOpts.mkBool false "";
|
||||
|
||||
folder_browser = helpers.defaultNullOpts.mkBool false "";
|
||||
};
|
||||
})
|
||||
folder_browser = helpers.defaultNullOpts.mkBool false "";
|
||||
};
|
||||
})
|
||||
)
|
||||
''
|
||||
{
|
||||
|
@ -131,112 +142,103 @@ in
|
|||
''
|
||||
"Determines whether to show hidden files or not.";
|
||||
|
||||
respect_gitignore = helpers.defaultNullOpts.mkBool false ''
|
||||
Induces slow-down w/ plenary finder (true if `fd` available).
|
||||
respect_gitignore = helpers.defaultNullOpts.mkBool false ''
|
||||
Induces slow-down w/ plenary finder (true if `fd` available).
|
||||
'';
|
||||
|
||||
browse_files = helpers.defaultNullOpts.mkLuaFn "require('telescope._extensions.file_browser.finders').browse_files" "A custom lua function to override for the file browser.";
|
||||
|
||||
browse_folders = helpers.defaultNullOpts.mkLuaFn "require('telescope._extensions.file_browser.finders').browse_folders" "A custom lua function to override for the folder browser.";
|
||||
|
||||
hide_parent_dir = helpers.defaultNullOpts.mkBool false ''
|
||||
Hide `../` in the file browser.
|
||||
'';
|
||||
|
||||
collapse_dirs = helpers.defaultNullOpts.mkBool false ''
|
||||
Skip with only a single (possibly hidden) sub-dir in file_browser.
|
||||
'';
|
||||
|
||||
quiet = helpers.defaultNullOpts.mkBool false ''
|
||||
Suppress any notification from file_browser actions.
|
||||
'';
|
||||
|
||||
dir_icon = helpers.defaultNullOpts.mkStr "" ''
|
||||
Change the icon for a directory.
|
||||
'';
|
||||
|
||||
dir_icon_hl = helpers.defaultNullOpts.mkStr "Default" ''
|
||||
Change the highlight group of dir icon.
|
||||
'';
|
||||
|
||||
display_stat = helpers.defaultNullOpts.mkAttrsOf types.anything ''
|
||||
{
|
||||
date = true;
|
||||
size = true;
|
||||
mode = true;
|
||||
}
|
||||
'' "Ordered stat; see upstream for more info.";
|
||||
|
||||
hijack_netrw = helpers.defaultNullOpts.mkBool false ''
|
||||
Use telescope file browser when opening directory paths.
|
||||
'';
|
||||
|
||||
use_fd = helpers.defaultNullOpts.mkBool true ''
|
||||
Use `fd` if available over `plenary.scandir`.
|
||||
'';
|
||||
|
||||
git_status = helpers.defaultNullOpts.mkBool true ''
|
||||
Show the git status of files (true if `git` is found).
|
||||
'';
|
||||
|
||||
prompt_path = helpers.defaultNullOpts.mkBool false ''
|
||||
Show the current relative path from cwd as the prompt prefix.
|
||||
'';
|
||||
|
||||
mappings = telescopeHelpers.mkMappingsOption {
|
||||
insertDefaults = ''
|
||||
{
|
||||
"<A-c>" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"<S-CR>" = "require('telescope._extensions.file_browser.actions').create_from_prompt";
|
||||
"<A-r>" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
"<A-m>" = "require('telescope._extensions.file_browser.actions').move";
|
||||
"<A-y>" = "require('telescope._extensions.file_browser.actions').copy";
|
||||
"<A-d>" = "require('telescope._extensions.file_browser.actions').remove";
|
||||
"<C-o>" = "require('telescope._extensions.file_browser.actions').open";
|
||||
"<C-g>" = "require('telescope._extensions.file_browser.actions').goto_parent_dir";
|
||||
"<C-e>" = "require('telescope._extensions.file_browser.actions').goto_home_dir";
|
||||
"<C-w>" = "require('telescope._extensions.file_browser.actions').goto_cwd";
|
||||
"<C-t>" = "require('telescope._extensions.file_browser.actions').change_cwd";
|
||||
"<C-f>" = "require('telescope._extensions.file_browser.actions').toggle_browser";
|
||||
"<C-h>" = "require('telescope._extensions.file_browser.actions').toggle_hidden";
|
||||
"<C-s>" = "require('telescope._extensions.file_browser.actions').toggle_all";
|
||||
"<bs>" = "require('telescope._extensions.file_browser.actions').backspace";
|
||||
}
|
||||
'';
|
||||
|
||||
browse_files =
|
||||
helpers.defaultNullOpts.mkLuaFn
|
||||
"require('telescope._extensions.file_browser.finders').browse_files"
|
||||
"A custom lua function to override for the file browser.";
|
||||
|
||||
browse_folders =
|
||||
helpers.defaultNullOpts.mkLuaFn
|
||||
"require('telescope._extensions.file_browser.finders').browse_folders"
|
||||
"A custom lua function to override for the folder browser.";
|
||||
|
||||
hide_parent_dir = helpers.defaultNullOpts.mkBool false ''
|
||||
Hide `../` in the file browser.
|
||||
normalDefaults = ''
|
||||
{
|
||||
"c" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"r" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
"m" = "require('telescope._extensions.file_browser.actions').move";
|
||||
"y" = "require('telescope._extensions.file_browser.actions').copy";
|
||||
"d" = "require('telescope._extensions.file_browser.actions').remove";
|
||||
"o" = "require('telescope._extensions.file_browser.actions').open";
|
||||
"g" = "require('telescope._extensions.file_browser.actions').goto_parent_dir";
|
||||
"e" = "require('telescope._extensions.file_browser.actions').goto_home_dir";
|
||||
"w" = "require('telescope._extensions.file_browser.actions').goto_cwd";
|
||||
"t" = "require('telescope._extensions.file_browser.actions').change_cwd";
|
||||
"f" = "require('telescope._extensions.file_browser.actions').toggle_browser";
|
||||
"h" = "require('telescope._extensions.file_browser.actions').toggle_hidden";
|
||||
"s" = "require('telescope._extensions.file_browser.actions').toggle_all";
|
||||
}
|
||||
'';
|
||||
|
||||
collapse_dirs = helpers.defaultNullOpts.mkBool false ''
|
||||
Skip with only a single (possibly hidden) sub-dir in file_browser.
|
||||
'';
|
||||
|
||||
quiet = helpers.defaultNullOpts.mkBool false ''
|
||||
Suppress any notification from file_browser actions.
|
||||
'';
|
||||
|
||||
dir_icon = helpers.defaultNullOpts.mkStr "" ''
|
||||
Change the icon for a directory.
|
||||
'';
|
||||
|
||||
dir_icon_hl = helpers.defaultNullOpts.mkStr "Default" ''
|
||||
Change the highlight group of dir icon.
|
||||
'';
|
||||
|
||||
display_stat =
|
||||
helpers.defaultNullOpts.mkAttrsOf types.anything
|
||||
''
|
||||
{
|
||||
date = true;
|
||||
size = true;
|
||||
mode = true;
|
||||
}
|
||||
''
|
||||
"Ordered stat; see upstream for more info.";
|
||||
|
||||
hijack_netrw = helpers.defaultNullOpts.mkBool false ''
|
||||
Use telescope file browser when opening directory paths.
|
||||
'';
|
||||
|
||||
use_fd = helpers.defaultNullOpts.mkBool true ''
|
||||
Use `fd` if available over `plenary.scandir`.
|
||||
'';
|
||||
|
||||
git_status = helpers.defaultNullOpts.mkBool true ''
|
||||
Show the git status of files (true if `git` is found).
|
||||
'';
|
||||
|
||||
prompt_path = helpers.defaultNullOpts.mkBool false ''
|
||||
Show the current relative path from cwd as the prompt prefix.
|
||||
'';
|
||||
|
||||
mappings = telescopeHelpers.mkMappingsOption {
|
||||
insertDefaults = ''
|
||||
{
|
||||
"<A-c>" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"<S-CR>" = "require('telescope._extensions.file_browser.actions').create_from_prompt";
|
||||
"<A-r>" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
"<A-m>" = "require('telescope._extensions.file_browser.actions').move";
|
||||
"<A-y>" = "require('telescope._extensions.file_browser.actions').copy";
|
||||
"<A-d>" = "require('telescope._extensions.file_browser.actions').remove";
|
||||
"<C-o>" = "require('telescope._extensions.file_browser.actions').open";
|
||||
"<C-g>" = "require('telescope._extensions.file_browser.actions').goto_parent_dir";
|
||||
"<C-e>" = "require('telescope._extensions.file_browser.actions').goto_home_dir";
|
||||
"<C-w>" = "require('telescope._extensions.file_browser.actions').goto_cwd";
|
||||
"<C-t>" = "require('telescope._extensions.file_browser.actions').change_cwd";
|
||||
"<C-f>" = "require('telescope._extensions.file_browser.actions').toggle_browser";
|
||||
"<C-h>" = "require('telescope._extensions.file_browser.actions').toggle_hidden";
|
||||
"<C-s>" = "require('telescope._extensions.file_browser.actions').toggle_all";
|
||||
"<bs>" = "require('telescope._extensions.file_browser.actions').backspace";
|
||||
}
|
||||
'';
|
||||
|
||||
normalDefaults = ''
|
||||
{
|
||||
"c" = "require('telescope._extensions.file_browser.actions').create";
|
||||
"r" = "require('telescope._extensions.file_browser.actions').rename";
|
||||
"m" = "require('telescope._extensions.file_browser.actions').move";
|
||||
"y" = "require('telescope._extensions.file_browser.actions').copy";
|
||||
"d" = "require('telescope._extensions.file_browser.actions').remove";
|
||||
"o" = "require('telescope._extensions.file_browser.actions').open";
|
||||
"g" = "require('telescope._extensions.file_browser.actions').goto_parent_dir";
|
||||
"e" = "require('telescope._extensions.file_browser.actions').goto_home_dir";
|
||||
"w" = "require('telescope._extensions.file_browser.actions').goto_cwd";
|
||||
"t" = "require('telescope._extensions.file_browser.actions').change_cwd";
|
||||
"f" = "require('telescope._extensions.file_browser.actions').toggle_browser";
|
||||
"h" = "require('telescope._extensions.file_browser.actions').toggle_hidden";
|
||||
"s" = "require('telescope._extensions.file_browser.actions').toggle_all";
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
file_browser = {
|
||||
theme = "ivy";
|
||||
hijack_netrw = true;
|
||||
};
|
||||
settingsExample = {
|
||||
file_browser = {
|
||||
theme = "ivy";
|
||||
hijack_netrw = true;
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -6,10 +6,15 @@
|
|||
...
|
||||
}:
|
||||
with lib;
|
||||
(
|
||||
import ./_helpers.nix {inherit lib helpers config pkgs;}
|
||||
)
|
||||
.mkExtension {
|
||||
(import ./_helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
helpers
|
||||
config
|
||||
pkgs
|
||||
;
|
||||
}).mkExtension
|
||||
{
|
||||
name = "frecency";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-frecency-nvim;
|
||||
|
||||
|
@ -21,20 +26,23 @@ with lib;
|
|||
"showScores"
|
||||
"workspaces"
|
||||
];
|
||||
imports = let
|
||||
basePluginPath = ["plugins" "telescope" "extensions" "frecency"];
|
||||
in [
|
||||
(
|
||||
mkRemovedOptionModule
|
||||
(basePluginPath ++ ["showUnindexed"])
|
||||
"This option has been removed upstream."
|
||||
)
|
||||
(
|
||||
mkRemovedOptionModule
|
||||
(basePluginPath ++ ["deviconsDisabled"])
|
||||
"This option has been removed upstream."
|
||||
)
|
||||
];
|
||||
imports =
|
||||
let
|
||||
basePluginPath = [
|
||||
"plugins"
|
||||
"telescope"
|
||||
"extensions"
|
||||
"frecency"
|
||||
];
|
||||
in
|
||||
[
|
||||
(mkRemovedOptionModule (
|
||||
basePluginPath ++ [ "showUnindexed" ]
|
||||
) "This option has been removed upstream.")
|
||||
(mkRemovedOptionModule (
|
||||
basePluginPath ++ [ "deviconsDisabled" ]
|
||||
) "This option has been removed upstream.")
|
||||
];
|
||||
|
||||
settingsOptions = {
|
||||
auto_validate = helpers.defaultNullOpts.mkBool true ''
|
||||
|
@ -74,17 +82,17 @@ with lib;
|
|||
|
||||
ignore_patterns =
|
||||
helpers.defaultNullOpts.mkListOf types.str
|
||||
''
|
||||
[
|
||||
"*.git/*"
|
||||
"*/tmp/*"
|
||||
"term://*"
|
||||
]
|
||||
''
|
||||
''
|
||||
Patterns in this table control which files are indexed (and subsequently which you'll see
|
||||
in the finder results).
|
||||
'';
|
||||
''
|
||||
[
|
||||
"*.git/*"
|
||||
"*/tmp/*"
|
||||
"term://*"
|
||||
]
|
||||
''
|
||||
''
|
||||
Patterns in this table control which files are indexed (and subsequently which you'll see
|
||||
in the finder results).
|
||||
'';
|
||||
|
||||
max_timestamps = helpers.defaultNullOpts.mkPositiveInt 10 ''
|
||||
Set the max count of timestamps DB keeps when you open files.
|
||||
|
@ -96,19 +104,12 @@ with lib;
|
|||
'';
|
||||
|
||||
show_filter_column =
|
||||
helpers.defaultNullOpts.mkNullable
|
||||
(
|
||||
with types;
|
||||
either
|
||||
bool
|
||||
(listOf str)
|
||||
)
|
||||
"true"
|
||||
''
|
||||
Show the path of the active filter before file paths.
|
||||
In default, it uses the tail of paths for `'LSP'` and `'CWD'` tags.
|
||||
You can configure this by setting a table for this option.
|
||||
'';
|
||||
helpers.defaultNullOpts.mkNullable (with types; either bool (listOf str)) "true"
|
||||
''
|
||||
Show the path of the active filter before file paths.
|
||||
In default, it uses the tail of paths for `'LSP'` and `'CWD'` tags.
|
||||
You can configure this by setting a table for this option.
|
||||
'';
|
||||
|
||||
show_scores = helpers.defaultNullOpts.mkBool false ''
|
||||
To see the scores generated by the algorithm in the results, set this to true.
|
||||
|
@ -119,31 +120,25 @@ with lib;
|
|||
'';
|
||||
|
||||
workspace_scan_cmd =
|
||||
helpers.mkNullOrOption
|
||||
(
|
||||
with helpers.nixvimTypes;
|
||||
either
|
||||
rawLua
|
||||
(listOf str)
|
||||
)
|
||||
''
|
||||
This option can be set values as `"LUA"|string[]|null`.
|
||||
With the default value: `null`, it uses these way below to make entries for workspace
|
||||
files.
|
||||
It tries in order until it works successfully.
|
||||
helpers.mkNullOrOption (with helpers.nixvimTypes; either rawLua (listOf str))
|
||||
''
|
||||
This option can be set values as `"LUA"|string[]|null`.
|
||||
With the default value: `null`, it uses these way below to make entries for workspace
|
||||
files.
|
||||
It tries in order until it works successfully.
|
||||
|
||||
1. `rg -.g '!.git' --files`
|
||||
2. `fdfind -Htf`
|
||||
3. `fd -Htf`
|
||||
4. Native Lua code (old way)
|
||||
1. `rg -.g '!.git' --files`
|
||||
2. `fdfind -Htf`
|
||||
3. `fd -Htf`
|
||||
4. Native Lua code (old way)
|
||||
|
||||
If you like another commands, set them to this option, like
|
||||
```nix
|
||||
workspace_scan_cmd = ["find" "." "-type" "f"];
|
||||
```
|
||||
If you like another commands, set them to this option, like
|
||||
```nix
|
||||
workspace_scan_cmd = ["find" "." "-type" "f"];
|
||||
```
|
||||
|
||||
If you prefer Native Lua code, set `workspace_scan_cmd.__raw = "LUA"`.
|
||||
'';
|
||||
If you prefer Native Lua code, set `workspace_scan_cmd.__raw = "LUA"`.
|
||||
'';
|
||||
|
||||
workspaces = helpers.defaultNullOpts.mkAttrsOf types.str "{}" ''
|
||||
This attrs contains mappings of `workspace_tag` -> `workspace_directory`.
|
||||
|
@ -156,7 +151,10 @@ with lib;
|
|||
db_root = "/home/my_username/path/to/db_root";
|
||||
show_scores = false;
|
||||
show_unindexed = true;
|
||||
ignore_patterns = ["*.git/*" "*/tmp/*"];
|
||||
ignore_patterns = [
|
||||
"*.git/*"
|
||||
"*/tmp/*"
|
||||
];
|
||||
disable_devicons = false;
|
||||
workspaces = {
|
||||
conf = "/home/my_username/.config";
|
||||
|
|
|
@ -5,45 +5,51 @@
|
|||
pkgs,
|
||||
...
|
||||
}:
|
||||
(
|
||||
import ./_helpers.nix {inherit lib helpers config pkgs;}
|
||||
)
|
||||
.mkExtension {
|
||||
name = "fzf-native";
|
||||
extensionName = "fzf";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-fzf-native-nvim;
|
||||
(import ./_helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
helpers
|
||||
config
|
||||
pkgs
|
||||
;
|
||||
}).mkExtension
|
||||
{
|
||||
name = "fzf-native";
|
||||
extensionName = "fzf";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-fzf-native-nvim;
|
||||
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"fuzzy"
|
||||
"overrideGenericSorter"
|
||||
"overrideFileSorter"
|
||||
"caseMode"
|
||||
];
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"fuzzy"
|
||||
"overrideGenericSorter"
|
||||
"overrideFileSorter"
|
||||
"caseMode"
|
||||
];
|
||||
|
||||
settingsOptions = {
|
||||
fuzzy = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to fuzzy search. False will do exact matching.
|
||||
'';
|
||||
settingsOptions = {
|
||||
fuzzy = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to fuzzy search. False will do exact matching.
|
||||
'';
|
||||
|
||||
override_generic_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Override the generic sorter.
|
||||
'';
|
||||
override_generic_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Override the generic sorter.
|
||||
'';
|
||||
|
||||
override_file_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Override the file sorter.
|
||||
'';
|
||||
override_file_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Override the file sorter.
|
||||
'';
|
||||
|
||||
case_mode =
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault
|
||||
["smart_case" "ignore_case" "respect_case"]
|
||||
"Case mode.";
|
||||
};
|
||||
case_mode = helpers.defaultNullOpts.mkEnumFirstDefault [
|
||||
"smart_case"
|
||||
"ignore_case"
|
||||
"respect_case"
|
||||
] "Case mode.";
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
fuzzy = false;
|
||||
override_generic_sorter = true;
|
||||
override_file_sorter = false;
|
||||
case_mode = "ignore_case";
|
||||
};
|
||||
}
|
||||
settingsExample = {
|
||||
fuzzy = false;
|
||||
override_generic_sorter = true;
|
||||
override_file_sorter = false;
|
||||
case_mode = "ignore_case";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,32 +5,37 @@
|
|||
pkgs,
|
||||
...
|
||||
}:
|
||||
(
|
||||
import ./_helpers.nix {inherit lib helpers config pkgs;}
|
||||
)
|
||||
.mkExtension {
|
||||
name = "fzy-native";
|
||||
extensionName = "fzy_native";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-fzy-native-nvim;
|
||||
(import ./_helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
helpers
|
||||
config
|
||||
pkgs
|
||||
;
|
||||
}).mkExtension
|
||||
{
|
||||
name = "fzy-native";
|
||||
extensionName = "fzy_native";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-fzy-native-nvim;
|
||||
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"overrideFileSorter"
|
||||
"overrideGenericSorter"
|
||||
];
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"overrideFileSorter"
|
||||
"overrideGenericSorter"
|
||||
];
|
||||
|
||||
settingsOptions = {
|
||||
override_file_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to override the file sorter.
|
||||
'';
|
||||
settingsOptions = {
|
||||
override_file_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to override the file sorter.
|
||||
'';
|
||||
|
||||
override_generic_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to override the generic sorter.
|
||||
'';
|
||||
};
|
||||
override_generic_sorter = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to override the generic sorter.
|
||||
'';
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
override_file_sorter = true;
|
||||
override_generic_sorter = false;
|
||||
};
|
||||
}
|
||||
settingsExample = {
|
||||
override_file_sorter = true;
|
||||
override_generic_sorter = false;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -6,119 +6,132 @@
|
|||
...
|
||||
}:
|
||||
with lib;
|
||||
(
|
||||
import ./_helpers.nix {inherit lib helpers config pkgs;}
|
||||
)
|
||||
.mkExtension {
|
||||
(import ./_helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
helpers
|
||||
config
|
||||
pkgs
|
||||
;
|
||||
}).mkExtension
|
||||
{
|
||||
name = "media-files";
|
||||
extensionName = "media_files";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-media-files-nvim;
|
||||
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
imports = let
|
||||
telescopeExtensionsPath = ["plugins" "telescope" "extensions"];
|
||||
in
|
||||
imports =
|
||||
let
|
||||
telescopeExtensionsPath = [
|
||||
"plugins"
|
||||
"telescope"
|
||||
"extensions"
|
||||
];
|
||||
in
|
||||
mapAttrsToList
|
||||
(
|
||||
oldOptionName: newOptionPath:
|
||||
mkRenamedOptionModule
|
||||
(telescopeExtensionsPath ++ ["media_files" oldOptionName])
|
||||
(telescopeExtensionsPath ++ ["media-files"] ++ newOptionPath)
|
||||
)
|
||||
{
|
||||
enable = ["enable"];
|
||||
package = ["package"];
|
||||
filetypes = ["settings" "filetypes"];
|
||||
find_cmd = ["settings" "find_cmd"];
|
||||
};
|
||||
(
|
||||
oldOptionName: newOptionPath:
|
||||
mkRenamedOptionModule (
|
||||
telescopeExtensionsPath
|
||||
++ [
|
||||
"media_files"
|
||||
oldOptionName
|
||||
]
|
||||
) (telescopeExtensionsPath ++ [ "media-files" ] ++ newOptionPath)
|
||||
)
|
||||
{
|
||||
enable = [ "enable" ];
|
||||
package = [ "package" ];
|
||||
filetypes = [
|
||||
"settings"
|
||||
"filetypes"
|
||||
];
|
||||
find_cmd = [
|
||||
"settings"
|
||||
"find_cmd"
|
||||
];
|
||||
};
|
||||
|
||||
extraOptions = {
|
||||
dependencies = let
|
||||
mkDepOption = {
|
||||
name,
|
||||
desc,
|
||||
package ? pkgs.${name},
|
||||
enabledByDefault ? false,
|
||||
}: {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = enabledByDefault;
|
||||
description = ''
|
||||
Whether to install the ${name} dependency.
|
||||
${desc}
|
||||
'';
|
||||
dependencies =
|
||||
let
|
||||
mkDepOption =
|
||||
{
|
||||
name,
|
||||
desc,
|
||||
package ? pkgs.${name},
|
||||
enabledByDefault ? false,
|
||||
}:
|
||||
{
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = enabledByDefault;
|
||||
description = ''
|
||||
Whether to install the ${name} dependency.
|
||||
${desc}
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = package;
|
||||
description = "The package to use for the ${name} dependency.";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
chafa = mkDepOption {
|
||||
name = "chafa";
|
||||
enabledByDefault = true;
|
||||
desc = "Required for image support.";
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = package;
|
||||
description = "The package to use for the ${name} dependency.";
|
||||
imageMagick = mkDepOption {
|
||||
name = "ImageMagick";
|
||||
package = pkgs.imagemagick;
|
||||
desc = "Required for svg previews.";
|
||||
};
|
||||
|
||||
ffmpegthumbnailer = mkDepOption {
|
||||
name = "ffmpegthumbnailer";
|
||||
desc = "Required for video preview support.";
|
||||
};
|
||||
|
||||
pdftoppm = mkDepOption {
|
||||
name = "pdmtoppm";
|
||||
package = pkgs.poppler_utils;
|
||||
desc = "Required for pdf preview support.";
|
||||
};
|
||||
|
||||
epub-thumbnailer = mkDepOption {
|
||||
name = "epub-thumbnailer";
|
||||
desc = "Required for epub preview support";
|
||||
};
|
||||
|
||||
fontpreview = mkDepOption {
|
||||
name = "fontpreview";
|
||||
desc = "Required for font preview support.";
|
||||
};
|
||||
};
|
||||
in {
|
||||
chafa = mkDepOption {
|
||||
name = "chafa";
|
||||
enabledByDefault = true;
|
||||
desc = "Required for image support.";
|
||||
};
|
||||
|
||||
imageMagick = mkDepOption {
|
||||
name = "ImageMagick";
|
||||
package = pkgs.imagemagick;
|
||||
desc = "Required for svg previews.";
|
||||
};
|
||||
|
||||
ffmpegthumbnailer = mkDepOption {
|
||||
name = "ffmpegthumbnailer";
|
||||
desc = "Required for video preview support.";
|
||||
};
|
||||
|
||||
pdftoppm = mkDepOption {
|
||||
name = "pdmtoppm";
|
||||
package = pkgs.poppler_utils;
|
||||
desc = "Required for pdf preview support.";
|
||||
};
|
||||
|
||||
epub-thumbnailer = mkDepOption {
|
||||
name = "epub-thumbnailer";
|
||||
desc = "Required for epub preview support";
|
||||
};
|
||||
|
||||
fontpreview = mkDepOption {
|
||||
name = "fontpreview";
|
||||
desc = "Required for font preview support.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = cfg: {
|
||||
extraPackages = flatten (
|
||||
mapAttrsToList
|
||||
(
|
||||
name: {
|
||||
enable,
|
||||
package,
|
||||
}:
|
||||
optional enable package
|
||||
)
|
||||
cfg.dependencies
|
||||
mapAttrsToList (name: { enable, package }: optional enable package) cfg.dependencies
|
||||
);
|
||||
};
|
||||
|
||||
settingsOptions = {
|
||||
filetypes =
|
||||
helpers.defaultNullOpts.mkListOf types.str
|
||||
''
|
||||
[
|
||||
"png"
|
||||
"jpg"
|
||||
"gif"
|
||||
"mp4"
|
||||
"webm"
|
||||
"pdf"
|
||||
]
|
||||
''
|
||||
"Filetypes whitelist.";
|
||||
filetypes = helpers.defaultNullOpts.mkListOf types.str ''
|
||||
[
|
||||
"png"
|
||||
"jpg"
|
||||
"gif"
|
||||
"mp4"
|
||||
"webm"
|
||||
"pdf"
|
||||
]
|
||||
'' "Filetypes whitelist.";
|
||||
|
||||
find_cmd = helpers.defaultNullOpts.mkStr "fd" ''
|
||||
Which find command to use.
|
||||
|
@ -126,7 +139,12 @@ with lib;
|
|||
};
|
||||
|
||||
settingsExample = {
|
||||
filetypes = ["png" "webp" "jpg" "jpeg"];
|
||||
filetypes = [
|
||||
"png"
|
||||
"webp"
|
||||
"jpg"
|
||||
"jpeg"
|
||||
];
|
||||
find_cmd = "rg";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,14 +5,19 @@
|
|||
pkgs,
|
||||
...
|
||||
}:
|
||||
(
|
||||
import ./_helpers.nix {inherit lib helpers config pkgs;}
|
||||
)
|
||||
.mkExtension {
|
||||
name = "ui-select";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-ui-select-nvim;
|
||||
(import ./_helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
helpers
|
||||
config
|
||||
pkgs
|
||||
;
|
||||
}).mkExtension
|
||||
{
|
||||
name = "ui-select";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-ui-select-nvim;
|
||||
|
||||
settingsExample = {
|
||||
specific_opts.codeactions = false;
|
||||
};
|
||||
}
|
||||
settingsExample = {
|
||||
specific_opts.codeactions = false;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,114 +5,131 @@
|
|||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
telescopeHelpers = import ./_helpers.nix {inherit lib helpers config pkgs;};
|
||||
with lib;
|
||||
let
|
||||
telescopeHelpers = import ./_helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
helpers
|
||||
config
|
||||
pkgs
|
||||
;
|
||||
};
|
||||
in
|
||||
telescopeHelpers.mkExtension {
|
||||
name = "undo";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-undo-nvim;
|
||||
telescopeHelpers.mkExtension {
|
||||
name = "undo";
|
||||
defaultPackage = pkgs.vimPlugins.telescope-undo-nvim;
|
||||
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"useDelta"
|
||||
"useCustomCommand"
|
||||
"sideBySide"
|
||||
"diffContextLines"
|
||||
"entryFormat"
|
||||
"timeFormat"
|
||||
];
|
||||
imports = [
|
||||
(
|
||||
mkRemovedOptionModule
|
||||
["plugins" "telescope" "extensions" "undo" "mappings"]
|
||||
''
|
||||
Use `plugins.telescope.extension.undo.settings.mappings` instead but beware, you need to specify the full name of the callback:
|
||||
Example:
|
||||
```
|
||||
mappings = {
|
||||
i = {
|
||||
"<cr>" = "require('telescope-undo.actions').yank_additions";
|
||||
"<s-cr>" = "require('telescope-undo.actions').yank_deletions";
|
||||
"<c-cr>" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
n = {
|
||||
"y" = "require('telescope-undo.actions').yank_additions";
|
||||
"Y" = "require('telescope-undo.actions').yank_deletions";
|
||||
"u" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
}
|
||||
```
|
||||
''
|
||||
)
|
||||
];
|
||||
|
||||
settingsOptions = {
|
||||
use_delta = helpers.defaultNullOpts.mkBool true ''
|
||||
When set to true, [delta](https://github.com/dandavison/delta) is used for fancy diffs in
|
||||
the preview section.
|
||||
If set to false, `telescope-undo` will not use `delta` even when available and fall back to a
|
||||
plain diff with treesitter highlights.
|
||||
'';
|
||||
|
||||
use_custom_command = helpers.mkNullOrOption (with types; listOf str) ''
|
||||
Should be in this format: `[ "bash" "-c" "echo '$DIFF' | delta" ]`
|
||||
'';
|
||||
|
||||
side_by_side = helpers.defaultNullOpts.mkBool false ''
|
||||
If set to true tells `delta` to render diffs side-by-side. Thus, requires `delta` to be used.
|
||||
Be aware that `delta` always uses its own configuration, so it might be that you're getting
|
||||
the side-by-side view even if this is set to false.
|
||||
'';
|
||||
|
||||
diff_context_lines = helpers.defaultNullOpts.mkStrLuaOr types.ints.unsigned "vim.o.scrolloff" ''
|
||||
Defaults to the scrolloff.
|
||||
'';
|
||||
|
||||
entry_format = helpers.defaultNullOpts.mkStr "state #$ID, $STAT, $TIME" ''
|
||||
The format to show on telescope for the different versions of the file.
|
||||
'';
|
||||
|
||||
time_format = helpers.defaultNullOpts.mkStr "" ''
|
||||
Can be set to a [Lua date format string](https://www.lua.org/pil/22.1.html).
|
||||
'';
|
||||
|
||||
mappings = telescopeHelpers.mkMappingsOption {
|
||||
insertDefaults = ''
|
||||
{
|
||||
"<cr>" = "require('telescope-undo.actions').yank_additions";
|
||||
"<s-cr>" = "require('telescope-undo.actions').yank_deletions";
|
||||
"<c-cr>" = "require('telescope-undo.actions').restore";
|
||||
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
||||
optionsRenamedToSettings = [
|
||||
"useDelta"
|
||||
"useCustomCommand"
|
||||
"sideBySide"
|
||||
"diffContextLines"
|
||||
"entryFormat"
|
||||
"timeFormat"
|
||||
];
|
||||
imports = [
|
||||
(mkRemovedOptionModule
|
||||
[
|
||||
"plugins"
|
||||
"telescope"
|
||||
"extensions"
|
||||
"undo"
|
||||
"mappings"
|
||||
]
|
||||
''
|
||||
Use `plugins.telescope.extension.undo.settings.mappings` instead but beware, you need to specify the full name of the callback:
|
||||
Example:
|
||||
```
|
||||
mappings = {
|
||||
i = {
|
||||
"<cr>" = "require('telescope-undo.actions').yank_additions";
|
||||
"<s-cr>" = "require('telescope-undo.actions').yank_deletions";
|
||||
"<c-cr>" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
n = {
|
||||
"y" = "require('telescope-undo.actions').yank_additions";
|
||||
"Y" = "require('telescope-undo.actions').yank_deletions";
|
||||
"u" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
}
|
||||
'';
|
||||
```
|
||||
''
|
||||
)
|
||||
];
|
||||
|
||||
normalDefaults = ''
|
||||
{
|
||||
"y" = "require('telescope-undo.actions').yank_additions";
|
||||
"Y" = "require('telescope-undo.actions').yank_deletions";
|
||||
"u" = "require('telescope-undo.actions').restore";
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
settingsOptions = {
|
||||
use_delta = helpers.defaultNullOpts.mkBool true ''
|
||||
When set to true, [delta](https://github.com/dandavison/delta) is used for fancy diffs in
|
||||
the preview section.
|
||||
If set to false, `telescope-undo` will not use `delta` even when available and fall back to a
|
||||
plain diff with treesitter highlights.
|
||||
'';
|
||||
|
||||
settingsExample = {
|
||||
use_delta = true;
|
||||
use_custom_command = ["bash" "-c" "echo '$DIFF' | delta"];
|
||||
side_by_side = true;
|
||||
diff_context_lines = 8;
|
||||
entry_format = "state #$ID";
|
||||
time_format = "!%Y-%m-%dT%TZ";
|
||||
mappings = {
|
||||
i = {
|
||||
use_custom_command = helpers.mkNullOrOption (with types; listOf str) ''
|
||||
Should be in this format: `[ "bash" "-c" "echo '$DIFF' | delta" ]`
|
||||
'';
|
||||
|
||||
side_by_side = helpers.defaultNullOpts.mkBool false ''
|
||||
If set to true tells `delta` to render diffs side-by-side. Thus, requires `delta` to be used.
|
||||
Be aware that `delta` always uses its own configuration, so it might be that you're getting
|
||||
the side-by-side view even if this is set to false.
|
||||
'';
|
||||
|
||||
diff_context_lines = helpers.defaultNullOpts.mkStrLuaOr types.ints.unsigned "vim.o.scrolloff" ''
|
||||
Defaults to the scrolloff.
|
||||
'';
|
||||
|
||||
entry_format = helpers.defaultNullOpts.mkStr "state #$ID, $STAT, $TIME" ''
|
||||
The format to show on telescope for the different versions of the file.
|
||||
'';
|
||||
|
||||
time_format = helpers.defaultNullOpts.mkStr "" ''
|
||||
Can be set to a [Lua date format string](https://www.lua.org/pil/22.1.html).
|
||||
'';
|
||||
|
||||
mappings = telescopeHelpers.mkMappingsOption {
|
||||
insertDefaults = ''
|
||||
{
|
||||
"<cr>" = "require('telescope-undo.actions').yank_additions";
|
||||
"<s-cr>" = "require('telescope-undo.actions').yank_deletions";
|
||||
"<c-cr>" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
n = {
|
||||
}
|
||||
'';
|
||||
|
||||
normalDefaults = ''
|
||||
{
|
||||
"y" = "require('telescope-undo.actions').yank_additions";
|
||||
"Y" = "require('telescope-undo.actions').yank_deletions";
|
||||
"u" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
use_delta = true;
|
||||
use_custom_command = [
|
||||
"bash"
|
||||
"-c"
|
||||
"echo '$DIFF' | delta"
|
||||
];
|
||||
side_by_side = true;
|
||||
diff_context_lines = 8;
|
||||
entry_format = "state #$ID";
|
||||
time_format = "!%Y-%m-%dT%TZ";
|
||||
mappings = {
|
||||
i = {
|
||||
"<cr>" = "require('telescope-undo.actions').yank_additions";
|
||||
"<s-cr>" = "require('telescope-undo.actions').yank_deletions";
|
||||
"<c-cr>" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
n = {
|
||||
"y" = "require('telescope-undo.actions').yank_additions";
|
||||
"Y" = "require('telescope-undo.actions').yank_deletions";
|
||||
"u" = "require('telescope-undo.actions').restore";
|
||||
};
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue