We are developing a plugin https://plugins.jetbrains.com/plugin/18944-symflower-beta- that we want to equip with some newer features that use the "CodeVision" feature. However, before we can release the first iteration of these features we were baffled that we cannot disable the feature, if the API does not exist with a version. So we have some questions which we could not answer with existing documentation or questions of this forum.
- a. https://github.com/JetBrains/intellij-community/blob/master/platform/lang-impl/src/com/intellij/codeInsight/codeVision/CodeVisionProvider.kt is marked as "experimental. However, how does one identify which API was introduced with which version? It seems that the only chance one has is to look at the Git history and figure out the version somehow through that history?
- b. Does experimental mean, that the API is still changing? What happens when the API changes, are then all releases broken that use the old API?
- c. We shortly tried with IntelliJ 2021 which seems to not have the CodeVision API, and did not even build. So the question is open for us, how do we release multiple versions of our plugin, that allow different API usages? Or in other words: How can we disable feature A if version X does not provide the API for featuer A?
- d. All of that made us wonder how to figure out which versions of IntelliJ(and Goland, and ...) are currently used by a plugin? In the analytics of the plugin administration one can see metrics about the type of editor (IntelliJ, Goland, ...) but not for the versions. Where can one find that information?
- e. Can one say that in the end a user should update/upgrade anyway? And we should not care about versioning of the editor?
I think these questions are also interesting to other plugin developers, as one should be very careful not to break functionality for existing users.
Thanks so much and cheers,