neovim-flake/modules/neovim/basic/spellcheck.nix

38 lines
1.2 KiB
Nix

{
config,
lib,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption literalExpression mkOption;
inherit (lib.strings) concatStringsSep optionalString;
inherit (lib.lists) optionals;
inherit (lib.types) listOf str;
inherit (lib.nvim.dag) entryAfter;
cfg = config.vim.spellChecking;
languages = cfg.languages ++ optionals cfg.enableProgrammingWordList ["programming"];
in {
options.vim.spellChecking = {
enable = mkEnableOption "neovim's built-in spellchecking";
enableProgrammingWordList = mkEnableOption "vim-dirtytalk, a wordlist for programmers, that includes programming words";
languages = mkOption {
type = listOf str;
default = ["en"];
example = literalExpression ''["en" "de"]'';
description = "The languages to be used for spellchecking";
};
};
config = mkIf cfg.enable {
vim = {
startPlugins = optionals cfg.spellChecking.enableProgrammingWordList ["vim-dirtytalk"];
configRC.spellchecking = entryAfter ["basic"] ''
${optionalString cfg.enable ''
set spell
set spelllang=${concatStringsSep "," languages}
''}
'';
};
};
}