gffranco cf94f99d3c
CI / cargo fmt --check (push) Successful in 28s
CI / cargo clippy (push) Successful in 1m8s
CI / cargo test (push) Successful in 1m27s
dev: minimal-config launchers for nvim/vim plugin testing
Two scripts at the repo root that spin up an isolated editor session
against this checkout, so changes to the plugin or LSP can be smoke-
tested without polluting the user's real (n)vim install:

- start-nvim.sh — builds nuwiki-ls in release mode, symlinks it into
  `bin/`, seeds a scratch wiki under `$XDG_CACHE_HOME/nuwiki-dev/wiki`,
  generates a minimal `init.lua` that prepends this repo to
  `runtimepath`, points `vim.env.XDG_*` at the dev cache so the host's
  Neovim state is untouched, and execs `nvim --clean -u <init>`.

- start-vim.sh — same shape for Vim. Clones vim-lsp + async.vim into
  the dev cache on first run so the LSP path is actually exercisable
  (the plugin's autoload layer prefers vim-lsp). Opt-out via
  `NUWIKI_DEV_NO_LSP=1` for syntax-only testing.

Both scripts:
- Are idempotent (skip cargo build / git clone / wiki seed when their
  outputs are already in place).
- Pass through extra args to the editor; default to opening the
  scratch wiki's index page.
- Accept `NUWIKI_DEV_WIKI=<path>` to point at a custom sandbox.
- Seed `index.wiki` + `Notes.wiki` with smoke-test content covering
  wikilinks, anchors, checkboxes, tags, and the `:Vimwiki*` command
  surface.

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

nuwiki

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

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.

See SPEC.md for the full project specification.

Implementation status

v1.0 — foundation

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

v1.1 — full vimwiki replacement

Phase Name Status
11 Plumbing prerequisites ✅ done
12 Tags ✅ done
13 Workspace edits + executeCommand ✅ done
14 List & table edit commands ✅ done (focused subset; table/list-renumber/colorize deferred)
15 Link health + TOC/index generation ✅ done
16 Diary ✅ done
17 HTML export commands ✅ done
18 Multi-wiki ✅ done
19 Editor glue v2 (:Vimwiki* compat, keymaps, text objects, folding) ✅ 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%
Lua 36.9%
Shell 11.1%
HTML 3%