+- navigation ---------------------------------------------------+
| ,___, |
| [O.o] [home] [projects] [old] |
| /)_) |
+---"--"---------------------------------------------------------+
+- macaw --------------------------------------------------------+
| _ __ ___ __ _ ___ __ ___ __ |
| | '_ ` _ \ / _` |/ __/ _` \ \ /\ / / |
| | | | | | | (_| | (_| (_| |\ V V / |
| |_| |_| |_|\__,_|\___\__,_| \_/\_/ |
| |
| [Repository] Developed in C & ncurses |
| |
+----------------------------------------------------------------+
[001] Introduction
__________________________________________________________________
Macaw is a minimalist text editor currently being developed,
drawing heavily from the core functionality of Vim. It is written
entirely in C and leverages the ncurses library for handling
text-based user interfaces.
[002] Project Overview
__________________________________________________________________
Key Features:
- Written in C: chosen for performance and find control memory.
- Uses ncurses: ensures compatibility across various OS's.
- Minimalistic: focused on simplicity over complexity.
[003] Project Architecture
__________________________________________________________________
1. File Structure
+------------------------------------------------------+
| |
| macaw/ |
| |-- src/ |
| | |- buffer.c |
| | |- buffer.h |
| | |- color.c |
| | |- color.h |
| | |- editor.c |
| | |- editor.h |
| | |- input.c |
| | |- input.h |
| | |- render.c |
| | |- render.h |
| |-- main.c |
| |
+------------------------------------------------------+
2. Components
- Entrypoint (main.c): The entry point of the application, where
the editor component is called and started.
- Editor Module (editor.c): The heart of Macaw, the editor module
manages text buffers, cursor movement and operations on text.
- Input Handling (input.c): Processes user inputs by reading the
keystrokes. This module manages Vim-like key bindings and
interprets inputs based on the current mode.
- Rendering (render.c): Module responsible for rendering the
whole interface to the terminal using ncurses.
- Buffer Management (buffer.c): Manages the text buffer, which is
is the in-memory representation of the file being edited.
- Colors (color.c): Module responsible for initializing and
managing custom colors within the terminal interface.
[004] Screenshots
__________________________________________________________________