diff --git a/src/Cake.VisualStudio.csproj b/src/Cake.VisualStudio.csproj index bf95ddd..51fbcb0 100644 --- a/src/Cake.VisualStudio.csproj +++ b/src/Cake.VisualStudio.csproj @@ -45,7 +45,7 @@ Properties Cake.VisualStudio Cake.VisualStudio - v4.6 + v4.6.1 true true true @@ -99,6 +99,7 @@ + @@ -247,6 +248,12 @@ True + + ..\packages\Microsoft.VisualStudio.LanguageServer.Client.15.8.3057\lib\net461\Microsoft.VisualStudio.LanguageServer.Client.dll + + + ..\packages\Microsoft.VisualStudio.LanguageServer.Protocol.15.8.3057\lib\net461\Microsoft.VisualStudio.LanguageServer.Protocol.dll + ..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dll True @@ -332,23 +339,27 @@ ..\packages\Microsoft.VisualStudio.TextManager.Interop.8.0.8.0.50727\lib\Microsoft.VisualStudio.TextManager.Interop.8.0.dll True - - ..\packages\Microsoft.VisualStudio.Threading.15.0.240\lib\net45\Microsoft.VisualStudio.Threading.dll - True + + ..\packages\Microsoft.VisualStudio.Threading.15.3.20\lib\net45\Microsoft.VisualStudio.Threading.dll ..\packages\Microsoft.VisualStudio.Utilities.15.0.26201\lib\net45\Microsoft.VisualStudio.Utilities.dll True - - ..\packages\Microsoft.VisualStudio.Validation.15.0.82\lib\net45\Microsoft.VisualStudio.Validation.dll - True + + ..\packages\Microsoft.VisualStudio.Validation.15.3.15\lib\net45\Microsoft.VisualStudio.Validation.dll + + + ..\packages\Newtonsoft.Json.6.0.6\lib\net45\Newtonsoft.Json.dll False + + ..\packages\StreamJsonRpc.1.2.8\lib\net45\StreamJsonRpc.dll + @@ -356,6 +367,7 @@ + diff --git a/src/ContentType/CakeContentTypeDefinition.cs b/src/ContentType/CakeContentTypeDefinition.cs index 051da27..4c9209e 100644 --- a/src/ContentType/CakeContentTypeDefinition.cs +++ b/src/ContentType/CakeContentTypeDefinition.cs @@ -4,6 +4,7 @@ using System.ComponentModel.Composition; using Cake.VisualStudio.Helpers; +using Microsoft.VisualStudio.LanguageServer.Client; using Microsoft.VisualStudio.Utilities; namespace Cake.VisualStudio.ContentType @@ -14,6 +15,7 @@ public sealed class CakeContentTypeDefinition [Name(Constants.CakeContentType)] [BaseDefinition(Constants.BaseContentType)] [BaseDefinition(Constants.RoslynContentType)] + [BaseDefinition(CodeRemoteContentDefinition.CodeRemoteContentTypeName)] public ContentTypeDefinition ICakeContentTypeDefinitionContentType { get; set; } [Export(typeof(FileExtensionToContentTypeDefinition))] diff --git a/src/LanguageClient/LanguageClient.cs b/src/LanguageClient/LanguageClient.cs new file mode 100644 index 0000000..cbed99b --- /dev/null +++ b/src/LanguageClient/LanguageClient.cs @@ -0,0 +1,73 @@ +using Cake.VisualStudio.Helpers; +using Microsoft.VisualStudio.LanguageServer.Client; +using Microsoft.VisualStudio.Threading; +using Microsoft.VisualStudio.Utilities; +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace Cake.VisualStudio.LanguageClient +{ + [ContentType(Constants.CakeContentType)] + [Export(typeof(ILanguageClient))] + public class LanguageClient : ILanguageClient + { + public string Name => "Cake Language Extension"; + + public IEnumerable ConfigurationSections => null; + + public object InitializationOptions => null; + + public IEnumerable FilesToWatch => null; + + public event AsyncEventHandler StartAsync; + public event AsyncEventHandler StopAsync; + + public async Task ActivateAsync(CancellationToken token) + { + await Task.Yield(); + + var info = new ProcessStartInfo + { + FileName = @"C:\temp\omnisharp\omnisharp.exe", + Arguments = $@"-lsp", + RedirectStandardInput = true, + RedirectStandardOutput = true, + UseShellExecute = false, + CreateNoWindow = true + }; + + var process = new Process + { + StartInfo = info + }; + + if (process.Start()) + { + return new Connection(process.StandardOutput.BaseStream, process.StandardInput.BaseStream); + } + + return null; + } + + public async Task OnLoadedAsync() + { + await StartAsync?.InvokeAsync(this, EventArgs.Empty); + } + + public Task OnServerInitializedAsync() + { + return Task.CompletedTask; + } + + public Task OnServerInitializeFailedAsync(Exception e) + { + return Task.CompletedTask; + } + } +} diff --git a/src/app.config b/src/app.config index bb10a4c..df66d64 100644 --- a/src/app.config +++ b/src/app.config @@ -28,12 +28,24 @@ - + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/src/packages.config b/src/packages.config index 25e3245..d5487a4 100644 --- a/src/packages.config +++ b/src/packages.config @@ -5,6 +5,8 @@ + + @@ -23,10 +25,12 @@ - + - + + +