Extensions editor

Extension editor

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

Semantic highlighting: each variable is identifyed by a unique color (Coding in color. How to make syntax highlighting more… | by Evan Brooks | Medium)

References (events, views) are colored and can be navigated.

Documentation

Completion and easy doc access is provided for all supported primitives.

Navigation

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.

Resource

2 Likes

I feel like this should be integrated into Embark 4 since there’s already a web ide in Cockpit, as a plugin?

Great point! That would allow to have greater smart contract integration.
I need to dicsuss with embark team to see how extensible cockpit is.