feat(docs): generate Section 5 from function comment headers

The man-page-style comment header above each function in functions/*.fish
becomes the SSOT for that function's documentation. Writing a new function
and documenting it are now the same act.

- manualtools.parse_functions() parses every header carrying a # CATEGORY;
  absence of one is the opt-in, keeping bundled-plugin and prompt internals
  out of the manual with no exclusion list to maintain.
- build-manual.py generates entries for both --concat and --site, with
  **Dependencies:** rendered as links and a **Used by:** reverse index
  computed in one pass. Cross-category links are the navigation win.
- docs/manual/05-functions/*.md reduced to frontmatter-only stubs. Every
  intro measured zero words, so the category files were pure entry
  containers; ordering, titles, and helpKeywords routing are untouched.
- _first_sentence() unwraps the leading hard-wrapped paragraph and skips
  the whole Synopsis block, not just its label line. Site cards no longer
  truncate mid-clause or show a synopsis as their description.

Verification, per the design spec:
- test_concat_roundtrips_original scoped to sections 0-4 and 6-11. It
  guarded a format migration; this is a content migration.
- replaced by structural checks: one entry per categorised function, the
  required sections present, every category resolving to a stub with no
  stub empty, and every declared dependency resolving to a real function
  or a type -q-guarded binary.
- public functions lacking # CATEGORY warn rather than fail, so a new
  user-facing function going undocumented stays visible in CI.

24/24 checks pass. 94 entries generated from 94 parsed headers.

Also drops a stale claim from open-url's NOTES: config-help --html calls
xdg-open directly and has never called open-url.
This commit is contained in:
2026-07-26 04:12:48 -04:00
parent 00f70e8558
commit a65e05b661
24 changed files with 1594 additions and 1601 deletions
@@ -7,84 +7,4 @@ helpKeywords:
- git
---
## auto-pull
Synopsis: auto-pull [list]
auto-pull add [PATH]
auto-pull remove <NAME|PATH>
auto-pull status
Manages the registry of repositories that are background fast-forwarded
when you enter them (see "Auto-pull fast-forward" under the C2 component
reference). The fish-config repo is always covered as a baseline. The
registry is machine-local at `$__fish_user_dots_path/auto-pull.list` (defaults
to `~/.config/.user-dots/fish/auto-pull.list`), one absolute path per line,
and is never committed. Registry management works
even when C2 auto-execution is disabled; only the background sync is gated.
list Show registered repos (default)
add [PATH] Register PATH's git root (default: current repo)
remove <NAME|PATH> Unregister by basename or exact path
status Show enabled/disabled state, repo count, list path
cd ~/src/qmk_firmware; and auto-pull add
auto-pull add ~/work/api
auto-pull list
auto-pull remove qmk_firmware
## branch
Synopsis: branch <branch_name>
Switches to a local branch, or creates it if it does not exist.
branch feature/new-ui
## gi
Synopsis: gi [-h] [-b] [-p] [-s] [-l] [targets...]
Generates .gitignore content from the gitignore.io API with MD5-based
deduplication (patterns already present are not re-appended).
-b/--boilerplate Append generic boilerplate first
-p/--prompt Prompt interactively for targets
-s/--stdout Print to stdout instead of appending to .gitignore
-l/--list List all available targets
targets Comma-separated or space-separated target names
gi python,venv
gi -b -p
gi -s node > .gitignore
## git-clean
Synopsis: git-clean [-f]
Fetches and prunes the remote, fast-forwards the current branch, then
deletes local branches whose remote tracking branch has been deleted.
Switches to main/master automatically if the current branch is orphaned.
-f/--force Force-delete unmerged branches too
git-clean
git-clean --force
## gitup
Synopsis: gitup [args...]
Fetches updates from the remote and shows git status. Extra args are
forwarded to git fetch.
gitup
gitup --all
## gitui
Synopsis: gitui [args...]
Launches gitui with the Catppuccin Frappe theme pre-applied.
## hist
Synopsis: hist
Searches shell history with fzf, inserts the selection into the command
line, and copies it to the clipboard via wl-copy.
---