Skip to content

Refactor IDE plugin #776

@chippmann

Description

@chippmann

The IDE plugin is generally in pretty bad shape. It historically grew in functionality and had to be adapted to project and intellij changes over and over again without a significant architectural overhaul since it's inception.
Now with the rushed support of K2 mode which we need to support since the kotlin gradle plugin now requires it, thinks look even worse.

Hence I'd like to rewrite/refactor it and reduce it's scope to the really necessary parts for better maintainability. Additional features can be implemented by other ide plugins written by the community if needed.

For the base project I'd like to "just" support the following feature set (please comment if you think it should be altered):

  • class extending godot type
  • property/field type check (including null and lateinit checks)
  • signal and rpc function reference checks (on a best effort basis)
  • export and export hint type and annotation checks
  • quick fixes for the checks above where feasible
  • project setup wizard (with additional language drop down)

One special case is the core type modification check. It is very complicated and does not work reliably. I'd like to revisit it as well as part of the IDE plugin refactor, but i dare not to add it to the planned feature set above because of it's complexity. If deemed to complex during the refactor, I'd like to remove it for the time being until it can be reimplemented properly.

I deliberatly left out QOL features like #210 as they require more maintance and can somewhat easily be implemented in a community plugin. This is open for discussion though. But even if things like this should be added, I'd like to leave it out of the "initial" feature set of the rewrite to focus on the core parts and have a good architecture to build upon.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions