{"id":51130683,"url":"https://github.com/coderdayton/lune-editor","last_synced_at":"2026-06-25T12:01:07.998Z","repository":{"id":363263530,"uuid":"1160600588","full_name":"CoderDayton/lune-editor","owner":"CoderDayton","description":"A fast, agentic terminal editor built in Rust — multi-buffer, vim mode, tree-sitter, AI, git panel, embedded terminal","archived":false,"fork":false,"pushed_at":"2026-06-08T07:09:29.000Z","size":1683,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T07:22:26.311Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CoderDayton.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-18T06:18:57.000Z","updated_at":"2026-06-08T07:09:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CoderDayton/lune-editor","commit_stats":null,"previous_names":["coderdayton/lune-editor"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/CoderDayton/lune-editor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderDayton%2Flune-editor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderDayton%2Flune-editor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderDayton%2Flune-editor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderDayton%2Flune-editor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoderDayton","download_url":"https://codeload.github.com/CoderDayton/lune-editor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderDayton%2Flune-editor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34773843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-25T12:01:06.528Z","updated_at":"2026-06-25T12:01:07.988Z","avatar_url":"https://github.com/CoderDayton.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/CoderDayton/lune-editor/main/assets/banner.png\" alt=\"Lune Editor\" width=\"440\"\u003e\n\nA terminal code editor written in Rust. It opens fast, runs entirely in your terminal, and comes with the things you'd normally add through plugins: a Git panel, tree-sitter highlighting, an embedded terminal, and a way to run CLI AI tools next to your code.\n\n[![CI](https://github.com/CoderDayton/lune-editor/actions/workflows/ci.yml/badge.svg)](https://github.com/CoderDayton/lune-editor/actions/workflows/ci.yml)\n[![Rust](https://img.shields.io/badge/rust-1.90%2B-orange?logo=rust)](https://www.rust-lang.org)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n[![Edition](https://img.shields.io/badge/edition-2024-purple)](https://doc.rust-lang.org/edition-guide/rust-2024/)\n\nMulti-buffer editing · Vim mode · Git panel · Embedded terminal · Tree-sitter highlighting · AI sessions\n\n\u003c/div\u003e\n\n---\n\n## Features\n\n- Multi-buffer editing on a rope-based text engine (ropey)\n- Optional Vim mode with Normal, Insert, Visual, Visual Line, and Command modes\n- Tree-sitter syntax highlighting for a growing list of languages, including Rust, Python, JavaScript, TypeScript, and Go\n- A native Git panel: stage and unstage files, work with individual hunks, and read diffs inline in unified or side-by-side view\n- Find and replace with live match highlighting\n- Inline dialogs for creating, renaming, and deleting files\n- A fuzzy language selector for overriding the detected language\n- Notification toasts that fade out on their own\n- Run CLI AI tools in an embedded terminal session, right next to your code\n- Crash recovery and workspace state that persists between runs\n- Two built-in themes plus any TOML themes you drop in, switchable while running\n\n---\n\n## Quick start\n\nYou'll need Rust 1.90 or newer (2024 edition) and a C compiler, which tree-sitter and libgit2 build against.\n\n```bash\ngit clone https://github.com/CoderDayton/lune-editor\ncd lune-editor\ncargo build --release       # binary at target/release/lune\ncargo install --path .      # optional: puts `lune` on your PATH\n\n# open a project\nlune ~/my-project\n\n# with vim mode and a theme\nlune ~/my-project --vim --theme \"Lune Dark\"\n```\n\nOn the first run, press `Ctrl+P` to open the command palette.\n\n---\n\n## Usage\n\n```\nlune [OPTIONS] [PATH]...\n\nArguments:\n  [PATH]...  File(s) or directory to open (defaults to the current directory)\n\nOptions:\n      --vim            Enable vim mode\n      --no-vim         Disable vim mode\n      --theme \u003cTHEME\u003e  Theme name, for example \"Lune Dark\"\n      --config \u003cPATH\u003e  Use a specific config file\n  -h, --help           Print help\n      --version        Print version\n```\n\n### A few ways people use it\n\nWeb or Python project, with vim mode:\n\n```bash\nlune ~/my-project --vim\n# file tree on the left, AI panel on the Agents tab, git panel on demand (Ctrl+G)\n```\n\nReviewing a repo before committing:\n\n```bash\nlune /path/to/repo\n# Ctrl+G opens the git panel: s to stage, u to unstage, c to commit\n```\n\nAI-assisted editing:\n\n```bash\nlune ~/my-project\n# select some code, then Ctrl+K a to ask the AI about it\n```\n\n---\n\n## Configuration\n\nConfig lives at `~/.config/lune-editor/config.toml` (or under `$XDG_CONFIG_HOME` if that's set). Per-project overrides go in `.lune/config.toml` at the workspace root. Both are TOML and layer over the built-in defaults.\n\n```toml\n[editor]\ntab_size = 4\nvim_mode = false\ncursor_style = \"block\"   # block, bar, or underline\n\n[ui]\nshow_file_tree = true\n\n[ai]\ndefault_client = \"claude\"\n\n[agents]\nplacement = \"fixed\"   # fixed or mouse\n\ntheme = \"Lune Dark\"\n```\n\nThe [configuration guide](docs/configuration.md) covers every section, field, and default, plus how per-project overrides work.\n\n---\n\n## Keybindings\n\nDefaults, all rebindable in `~/.config/lune-editor/keybindings.toml`:\n\n| Key | Action |\n|-----|--------|\n| `Ctrl+P` | Command palette |\n| `Ctrl+S` | Save |\n| `Ctrl+O` | Open file |\n| `Ctrl+N` | New file |\n| `Ctrl+F` | Find |\n| `Ctrl+H` | Replace |\n| `Ctrl+B` | Toggle file tree |\n| `Ctrl+G` | Toggle Git panel |\n| `Ctrl+1` / `Ctrl+2` | Editor tab / Agents tab |\n| `` Ctrl+` `` | Toggle the Agents (AI) tab |\n| `Ctrl+L` | Language selector |\n| `Ctrl+T` | Theme selector |\n| `Ctrl+Alt+V` | Toggle Vim mode |\n| `F1` | Keybinding hints |\n\n`Ctrl+K` is a leader key. Press it, then a second key: `a` to ask the AI about the selection, `r` to refactor the file, `c` to summarize changes, `s` to save all, `f` to find in files, `m` to toggle markdown preview, `n` to dismiss notifications, `w` to close the AI session.\n\nThe [keybindings guide](docs/keybindings.md) has the full list, including the Agents tab and Vim mode.\n\n---\n\n## AI sessions\n\nLune Editor can run a CLI AI tool in an embedded terminal session, so the tool can run commands and see output right next to your code.\n\nInstall a tool like Claude Code or OpenCode and make sure it's on your `PATH`. Lune Editor launches it as a subprocess, so sign-in and API keys are handled by the tool itself, not by Lune Editor.\n\nTo ask about a selection, press `Ctrl+K` then `a`, or use the command palette. That opens an AI prompt with your current selection as context.\n\n---\n\n## Git panel\n\nPress `Ctrl+G` to open the Git panel.\n\n| Key | Action |\n|-----|--------|\n| `s` | Stage the selected file |\n| `u` | Unstage the selected file |\n| `d` | Discard changes to the selected file |\n| `c` | Commit |\n| `r` | Refresh |\n| `Enter` | Open the selected file in the editor |\n\nThe panel shows each file's diff inline, in unified or side-by-side mode. Hunk-level actions, staging, unstaging, and discarding a single hunk, are available from the command palette.\n\n---\n\n## Themes\n\nLune Editor ships with two themes: Lune Dark (the default) and Lune Light. Switch with `Ctrl+T`, or set `theme = \"Lune Light\"` in your config. Drop your own TOML themes in `~/.config/lune-editor/themes/`.\n\nThe [theming guide](docs/theming.md) covers the built-in themes, the config schema, and writing your own.\n\n---\n\n## Architecture\n\nLune Editor is a Cargo workspace: a small binary over five library crates.\n\n```text\nlune-editor/\n├── src/main.rs            # CLI entry and config loading\n└── crates/\n    ├── lune-core/         # buffers, settings, search, undo, recovery, persistence\n    ├── lune-ui/           # ratatui TUI: event loop, widgets, vim, themes\n    ├── lune-ai/           # AI session manager and PTY sessions\n    ├── lune-git/          # git service (libgit2)\n    └── lune-ts-highlight/ # tree-sitter highlighting with incremental reparsing\n```\n\nThe [architecture guide](docs/architecture.md) goes into the crate breakdown, key dependencies, the event loop, and how state is persisted.\n\n---\n\n## Documentation\n\n- [Configuration guide](docs/configuration.md): every setting, default, and how overrides work\n- [Keybindings guide](docs/keybindings.md): default bindings, Vim mode, and custom bindings\n- [Theming guide](docs/theming.md): built-in themes, the config schema, and custom themes\n- [Testing guide](docs/guides/testing.md): running the suite, snapshots, and property tests\n- [Architecture guide](docs/architecture.md): crates, dependencies, the event loop, and persistence\n\n---\n\n## Contributing\n\n```bash\ncargo build\ncargo test --workspace\ncargo fmt --check \u0026\u0026 cargo clippy --workspace -- -D warnings   # before submitting\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for prerequisites, the crate map, and commit style.\n\n---\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderdayton%2Flune-editor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderdayton%2Flune-editor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderdayton%2Flune-editor/lists"}