Merge pull request #140 from levineuwirth/docs-readme-refresh
docs(readme): refresh current capabilities
This commit is contained in:
commit
96d0baebb7
108
README.md
108
README.md
|
|
@ -11,7 +11,7 @@ coroutine-based async surface are core primitives, not bolt-ons.
|
||||||
|
|
||||||
The editor is partitioned into a long-lived **instance** (the daemon
|
The editor is partitioned into a long-lived **instance** (the daemon
|
||||||
that owns buffers, processes, and language services) and thin
|
that owns buffers, processes, and language services) and thin
|
||||||
**frontends** that attach over a typed protocol (currently v14). Two
|
**frontends** that attach over a typed protocol (currently v19). Two
|
||||||
frontends ship today:
|
frontends ship today:
|
||||||
|
|
||||||
- a **TUI** (crossterm cell grid), attachable locally over a Unix
|
- a **TUI** (crossterm cell grid), attachable locally over a Unix
|
||||||
|
|
@ -30,64 +30,66 @@ the same buffers concurrently with live cursor/selection presence.
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
**v1.0.0 --- stable core, active development.** The v1.0 gate (the
|
**v1.0.0 --- stable core, active development.** The v1.0 gate (the
|
||||||
instance/frontend partition, the Lua surface, and a REPL package
|
instance/frontend partition, the Lua surface, and a REPL package audited
|
||||||
audited to use zero direct Rust core access) shipped some time ago;
|
to use zero direct Rust core access) shipped some time ago. Development
|
||||||
development since has landed the GPU frontend at near input/render
|
since has expanded the semantic frontend protocol from v6 through v19,
|
||||||
parity with the TUI, the semantic-frontend protocol (v6 → v14), the
|
brought the GPU frontend near input/render parity with the TUI, and
|
||||||
LSP feature arc, in-buffer search, the context menu + OS clipboard,
|
completed the LSP, editing, persistence, themes, and terminal arcs. Recent
|
||||||
the line-number gutter with diagnostic signs, and the package-manager
|
work added major modes and modeline detection, a typed configuration
|
||||||
hardening pass. Current direction lives in `docs/roadmap-2026-07.md`.
|
registry, composable statuslines, multi-language syntax processing, and
|
||||||
Public contributions are open: use, evaluate, file issues, send pull
|
cross-frontend tab-width parity. Current direction lives in
|
||||||
requests.
|
`docs/roadmap-2026-07.md`. Public contributions are open: use, evaluate,
|
||||||
|
file issues, and send pull requests.
|
||||||
|
|
||||||
## Highlights
|
## Highlights
|
||||||
|
|
||||||
**Editing & UI.** CUA-style region editing plus Emacs kill/yank
|
**Editing & UI.** CUA-style region editing plus Emacs kill/yank and kill-ring
|
||||||
bindings; linear undo/redo; incremental search, substring and regex
|
bindings; linear undo/redo; query-replace; incremental substring and regex
|
||||||
(`C-s` / `C-r` / `C-M-s`); line-number gutter with absolute, relative,
|
search (`C-s` / `C-r` / `C-M-s`); comment, auto-indent, auto-pair, transpose,
|
||||||
and hybrid modes; diagnostic gutter signs; right-click context menu;
|
case, line, and region operations; line-number gutter with absolute, relative,
|
||||||
OS clipboard integration (OSC 52 in the TUI, native in the GPU);
|
and hybrid modes; diagnostic signs; context menu; OS clipboard integration
|
||||||
minibuffer with completion dropdown and per-bucket persisted history;
|
(OSC 52 in the TUI, native in the GPU); minibuffer completion with persisted
|
||||||
buffer-list mode (`C-x C-b`); self-navigable help system
|
history; buffer-list and compilation modes; self-navigable help. Named `ui.*`
|
||||||
(`describe-command`, `describe-key`); atomic saves (temp + rename +
|
theme faces, live GPU font selection, and composable per-window statusline
|
||||||
parent fsync, mode-preserving).
|
providers keep chrome and modelines runtime-configurable. Saves are atomic
|
||||||
|
(temp + rename + parent fsync, mode-preserving).
|
||||||
|
|
||||||
**Language intelligence.** LSP client with async, never-blocking
|
**Language intelligence.** The async LSP client provides diagnostics,
|
||||||
requests: diagnostics (severity-colored underlines/squiggles, gutter
|
rename with `prepareRename`, cross-file definitions, hover, signature help,
|
||||||
signs, statusline counts, `M-g n`/`M-g p` navigation), rename with
|
references, document symbols, code actions, formatting, semantic tokens, and
|
||||||
`prepareRename`, go-to-definition including cross-file navigation,
|
inline inlay hints. Preconfigured servers cover Rust, C/C++, Python, Go,
|
||||||
hover, signature help, references, document symbols, code actions,
|
JavaScript/TypeScript, Lua, Bash, TOML, Zig, Dockerfile, CMake, JSON, and YAML.
|
||||||
buffer formatting, semantic tokens, and inlay hints (rendered inline
|
Bundled tree-sitter grammars include those languages plus Markdown, Make, and
|
||||||
in the GPU frontend). Servers are preconfigured for rust-analyzer,
|
CUDA; nested Markdown fences and frontmatter use multi-language injections,
|
||||||
clangd (C/C++), basedpyright, gopls, typescript-language-server
|
and locals-query processing distinguishes shadowed builtins. Bounded Emacs
|
||||||
(TS/TSX/JS/JSX), lua-language-server, bash-language-server, taplo
|
and Vim modelines join extensions, exact filenames, and shebangs in one
|
||||||
(TOML), and zls (Zig). Syntax highlighting is dual-authority:
|
fresh-load language decision. That decision initializes the buffer's major
|
||||||
bundled tree-sitter grammars (Rust, Lua, Markdown, C, C++) paint
|
mode, drives syntax/LSP/pairing/comment behavior, and enables mode-scoped
|
||||||
lexical structure and LSP semantic tokens refine it --- languages
|
keymaps. A persistent project-symbol index (`.pmacs/index.json`) rides the
|
||||||
without a bundled grammar still get full semantic coloring. A
|
same worker infrastructure.
|
||||||
persistent project symbol index (`.pmacs/index.json`) rides the same
|
|
||||||
worker infrastructure.
|
|
||||||
|
|
||||||
**Collaboration & frontends.** With `--features crdt`, buffers are
|
**Collaboration & frontends.** With `--features crdt`, buffers are CRDT-backed
|
||||||
CRDT-backed and any number of frontends attach to one daemon and edit
|
and any number of frontends attach to one daemon and edit concurrently; peers
|
||||||
concurrently; peers see each other's cursors and selections as
|
see each other's cursors and selections as translucent washes. The TUI and GPU
|
||||||
translucent washes. The GPU frontend adds a live minimap (click to
|
frontends both host owned full-screen terminal sessions; protocol-v19 terminal
|
||||||
jump, drag to scrub), wavy diagnostic squiggles, a status band with
|
frames preserve the fixed-cell VT screen while each frontend owns its
|
||||||
live diagnostic counts, and optimistic local editing that rebases
|
scroll/selection/input context. The GPU frontend also provides a live minimap,
|
||||||
in-flight edits through authoritative frames.
|
wavy diagnostic squiggles, a status band, and optimistic local editing that
|
||||||
|
rebases in-flight edits through authoritative frames. Buffer text, syntax,
|
||||||
|
diagnostics, carets, hits, and minimap geometry now share one eight-column tab
|
||||||
|
projection without mutating source bytes.
|
||||||
|
|
||||||
**Extensibility.** ~37 `pmacs.*` Lua namespaces cover buffers,
|
**Extensibility.** The `pmacs.*` Lua namespaces cover buffers, windows,
|
||||||
windows, commands, keymaps (global/mode/buffer scope), hooks, themes
|
commands, global/mode/buffer keymaps, hooks, themes, statusline providers,
|
||||||
(truecolor-capable syntax palette), tree-sitter, LSP stores, async
|
tree-sitter, LSP stores, async workers, and a PTY-aware process supervisor.
|
||||||
workers, and a PTY-aware process supervisor with an ECMA-48 ANSI
|
The typed, introspectable `pmacs.config` registry supports global and
|
||||||
parser. A package manager installs from git (`github:owner/repo`,
|
buffer-local values, listeners, startup-only settings, and `describe-setting`.
|
||||||
version/branch/commit pins) with transitive dependency resolution and
|
A package manager installs from git (`github:owner/repo`,
|
||||||
a SHA-256 lockfile. Pmacs is also an **MCP client**: packages can
|
version/branch/commit pins) with transitive dependency resolution and a
|
||||||
spawn MCP servers and consume their tools, resources, and prompts ---
|
SHA-256 lockfile. Pmacs is also an **MCP client**: packages can spawn MCP
|
||||||
AI integrations are packages over a transport, not a built-in
|
servers and consume their tools, resources, and prompts --- AI integrations
|
||||||
feature. The bundled REPL package (PTY shells, ANSI rendering,
|
are packages over a transport, not a built-in feature. The bundled REPL
|
||||||
multi-REPL, scrollback retention) is written entirely against the
|
package is written entirely against the public Lua API.
|
||||||
public Lua API.
|
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue