ZoneFlags.AutoEnable
For most plugins zone should be auto-enabled, otherwise no one enabled plugins' zone.
But I still didn't get plugin's item on the options page for disable/enable features.
I finally got appeared plugins' zone at options page, but due some bug in wave01, AutoEnabled zone is not possible to disable.

Yay! First pull request!
So, in that screenshot, is the ReSpeller checkbox disabled? Does it work if you create an activator that requires/activates the respeller feature zone?
Yep, it's checked, but disabled. Trying with explicit activator.
Yeah, finally works as supposed.

But explicit use of ZoneActivator requires a lot of boilerplate code:
namespace R
{
[ZoneActivator]
public class ReSpellerActivator : IActivate<IReSpellerZone>
{
public bool ActivatorEnabled()
{
return true;
}
}
[ZoneMarker]
public class ZoneMarker
{
}
}
namespace ReSpeller
{
[ZoneDefinition]
[ZoneDefinitionConfigurableFeature("ReSpeller", "Spell Checker for Resharper based on NHunspell library.", isInProductSection: false)]
public interface IReSpellerZone : IZone, IRequire<PsiFeaturesImplZone>
{
}
[ZoneMarker]
public class ZoneMarker : IRequire<IReSpellerZone>
{
}
}
Take into account that activator should be in separate namespace with own ZoneMarker. I am not sure - should we publish that workaround? Or, may be, just wait until bug with AutoEnable will be fixed.
Or, a little less code
namespace R
{
[ZoneMarker, ZoneActivator]
public class ReSpellerActivator : IActivate<IReSpellerZone>
{
public bool ActivatorEnabled()
{
return true;
}
}
}
namespace ReSpeller
{
[ZoneDefinition]
[ZoneDefinitionConfigurableFeature("ReSpeller", "Spell Checker for Resharper based on NHunspell library.", isInProductSection: false)]
public interface IReSpellerZone : IZone, IRequire<PsiFeaturesImplZone>
{
}
[ZoneMarker]
public class ZoneMarker : IRequire<IReSpellerZone>
{
}
}
Bleurgh. This is only required if we're setting up a feature, though, isn't it? If we don't add a feature, we don't need to define a zone definition. That said, I'm up for adding the workaround. We can always remove it when the bug's fixed.
In theory, each plugin should have own feature, if we want to disable them.
What about implicit zones created automatically by R# for each plugin, with an options page to disable them? It's a shame plugins have to implement a zone explicitly to be disabled, especially since installing/uninstalling them is much longer in v9.0.