Affogato Editor
Finally, the powerful, extensible, and beautiful code editor workspace that Flutter Web needed.
Features
This is an outline of Affogato's existing and planned features. The version number indicates the first release where the feature will be made available.
Core Editor Functionality
| Feature | Sub-Features | Status |
|---|---|---|
| File Operations | Create, Open, Modify, Save | |
| Loading files from local FS via Orca | ||
| Loading files from VC/cloud storage | ||
| File Handling UI | Directory Tree | |
| Setting/Unsetting Active Document | ||
| Drag-and-drop files to move | ||
| Read-only file handling | ||
| Multi-Pane Support | Side-by-side panes | |
| Non-editor panes | ||
| Free resizing and layouting | ||
| Drag-and-drop files into panes | ||
| Status Bar | Current Language | |
| Basic Editor UI | Line numbers | |
| Breadcrumbs | ||
| VC diff indicators (sidebar) | ||
| Keyboard Commands | Custom keybindings to editor actions | |
| Text Editing | Bracket/quote matching | |
| Automatic indentation | ||
| Word wrapping | ||
| Code folding |
IDE Functionality
| Feature | Sub-Features | Status |
|---|---|---|
| Syntax Highlighting | Markdown | |
| Generic (HighlightJS) | ||
| Custom Affogato Language Bundle | ||
| Advanced Text Editing | Search-and-replace | |
| Multi-file search | ||
| Static Analysis | Semantic Highlighting | |
| Error Formatting UI | ||
| Linting | ||
| Language Server Protocol Support | ||
| Multi-caret editing | ||
| Code Execution | Intergated Terminal | |
| Multi-shell support | ||
| Shell type customisation | ||
| ANSI support | ||
| Interactive Notebooks | ||
| Version Control | Git commands | |
| Commit history browser | ||
| Merge conflict resolution UI | ||
| Local history for uncomitted files | ||
| File diffing (side-by-side) | ||
| IntelliSense | Inline suggestions UI | |
| Docstrings/basic suggestions | ||
| Snippets/user-defined shortcuts | ||
| Command Palette | ||
| Debugger | ||
| Refactoring | ||
| Real-Time Collaboration |
Customisation and Extensibility
| Feature | Sub-Features | Status |
|---|---|---|
| Configuration and Customisation | Styling configs | |
| Performance configs | ||
| Workspace configs and layout saving | ||
| Session persistence | ||
| Affogato theme bundle | ||
| User-defined widgets | ||
| Extensibility | 3rd-party extensions/plugins marketplace | |
| Extension management | ||
| Window API | ||
| Languages API | ||
| File Manager API | ||
| Extensions API | ||
| Events API |
Warning
Experimental features are subject to drastic changes, and dependent projects should not rely on those features until they reach a stable release.
Acknowledgements
The Affogato Project is an open-source project that would not have been possible without the invaluable and selfless contributions of the open-source community:
- Much love and respect to the Reqable project for:
-
the
re_highlightsubmodule which contains HighlightJS syntax highlighting rules rewritten in Dart. -
the amazing work on their own high-performance code editor,
re_editor, which, as I have come to realise, is an ambitious undertaking
-
- Many thanks to the open-source Seti UI Theme which maintains the icons used by the file explorers in VSCode and other editors.
- and to the FlutterIcon tool for helping convert the SVG icons to TTF files that can be imported into Flutter and used as
IconData.