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

Bernardo Magri 5e62678f67 adding logo small and docs 1 månad sedan
documentation 5e62678f67 adding logo small and docs 1 månad sedan
include 9d425aee58 major refactor from Jules 1 månad sedan
resources 5e62678f67 adding logo small and docs 1 månad sedan
scripts 9d425aee58 major refactor from Jules 1 månad sedan
src 9d425aee58 major refactor from Jules 1 månad sedan
tests 9d425aee58 major refactor from Jules 1 månad sedan
.envrc 4f1529bcf9 switching to ncurses 1 månad sedan
.gitignore 5114a45098 Start Phase 6: GTK4 Frontend and Single Binary Architecture 1 månad sedan
CMakeLists.txt 9d425aee58 major refactor from Jules 1 månad sedan
README.md 837dd70586 Update 'README.md' 1 månad sedan
init.lua 9d1d0fcb47 feat(themes): implement comprehensive theme system with 6 professional themes 1 månad sedan
shell.nix f50c65e891 starting the plan for a GUI 1 månad sedan
themes.lua 9d1d0fcb47 feat(themes): implement comprehensive theme system with 6 professional themes 1 månad sedan

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