Skip to content

Latest commit

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date

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

From-scratch Windows text editor with multicursor editing, fuzzy search, custom font rasterization, and D3D11 rendering.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages