elementary / elementary/code

Plugin system redesign

Open
#201 6 comments 2 reactions 0 assignees View on GitHub
Priority: Low Status: In Progress
Dominant language
Vala
Stars
521
Forks
118
Avg merge
1d 8h
Merged PRs (30d)
14

Description

Currently Scratch in it's plugin interface exposes a few methods that "hook" it's widgets which can then be processed by the plugin in order to add additional functionality to e.g: HeaderBar, sidebar or the bottom bar.

While this works with current set of plugins, it will get harder and harder to introduce new ones that further improve the experience. An example of this would be the Outline plugin; for Vala it displays the symbol structure in the current opened document. There is the problem though, what if we want to also have Vala autocompletion? We probably need to create another plugin just for this, but we end up with two Vala compilers processing the same exact document that's opened both for completion and symbol visiting.

As a proposal, Scratch should expose those widgets, but in a different manner. Hooking widgets should be optional, and instead Scratch should expose and implement a set of different interfaces for common code functionalities like e.g: autocompletion, file manager and others. Currently those widgets are provided by the plugins themselves and there is no way to communicate between plugins. "Vala" or "C" should be one plugin that provides all the functionality that belongs to this language.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/48693024-plugin-system-redesign?utm_campaign=plugin&utm_content=tracker%2F61917289&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F61917289&utm_medium=issues&utm_source=github).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.