diff --git a/.nuget/NuGet.exe b/.nuget/NuGet.exe index 324daa842..9f8781de0 100644 Binary files a/.nuget/NuGet.exe and b/.nuget/NuGet.exe differ diff --git a/Nitra/ClientServer/Nitra.ClientServer.Server/Lsp/LspProtocolAdapter.n b/Nitra/ClientServer/Nitra.ClientServer.Server/Lsp/LspProtocolAdapter.n index 5abb47561..ab874ee67 100644 --- a/Nitra/ClientServer/Nitra.ClientServer.Server/Lsp/LspProtocolAdapter.n +++ b/Nitra/ClientServer/Nitra.ClientServer.Server/Lsp/LspProtocolAdapter.n @@ -66,6 +66,7 @@ namespace Nitra.ClientServer.Server.Lsp _reader.UnknownRequestHandler += UnknownHandler; + _reader.RegisterHandler("$/fileActivatedNotification", FileActivated); _reader.RegisterHandler("$/cancelRequest", CancelRequest); _reader.RegisterHandler(Methods.Initialize, Initialize); _reader.RegisterHandler(Methods.Shutdown, Shutdown); @@ -83,6 +84,7 @@ namespace Nitra.ClientServer.Server.Lsp _reader.RegisterHandler(Methods.TextDocumentDidSave, TextDocument_DidSave); _reader.RegisterHandler(Methods.WorkspaceDidChangeConfiguration, Workspace_DidChangeConfiguration); _reader.RegisterHandler(Methods.WorkspaceDidChangeWatchedFiles, Workspace_DidChangeWatchedFiles); + } public Dispose() : void @@ -110,13 +112,16 @@ namespace Nitra.ClientServer.Server.Lsp match (message) { - | FindSymbolReferences(_span, symbols, tag) => CompleteRequest(tag, symbols) - | Hint(text, _span, tag) => CompleteRequest(tag, text) - | CompleteWord(id, _span, completionList) => CompleteWord(message.FileId, completionList, id) + | FindSymbolReferences(_span, symbols, tag) => CompleteRequest(tag, symbols); + | Hint(text, _span, tag) => CompleteRequest(tag, text); + | CompleteWord(id, _span, completionList) => CompleteWord(message.FileId, completionList, id); //| ProjectLoadingMessages (projectId, messages) => SendCompilerMessagesToClient(projectId, message.FileId, messages); | ParsingMessages (projectId, messages) => lock (_locker) SendCompilerMessagesToClient(projectId, message.FileId, messages, pass=0); | MappingMessages (projectId, messages) => lock (_locker) SendCompilerMessagesToClient(projectId, message.FileId, messages, pass=1); | SemanticAnalysisMessages(projectId, messages) => lock (_locker) SendCompilerMessagesToClient(projectId, message.FileId, messages, pass=2); + | KeywordsHighlightingCreated as khc => WriteNotification(LspNotification("$/keywordHighlight"), new (uri = _solution.GetFileUri(khc.FileId), spanInfos = khc.spanInfos)); + | SymbolsHighlightingCreated as shc => WriteNotification(LspNotification("$/symbolHighlight"), new (uri = _solution.GetFileUri(shc.FileId), spanInfos = shc.spanInfos)); + | LanguageLoaded as ll => WriteNotification(LspNotification("$/languageLoaded"), new (SpanClassInfo = ll.spanClassInfos)); | _ => () } } @@ -180,6 +185,14 @@ namespace Nitra.ClientServer.Server.Lsp WriteError(id, LspErrorCode.MethodNotFound, method) } + private FileActivated(doc: TextDocumentItem): void + { + Log.Message($"LSP -> $$/fileActivatedNotification file=$(doc.Uri)", ConsoleColor.Cyan); + def fileId = _solution.GetFileId(doc.Uri); + foreach (project in _solution.GetProjects(fileId)) + _router.AddMessage(ClientMessage.FileActivated(project.ProjectId, fileId, FileVersion(doc.Version))); + } + private CancelRequest(p : CancelParams) : void { Log.Message($"LSP -> $$/cancelRequest Id=$(p.Id)", ConsoleColor.Cyan); diff --git a/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n b/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n index 777c56feb..68ac0f07e 100644 --- a/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n +++ b/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n @@ -133,7 +133,7 @@ namespace DotNet Debug.WriteLine("SupportsInheritanceTypeSymbol(IsBaseTypeSetEvaluated=true, IsMemberTableEvaluated=false)"); assert2(false); - | _ => assert2(false); + | _ => (); //assert2(false); } foreach (type in ancestorTypes)