treewide: Reformat with nixfmt

This commit is contained in:
traxys 2024-05-05 19:39:35 +02:00
parent c6281260dc
commit 62f32bfc71
459 changed files with 28139 additions and 26377 deletions

View file

@ -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";
};
};
};
};
}

View file

@ -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;
};
}

View file

@ -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;
};
}
};
}

View file

@ -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";

View file

@ -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";
};
}

View file

@ -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;
};
}

View file

@ -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";
};
}

View file

@ -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;
};
}

View file

@ -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";
};
};
}
};
}