Extension editor is the one tool used to create and permissionlessly publish an extension.
As extension do not rely on existing languages or frameworks barrier to entry is significant.
The following points are considered to improve the developer experience:
guidance to initiate an extension
cues to easily build bit by bit
feedback to make sure it will work as expected
From zero to hero
Add more examples, templates and one click option to create an extension skeleton.
A feature complete editor
Improve the editor basic features to match common expectations.
Never loose work
It should not be possible to loose the result of a work session.
Indivual extensions are saved locally. All extensions ever edited can be retrieved via a workspace style panel.
Improve syntax navigation
Matching parens and nesting level are visualized using colors.
Easily identify when a block syntax is correct.
Semantic highlighting: each variable is identifyed by a unique color (https://medium.com/@evnbr/coding-in-color-3a6db2743a1e)
References (events, views) are colored and can be navigated.
Completion and easy doc access is provided for all supported primitives.
A reference can be navigated on user clicks. A query can be listened to (data show inline) (LightTable watch https://www.youtube.com/watch?v=d8-b6QEN-rk)
An event can be triggered with user provided data.
Destructuring is facilitated.
Prevent creation of invalid extension
The editor is not a regular text editor. Users can’t randomly edit extension, making it mostly read-only.
Changes can only be introduced semantically, via custom actions.
New pimitives can only be added via a custom editor action. Primitives children can be added. Text element and properties can be edited.
Renaming a custom primitive will rename all its usages.