2026-05-10 16:01:58 +00:00
|
|
|
|
# nuwiki
|
|
|
|
|
|
|
|
|
|
|
|
A Vim/Neovim plugin providing full vimwiki syntax support, implemented as a
|
|
|
|
|
|
Rust-based language server (LSP).
|
|
|
|
|
|
|
2026-05-11 14:32:22 +00:00
|
|
|
|
> **Status:** v1.0 (Phases 0–10) shipped — parsing, highlighting, navigation,
|
|
|
|
|
|
> editor glue, and release pipeline are all live. v1.1 (Phases 11–19) in
|
|
|
|
|
|
> progress, closing the gap to a full vimwiki replacement: tags, diary,
|
|
|
|
|
|
> server-side edit commands, link health, HTML export commands, multi-wiki,
|
|
|
|
|
|
> and the `:Vimwiki*` keymap layer.
|
2026-05-10 16:01:58 +00:00
|
|
|
|
|
|
|
|
|
|
See [`SPEC.md`](./SPEC.md) for the full project specification.
|
|
|
|
|
|
|
2026-05-10 17:20:46 +00:00
|
|
|
|
## Implementation status
|
|
|
|
|
|
|
2026-05-11 14:32:22 +00:00
|
|
|
|
### v1.0 — foundation
|
|
|
|
|
|
|
2026-05-10 17:20:46 +00:00
|
|
|
|
| Phase | Name | Status |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| 0 | Scaffolding | ✅ done |
|
|
|
|
|
|
| 1 | Core AST | ✅ done |
|
|
|
|
|
|
| 2 | Syntax Plugin Interface | ✅ done |
|
|
|
|
|
|
| 3 | Vimwiki Lexer | ✅ done |
|
2026-05-10 17:58:41 +00:00
|
|
|
|
| 4 | Vimwiki Parser | ✅ done |
|
2026-05-10 19:12:01 +00:00
|
|
|
|
| 5 | Renderer | ✅ done |
|
2026-05-10 19:44:44 +00:00
|
|
|
|
| 6 | LSP Foundation | ✅ done |
|
2026-05-10 21:14:01 +00:00
|
|
|
|
| 7 | Semantic Tokens | ✅ done |
|
2026-05-11 00:27:06 +00:00
|
|
|
|
| 8 | Navigation | ✅ done |
|
2026-05-11 00:38:09 +00:00
|
|
|
|
| 9 | Editor Glue | ✅ done |
|
2026-05-11 00:47:40 +00:00
|
|
|
|
| 10 | CI/CD release pipeline | ✅ done |
|
2026-05-10 17:20:46 +00:00
|
|
|
|
|
2026-05-11 14:32:22 +00:00
|
|
|
|
### v1.1 — full vimwiki replacement
|
|
|
|
|
|
|
|
|
|
|
|
| Phase | Name | Status |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| 11 | Plumbing prerequisites | ✅ done |
|
2026-05-11 14:54:55 +00:00
|
|
|
|
| 12 | Tags | ✅ done |
|
2026-05-11 16:27:39 +00:00
|
|
|
|
| 13 | Workspace edits + executeCommand | ✅ done |
|
2026-05-11 17:41:11 +00:00
|
|
|
|
| 14 | List & table edit commands | ✅ done (focused subset; table/list-renumber/colorize deferred) |
|
2026-05-11 20:49:32 +00:00
|
|
|
|
| 15 | Link health + TOC/index generation | ✅ done |
|
2026-05-11 21:04:55 +00:00
|
|
|
|
| 16 | Diary | ✅ done |
|
2026-05-11 21:37:36 +00:00
|
|
|
|
| 17 | HTML export commands | ✅ done |
|
2026-05-11 14:32:22 +00:00
|
|
|
|
| 18 | Multi-wiki | ⏳ |
|
|
|
|
|
|
| 19 | Editor glue v2 (`:Vimwiki*` compat, keymaps, text objects, folding) | ⏳ |
|
|
|
|
|
|
|
2026-05-10 16:01:58 +00:00
|
|
|
|
## 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
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
cargo build --workspace
|
|
|
|
|
|
cargo test --workspace
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
MSRV: Rust 1.83.
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
|
|
Dual-licensed under either of:
|
|
|
|
|
|
|
|
|
|
|
|
- Apache License, Version 2.0 ([`LICENSE-APACHE`](./LICENSE-APACHE))
|
|
|
|
|
|
- MIT license ([`LICENSE-MIT`](./LICENSE-MIT))
|
|
|
|
|
|
|
|
|
|
|
|
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.
|