# BareCode

**BareCode – Schlanker Code-Editor für Web-Entwickler**  
Version 1.1.0

Kompiliert sauber auf **Linux**, **Windows** und **Haiku**.

---

## Features

| Feature | Details |
|---|---|
| Projektbaum | Linkes Panel — zeigt nur das gewählte Projektverzeichnis |
| Tabs | Mehrere Dateien gleichzeitig, verschiebbar und schließbar |
| Änderungsindikator | ● im Tab-Titel bei ungespeicherten Änderungen |
| Syntax-Highlighting | HTML, PHP, CSS, C/C++ inkl. mehrzeiliger Kommentare |
| Zeilennummern | Eigener Gutter, aktuelle Zeile hervorgehoben |
| Einrück-Führungslinien | Vertikale Linien wie in VS Code |
| Auto-Indent | Einrückungstiefe wird bei Enter übernommen |
| Tab / Shift+Tab | Ein- und Ausrücken, auch für mehrere Zeilen gleichzeitig |
| Smart Backspace | Springt zur vorherigen Tab-Stop-Position |
| Speichern | Speichern, Speichern unter, Alles speichern |
| Suchen & Ersetzen | Einzeln, Alle, In Auswahl, Regex, Live-Hervorhebung |
| In Dateien suchen | Rekursive Projektsuche mit Ergebnisliste, direkt zur Zeile |
| Dark / Light Mode | Umschaltbar, wird gespeichert |
| Session | Geöffnete Dateien und aktiver Tab werden wiederhergestellt |

---

## Projektstruktur

```
BareCode/
├── CMakeLists.txt
├── main.cpp
├── resources/
│   ├── resources.qrc
│   └── icon_*.png
└── src/
    ├── core/         # MainWindow, ProjectManager, Settings, ThemeManager, IPlugin
    ├── editor/       # EditorPanel, EditorTab, CodeEditor, SearchPanel, FileSearchPanel
    ├── filetree/     # FileTreePanel
    └── highlighter/  # SyntaxHighlighter, HighlighterFactory
```

Jedes Unterverzeichnis kompiliert als eigene statische Bibliothek.

---

## Abhängigkeiten & Bauen

### Linux

**Abhängigkeiten (Beispiel Ubuntu/Debian):**
```bash
sudo apt install cmake qt6-base-dev qt6-base-dev-tools libqt6concurrent6
```

**Abhängigkeiten (Arch/Manjaro):**
```bash
sudo pacman -S cmake qt6-base
```

**Bauen:**
```bash
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
./build/BareCode
```

**Installieren:**
```bash
sudo cmake --install build
```

---

### Windows (Visual Studio)

**Abhängigkeiten:**
- [Qt6](https://www.qt.io/download) (Komponenten: Qt6 Base, Qt6 Concurrent)
- CMake ≥ 3.16
- Visual Studio 2019 oder neuer

```bat
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
build\Release\BareCode.exe
```

**Windows Installer erstellen** (mit [Inno Setup](https://jrsoftware.org/isinfo.php)):
```bat
windeployqt --release build\Release\BareCode.exe
```
Danach das Inno Setup Skript ausführen.

---

### Haiku

**Abhängigkeiten:**
```bash
pkgman install qt6_base qt6_base_devel
```

> **Hinweis:** `qt6_base_devel` enthält auf Haiku sowohl die Header als auch
> die Build-Tools (`moc`, `rcc`, `qmake`). Getestet auf Haiku R1/beta5.

**Bauen:**
```bash
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
./build/BareCode
```

**Installieren:**
```bash
cmake --install build
```

> Nach der Installation wird `mimeset` automatisch aufgerufen um den
> MIME-Typ zu registrieren, damit BareCode im Haiku Tracker korrekt
> als Anwendung erkannt wird.

---

## Tastaturkürzel

| Aktion | Kürzel |
|---|---|
| Datei öffnen | Strg+O |
| Neue Datei | Strg+N |
| Projekt öffnen | Strg+Shift+O |
| Speichern | Strg+S |
| Speichern unter | Strg+Shift+A |
| Alles speichern | Strg+Shift+S |
| Suchen / Ersetzen | Strg+F |
| In Dateien suchen | Strg+Shift+F |
| Dark Mode | Strg+Shift+D |

---

## Erweitern

### Neuen Highlighter hinzufügen

1. Subklasse von `SyntaxHighlighter` in `src/highlighter/` erstellen
2. `m_rules` im Konstruktor befüllen (siehe `CppHighlighter` als Vorlage)
3. Dateiendung in `HighlighterFactory.cpp` registrieren

Keine weiteren Dateien müssen geändert werden.

### Neues Panel / Plugin hinzufügen

1. `IPlugin`-Interface aus `src/core/IPlugin.h` implementieren
2. `QWidget`-Subklasse für die UI erstellen
3. In `MainWindow` instanziieren und verdrahten

---

## Code-Stil

Allman-Klammerstil, C++17 durchgehend.

---

## Links

- Website: [www.projekt-hirnfrei.de](https://www.projekt-hirnfrei.de)
- Discord: [discord.projekt-hirnfrei.de](https://discord.projekt-hirnfrei.de)
