docs(manual): keep backticks out of verbatim blocks and off line breaks
Two shapes reach a reader as literal punctuation rather than markup: A backtick inside a four-space block. The block is verbatim in every renderer -- pandoc sets it monospace, prettify() fences it for the site -- so the backtick is a character on the page. Twelve such lines are cleaned; each sat at the start of its column, so the alignment of the C5 capture table and the component summaries is unchanged. A span split over a line break. Markdown pairs it happily, but config-help pairs backticks one line at a time, so `fish-deps\nupdate` showed both halves. The sentence is reflowed. Both are now enforced, the first by test_concat_section_five_stays_ verbatim and the second by test_concat_code_spans_never_straddle_a_line.
This commit is contained in:
@@ -18,16 +18,16 @@ CAUTION: This configuration is capable of silently recording terminal output and
|
|||||||
Component What it captures
|
Component What it captures
|
||||||
───────────────────────────────────────────────────────────────────────────
|
───────────────────────────────────────────────────────────────────────────
|
||||||
Scrollback capture Terminal session output saved to:
|
Scrollback capture Terminal session output saved to:
|
||||||
`~/.terminal_history/scrollback_YYYY-MM-DD_HH-MM-SS.log`
|
~/.terminal_history/scrollback_YYYY-MM-DD_HH-MM-SS.log
|
||||||
tmux pane capture Continuous pane stream via pipe-pane, saved to:
|
tmux pane capture Continuous pane stream via pipe-pane, saved to:
|
||||||
`~/.terminal_history/tmux_<session>-w<win>-p<pane>_YYYY-MM-DD_HH-MM-SS.log`
|
~/.terminal_history/tmux_<session>-w<win>-p<pane>_YYYY-MM-DD_HH-MM-SS.log
|
||||||
zellij pane capture Pane scrollback snapshot on shell exit, saved to:
|
zellij pane capture Pane scrollback snapshot on shell exit, saved to:
|
||||||
`~/.terminal_history/zellij_<session>-p<pane>_YYYY-MM-DD_HH-MM-SS.log`
|
~/.terminal_history/zellij_<session>-p<pane>_YYYY-MM-DD_HH-MM-SS.log
|
||||||
paru wrapper All paru/AUR output captured to:
|
paru wrapper All paru/AUR output captured to:
|
||||||
`~/.terminal_history/paru_YYYY-MM-DD_HH-MM-SS.log`
|
~/.terminal_history/paru_YYYY-MM-DD_HH-MM-SS.log
|
||||||
yay wrapper All yay/AUR output captured to:
|
yay wrapper All yay/AUR output captured to:
|
||||||
`~/.terminal_history/yay_YYYY-MM-DD_HH-MM-SS.log`
|
~/.terminal_history/yay_YYYY-MM-DD_HH-MM-SS.log
|
||||||
Kitty watcher `watcher.py` captures scrollback when Kitty closes
|
Kitty watcher watcher.py captures scrollback when Kitty closes
|
||||||
|
|
||||||
NOTE: **Turning off logging does not delete any existing logs.**
|
NOTE: **Turning off logging does not delete any existing logs.**
|
||||||
They remain in `$SCROLLBACK_HISTORY_DIR` (defaults to: `~/.terminal_history/`)
|
They remain in `$SCROLLBACK_HISTORY_DIR` (defaults to: `~/.terminal_history/`)
|
||||||
@@ -58,7 +58,7 @@ Ctrl-D, or a logout), because that is when the fish_exit handler runs. It does
|
|||||||
NOT capture when you close a pane or quit zellij through zellij itself:
|
NOT capture when you close a pane or quit zellij through zellij itself:
|
||||||
|
|
||||||
- Closing a pane signals the shell and tears the pane down concurrently, so
|
- Closing a pane signals the shell and tears the pane down concurrently, so
|
||||||
even if the handler runs, `dump-screen` may find the pane buffer already
|
even if the handler runs, dump-screen may find the pane buffer already
|
||||||
gone.
|
gone.
|
||||||
- Quitting zellij kills the zellij server, and `dump-screen` needs a live
|
- Quitting zellij kills the zellij server, and `dump-screen` needs a live
|
||||||
server to read from — there is nothing left to snapshot.
|
server to read from — there is nothing left to snapshot.
|
||||||
@@ -93,7 +93,7 @@ start, so it appears without any action on your part.
|
|||||||
Disabling `__fish_config_op_logging` (or leaving it unset):
|
Disabling `__fish_config_op_logging` (or leaving it unset):
|
||||||
1. Creates the sentinel immediately in every open shell.
|
1. Creates the sentinel immediately in every open shell.
|
||||||
2. Removes `~/.local/bin/paru` and `~/.local/bin/yay` logging wrappers;
|
2. Removes `~/.local/bin/paru` and `~/.local/bin/yay` logging wrappers;
|
||||||
bare `/usr/bin/paru` and `/usr/bin/yay` are used instead.
|
bare /usr/bin/paru and /usr/bin/yay are used instead.
|
||||||
3. Kitty's `watcher.py` reads the sentinel on each save attempt and
|
3. Kitty's `watcher.py` reads the sentinel on each save attempt and
|
||||||
skips capture — no Kitty restart required.
|
skips capture — no Kitty restart required.
|
||||||
4. smart_exit stops saving scrollback logs.
|
4. smart_exit stops saving scrollback logs.
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ category variable.
|
|||||||
|
|
||||||
Category Description
|
Category Description
|
||||||
──────────────────────────────────────────────────────────────────────────
|
──────────────────────────────────────────────────────────────────────────
|
||||||
C1 [Command Shadows](/08-components-reference/01-c1-command-shadows/) — Wraps destructive commands (`rm`, `cp`) to be safe by default
|
C1 [Command Shadows](/08-components-reference/01-c1-command-shadows/) — Wraps destructive commands (rm, cp) to be safe by default
|
||||||
C2 [Startup Side-Effects](/08-components-reference/02-c2-startup-side-effects/) — Bootstraps Fisher, generates wrappers, auto-activates venvs
|
C2 [Startup Side-Effects](/08-components-reference/02-c2-startup-side-effects/) — Bootstraps Fisher, generates wrappers, auto-activates venvs
|
||||||
C3 [Overrides](/08-components-reference/03-c3-key-and-environment-overrides/) — Overrides `cd`, sets Vi mode, binds `<CR>` to `smart_enter`
|
C3 [Overrides](/08-components-reference/03-c3-key-and-environment-overrides/) — Overrides cd, sets Vi mode, binds <CR> to smart_enter
|
||||||
C4 [Integrations](/08-components-reference/04-c4-terminal-and-tool-integration/) — Kitty/Wezterm integrations, starship hooks, fzf theme
|
C4 [Integrations](/08-components-reference/04-c4-terminal-and-tool-integration/) — Kitty/Wezterm integrations, starship hooks, fzf theme
|
||||||
C5 [Logging and Capture](/08-components-reference/05-c5-logging-and-capture/) — Session logs, command duration
|
C5 [Logging and Capture](/08-components-reference/05-c5-logging-and-capture/) — Session logs, command duration
|
||||||
C6 [Greeting & First-Run UI](/08-components-reference/06-c6-greeting-and-first-run-ui/) — Custom startup banner
|
C6 [Greeting & First-Run UI](/08-components-reference/06-c6-greeting-and-first-run-ui/) — Custom startup banner
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ The `fish_plugins` file at the config root:
|
|||||||
- [`jorgebucaran/fisher`](https://github.com/jorgebucaran/fisher) — Plugin manager itself
|
- [`jorgebucaran/fisher`](https://github.com/jorgebucaran/fisher) — Plugin manager itself
|
||||||
- [`meaningful-ooo/sponge`](https://github.com/meaningful-ooo/sponge) — Remove failed commands from history
|
- [`meaningful-ooo/sponge`](https://github.com/meaningful-ooo/sponge) — Remove failed commands from history
|
||||||
|
|
||||||
To update all Fisher-managed plugins, run `fisher update` or `fish-deps
|
To update all Fisher-managed plugins, run `fisher update` or
|
||||||
update` which calls it as its first step.
|
`fish-deps update` which calls it as its first step.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -208,9 +208,9 @@ This configuration groups its opinionated behaviors into six categories (C1–C6
|
|||||||
|
|
||||||
Category Description
|
Category Description
|
||||||
──────────────────────────────────────────────────────────────────────────
|
──────────────────────────────────────────────────────────────────────────
|
||||||
C1 [Command Shadows](/08-components-reference/01-c1-command-shadows/) — Wraps destructive commands (`rm`, `cp`) to be safe by default
|
C1 [Command Shadows](/08-components-reference/01-c1-command-shadows/) — Wraps destructive commands (rm, cp) to be safe by default
|
||||||
C2 [Startup Side-Effects](/08-components-reference/02-c2-startup-side-effects/) — Bootstraps Fisher, generates wrappers, auto-activates venvs
|
C2 [Startup Side-Effects](/08-components-reference/02-c2-startup-side-effects/) — Bootstraps Fisher, generates wrappers, auto-activates venvs
|
||||||
C3 [Overrides](/08-components-reference/03-c3-key-and-environment-overrides/) — Overrides `cd`, sets Vi mode, binds `<CR>` to `smart_enter`
|
C3 [Overrides](/08-components-reference/03-c3-key-and-environment-overrides/) — Overrides cd, sets Vi mode, binds <CR> to smart_enter
|
||||||
C4 [Integrations](/08-components-reference/04-c4-terminal-and-tool-integration/) — Kitty/Wezterm integrations, starship hooks, fzf theme
|
C4 [Integrations](/08-components-reference/04-c4-terminal-and-tool-integration/) — Kitty/Wezterm integrations, starship hooks, fzf theme
|
||||||
C5 [Logging and Capture](/08-components-reference/05-c5-logging-and-capture/) — Session logs, command duration
|
C5 [Logging and Capture](/08-components-reference/05-c5-logging-and-capture/) — Session logs, command duration
|
||||||
C6 [Greeting & First-Run UI](/08-components-reference/06-c6-greeting-and-first-run-ui/) — Custom startup banner
|
C6 [Greeting & First-Run UI](/08-components-reference/06-c6-greeting-and-first-run-ui/) — Custom startup banner
|
||||||
|
|||||||
@@ -1440,6 +1440,25 @@ def test_codespans_reach_the_man_page_pipeline():
|
|||||||
assert "`tmux`" in text, "a vocabulary command was not wrapped in the concat"
|
assert "`tmux`" in text, "a vocabulary command was not wrapped in the concat"
|
||||||
|
|
||||||
|
|
||||||
|
def test_concat_code_spans_never_straddle_a_line():
|
||||||
|
"""`config-help` pairs backticks one line at a time.
|
||||||
|
|
||||||
|
Its `string replace` filters run per line, so a span split across a
|
||||||
|
line break -- ``run `fish-deps\\nupdate` `` -- leaves an unpaired
|
||||||
|
backtick the pager then shows literally. Markdown is happy to wrap
|
||||||
|
one, so nothing else catches this.
|
||||||
|
"""
|
||||||
|
import build_manual
|
||||||
|
|
||||||
|
text = build_manual.build_concat(Path(__file__).parent / "manual")
|
||||||
|
odd = [
|
||||||
|
(n, line)
|
||||||
|
for n, line in enumerate(text.split("\n"), 1)
|
||||||
|
if line.count("`") % 2
|
||||||
|
]
|
||||||
|
assert not odd, f"unpaired backtick, span wraps a line: {odd[:3]}"
|
||||||
|
|
||||||
|
|
||||||
def test_concat_section_five_stays_verbatim():
|
def test_concat_section_five_stays_verbatim():
|
||||||
"""Section 5's entries are indented blocks, not prose.
|
"""Section 5's entries are indented blocks, not prose.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user