in resharper/src/Application/UI/Options/GodotOptionsPage.cs [74:118]
private void AddGdScriptSection()
{
AddHeaderWithoutCapitalization(Strings.GDScriptSupport_Text);
using (Indent())
{
AddComboOption((GodotSettings s) => s.LanguageServerConnectionMode,
Strings.GDScript_ConnectingLSPServer_Text, string.Empty, string.Empty,
new RadioOptionPoint(LanguageServerConnectionMode.StartEditorHeadless,
Strings.GDScript_AutomaticallyStartHeadlessLSPServer_Text),
new RadioOptionPoint(LanguageServerConnectionMode.ConnectRunningEditor,
Strings.GDScript_AttemptToConnectTheRunningGodotEditor_Text),
new RadioOptionPoint(LanguageServerConnectionMode.Never, Strings.GDScript_NeverUseLSP_Text)
);
AddKeyword(Strings.GDScript_LanguageServer_Text);
// AddTextBox(ourHostNameAccessor, "Host"); // host is always localhot, lets not allow changing it.
// Godot 4.2.1 and later
// https://github.com/godotengine/godot/pull/81844/commits/a5b7c4c415ff9bf7e368371ddb88601bcb9e1232
// and Godot 3.6 https://github.com/godotengine/godot/pull/82025
var useDynamic = AddBoolOption(ourUseDynamicPort, Strings.GDScript_UseARandomFreePortSupportedInGodot_Text);
var portOption = AddIntOption(ourHostPortAccessor, Strings.GDScript_LSP_Port_Text);
// AddBinding(portOption, BindingStyle.IsEnabledProperty, ourUseDynamicPort, enable => !enable);
var sourceProperty = OptionsSettingsSmartContext.GetValueProperty(Lifetime, ourUseDynamicPort);
sourceProperty
.Change.Advise(Lifetime, () =>
{
// RIDER-104651 Visibility of a BeControl based on other settings works inconsistently
portOption.Enabled.Value = !sourceProperty.Value; // this always works
portOption.Visible.Value =
sourceProperty.Value
? ControlVisibility.Collapsed
: ControlVisibility
.Visible; // this doesn't work initially, but starts working when you change sourceProperty back and forth
});
// AddBinding(portOption, BindingStyle.IsEnabledProperty, ourLanguageServerConnectionMode,
// mode => mode is not LanguageServerConnectionMode.Never);
AddBinding(useDynamic, BindingStyle.IsEnabledProperty, ourLanguageServerConnectionMode,
mode => mode is LanguageServerConnectionMode.StartEditorHeadless);
}
}