https://github.com/mkh-user/text-forge
A lightweight, extensible, and mode-driven text editor. Customizable, scriptable, and ready to handle any format and language!
https://github.com/mkh-user/text-forge
code-editor godot-engine modular-design text-editor
Last synced: 11 months ago
JSON representation
A lightweight, extensible, and mode-driven text editor. Customizable, scriptable, and ready to handle any format and language!
- Host: GitHub
- URL: https://github.com/mkh-user/text-forge
- Owner: mkh-user
- Created: 2025-06-21T17:49:46.000Z (12 months ago)
- Default Branch: Main
- Last Pushed: 2025-06-28T11:19:37.000Z (11 months ago)
- Last Synced: 2025-06-28T11:22:54.038Z (11 months ago)
- Topics: code-editor, godot-engine, modular-design, text-editor
- Language: GDScript
- Homepage:
- Size: 1.18 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 50
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[en](https://github.com/mkh-user/Text-Forge/tree/Main/README.md) | [fa](https://github.com/mkh-user/Text-Forge/tree/Main/docs/fa/README.md) | [zh](https://github.com/mkh-user/Text-Forge/tree/Main/docs/zh/README.md) | [es](https://github.com/mkh-user/Text-Forge/tree/Main/docs/es/README.md)
# Text Forge
Text Forge is a lightweight, extensible, and mode-driven text editor. It's customizable, scriptable, and ready to handle
any format and language in a data-driven and object-oriented environment without any change in source.
> [!Note]
> Text Forge still has many uncompleted/unenabled capabilities, but it is usable even now (because most of these uncompleted capabilities are not core-related).
---
## ✨ Core Principles
- **Language-Agnostic Foundation:**
**No built-in assumptions** about HTML, Python, JSON, or any language. All formatting and highlight rules are defined
in editable and portable assets.
- **Hot-Pluggable Modes:**
Each mode is self-contained with syntax-highlight, formatting behavior, and buffers based on file types.
- **Scriptable Shortcuts & Actions:**
All actions (even `open` and `new`) and their shortcuts are modular scripts separated from source.
---
## Why Text Forge?
Text Forge is a response to the growing demand for tools that **empower** rather than constrain. Designed as a standalone text editor with a focus on **modularity, deep customization, and minimal design**, it offers a flexible and efficient foundation for users who want full control over their editing environment.
With Text Forge:
- The internal architecture is structured to make components easy to add, remove, or redefine
- A versatile formatting engine enables precise handling of complex, structured text
- It delivers a lightweight, independent experience—usable without dependency on heavy ecosystems
- **It provides a core foundation that can be rapidly adapted to various file types, formatting styles, and workflows**—in essence, Text Forge is more than an app; it functions as a *framework for building custom editors*
Our goal is to create a tool that puts creative and technical decisions back in the hands of the user—where they belong.
---
## 🧠 Project Structure
### Core
Text Forge have an object-oriented core with systems to handle any extension type, so anything can change without change
one line in the core.
### Data-driven UI
Text Forge uses configuration files to load UI and have flexible UI system for have highly extendable UI sections.
### Editor API & Modes
In Text Forge we have a **mode** to work with a file, modes will load by Editor API in app to handle loading/saving,
syntax-highlighting and auto formatting, so Text Forge can handle any file using modes in `/modes` folder!
### Script & Shortcuts
Need to customize any option functionality? So you can replace your code in its script in `/scripts` folder to create
your own actions. Need complete UX customization? Create your shortcut mapping in `/shortcuts` folder without touch
editor core!
---
## 🧩 Creating a Custom Mode
Text Forge can handle any file with modes, so if you want to create a mode or edit existing one, you can see
[here](https://github.com/mkh-user/text-forge-modes/wiki/Modes-structure-guide) for guides and examples.
---
## 🛠 Adding a Command
You can add any functionality in text forge without change source, see [here](https://github.com/mkh-user/text-forge) for guides and examples.
---
## ✅ Available Modes
See [here](https://github.com/mkh-user/text-forge-modes) for available modes.
---
## 🔐 License
MIT 2025 Mahan Khalili. See more informations in LICENSE file.
---
## 🚀 Installing
- Requires desktop platforms (full checked in Windows)
### Get Core
#### From Releases
Just download Text Forge from Github releases page and run it! To keep our editor lightweight and clean, we don't include modes in the releases!
#### From Source
You need **Godot Engine** (4.4 or later) to run Text Forge. After get it, download or clone repo and open it with Godot. Then, just press `F5` to run project. To keep source repo clean and separated from modes, we don't include modes in this repo! (`modes/` folder is ignored)
### Get Modes & Packages
To get the **modes** you need, go to [this link](https://github.com/mkh-user/text-forge-modes/releases), download your modes, and extract them into the `modes` folder.
Also, You can find equipped **packages** for specific cases on [this page](https://github.com/mkh-user/text-forge-modes/wiki/Packages). Packages are a collection of mods that are useful for a specific type of user.
---
## 🙌 Credit
Crafted by Mahan Khalili, with an eye toward modularity, control, and clarity.