DEV_STATE.md 5.2 KB

DEV_STATE.md - Lumacs Development State

Architecture

    [Lua 5.4 Engine]
         ^  |
         |  v
    [Lua API Bridge] <-- C++ bindings for buffers, windows, keybindings, themes
         ^  |
         |  v
    [Editor Core] <-- Buffer management, kill ring, face system
         ^  |
         |  v
    [UI Interface] <-- Abstract UI layer
         ^  |
         |  v
    [GTK4 Frontend] <-- Primary GUI (with TUI fallback available)
         |
         v
    [Terminal/Display]

Current Module

Phase 9: Advanced UI features - Implementing context menus and tooltips for improved user interaction.

File Manifest


Lumacs/

├── CMakeLists.txt           # Build configuration

├── init.lua                 # Main Lua initialization

├── themes.lua              # Theme definitions

├── include/lumacs/         # C++ headers

│   ├── editor_core.hpp     # Core editor logic

│   ├── buffer.hpp          # Text buffer management

│   ├── lua_api.hpp         # C++/Lua bridge

│   ├── gtk_editor.hpp      # GTK4 frontend

│   ├── tui_editor.hpp      # TUI fallback

│   ├── keybinding.hpp      # Key handling

│   ├── theme.hpp           # Theme/face system

│   └── [other headers]

├── src/                    # C++ implementation

│   ├── main.cpp            # Entry point

│   ├── editor_core.cpp     # Core functionality

│   ├── lua_api.cpp         # Lua bindings

│   ├── gtk_editor.cpp      # GTK implementation

│   └── [other .cpp files]

├── tests/                  # Unit tests

├── examples/               # Test files and demos

├── scripts/                # Build/test scripts

└── documentation/          # Project docs

Done

  • Phase 1-5: Complete Emacs-like core functionality

  • Phase 6 Core: GTK4 frontend with text rendering

  • Phase 7 Optimization: Render caching and performance tuning

  • Phase 8 Mouse: Full mouse support (click-move, scroll, drag-select)

  • Input System: Full keyboard input with modifiers working

  • Cursor System: Emacs-style blinking block cursor with color inversion

  • Text Editing: Basic insertion, deletion, movement operations working

  • Keybinding System: Fixed conflicts, C-n, C-p, C-f, C-b, C-a, C-e, C-s, C-k working

  • Clean Exit: Fixed shutdown crashes and memory issues

  • Syntax Highlighting: Face system with Pango rendering

  • Text-Cursor Alignment: Fixed text rendering offset issues

  • Scrolling System: Full vertical and horizontal scrolling with Page Up/Down support

  • Kill Ring System: Complete implementation with push/yank/yank-pop operations

  • Mark & Region: Full mark/region system in Buffer (set_mark, deactivate_mark, get_region)

  • Buffer Management: Complete buffer switching, listing, and management in EditorCore

  • Core Emacs Features: Registers, keyboard macros, rectangles, kill operations

  • GTK Segfault Fix: Resolved double-free on exit with proper cleanup handling

  • GTK Window Splits: Dynamic container layout with Gtk::Paned matching EditorCore's window tree

  • Window Split Crash Fix: Resolved window split crashes and text rendering issues

  • Multi-Window Text Rendering: Fixed text rendering in split windows with proper font metrics

  • Split Window UI Polish: Fixed modeline display, focus stability, and split ratio calculations

  • Window Split Freeze Fix: Resolved GTK signal_realize callback issues causing freezes during splits

  • Split Window Cursor Fix: Fixed cursor movement to work in focused window rather than original active window

  • ⚠️ Focus Jumping Partial Fix: Identified spurious next_window() calls but focus still jumps during typing

  • Split Ratio Improvement: Implemented initial split ratio using signal_map with fallback

  • Modeline: Implemented detailed Emacs-like modeline with active/inactive states, flags, percentage, and mode display

    • Minibuffer Polish: Implemented Tab completion (buffers/files), command history (up/down), and kill-buffer logic
  • Phase 9 Advanced UI: Implemented Context Menus (right-click) and Hover Tooltips

Todo

  1. Phase 10: Plugin System enhancements

Technical Debt/Notes

  • Lua Bridge: The lua_api.cpp contains the critical C++/Lua boundary code

  • GTK Threading: All GTK operations must stay on main thread

  • Memory Management: Using RAII and smart pointers throughout C++ code

  • Face System: Themes are fully integrated with Pango text rendering

  • Cursor Implementation: Blinking timer with 500ms intervals, proper cleanup on exit

  • Scrolling Architecture: Viewport system with 3-line vertical and 5-column horizontal margins

  • Build System: CMake-based with proper dependency management

  • Testing: Unit test framework in place for core components

Current Focus

Phase 9 COMPLETED:

  • Implemented Context Menus (right-click popover with actions)

  • Implemented Hover Tooltips (showing word under cursor and line number)

Ready for Phase 10 (Plugin System enhancements)