Add header field-name autocomplete above the draft marker
Typing a header line above the draft marker (`#`/`##`/… + the start of a field name) now shows an autocomplete popup: Tab/Enter or click to insert "Field: ", Up/Down to choose, Esc to dismiss (and stay dismissed until the partial changes). It never triggers in the prose below the marker. Suggestions combine a built-in list (Title, Slug, POV, Word Count Target, Characters, Setting, Conflict, …) with field names learned from every file's header, refreshed on open and merged on save, so custom fields autocomplete too. Implementation: the editor gets a stable id so completions can drive its cursor/focus; nav keys are consumed before the TextEdit sees them, and the popup is recomputed from the caret each frame. Pure helpers (header_completion_context, field_matches, header_field_names) are unit tested; 50 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N9kRuP7JvXoUGdNNeg5ZSs
This commit is contained in:
@@ -239,6 +239,17 @@ The prose that actually gets exported begins here.
|
||||
exports as a chapter titled **The Gate**, captioned *in which the door will not
|
||||
open*, containing only the prose below the marker.
|
||||
|
||||
### Field-name autocomplete
|
||||
|
||||
While typing a header line above the draft marker — `#`, `##`, … followed by the
|
||||
start of a field name — a small popup suggests matching field names. Press
|
||||
**Tab** or **Enter** (or click) to insert the field and its `": "`, **↑/↓** to
|
||||
change the highlighted suggestion, and **Esc** to dismiss. The suggestions
|
||||
include common fields (`Title`, `Slug`, `POV`, `Word Count Target`,
|
||||
`Characters`, `Setting`, `Conflict`, …) plus any field names it **learns from
|
||||
the headers of your other files**, so your own conventions autocomplete too. It
|
||||
only triggers in the header region, never in the prose below the marker.
|
||||
|
||||
## Files the app writes
|
||||
|
||||
| Location | Purpose |
|
||||
|
||||
Reference in New Issue
Block a user