spellcheck: disable in terminal

This commit is contained in:
Ching Pei Yang 2026-02-02 14:25:11 +01:00
commit 981707410e
No known key found for this signature in database
GPG key ID: B3841364253DC4C8

View file

@ -4,13 +4,14 @@
lib, lib,
... ...
}: let }: let
inherit (builtins) length;
inherit (lib.modules) mkIf mkRenamedOptionModule; inherit (lib.modules) mkIf mkRenamedOptionModule;
inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.options) mkOption mkEnableOption literalExpression;
inherit (lib.strings) concatLines concatStringsSep optionalString; inherit (lib.strings) concatLines concatStringsSep;
inherit (lib.attrsets) mapAttrsToList; inherit (lib.attrsets) mapAttrsToList;
inherit (lib.types) listOf str attrsOf; inherit (lib.types) listOf str attrsOf bool;
inherit (lib.nvim.lua) toLuaObject; inherit (lib.lists) optional;
inherit (lib.nvim.dag) entryAfter; inherit (lib.generators) mkLuaInline;
cfg = config.vim.spellcheck; cfg = config.vim.spellcheck;
in { in {
@ -86,6 +87,12 @@ in {
''; '';
}; };
ignoreTerminal = mkOption {
type = bool;
default = true;
description = "Disable spell checking in terminal.";
};
programmingWordlist.enable = mkEnableOption '' programmingWordlist.enable = mkEnableOption ''
vim-dirtytalk, a wordlist for programmers containing vim-dirtytalk, a wordlist for programmers containing
common programming terms. common programming terms.
@ -144,20 +151,25 @@ in {
spelllang = concatStringsSep "," cfg.languages; spelllang = concatStringsSep "," cfg.languages;
}; };
# Register an autocommand to disable spellchecking in buffers with given filetypes. augroups = [{name = "nvf_spellcheck";}];
# If the list is empty, the autocommand does not need to be registered. autocmds =
luaConfigRC.spellcheck = entryAfter ["basic"] (optionalString (cfg.ignoredFiletypes != []) '' (optional cfg.ignoreTerminal {
-- Disable spellchecking for certain filetypes event = ["TermOpen"];
-- as configured by `vim.spellcheck.ignoredFiletypes` group = "nvf_spellcheck";
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false}) callback = mkLuaInline ''
vim.api.nvim_create_autocmd({ "FileType" }, { function() vim.opt_local.spell = false end
group = "nvf_autocmds", '';
pattern = ${toLuaObject cfg.ignoredFiletypes},
callback = function()
vim.opt_local.spell = false
end,
}) })
''); ++ (optional (length cfg.ignoredFiletypes > 0) {
event = ["FileType"];
group = "nvf_spellcheck";
pattern = cfg.ignoredFiletypes;
callback = mkLuaInline ''
function()
vim.opt_local.spell = false
end
'';
});
}; };
}; };
} }