Update README
This commit is contained in:
121
README.md
121
README.md
@@ -1,9 +1,118 @@
|
|||||||
# te, a text editor
|
# te
|
||||||
|
|
||||||

|
A from-scratch text editor that aims to stay fast, hackable, and practical for day-to-day coding.
|
||||||
|
|
||||||
In order to build on windows you need to call build.bat from
|

|
||||||
the x64 Native Command Tools prompt that ships with Visual Studio.
|
|
||||||
|
|
||||||
For Linux you will need clang, SDL3 and libbacktrace libraries to be installed and
|
## What this project is
|
||||||
available on your system. Just call build.sh when these are available.
|
|
||||||
|
`te` is a native desktop editor written as a single C++ executable (SDL3 + OpenGL + custom editor core).
|
||||||
|
It is built around a straightforward single-threaded architecture, with coroutines used for asynchronous workflows (searching, UI flows, process jobs) so behavior stays easy to reason about and debug.
|
||||||
|
|
||||||
|
The codebase includes its own:
|
||||||
|
|
||||||
|
- text buffer + undo/redo engine
|
||||||
|
- window/view layout system
|
||||||
|
- command system + keybinding parser
|
||||||
|
- fuzzy selection UI
|
||||||
|
- process execution and output streaming
|
||||||
|
- built-in font fallback (baked into the binary)
|
||||||
|
|
||||||
|
## Highlights
|
||||||
|
|
||||||
|
- VS Code-style keybindings and command palette (`Ctrl+Shift+P`)
|
||||||
|
- Multi-cursor editing (keyboard and mouse workflows)
|
||||||
|
- Fuzzy-open patterns for commands, files, and open buffers
|
||||||
|
- Project-wide search (`Ctrl+Shift+F`) and replace-all workflow
|
||||||
|
- Shell integration directly from editor input:
|
||||||
|
- `:Command` to run editor commands
|
||||||
|
- `:Set ...` to configure options and keybindings
|
||||||
|
- `!cmd` / `!!cmd` to execute shell commands
|
||||||
|
- `py:...` to execute Python snippets via discovered Python interpreter
|
||||||
|
- Build panel integration (`Ctrl+B`, `Alt+B`, etc.) with configurable build commands
|
||||||
|
- Config-driven behavior (font, colors, project commands, keymaps, paths)
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
|
||||||
|
- `clang`
|
||||||
|
- `cmake`
|
||||||
|
- `libbacktrace`
|
||||||
|
- SDL3 (the build script can clone and install SDL when missing)
|
||||||
|
|
||||||
|
Build commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh # debug build (default)
|
||||||
|
./build.sh release # optimized build
|
||||||
|
./build.sh slow # extra asserts/instrumentation path
|
||||||
|
```
|
||||||
|
|
||||||
|
Run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build/te
|
||||||
|
./build/te path/to/file.cpp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
Use the **x64 Native Tools Command Prompt for Visual Studio**.
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
|
||||||
|
- Visual Studio C++ toolchain (`cl`, `msbuild`)
|
||||||
|
- `cmake`
|
||||||
|
|
||||||
|
Build commands:
|
||||||
|
|
||||||
|
```bat
|
||||||
|
build.bat
|
||||||
|
build.bat release
|
||||||
|
build.bat slow
|
||||||
|
```
|
||||||
|
|
||||||
|
Run:
|
||||||
|
|
||||||
|
```bat
|
||||||
|
build\te.exe
|
||||||
|
build\te.exe path\to\file.cpp
|
||||||
|
```
|
||||||
|
|
||||||
|
## First steps in the editor
|
||||||
|
|
||||||
|
- `Ctrl+N`: new buffer
|
||||||
|
- `Ctrl+O`: open current file's folder / directory navigation view
|
||||||
|
- `Ctrl+P`: fuzzy list of open buffers
|
||||||
|
- `Ctrl+Shift+P`: all commands
|
||||||
|
- `Ctrl+Q` or `F12`: open thing under caret (path / link / command)
|
||||||
|
- `Ctrl+F`, `F3`, `Shift+F3`: in-buffer search flow
|
||||||
|
- `Ctrl+Shift+F`: interactive search across open project buffers
|
||||||
|
- `Alt+Shift+Up/Down`: add cursors vertically
|
||||||
|
- `Ctrl+B`: run Build1 command (configurable)
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
On startup, `te` loads a config file from SDL's app preference directory (`config.te`).
|
||||||
|
You can also pass additional `.te` files as CLI arguments.
|
||||||
|
|
||||||
|
Useful examples:
|
||||||
|
|
||||||
|
```text
|
||||||
|
:Set FontSize 16
|
||||||
|
:Set PathToFont '/path/to/font.ttf'
|
||||||
|
:Set Build1OnUnix 'sh build.sh release'
|
||||||
|
:Set Build1OnWindows 'build.bat release'
|
||||||
|
:Set TextColor ff202020
|
||||||
|
:Set BackgroundColor fffdf6e3
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes on architecture
|
||||||
|
|
||||||
|
- Single-threaded main loop (event/update/render)
|
||||||
|
- Coroutines for async editor tasks instead of multi-threaded complexity
|
||||||
|
- "Plugin" modules are integrated in the source tree and compiled in
|
||||||
|
- Focus on predictable behavior and low-latency interaction
|
||||||
|
|||||||
Reference in New Issue
Block a user