gffranco cb244a8080
CI / cargo fmt --check (push) Successful in 38s
CI / cargo clippy (push) Successful in 1m11s
CI / cargo test (push) Successful in 1m21s
spec: add Phase 11 plumbing prereqs; resolve P14; renumber 12+
Architecture-review follow-through. The v1.1 plan as originally
written started directly at Tags, which would have meant retrofitting
five cross-cutting pieces into Phases 12–19 ad hoc. This commit lifts
that infrastructure into its own numbered phase up front so the rest
of v1.1 stays mechanical.

Phase table (§10): inserts new "Phase 11 — Plumbing prerequisites";
Tags becomes 12, Workspace edits 13, …, Editor glue v2 19. v1.1 now
has 9 phases instead of 8.

§12.2 new "Plumbing prerequisites" subsection covers:
- Server config receipt (initializationOptions + didChangeConfiguration)
- WorkspaceEditBuilder + span helpers (text_edit_*, op_*)
- Closed-doc loader (read_or_open, returns DocSnapshot)
- Diagnostic source chain (collect_diagnostics with composable sources)
- Wiki aggregate (lands single-entry, multi-entry config in Phase 18)
Plus explicit "what does *not* change" and a tests-list.

§11 decisions:
- P14 (folding) resolved: LSP textDocument/foldingRange (primary) +
  foldexpr fallback in ftplugin. Server already has the AST + heading
  boundaries; duplicating that in VimL would be lossy.
- P10/P11/P12/P13/P15/P16/P17 phase references bumped by one.
- P18 added: server-config transport (initializationOptions +
  didChangeConfiguration, both).

Targeted notes in the renumbered subsections:
- §12.4 (Workspace edits): closed-doc rewrites use the Phase 11
  loader and re-parse on demand — no trust in stale index spans.
- §12.7 (Diary): roll-our-own YYYY-MM-DD parser; no chrono dep.
- §12.9 (Multi-wiki): data structures already land in Phase 11, so
  Phase 18 is a config-shape change, not a refactor.

Subsections 12.3 → 12.13 renumbered; phase labels in headers updated
to match the new §10 table.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:16:00 +00:00

nuwiki

A Vim/Neovim plugin providing full vimwiki syntax support, implemented as a Rust-based language server (LSP).

Status: All phases (010) complete. v1 feature set landed: editor-independent core, vimwiki lexer + parser, HTML renderer, tower-lsp server with diagnostics + outline + semantic tokens + navigation + workspace index, plugin glue, and release pipeline.

See SPEC.md for the full project specification.

Implementation status

Phase Name Status
0 Scaffolding done
1 Core AST done
2 Syntax Plugin Interface done
3 Vimwiki Lexer done
4 Vimwiki Parser done
5 Renderer done
6 LSP Foundation done
7 Semantic Tokens done
8 Navigation done
9 Editor Glue done
10 CI/CD release pipeline done

Repository layout

nuwiki/
├── Cargo.toml              workspace root
├── crates/
│   ├── nuwiki-core/        parser, AST, renderer (no editor deps)
│   ├── nuwiki-lsp/         LSP protocol bridge
│   └── nuwiki-ls/          binary that speaks LSP over stdio
├── plugin/                 universal Vim/Neovim entry point
├── lua/nuwiki/             Neovim Lua glue
├── autoload/nuwiki/        Vim VimL glue
├── ftdetect/               filetype detection for .wiki
├── ftplugin/               per-buffer filetype settings
├── syntax/                 static fallback highlighting
├── doc/                    `:h nuwiki`
├── scripts/                build-time helpers
└── .gitea/workflows/       CI / release pipelines

Building

cargo build --workspace
cargo test  --workspace

MSRV: Rust 1.83.

License

Dual-licensed under either of:

at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work shall be dual licensed as above, without any additional terms or conditions.

S
Description
No description provided
Readme 1.1 MiB
v0.5.2 Latest
2026-07-02 12:02:20 +00:00
Languages
Vim Script 49.1%
Lua 36.7%
Shell 11.2%
HTML 3%