Skip to content

Commit

Permalink
working on settings
Browse files Browse the repository at this point in the history
  • Loading branch information
van800 committed Dec 19, 2023
1 parent 7606942 commit f88d4ef
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 20 deletions.
7 changes: 5 additions & 2 deletions resharper/src/Application/Settings/GodotSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ namespace JetBrains.ReSharper.Plugins.Godot.Application.Settings
[SettingsKey(typeof(CodeEditingSettings), "Godot plugin settings")]
public class GodotSettings
{
[SettingsEntry(LanguageServerConnectionMode.StartEditorHeadless, "Different ways of utilizing LSP")]
public LanguageServerConnectionMode LanguageServerConnectionModeEntry;
[SettingsEntry(LanguageServerConnectionMode.StartEditorHeadless, "Different ways to connect LSP")]
public LanguageServerConnectionMode LanguageServerConnectionMode;

[SettingsEntry("127.0.0.1", "RemoteHost")]
public string RemoteHost;

[SettingsEntry(6005, "Remote host port")]
public int RemoteHostPort;

[SettingsEntry(true, "Use a random free port, supported only with future Godot builds")]
public bool UseDynamicPort;

// Debugging
[SettingsEntry(true, "Enable debugger extensions")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ public enum LanguageServerConnectionMode
{
Never,
ConnectRunningEditor,
StartEditor,
StartEditorHeadless
}
}
33 changes: 16 additions & 17 deletions resharper/src/Application/UI/Options/GodotOptionsPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,10 @@ public class GodotOptionsPage : BeSimpleOptionsPage
public const string PID = "GodotPluginSettings";
public const string Name = "Godot Engine";

// private static readonly Expression<Func<GodotSettings, bool>> ourEnabledProperty =
// s => s.LanguageServerConnectionModeEntry != LanguageServerConnectionMode.Never;
private static readonly Expression<Func<GodotSettings, LanguageServerConnectionMode>> ourLanguageServerConnectionMode =
s => s.LanguageServerConnectionMode;

private static readonly Expression<Func<GodotSettings, string>> ourHostNameAccessor =
s => s.RemoteHost;
private static readonly Expression<Func<GodotSettings, bool>> ourUseDynamicPort = s => s.UseDynamicPort;

private static readonly Expression<Func<GodotSettings, int>> ourHostPortAccessor =
s => s.RemoteHostPort;
Expand All @@ -44,25 +43,25 @@ private void AddNetworkSection()
AddHeader("Network");
using (Indent())
{
AddComboOption((GodotSettings s) => s.LanguageServerConnectionModeEntry,
"Utilizing LSP server:", string.Empty, string.Empty,
AddComboOption((GodotSettings s) => s.LanguageServerConnectionMode,
"Connecting LSP server:", string.Empty, string.Empty,
new RadioOptionPoint(LanguageServerConnectionMode.StartEditorHeadless, "Automatically start headless LSP server"),
new RadioOptionPoint(LanguageServerConnectionMode.StartEditor, "Automatically start Godot Editor, if it is not running"),
new RadioOptionPoint(LanguageServerConnectionMode.ConnectRunningEditor, "Wait for the Godot Editor"),
new RadioOptionPoint(LanguageServerConnectionMode.ConnectRunningEditor, "Attempt to connect the running Godot Editor"),
new RadioOptionPoint(LanguageServerConnectionMode.Never, "Never use LSP")
);
AddKeyword("Language server");

AddTextBox(ourHostNameAccessor, "Host");
AddIntOption(ourHostPortAccessor, "Port");
// BindToEnabledProperty(AddTextBox(ourHostNameAccessor, "Host"), ourEnabledProperty);
// BindToEnabledProperty(AddIntOption(ourHostPortAccessor, "Port"), ourEnabledProperty);
// AddTextBox(ourHostNameAccessor, "Host"); // host is always localhot, lets not allow changing it.
var useDynamic = AddBoolOption(ourUseDynamicPort, "Use a random free port",
toolTipText: "Only supported by the future Godot builds");

var portOption = AddIntOption(ourHostPortAccessor, "Port");
AddBinding(portOption, BindingStyle.IsVisibleProperty, ourUseDynamicPort, enable => !enable);
AddBinding(portOption, BindingStyle.IsVisibleProperty, ourLanguageServerConnectionMode,
mode => mode is not LanguageServerConnectionMode.Never);
AddBinding(useDynamic, BindingStyle.IsVisibleProperty, ourLanguageServerConnectionMode,
mode => mode is LanguageServerConnectionMode.StartEditorHeadless);
}
}

private void BindToEnabledProperty(BeControl option, Expression<Func<GodotSettings, bool>> setting)
{
AddBinding(option, BindingStyle.IsEnabledProperty, setting, enable => enable);
}
}
}

0 comments on commit f88d4ef

Please sign in to comment.