A text editor inspired by Emacs with Lua at it's core
|
|
1 lună în urmă | |
|---|---|---|
| documentation | 1 lună în urmă | |
| include | 1 lună în urmă | |
| resources | 1 lună în urmă | |
| scripts | 1 lună în urmă | |
| src | 1 lună în urmă | |
| tests | 1 lună în urmă | |
| .envrc | 1 lună în urmă | |
| .gitignore | 1 lună în urmă | |
| CMakeLists.txt | 1 lună în urmă | |
| GEMINI.md | 1 lună în urmă | |
| README.md | 1 lună în urmă | |
| init.lua | 1 lună în urmă | |
| shell.nix | 1 lună în urmă | |
| themes.lua | 1 lună în urmă |
A modern, highly customizable text editor engine written in C++20, deeply inspired by Emacs and featuring powerful Lua 5.4 scripting support. Lumacs emphasizes a clear separation between its core logic and UI, making it both flexible and extensible.
Lumacs aims to provide a rich, Emacs-like editing experience with a focus on configurability and modern C++ practices.
The editor currently boasts a wide array of functional features, though ongoing refactoring efforts (detailed in the Development Plan) aim to enhance their modularity, maintainability, and extensibility.
Core Emacs Editing DNA:
Advanced UI & System Integration:
Certain features, while present, are identified for significant refactoring to align with architectural goals and enhance robustness/extensibility.
TODO.MinibufferManager.InteractiveSpec for dynamic prompting, type-safe arguments), consolidation of command string parsing, and refined completion integration (externalizing specific completers).GtkEditor): The GtkEditor remains a "God Object" in some aspects. Decoupling rendering concerns into specialized components and moving C++ fallback keybindings to Lua are key refactoring targets.ThemeElement enum is still present in some rendering logic and needs to be fully transitioned to the unified Face system.Once current refactoring efforts are complete, the following are planned:
sol2 bindingscmake -B build -S .
cmake --build build -j4
./build/lumacs [file]
Common Emacs-like keybindings are supported. Refer to init.lua for the full default keymap.
M-x set-theme (then use Tab for completion)C-x 2 (horizontal), C-x 3 (vertical), C-x 0 (close window), C-x o (next window)C-x b (switch buffer), C-x k (kill buffer), C-x C-b (list buffers)F3 (start macro), F4 (end macro/call macro), C-x r s (copy to register), C-x r i (insert register), C-x r k (kill rectangle), C-x r y (yank rectangle)MIT