From 1bff580d63b3c018a4104970ba4277dffd6d6c28 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Mon, 20 Apr 2026 17:43:42 +0200 Subject: [PATCH] chore: update ndg and fix linkcheck --- .github/workflows/check.yml | 1 - docs/default.nix | 2 +- docs/manual.nix | 74 ++++++++++------- docs/manual/configuring/languages.md | 80 +------------------ docs/manual/hacking.md | 4 +- .../installation/modules/home-manager.md | 2 +- docs/manual/installation/modules/nixos.md | 2 +- docs/manual/release-notes/rl-0.1.md | 2 +- docs/manual/release-notes/rl-0.6.md | 9 +-- docs/manual/release-notes/rl-0.8.md | 2 +- docs/manual/tips/plugin-sources.md | 2 +- flake.lock | 6 +- flake/packages.nix | 9 ++- modules/neovim/init/spellcheck.nix | 2 +- modules/wrapper/rc/options.nix | 2 +- 15 files changed, 69 insertions(+), 130 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 279e98b3..3153c0c9 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -127,7 +127,6 @@ jobs: flake-docs-linkcheck: name: "Validate hyperlinks in documentation sources" runs-on: ubuntu-latest - if: false # disabled until we fix ndg docs steps: - name: Checkout uses: actions/checkout@v6 diff --git a/docs/default.nix b/docs/default.nix index 662dd403..e3862552 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -92,7 +92,7 @@ # Generate the HTML manual pages html = pkgs.callPackage ./manual.nix { - inherit inputs release; + inherit inputs; inherit (nvimModuleDocs) optionsJSON; }; in { diff --git a/docs/manual.nix b/docs/manual.nix index 4bbd75a0..60550b14 100644 --- a/docs/manual.nix +++ b/docs/manual.nix @@ -2,43 +2,57 @@ inputs, path, stdenvNoCC, - runCommandLocal, optionsJSON, - release, + jaq, } @ args: let manual-release = args.release or "unstable"; in - runCommandLocal "nvf-docs-html" { + stdenvNoCC.mkDerivation (finalAttrs: { + pname = "nvf-docs-html"; + version = manual-release; + src = ./manual; + nativeBuildInputs = [ - (inputs.ndg.packages.${stdenvNoCC.system}.ndg.overrideAttrs - { - # FIXME: the tests take too long to build - doCheck = false; - }) + (inputs.ndg.packages.${stdenvNoCC.system}.ndg.overrideAttrs { + # FIXME: the tests take too long to build + doCheck = false; + }) + jaq ]; - } '' - mkdir -p $out/share/doc - # Copy the markdown sources to be processed by ndg. This is not - # strictly necessary, but allows us to modify the Markdown sources - # as we see fit. - cp -rvf ${./manual} ./manual + patchPhase = '' + # Replace variables following the @VARIABLE@ style in the manual + # pages. This can be built into ndg at a later date. + substituteInPlace index.md \ + --subst-var-by NVF_VERSION ${finalAttrs.version} - # Replace variables following the @VARIABLE@ style in the manual - # pages. This can be built into ndg at a later date. - substituteInPlace ./manual/index.md \ - --subst-var-by NVF_VERSION ${manual-release} + language_options=$(cat "${optionsJSON}/share/doc/nixos/options.json" | jaq -r 'keys + | map(select(test("^vim\\.languages\\.[^.]+\\.enable$"))) + | map("- {option}`" + . + "`") + | join("\n")' + ) - # Generate the final manual from a set of parameters. This uses - # feel-co/ndg to render the web manual. - ndg --config-file ${./ndg.toml} html \ - --jobs $NIX_BUILD_CORES --title "NVF" \ - --module-options ${optionsJSON}/share/doc/nixos/options.json \ - --manpage-urls ${path}/doc/manpage-urls.json \ - --input-dir ./manual \ - --output-dir "$out/share/doc" + substituteInPlace configuring/languages.md \ + --subst-var-by NVF_LANGUAGES_ENABLE "$language_options" + ''; - # Hydra support. Probably not necessary. - mkdir -p $out/nix-support/ - echo "doc manual $dest index.html" >> $out/nix-support/hydra-build-products - '' + buildPhase = '' + # Generate the final manual from a set of parameters. This uses + # feel-co/ndg to render the web manual. + ndg --config-file ${./ndg.toml} html \ + --jobs $NIX_BUILD_CORES --title "NVF" \ + --module-options ${optionsJSON}/share/doc/nixos/options.json \ + --manpage-urls ${path}/doc/manpage-urls.json \ + --input-dir . \ + --output-dir build + ''; + + installPhase = '' + mkdir -p $out/share/doc + cp -r build/* $out/share/doc/ + + # Hydra support. Probably not necessary. + mkdir -p $out/nix-support/ + echo "doc manual $out/share/doc index.html" >> $out/nix-support/hydra-build-products + ''; + }) diff --git a/docs/manual/configuring/languages.md b/docs/manual/configuring/languages.md index 9a82fc1e..fb619761 100644 --- a/docs/manual/configuring/languages.md +++ b/docs/manual/configuring/languages.md @@ -6,85 +6,7 @@ formatters, and `nvim-lint` linter integration. This gets you capabilities ranging from autocompletion to formatting to diagnostics. The following languages have sections under the `vim.languages` attribute. -- Rust: - [vim.languages.rust.enable](./options.html#option-vim-languages-rust-enable) -- Nix: - [vim.languages.nix.enable](./options.html#option-vim-languages-nix-enable) -- SQL: - [vim.languages.sql.enable](./options.html#option-vim-languages-sql-enable) -- C/C++: - [vim.languages.clang.enable](./options.html#option-vim-languages-clang-enable) -- Typescript/Javascript: - [vim.languages.ts.enable](./options.html#option-vim-languages-ts-enable) -- Python: - [vim.languages.python.enable](./options.html#option-vim-languages-python-enable): -- Zig: - [vim.languages.zig.enable](./options.html#option-vim-languages-zig-enable) -- Markdown: - [vim.languages.markdown.enable](./options.html#option-vim-languages-markdown-enable) -- HTML: - [vim.languages.html.enable](./options.html#option-vim-languages-html-enable) -- Dart: - [vim.languages.dart.enable](./options.html#option-vim-languages-dart-enable) -- Go: [vim.languages.go.enable](./options.html#option-vim-languages-go-enable) -- Lua: - [vim.languages.lua.enable](./options.html#option-vim-languages-lua-enable) -- PHP: - [vim.languages.php.enable](./options.html#option-vim-languages-php-enable) -- F#: - [vim.languages.fsharp.enable](./options.html#option-vim-languages-fsharp-enable) -- Assembly: - [vim.languages.assembly.enable](./options.html#option-vim-languages-assembly-enable) -- Astro: - [vim.languages.astro.enable](./options.html#option-vim-languages-astro-enable) -- Bash: - [vim.languages.bash.enable](./options.html#option-vim-languages-bash-enable) -- Clang: - [vim.languages.clang.enable](./options.html#option-vim-languages-clang-enable) -- Clojure: - [vim.languages.clojure.enable](./options.html#option-vim-languages-clojure-enable) -- C#: - [vim.languages.csharp.enable](./options.html#option-vim-languages-csharp-enable) -- CSS: - [vim.languages.css.enable](./options.html#option-vim-languages-css-enable) -- CUE: - [vim.languages.cue.enable](./options.html#option-vim-languages-cue-enable) -- Elixir: - [vim.languages.elixir.enable](./options.html#option-vim-languages-elixir-enable) -- Gleam: - [vim.languages.gleam.enable](./options.html#option-vim-languages-gleam-enable) -- HCL: - [vim.languages.hcl.enable](./options.html#option-vim-languages-hcl-enable) -- Helm: - [vim.languages.helm.enable](./options.html#option-vim-languages-helm-enable) -- Julia: - [vim.languages.julia.enable](./options.html#option-vim-languages-julia-enable) -- Kotlin: - [vim.languages.kotlin.enable](./options.html#option-vim-languages-kotlin-enable) -- Nim: - [vim.languages.nim.enable](./options.html#option-vim-languages-nim-enable) -- Nu: [vim.languages.nu.enable](./options.html#option-vim-languages-nu-enable) -- OCaml: - [vim.languages.ocaml.enable](./options.html#option-vim-languages-ocaml-enable) -- Odin: - [vim.languages.odin.enable](./options.html#option-vim-languages-odin-enable) -- R: [vim.languages.r.enable](./options.html#option-vim-languages-r-enable) -- Ruby: - [vim.languages.ruby.enable](./options.html#option-vim-languages-ruby-enable) -- Scala: - [vim.languages.scala.enable](./options.html#option-vim-languages-scala-enable) -- Svelte: - [vim.languages.svelte.enable](./options.html#option-vim-languages-svelte-enable) -- Terraform: - [vim.languages.terraform.enable](./options.html#option-vim-languages-terraform-enable) -- Typst: - [vim.languages.typst.enable](./options.html#option-vim-languages-typst-enable) -- Vala: - [vim.languages.vala.enable](./options.html#option-vim-languages-vala-enable) -- WGSL: - [vim.languages.wgsl.enable](./options.html#option-vim-languages-wgsl-enable) -- YAML: - [vim.languages.yaml.enable](./options.html#option-vim-languages-yaml-enable) +@NVF_LANGUAGES_ENABLE@ Adding support for more languages, and improving support for existing ones are great places where you can contribute with a PR. diff --git a/docs/manual/hacking.md b/docs/manual/hacking.md index 7a6e150d..72ad528f 100644 --- a/docs/manual/hacking.md +++ b/docs/manual/hacking.md @@ -717,7 +717,7 @@ require('lz.n').load({ }) ``` -[`vim.lazy.plugins` spec]: ./options.html#option-vim-lazy-plugins +[`vim.lazy.plugins` spec]: ./options.html#option-vim.lazy.plugins A full list of options can be found in the [`vim.lazy.plugins` spec] on the rendered manual. @@ -750,7 +750,7 @@ keybinding can look like this: } ``` -[module option documentation]: options.html#option-vim-keymaps +[module option documentation]: options.html#option-vim.keymaps There are many other settings available in the keymap module. Please refer to the [module option documentation] for a full and up-to-date list of them. diff --git a/docs/manual/installation/modules/home-manager.md b/docs/manual/installation/modules/home-manager.md index f5d85b72..017442a4 100644 --- a/docs/manual/installation/modules/home-manager.md +++ b/docs/manual/installation/modules/home-manager.md @@ -91,7 +91,7 @@ configure **nvf**. **nvf** exposes a lot of options, most of which are not referenced in the installation sections of the manual. You may find all available options in the -[appendix](https://notashelf.github.io/nvf/options) +[appendix](https://notashelf.github.io/nvf/options.html) ::: diff --git a/docs/manual/installation/modules/nixos.md b/docs/manual/installation/modules/nixos.md index 95a0fc8f..30590d96 100644 --- a/docs/manual/installation/modules/nixos.md +++ b/docs/manual/installation/modules/nixos.md @@ -89,7 +89,7 @@ configure **nvf**. **nvf** exposes a lot of options, most of which are not referenced in the installation sections of the manual. You may find all available options in the -[appendix](https://notashelf.github.io/nvf/options) +[appendix](https://notashelf.github.io/nvf/options.html) ::: diff --git a/docs/manual/release-notes/rl-0.1.md b/docs/manual/release-notes/rl-0.1.md index bdb922b5..6aa08d98 100644 --- a/docs/manual/release-notes/rl-0.1.md +++ b/docs/manual/release-notes/rl-0.1.md @@ -15,7 +15,7 @@ DAG implementation are from them. longer defined. If you use hare and would like it added back, please file an issue. -- {option}`vim.startPlugins` & {option} `vim-optPlugins` are now an enum of +- {option}`vim.startPlugins` & {option}`vim.optPlugins` are now an enum of `string` for options sourced from the flake inputs. Users can still provide vim plugin packages. diff --git a/docs/manual/release-notes/rl-0.6.md b/docs/manual/release-notes/rl-0.6.md index f40ecb43..f7ada642 100644 --- a/docs/manual/release-notes/rl-0.6.md +++ b/docs/manual/release-notes/rl-0.6.md @@ -95,7 +95,7 @@ vim.api.nvim_set_keymap('n', 'a', ':lua camelToSnake()', { noremap = and also has been removed. - `which-key.nvim` categories can now be customized through - [vim.binds.whichKey.register](./options.html#option-vim-binds-whichKey-register) + {option}`vim.binds.whichKey.register` - Added `magick` to `vim.luaPackages` for `image.nvim`. @@ -125,10 +125,9 @@ vim.api.nvim_set_keymap('n', 'a', ':lua camelToSnake()', { noremap = - Lualine module now allows customizing `always_divide_middle`, `ignore_focus` and `disabled_filetypes` through the new options: - [vim.statusline.lualine.alwaysDivideMiddle](./options.html#option-vim-statusline-lualine-alwaysDivideMiddle), - [vim.statusline.lualine.ignoreFocus](./options.html#option-vim-statusline-lualine-ignoreFocus) - and - [vim.statusline.lualine.disabledFiletypes](./options.html#option-vim-statusline-lualine-disabledFiletypes). + {option}`vim.statusline.lualine.alwaysDivideMiddle`, + {option}`vim.statusline.lualine.ignoreFocus` and + {option}`vim.statusline.lualine.disabledFiletypes`). - Updated all plugin inputs to their latest versions (**21.04.2024**) - this brought minor color changes to the Catppuccin theme. diff --git a/docs/manual/release-notes/rl-0.8.md b/docs/manual/release-notes/rl-0.8.md index 62f42638..6be9ad59 100644 --- a/docs/manual/release-notes/rl-0.8.md +++ b/docs/manual/release-notes/rl-0.8.md @@ -85,7 +85,7 @@ - Add [yazi.nvim] as a companion plugin for Yazi, the terminal file manager. -- Add {option}`vim.autocmds` and {option}`vim-augroups` to allow declaring +- Add {option}`vim.autocmds` and {option}`vim.augroups` to allow declaring autocommands via Nix. - Fix plugin `setupOpts` for yanky.nvim and assert if shada is configured as a diff --git a/docs/manual/tips/plugin-sources.md b/docs/manual/tips/plugin-sources.md index a6f8d71d..a9f49140 100644 --- a/docs/manual/tips/plugin-sources.md +++ b/docs/manual/tips/plugin-sources.md @@ -26,7 +26,7 @@ startup. } ``` -[`vim.extraPlugins`]: ./options.html#option-vim-extraPlugins +[`vim.extraPlugins`]: ./options.html#option-vim.extraPlugins This will fetch aerial.nvim from nixpkgs, and add it to Neovim's runtime path to be loaded manually. Although for plugins that require manual setup, you are diff --git a/flake.lock b/flake.lock index e91a712a..1612236b 100644 --- a/flake.lock +++ b/flake.lock @@ -58,11 +58,11 @@ ] }, "locked": { - "lastModified": 1768214250, - "narHash": "sha256-hnBZDQWUxJV3KbtvyGW5BKLO/fAwydrxm5WHCWMQTbw=", + "lastModified": 1776882296, + "narHash": "sha256-DWZozXwMsgvUqfVlL1mQ8dOxW7GJ/8CdyaDN+1niZRg=", "owner": "feel-co", "repo": "ndg", - "rev": "a6bd3c1ce2668d096e4fdaaa03ad7f03ba1fbca8", + "rev": "ab7d78d4884b3a34968cf9fa3d16c0c1246d5c6e", "type": "github" }, "original": { diff --git a/flake/packages.nix b/flake/packages.nix index 7d39afcb..5927a3e4 100644 --- a/flake/packages.nix +++ b/flake/packages.nix @@ -74,11 +74,16 @@ inherit site; remap = { - "https://notashelf.github.io/nvf/" = site; + "https://notashelf.github.io/nvf/" = "${site}/share/doc/"; + "https://nvf.notashelf.dev/" = "${site}/share/doc/"; }; extraConfig = { - exclude = []; + exclude = [ + # This is not an email, but just part of an SCM query inside a nix code block. + # The leading escaped non breaking space is there on purpose. + "%C2%A0@injection.content" + ]; include_mail = true; include_verbatim = true; }; diff --git a/modules/neovim/init/spellcheck.nix b/modules/neovim/init/spellcheck.nix index 6fe41183..0424041b 100644 --- a/modules/neovim/init/spellcheck.nix +++ b/modules/neovim/init/spellcheck.nix @@ -30,7 +30,7 @@ in { To add your own language files, you may place your `spell` directory in either {file}`$XDG_CONFIG_HOME/nvf` or in a path that is included in the - [additionalRuntimePaths](./options.html#option-vim-additionalRuntimePaths) list provided by nvf. + {option}`vim.additionalRuntimePaths` list provided by nvf. ''; }; diff --git a/modules/wrapper/rc/options.nix b/modules/wrapper/rc/options.nix index f1baaa17..7ba15bd8 100644 --- a/modules/wrapper/rc/options.nix +++ b/modules/wrapper/rc/options.nix @@ -284,7 +284,7 @@ in { default = ""; defaultText = literalMD '' By default, this option will **append** paths in - {option}`vim-additionalRuntimePaths` + {option}`vim.additionalRuntimePaths` to the `runtimepath` and enable the experimental Lua module loader if {option}`vim.enableLuaLoader` is set to true. '';