private static Dictionary <Uri, ParseResult> ParseBuiltIns(ParsedDocumentsManager parsedDocumentsManager) { var symbolInfoPath = Path.Combine(AppDir, "DaedalusBuiltins", "symbols.json"); Dictionary <string, string> documentations = null; if (File.Exists(symbolInfoPath)) { var symbolInfos = JsonSerializer.Deserialize <List <SymbolDocumentation> >(File.ReadAllText(symbolInfoPath, Encoding.UTF8)); documentations = symbolInfos.ToDictionary(x => x.Name, x => x.Documentation, StringComparer.OrdinalIgnoreCase); } var externals = new Dictionary <Uri, ParseResult>(); var buildInsPath = Path.Combine(AppDir, "DaedalusBuiltins"); foreach (var builtIn in Directory.EnumerateFiles(buildInsPath, "*.d")) { var builtInUri = new Uri(builtIn); parsedDocumentsManager.Parse(builtInUri, File.ReadAllText(builtIn, Encoding.GetEncoding(1250)), default); var parsedResult = parsedDocumentsManager.GetParseResult(builtInUri); externals[builtInUri] = parsedResult; if (documentations != null) { foreach (var symbol in parsedResult.EnumerateSymbols()) { if (documentations.TryGetValue(symbol.Name, out var d)) { symbol.Documentation = d; } } } } return(externals); }
private static void ParseSrc( string srcPath, Dictionary <Uri, ParseResult> externals, OmniSharp.Extensions.LanguageServer.Protocol.Server.ILanguageServer router, ParsedDocumentsManager parsedDocumentsManager) { router.Window.LogInfo($"Parsing Gothic.Src. This might take a while."); var parseResults = FastCompiler.ParseSrc(srcPath, externals); foreach (var parseResult in parseResults) { parsedDocumentsManager.UpdateParseResult(parseResult.Key, parseResult.Value); } router.Window.LogInfo($"Parsed {parseResults.Count} scripts"); var diagnostics = new List <PublishDiagnosticsParams>(); foreach (var kvp in parseResults) { if (kvp.Value.SyntaxErrors.Count > 0) { diagnostics.Add(new PublishDiagnosticsParams { Uri = kvp.Key, Diagnostics = new Container <Diagnostic>( kvp.Value.SyntaxErrors.Select(x => new Diagnostic { Severity = ParsedDocumentsManager.DiagnosticSeverityFromSyntaxError(x), Message = x.ErrorCode.Description, Code = x.ErrorCode.Code, Range = new OmniSharp.Extensions.LanguageServer.Protocol.Models.Range( new Position(x.Line - 1, x.Column), new Position(x.Line - 1, x.Column) ) })) }); } } foreach (var dp in diagnostics) { router.Document.PublishDiagnostics(dp); } }
public CompletionHandler(ParsedDocumentsManager documentsManager, BufferManager bufferManager) { this.documentsManager = documentsManager; this.bufferManager = bufferManager; }
public HoverHandler(ParsedDocumentsManager documentsManager, BufferManager bufferManager) { this.documentsManager = documentsManager; this.bufferManager = bufferManager; }
public GoToDefinitionHandler(ParsedDocumentsManager documentsManager, BufferManager bufferManager) { this.documentsManager = documentsManager; this.bufferManager = bufferManager; }
public TextDocumentSyncHandler(ILanguageServer router, BufferManager bufferManager, ParsedDocumentsManager documentsManager) { this._router = router; this._bufferManager = bufferManager; this.documentsManager = documentsManager; }
public DocumentSymbolHandler(ParsedDocumentsManager documentsManager) { this.documentsManager = documentsManager; }
public SignatureInfoHandler(ParsedDocumentsManager documentsManager, BufferManager bufferManager) { this.documentsManager = documentsManager; this.bufferManager = bufferManager; }