| 🛟 Updated. 28d5985 k33g 13h ago | 1 | # Handoff — 2026-09-09 — the fourth editor, and two things it left for this library |
| 2 | |
| 3 | ## State |
| 4 | |
| 5 | turbo-moonbit exists, is green, and depends on `v0.4.2` from the module proxy with no active `replace`. Registering it here cost **five documentation edits and one package comment, and no code**. Working tree has those edits uncommitted. |
| 6 | |
| 7 | ## In flight |
| 8 | |
| 9 | Nothing. The edits are complete. |
| 10 | |
| 11 | ## Next steps |
| 12 | |
| 13 | 1. Commit the four-editor edits. |
| 14 | 2. Decide on the two items below. Both are real, both help every editor, and neither was touched from turbo-moonbit because a library change belongs to this repository's own `/methodical-dev` cycle. |
| 15 | |
| 16 | ## Open questions / blockers |
| 17 | |
| 18 | - **Send `workspace/didChangeWatchedFiles`?** moon-lsp works a package's file list out once and never revisits it, so a `.mbt` file created after the server started is never diagnosed: File ▸ New, save as a `.mbt`, and the gutter stays blank until the editor restarts. Reproduced against the raw protocol with a hand-written client, independently of this library, so it is not a client bug — it is a notification this client does not send. `turbo-moonbit`'s `TestAFileCreatedAfterTheServerStartedIsNotDiagnosed` pins the current behaviour and will fail when it changes, which is the right way round. |
| 19 | - **Give `syntax.attribute` its own colour in `turbo-classic`?** It is `{ fg = "yellow" }`, and so is `syntax.identifier`. The other seven themes distinguish them. The consequence is that Turbo MoonBit's labelled arguments (`name~`) and attributes (`#deprecated(…)`) are indistinguishable from ordinary names in the default theme, and Turbo Rust's `#[derive(Debug)]` equally so. The fifth theme rule — "two syntax classes a reader meets side by side must not be drawn identically" — is the one no measurement finds, and this is an instance of it. |
| 20 | |
| 21 | ## Watch out for |
| 22 | |
| 23 | - The **sweep for hardcoded language names** was run over the whole library and came back clean. If it is run again, expect about twenty hits and read all of them: they are verbs (`"Go to line"`), doc-comment examples of the seam, import paths, and `"written in Go."`, which is true of every editor here. A sweep that flags twenty lines and explains none gets skipped the next time. |