A text editor inspired by Emacs with Lua at it's core

Bernardo Magri 9d425aee58 major refactor from Jules 1 개월 전
documentation 9d425aee58 major refactor from Jules 1 개월 전
include 9d425aee58 major refactor from Jules 1 개월 전
scripts 9d425aee58 major refactor from Jules 1 개월 전
src 9d425aee58 major refactor from Jules 1 개월 전
tests 9d425aee58 major refactor from Jules 1 개월 전
.envrc 4f1529bcf9 switching to ncurses 1 개월 전
.gitignore 5114a45098 Start Phase 6: GTK4 Frontend and Single Binary Architecture 1 개월 전
CMakeLists.txt 9d425aee58 major refactor from Jules 1 개월 전
DEV_STATE.md 9d425aee58 major refactor from Jules 1 개월 전
PLAN.md 14fceac650 plan added 1 개월 전
PROMPT.md bc33ffb8b5 fix(gtk): resolve window split crashes and text rendering issues 1 개월 전
README.md 9d425aee58 major refactor from Jules 1 개월 전
init.lua 9d1d0fcb47 feat(themes): implement comprehensive theme system with 6 professional themes 1 개월 전
shell.nix f50c65e891 starting the plan for a GUI 1 개월 전
themes.lua 9d1d0fcb47 feat(themes): implement comprehensive theme system with 6 professional themes 1 개월 전

README.md

Lumacs

A modern text editor in C++20, inspired by Emacs with powerful Lua scripting support.

Features

Implemented (Polishing & Refactoring Phase)

  • Core Editing: Kill ring, mark/region, undo/redo
  • Buffer Management: Multiple buffers, window splits
  • Advanced Features: Registers, keyboard macros, rectangles, minibuffer history
  • Search: Incremental search with highlighting
  • Theme System: Dracula, Everforest, Nord, Solarized, Gruvbox, and default themes
  • UI: GTK4 Frontend (primary) and Ncurses TUI (fallback)
  • Modeline: Modular, extensible status bar
  • Lua Scripting: Extensive Lua API for customization

🔄 Planned

  • Language modes (Python, C++, JavaScript)
  • Plugin system expansion
  • Advanced completion UI

Tech Stack

  • Core: C++20
  • UI: GTK4 / gtkmm (GUI), Ncurses (TUI)
  • Scripting: Lua 5.4 + sol2 bindings
  • Build: CMake 3.20+

Quick Start

Building

cmake -B build -S .
cmake --build build -j4

Running

./build/lumacs [file]

Key Bindings

  • Theme Switching: M-x theme-selection
  • Window Splits: C-x 2 (horizontal), C-x 3 (vertical), C-x 0 (close)
  • Buffers: C-x b (switch), C-x k (kill), C-x C-b (list)
  • Advanced: F3/F4 (macros), C-x r s/i (registers), C-x r k/y/t (rectangles)

Documentation

License

MIT