Skip to content

Commit 1040355

Browse files
committed
Add config
1 parent ba37e7b commit 1040355

File tree

4 files changed

+39
-15
lines changed

4 files changed

+39
-15
lines changed

Server/Handlers/CompletionHandler.cs

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Microsoft.Extensions.Logging;
1+
using Microsoft.Extensions.Configuration;
2+
using Microsoft.Extensions.Logging;
23
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
34
using OmniSharp.Extensions.LanguageServer.Protocol.Document;
45
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
@@ -37,10 +38,15 @@ public override Task<CompletionItem> Handle(CompletionItem request, Cancellation
3738

3839
public override async Task<CompletionList> Handle(CompletionParams request, CancellationToken cancellationToken)
3940
{
40-
return GenerateCompletions(request, cancellationToken);
41+
var conf = await _configuration.GetScopedConfiguration(request.TextDocument.Uri, cancellationToken);
42+
var options = new ServerOptions();
43+
conf.GetSection("ShaderLab").Bind(options);
44+
return GenerateCompletions(request, options);
4145
}
4246

43-
protected override CompletionRegistrationOptions CreateRegistrationOptions(CompletionCapability capability, ClientCapabilities clientCapabilities)
47+
protected override CompletionRegistrationOptions CreateRegistrationOptions(
48+
CompletionCapability capability,
49+
ClientCapabilities clientCapabilities)
4450
=> new CompletionRegistrationOptions()
4551
{
4652
DocumentSelector = _documentSelector,
@@ -49,13 +55,15 @@ protected override CompletionRegistrationOptions CreateRegistrationOptions(Compl
4955
AllCommitCharacters = new Container<string>(new[] { "\n" })
5056
};
5157

52-
public CompletionList GenerateCompletions(CompletionParams request, CancellationToken cancellationToken)
58+
public CompletionList GenerateCompletions(
59+
CompletionParams request,
60+
ServerOptions options)
5361
{
5462
var uri = request.TextDocument.Uri;
5563

5664
var completions = new List<CompletionItem>();
5765
var keywords = new HashSet<string>();
58-
66+
5967
var dm = ShaderlabDataManager.Instance;
6068

6169
// Add functions into auto completion list
@@ -199,17 +207,21 @@ public CompletionList GenerateCompletions(CompletionParams request, Cancellation
199207

200208
// Add words in current file
201209
//
202-
foreach (var word in _workspace.BufferService.Tokens(uri))
210+
_logger.LogWarning("ooo: " + options.CompletionWord);
211+
if (options.CompletionWord)
203212
{
204-
if (!keywords.Contains(word) && word != current)
213+
foreach (var word in _workspace.BufferService.Tokens(uri))
205214
{
206-
completions.Add(new CompletionItem
215+
if (!keywords.Contains(word) && word != current)
207216
{
208-
Kind = CompletionItemKind.Text,
209-
Label = word,
210-
InsertText = word,
211-
Documentation = new MarkupContent { Kind = MarkupKind.Markdown, Value = string.Empty },
212-
});
217+
completions.Add(new CompletionItem
218+
{
219+
Kind = CompletionItemKind.Text,
220+
Label = word,
221+
InsertText = word,
222+
Documentation = new MarkupContent { Kind = MarkupKind.Markdown, Value = string.Empty },
223+
});
224+
}
213225
}
214226
}
215227

Server/Handlers/TextDocumentSyncHandler.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using MediatR;
2+
using Microsoft.Extensions.Configuration;
23
using Microsoft.Extensions.Logging;
34
using OmniSharp.Extensions.LanguageServer.Protocol;
45
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
@@ -57,6 +58,11 @@ public override async Task<Unit> Handle(DidChangeTextDocumentParams notification
5758
public override async Task<Unit> Handle(DidOpenTextDocumentParams notification, CancellationToken token)
5859
{
5960
DocumentUri uri = notification.TextDocument.Uri;
61+
62+
var conf = await _configuration.GetScopedConfiguration(uri, token);
63+
var options = new ServerOptions();
64+
conf.GetSection("ShaderLab").Bind(options);
65+
6066
string text = notification.TextDocument.Text;
6167
_workspace.Init(uri);
6268
_logger.LogWarning("didOpen: " + uri.Path);

Server/Program.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ private static void Configure(LanguageServerOptions options)
4949

5050
private static void ConfigureServices(IServiceCollection services)
5151
{
52-
services.AddSingleton(new ConfigurationItem { Section = "shaderlab" });
53-
services.AddSingleton(new ConfigurationItem { Section = "shader-ls.completion.word" });
52+
services.AddSingleton(new ConfigurationItem { Section = "ShaderLab" });
5453
services.AddSingleton(new DocumentSelector(
5554
new DocumentFilter { Pattern = "**/*.shader" },
5655
new DocumentFilter { Pattern = "**/*.cginc" },

Server/ServerOptions.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace ShaderLS
2+
{
3+
public class ServerOptions
4+
{
5+
public bool CompletionWord { get; set; }
6+
}
7+
}

0 commit comments

Comments
 (0)