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  stable - 0.1.0
Loading files from local FS via Orca  underway - 2.0.0
Loading files from VC/cloud storage  future - --
File Handling UI Directory Tree  stable - 1.0.0
Setting/Unsetting Active Document  stable - 1.0.0
Drag-and-drop files to move  underway - 0.2.0
Read-only file handling  stable - 1.0.0
Multi-Pane Support Side-by-side panes  underway - 0.2.0
Non-editor panes  future - --
Free resizing and layouting  future - --
Drag-and-drop files into panes  future - --
Status Bar Current Language stable - 1.0.0
Basic Editor UI Line numbers stable - 1.0.0
Breadcrumbs stable - 1.0.0
VC diff indicators (sidebar) future - --
Keyboard Commands Custom keybindings to editor actions underway - 0.0.2
Text Editing Bracket/quote matching stable - 1.0.0
Automatic indentation stable - 1.0.0
Word wrapping future - --
Code folding stable - 1.0.0

IDE Functionality

Feature Sub-Features Status
Syntax Highlighting Markdown stable - 1.0.0
Generic (HighlightJS) stable - 1.0.0
Custom Affogato Language Bundle future - --
Advanced Text Editing Search-and-replace future - --
Multi-file search future - --
Static Analysis Semantic Highlighting future - --
Error Formatting UI underway - 0.0.2
Linting future - --
Language Server Protocol Support future - --
Multi-caret editing future - --
Code Execution Intergated Terminal future - --
Multi-shell support future - --
Shell type customisation future - --
ANSI support future - --
Interactive Notebooks future - --
Version Control Git commands community contrib - --
Commit history browser community contrib - --
Merge conflict resolution UI community contrib - --
Local history for uncomitted files community contrib - --
File diffing (side-by-side) future - --
IntelliSense Inline suggestions UI experimental - 0.0.1
Docstrings/basic suggestions experimental - 0.0.1
Snippets/user-defined shortcuts future - --
Command Palette future - --
Debugger not included - --
Refactoring not included - --
Real-Time Collaboration future - --

Customisation and Extensibility

Feature Sub-Features Status
Configuration and Customisation Styling configs experimental - 0.0.1
Performance configs experimental - 0.0.1
Workspace configs and layout saving experimental - 0.0.1
Session persistence experimental - 0.0.1
Affogato theme bundle stable - 1.0.0
User-defined widgets future - --
Extensibility 3rd-party extensions/plugins marketplace future - --
Extension management future - --
Window API experimental - 0.0.1
Languages API experimental - 0.0.1
File Manager API experimental - 0.0.1
Extensions API experimental - 0.0.1
Events API experimental - 0.0.1

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_highlight submodule 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.