Skip to content

MicroRJ/Apollo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Apollo

Apollo is an experimental text editor written from scratch in C for Windows.

The project is focused on editor architecture, rendering, text layout, and systems programming rather than wrapping an existing GUI text control. It is not production-ready yet, but it already includes the core pieces of a custom editor stack: file-backed buffers, editing commands, multi-cursor state, fuzzy search, font rasterization, table-driven theming, and a D3D11 renderer backend.

Screenshots

Apollo folder search

Apollo multi-cursor editing

Apollo command search

Status

Apollo is under active development and should be treated as a personal systems project, not a finished daily editor.

Current priorities:

  • Stabilize the buffer/edit model
  • Improve UTF-8 handling
  • Replace the flat text buffer with a more scalable representation
  • Expand automated tests
  • Polish the public build/demo workflow

Features

  • From-scratch C codebase with a small platform abstraction layer
  • Win32 windowing, input, file dialogs, clipboard, timing, and filesystem support
  • D3D11-based renderer abstraction
  • Font loading, TTF rasterization, glyph atlas pages, and raster cache
  • Text layout and viewport caching for visible editor lines
  • File-backed buffers with save-state tracking
  • Cursor movement, selection, clipboard operations, undo/redo, and multi-cursor state
  • Fuzzy search providers for commands, buffers, files, and unsaved buffers
  • Table-based configuration format used for theme data
  • Toggleable editor UI elements such as status bar and gutter

Architecture

Apollo is organized into small modules under src/:

  • base/ - core types, strings, arenas, math, colors, paths, logging, profiling
  • os/ - Windows platform layer for windows, input, memory, files, time, and dialogs
  • renderer/ - GPU resource model and D3D11 backend
  • fonts/ - TTF loading/rasterization and glyph cache
  • text/ - text layout, render runs, and viewport cache
  • buffer/ - buffer identity, file loading/saving, revisions, line indexing, undo data
  • edit/ - editor commands, cursor state, selections, clipboard, undo/redo integration
  • views/ - editor layout, scrolling, gutter/status UI, and active view state
  • search/ - fuzzy-search UI and provider model
  • table/ and theme/ - table parser/runtime and theme loading

See docs/architecture.md for more detail.

Building

Requirements:

  • Windows
  • clang-cl
  • Windows SDK

From the repository root:

build.bat

The build script currently produces apollo.exe in the repository root. Generated executables, debug symbols, Visual Studio metadata, and common build output directories are ignored by Git.

Running

After building:

apollo.exe

The editor currently opens the guided demo file under data/demo/demo.txt by default.

Current Limitations

  • Windows-only
  • Debug/development build workflow
  • The buffer is currently a flat byte buffer with full line rescans
  • UTF-8 support exists in parts of the stack but is not complete everywhere
  • Automated test coverage is still growing
  • Some systems still use fixed-size global arrays while the architecture settles
  • Large-file editing is not a primary goal yet

Roadmap

  • Replace the flat buffer with a piece table, gap buffer, or similar editor-friendly representation
  • Add focused tests for buffer operations, undo/redo, search ranking, and text movement
  • Improve Unicode correctness and text navigation
  • Expand syntax highlighting through the plugin/lexer path
  • Improve save/reload conflict handling
  • Add a short demo recording for the public repository

License

Apollo is licensed under the terms in LICENSE.

About

A text editor written from scratch in C, built to become my daily editor.

Resources

License

Stars

5 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors