Skip to main content

A terminal IDE with emacs keybindings, built on Textual — editor, file tree, markdown preview, and a real PTY terminal

Project description

candat

A terminal IDE with emacs keybindings, built on Textual.

Install

From PyPI, as a standalone tool (recommended — gives you a global candat command in its own isolated environment):

uv tool install candat
# or, with pipx (needs Python >= 3.10):
pipx install candat

Or with plain pip into the environment of your choice: pip install candat. To try it once without installing anything permanently: uvx candat.

The development version installs straight from GitHub:

uv tool install git+https://github.com/kavonrtep/candat

Requires Python >= 3.10 and Linux.

Run

candat [FILE|DIR ...]

Passing a directory sets the file-tree root; files are opened in buffers.

Keys (so far)

Key Action
C-x C-f find file (opens new file if it doesn't exist)
C-x C-s save buffer
C-x C-w write buffer to another file
C-x k kill buffer
C-x b buffer list (Enter switches; next buffer preselected)
C-x o switch focus between tree and editor
C-x C-c quit (confirms if unsaved buffers)
C-x C-x exchange point and mark
C-x h mark whole buffer
C-x u, C-/, C-z undo
C-f C-b C-n C-p C-a C-e char/line movement
M-f M-b word movement
C-v M-v page down / up
M-< M-> beginning / end of buffer
C-space set mark (movement extends region)
C-k kill line (consecutive kills accumulate)
C-w / M-w kill / copy region
C-y / M-y yank / yank-pop
M-d / M-backspace kill word forward / backward
M-up / M-down move current line (or marked block) up / down
C-s / C-r incremental search (smart case, wraps)
M-% query-replace (y/n/!/q)
C-x g project-wide regex search (results list, Enter jumps)
M-; toggle line comment
C-c C-c send region or current line to the terminal REPL
C-x t toggle terminal panel (keys pass through raw; only C-x is reserved)
Shift+PgUp/PgDn terminal scrollback (typing snaps back)
C-c C-v cycle markdown preview: split / preview-only / off
M-x, Ctrl+Shift+P command palette
C-g / Esc cancel chord / prompt / search / mark

ESC acts as the Meta prefix, so ESC w == M-w, ESC x == M-x, etc. Tab completes paths in the find-file and write-file prompts.

The file tree opens files on selection. The default theme is candat-light (high-contrast dark-on-white). The markdown preview is linked: it follows the editor's scroll position.

Development

uv run pytest

Roadmap

  1. Skeleton: tree / tabs / status bar / C-x chords / open & save
  2. Emacs editing: kill ring, C-s/C-r isearch, mark & region, M-x palette
  3. Markdown mode: side-by-side live preview (debounced)
  4. Terminal panel (full PTY: forkpty + pyte)
  5. Polish: terminal scrollback, dirty-line rendering, path completion in prompts, buffer list, scroll-synced preview, R/xml/html highlighting

Syntax highlighting covers python, markdown, json, yaml, bash, html, xml, css, toml, js, sql, go, rust, java, and R (via tree-sitter-language-pack).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

candat-0.2.2.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

candat-0.2.2-py3-none-any.whl (32.8 kB view details)

Uploaded Python 3

File details

Details for the file candat-0.2.2.tar.gz.

File metadata

  • Download URL: candat-0.2.2.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for candat-0.2.2.tar.gz
Algorithm Hash digest
SHA256 7cab4f9f224eb35379307ffe5b4ecf522ad008aa3fcf28867944bd84e56a531a
MD5 9fc98211b638d40788b6e57e783e000e
BLAKE2b-256 f379750bab080bffdcb6dd580be71d5dfb1cb7b5bcaa1a9e9b0877fa19356591

See more details on using hashes here.

File details

Details for the file candat-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: candat-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 32.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for candat-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b98979e3060a7b9a9ae117fbc60817b26bd29d45615aa74b51729a06a3816e33
MD5 360001f37d2fb69d31444b3574f6e7ff
BLAKE2b-256 9ee021299c936e1d006ba33de7a02c2ade4aa261f597d94dc1b16434bfc0eb16

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page