diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index 1c9bab61..c3dc6673 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -208,8 +208,4 @@ https://github.com/gorbit99/codewindow.nvim - Changed `withRuby` to not be enabled by default -[horriblename](https://github.com/horriblename): - -- Ignore terminals by default in spell-checking - diff --git a/modules/neovim/init/spellcheck.nix b/modules/neovim/init/spellcheck.nix index 6fe41183..724b432d 100644 --- a/modules/neovim/init/spellcheck.nix +++ b/modules/neovim/init/spellcheck.nix @@ -4,14 +4,13 @@ lib, ... }: let - inherit (builtins) length; inherit (lib.modules) mkIf mkRenamedOptionModule; inherit (lib.options) mkOption mkEnableOption literalExpression; - inherit (lib.strings) concatLines concatStringsSep; + inherit (lib.strings) concatLines concatStringsSep optionalString; inherit (lib.attrsets) mapAttrsToList; - inherit (lib.types) listOf str attrsOf bool; - inherit (lib.lists) optional; - inherit (lib.generators) mkLuaInline; + inherit (lib.types) listOf str attrsOf; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAfter; cfg = config.vim.spellcheck; in { @@ -87,12 +86,6 @@ in { ''; }; - ignoreTerminal = mkOption { - type = bool; - default = true; - description = "Disable spell checking in terminal."; - }; - programmingWordlist.enable = mkEnableOption '' vim-dirtytalk, a wordlist for programmers containing common programming terms. @@ -151,25 +144,20 @@ in { spelllang = concatStringsSep "," cfg.languages; }; - augroups = [{name = "nvf_spellcheck";}]; - autocmds = - (optional cfg.ignoreTerminal { - event = ["TermOpen"]; - group = "nvf_spellcheck"; - callback = mkLuaInline '' - function() vim.opt_local.spell = false end - ''; + # Register an autocommand to disable spellchecking in buffers with given filetypes. + # If the list is empty, the autocommand does not need to be registered. + luaConfigRC.spellcheck = entryAfter ["basic"] (optionalString (cfg.ignoredFiletypes != []) '' + -- Disable spellchecking for certain filetypes + -- as configured by `vim.spellcheck.ignoredFiletypes` + vim.api.nvim_create_augroup("nvf_autocmds", {clear = false}) + vim.api.nvim_create_autocmd({ "FileType" }, { + 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 - ''; - }); + ''); }; }; }