|
|
@@ -21,80 +21,153 @@
|
|
|
```
|
|
|
|
|
|
## Current Module
|
|
|
-**GTK4 Frontend Completion** - Currently in Phase 6 with stable basic functionality. The editor has working text input, cursor movement, basic editing operations, and clean shutdown.
|
|
|
+
|
|
|
+**Phase 7: Performance Optimization** - optimization of rendering pipeline, input handling, and resource usage.
|
|
|
+
|
|
|
+
|
|
|
|
|
|
## 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
|
|
|
+
|
|
|
- ✅ **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
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
## Todo
|
|
|
-1. **Phase 7**: Performance optimization and tuning
|
|
|
-2. **Phase 8**: Mouse support and advanced UI features
|
|
|
+
|
|
|
+1. **Pango Layout Caching**: Cache Pango layouts to avoid recreation on every frame/keystroke
|
|
|
+
|
|
|
+2. **Render Optimization**: Optimize `draw_window` to only redraw changed lines if possible (or reduce overhead)
|
|
|
+
|
|
|
+3. **Memory Profiling**: Check for memory leaks or excessive allocations
|
|
|
+
|
|
|
+
|
|
|
|
|
|
## 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 6 GTK4 Frontend - FULLY COMPLETED**: All functionality implemented including:
|
|
|
-- Text rendering with syntax highlighting
|
|
|
-- Full keyboard input and cursor management
|
|
|
-- Window splitting with dynamic GTK containers
|
|
|
-- Clean exit without segfaults
|
|
|
-- Ready for Phase 7 performance optimization
|
|
|
+
|
|
|
+**Phase 7 Performance Optimization**:
|
|
|
+
|
|
|
+- Implementing Pango layout caching
|
|
|
+
|
|
|
+- Analyzing rendering performance
|