mirror of
https://github.com/NotAShelf/nvf.git
synced 2024-11-01 19:11:15 +00:00
Compare commits
2 commits
c8ccad98a5
...
4e647505d6
Author | SHA1 | Date | |
---|---|---|---|
4e647505d6 | |||
5c950f5f8c |
2 changed files with 31 additions and 46 deletions
|
@ -64,11 +64,6 @@ in {
|
||||||
=> $out/spell/en-utf-8.add.spl
|
=> $out/spell/en-utf-8.add.spl
|
||||||
```
|
```
|
||||||
:::
|
:::
|
||||||
|
|
||||||
Note that while adding a new language, you will still need to add the name of
|
|
||||||
the language (e.g. "en") to the {option}`vim.spellcheck.languages` list by name
|
|
||||||
in order to enable spellchecking for the language. By default only `"en"` is in
|
|
||||||
the list.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -86,45 +81,47 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
# FIXME: This needs to be revisited. It tries to install
|
||||||
|
# the spellfile to an user directory, but it cannot do so
|
||||||
|
# as we sanitize runtime paths.
|
||||||
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.
|
||||||
|
|
||||||
::: {.note}
|
Setting this value as `true` has the same effect
|
||||||
Enabling this option will unconditionally set
|
as setting {option}`vim.spellCheck.enable`
|
||||||
{option}`vim.spellcheck.enable` to true as vim-dirtytalk
|
|
||||||
depends on spellchecking having been set up.
|
|
||||||
:::
|
|
||||||
'';
|
'';
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
vim = {
|
vim = {
|
||||||
additionalRuntimePaths = let
|
additionalRuntimePaths = let
|
||||||
|
spellfilesJoined = pkgs.symlinkJoin {
|
||||||
|
name = "nvf-spellfiles-joined";
|
||||||
|
paths = mapAttrsToList (name: value: pkgs.writeTextDir "spell/${name}.add" (concatLines value)) cfg.extraSpellWords;
|
||||||
|
postBuild = ''
|
||||||
|
echo "Spellfiles joined"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
compileJoinedSpellfiles =
|
compileJoinedSpellfiles =
|
||||||
pkgs.runCommandLocal "nvf-compile-spellfiles" {
|
pkgs.runCommandLocal "nvf-compile-spellfiles" {
|
||||||
# Use the same version of Neovim as the user's configuration
|
# Use the same version of Neovim as the user's configuration
|
||||||
nativeBuildInputs = [config.vim.package];
|
nativeBuildInputs = [config.vim.package];
|
||||||
|
|
||||||
spellfilesJoined = pkgs.symlinkJoin {
|
|
||||||
name = "nvf-spellfiles-joined";
|
|
||||||
paths = mapAttrsToList (name: value: pkgs.writeTextDir "spell/${name}.add" (concatLines value)) cfg.extraSpellWords;
|
|
||||||
postBuild = "echo Spellfiles joined";
|
|
||||||
};
|
|
||||||
} ''
|
} ''
|
||||||
# Fail on unset variables and non-zero exit codes
|
|
||||||
# this might be the only way to trace when `nvim --headless`
|
|
||||||
# fails in batch mode
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
mkdir -p "$out/spell"
|
mkdir -p "$out/spell"
|
||||||
for spellfile in "$spellfilesJoined"/spell/*.add; do
|
|
||||||
name="$(basename "$spellfile" ".add")"
|
|
||||||
echo "Compiling spellfile: $spellfile"
|
|
||||||
nvim --headless --clean \
|
|
||||||
--cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n
|
|
||||||
done
|
|
||||||
|
|
||||||
|
spellfilesJoined=$(find -L "${spellfilesJoined}/spell" -type f)
|
||||||
|
for spellfile in $spellfilesJoined; do
|
||||||
|
# Hacky way to ensure that the mangled extensions are omitted from the
|
||||||
|
# joined spellfiles. E.g.
|
||||||
|
local name=$(basename "$spellfile" ".add")
|
||||||
|
echo "Compiling spellfile: $spellfile"
|
||||||
|
nvim --headless --clean \
|
||||||
|
--cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
mkIf (cfg.extraSpellWords != {}) [
|
mkIf (cfg.extraSpellWords != {}) [
|
||||||
|
@ -139,9 +136,7 @@ in {
|
||||||
|
|
||||||
-- Disable spellchecking for certain filetypes
|
-- Disable spellchecking for certain filetypes
|
||||||
-- as configured by `vim.spellcheck.ignoredFiletypes`
|
-- as configured by `vim.spellcheck.ignoredFiletypes`
|
||||||
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
|
|
||||||
vim.api.nvim_create_autocmd({ "FileType" }, {
|
vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||||
group = "nvf_autocmds",
|
|
||||||
pattern = ${listToLuaTable cfg.ignoredFiletypes},
|
pattern = ${listToLuaTable cfg.ignoredFiletypes},
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.opt_local.spell = false
|
vim.opt_local.spell = false
|
||||||
|
|
|
@ -7,26 +7,16 @@
|
||||||
inherit (lib.nvim.dag) entryAfter;
|
inherit (lib.nvim.dag) entryAfter;
|
||||||
cfg = config.vim.spellcheck;
|
cfg = config.vim.spellcheck;
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.programmingWordlist.enable {
|
config = mkIf (cfg.enable && cfg.programmingWordlist.enable) {
|
||||||
vim = {
|
vim = {
|
||||||
startPlugins = ["vim-dirtytalk"];
|
startPlugins = ["vim-dirtytalk"];
|
||||||
|
|
||||||
spellcheck.enable = true;
|
# vim-dirtytalk doesn't have any setup
|
||||||
|
# but we would like to append programming to spelllang
|
||||||
# vim-dirtytalk doesn't have any setup but we would
|
# as soon as possible while the plugin is enabled
|
||||||
# like to append programming to spelllangs as soon as
|
pluginRC.vim-dirtytalk = entryAfter ["basic"] ''
|
||||||
# possible while the plugin is enabled and the state
|
-- append programming to spelllang
|
||||||
# directory can be found.
|
vim.opt.spelllang:append("programming")
|
||||||
pluginRC.vim-dirtytalk = entryAfter ["spellcheck"] ''
|
|
||||||
-- If Neovim can find (or access) the state directory
|
|
||||||
-- then append "programming" wordlist from vim-dirtytalk
|
|
||||||
-- to spelllang table. If path cannot be found, display
|
|
||||||
-- an error and avoid appending the programming words
|
|
||||||
if vim.fn.isdirectory(vim.fn.stdpath('state')) == 1 then
|
|
||||||
vim.opt.spelllang:append("programming")
|
|
||||||
else
|
|
||||||
vim.notify("State path does not exist: " .. state_path, vim.log.levels.ERROR)
|
|
||||||
end
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue