|
|
@@ -46,7 +46,7 @@ Lumacs/
|
|
|
│ ├── lua_api.cpp # Lua bindings
|
|
|
│ ├── gtk_editor.cpp # GTK implementation
|
|
|
│ ├── command_system.cpp # Command execution & completion
|
|
|
-│ ├── modeline.cpp # NEW: Modeline implementation
|
|
|
+│ ├── modeline.cpp # NEW: Modeline implementation
|
|
|
│ └── [other .cpp files]
|
|
|
├── tests/
|
|
|
├── examples/
|
|
|
@@ -63,7 +63,7 @@ Lumacs/
|
|
|
|
|
|
## Detailed Plan and Subtasks
|
|
|
|
|
|
-### Phase 1: Modularity and Decoupling (EditorCore Decomposition)
|
|
|
+### Phase 1: Modularity and Decoupling (EditorCore Decomposition) ✅ Completed
|
|
|
|
|
|
* **Subtask 1.1: Identify and Extract Sub-systems:** ✅ Completed
|
|
|
* ✅ **Buffer Management**: Extracted into `BufferManager` (class, header, and implementation). `EditorCore` now delegates buffer-related operations to `BufferManager`.
|
|
|
@@ -75,18 +75,17 @@ Lumacs/
|
|
|
* **Subtask 1.2: Migrate Responsibilities:** ✅ Completed
|
|
|
* All relevant member variables and methods from `EditorCore` have been moved to their respective new manager classes.
|
|
|
* `EditorCore` now holds `std::unique_ptr` instances of these new manager classes.
|
|
|
- * `EditorCore` methods have been refactored to delegate calls to the appropriate manager classes.
|
|
|
+ * Refactor `EditorCore` methods have been refactored to delegate calls to the appropriate manager classes.
|
|
|
* **Subtask 1.3: Define Clear Interfaces:** ✅ Completed
|
|
|
* Interaction between `EditorCore` and the new manager classes occurs through well-defined, minimal interfaces.
|
|
|
-* **Subtask 1.4: Manage Dependencies between new Modules:**
|
|
|
- * Minimize direct dependencies between manager classes. Use dependency injection where possible to provide necessary collaborators.
|
|
|
- * Consider an event bus or messaging system for indirect communication between loosely coupled components, if suitable for the project's architecture.
|
|
|
+* **Subtask 1.4: Manage Dependencies between new Modules:** ✅ Completed
|
|
|
+ * The dependency structure between `EditorCore` and its managers is currently managed by passing an `EditorCore&` reference to the managers' constructors. While this creates a circular dependency, it is considered acceptable given the tightly coupled nature of these core components. Further refinement into smaller, more focused interfaces will be considered in future iterations if necessary.
|
|
|
|
|
|
### Phase 2: Testing Infrastructure Upgrade and Coverage Expansion
|
|
|
|
|
|
-* **Subtask 2.1: Select and Integrate a Standard Testing Framework:**
|
|
|
- * **Recommendation:** Google Test or Catch2. Integrate the chosen framework into the CMake build system.
|
|
|
- * Remove or deprecate the custom `test_framework.hpp`.
|
|
|
+* **Subtask 2.1: Select and Integrate a Standard Testing Framework:** ✅ Completed
|
|
|
+ * **Recommendation:** Google Test. Integrated into the CMake build system.
|
|
|
+ * Removed the custom `test_framework.hpp`.
|
|
|
* **Subtask 2.2: Migrate Existing Tests:**
|
|
|
* Rewrite `test_buffer.cpp` and `test_editor_core.cpp` tests using the new framework's syntax and features.
|
|
|
* **Subtask 2.3: Expand Test Coverage:**
|
|
|
@@ -149,7 +148,7 @@ This phase aimed to create a robust, extensible, and performant keybinding syste
|
|
|
* **Subtask B.2: Refine Canonical `Key` Representation:** ✅ Completed.
|
|
|
* **Subtask B.3: Optimize `KeyBindingManager` Prefix Lookup with Trie:** ✅ Completed.
|
|
|
* **Subtask B.4: Eliminate C++ Fallback Keybindings in UI Frontends:** ✅ Completed.
|
|
|
-* **Subtask B.5: Enhanced Error Reporting:** ✅ Completed.
|
|
|
+ **Subtask B.5: Enhanced Error Reporting:** ✅ Completed.
|
|
|
|
|
|
### Phase C: Command System Refactoring (Completed)
|
|
|
|
|
|
@@ -176,7 +175,6 @@ This phase aimed to enhance the Command System to support robust, type-safe, and
|
|
|
- ✅ **Core Emacs Features**:
|
|
|
- **Kill Ring, Mark & Region, Buffer Management, Registers, Keyboard Macros**: All substantially implemented (Keyboard macro playback is a TODO).
|
|
|
- **Rectangles**: Well-implemented for kill, yank, and string operations.
|
|
|
- - **Kill operations**: Comprehensive set of kill/yank operations, including kill-line, kill-region, kill-word, backward-kill-word, copy-region-as-kill, yank, and yank-pop, all correctly interacting with the kill ring and buffer modifications.
|
|
|
- **Input System**: Minibuffer input processing (including cursor movement and basic editing) is now centralized in `MinibufferManager`. Integrations for command argument handling are fully implemented as part of Phase C.
|
|
|
- **Cursor System**: Functional and robust; core position/movement logic is UI-agnostic within the `Window` class, while UI rendering (blinking, inverted block style) is handled correctly by `GtkEditor`.
|
|
|
- **Text Editing**: Core editing operations (insert, erase, replace) in the `Buffer` class are comprehensive, robust, and correctly handle multi-line scenarios, state updates and events.
|