deco docs
GitHub

deco

A lightweight, VS Code-compatible text editor written in Rust. One page per feature, each of them showing an animation generated from the editor’s own renderer.

A lightweight VS Code-compatible editor in Rust. This directory is the detailed reference; the top-level README is the short version, and it is the honest place to look for what is not built yet.

Page What it covers
Editing Motion, selection, line and block comments, multiple cursors, undo
Tabs Several documents, one per tab; splitting; what a tab keeps
Syntax highlighting Scopes, languages, choosing one, and why not tree-sitter
Find and replace ctrl+f, ctrl+h, F3, and the multi-cursor find keys
Running commands The command palette, quick open, go to symbol, search in files, go to line
Language servers Diagnostics, hover, definition, references, completion, symbols, semantic tokens, formatting
Configuration settings.json, keybindings.json, colour themes, and where they are read from
Extensions The capability model, and why an extension gets less power here than in VS Code
Remote SSH, container and WSL authorities — and which half of it exists
Testing Unit tests, end-to-end scenarios, and what each one is for
Roadmap What VS Code has that deco does not, and the plan for each

About the animations

Every animation in these pages is generated from deco’s own renderer, not recorded off a screen and not drawn by hand:

$ cargo xtask docs            # regenerate them
$ cargo xtask docs --check    # fail if they no longer match the code

deco_tui::render is a pure function of an editor session and a terminal size — the same property that lets the layout be asserted in CI with no terminal attached. A scenario in xtask/src/docs.rs presses real chords through a real Session and captures whatever the real renderer produced, so an animation cannot show a feature behaving in a way the code does not. --check runs in CI, so a behaviour change fails the build rather than quietly leaving the documentation describing an editor that no longer exists.

They are animated SVG rather than GIF. An SVG is text: it diffs, it reviews in a pull request, and it needs neither an encoder dependency nor an embedded bitmap font. GitHub animates it in Markdown all the same.

The caption under each frame is the key that was pressed to produce it.

About this site

These pages are also published at sabas0ba.github.io/deco, built by GitHub Pages straight from this directory — so the site and the Markdown you are reading on GitHub never drift apart.

The theme lives here rather than in a gem, in _layouts/default.html, _data/nav.yml and assets/css/deco.css. Its palette is deco’s own: the dark side is Default Dark Modern and the light side Default Light Modern, both read off crates/deco-theme/src/defaults.rs, and the page is arranged the way the editor is — a bar top and bottom, an explorer down the left. The animations are captures of the real renderer, and this is the surrounding they were captured in. Only plugins GitHub Pages already enables are used, so there is no build step to run and nothing to deploy.

$ cd docs && bundle install
$ bundle exec jekyll serve    # preview the site at http://127.0.0.1:4000/deco/

Edit this page on GitHub