private async void OnNewAnalysis(object sender, EventArgs e) { var bi = sender as PythonTextBufferInfo; if (bi == null) { Debug.Fail("Unexpected Sender type " + sender?.GetType() ?? "(null)"); return; } if (!_enabled && !_alwaysCreateSquiggle) { _taskProvider.Clear(bi.AnalysisEntry, VsProjectAnalyzer.UnresolvedImportMoniker); return; } var entry = bi.AnalysisEntry; if (entry == null) { return; } var missingImports = await entry.Analyzer.GetMissingImportsAsync(entry, bi.Buffer); if (missingImports == null) { return; } if (missingImports.Data.unresolved.Any()) { var translator = missingImports.GetTracker(missingImports.Data.version); if (translator != null) { var f = new TaskProviderItemFactory(translator); _taskProvider.ReplaceItems( entry, VsProjectAnalyzer.UnresolvedImportMoniker, missingImports.Data.unresolved.Select(t => f.FromUnresolvedImport( _services.Site, entry.Analyzer.InterpreterFactory as IPythonInterpreterFactoryWithDatabase, t.name, new SourceSpan( new SourceLocation(t.startIndex, t.startLine, t.startColumn), new SourceLocation(t.endIndex, t.endLine, t.endColumn) ) )).ToList() ); } } else { _taskProvider.Clear(entry, VsProjectAnalyzer.UnresolvedImportMoniker); } }
protected override async Task OnNewAnalysis(PythonTextBufferInfo bi, AnalysisEntry entry) { if (!Enabled && !_alwaysCreateSquiggle || bi?.Document == null || bi.Buffer?.Properties == null) { TaskProvider.Clear(bi.Filename, VsProjectAnalyzer.InvalidEncodingMoniker); return; } var snapshot = bi.CurrentSnapshot; var message = CheckEncoding(snapshot, bi.Document.Encoding, out var magicEncodingName, out var magicEncodingIndex); if (message != null) { if (!bi.Buffer.Properties.TryGetProperty <string>(VsProjectAnalyzer.InvalidEncodingMoniker, out var prevMessage) || prevMessage != message) { bi.Buffer.Properties[VsProjectAnalyzer.InvalidEncodingMoniker] = message; SourceSpan span; if (string.IsNullOrEmpty(magicEncodingName)) { var pt = new SnapshotPoint(snapshot, magicEncodingIndex).ToSourceLocation(); span = new SourceSpan(pt, new SourceLocation(pt.Line, int.MaxValue)); } else { span = new SnapshotSpan(snapshot, magicEncodingIndex, magicEncodingName.Length).ToSourceSpan(); } TaskProvider.ReplaceItems( bi.Filename, VsProjectAnalyzer.InvalidEncodingMoniker, new List <TaskProviderItem> { new TaskProviderItem( Services.Site, VsProjectAnalyzer.InvalidEncodingMoniker, message, span, VSTASKPRIORITY.TP_NORMAL, VSTASKCATEGORY.CAT_CODESENSE, true, bi.LocationTracker, snapshot.Version.VersionNumber ) }); } } else { TaskProvider.Clear(bi.Filename, VsProjectAnalyzer.InvalidEncodingMoniker); bi.Buffer.Properties.RemoveProperty(VsProjectAnalyzer.InvalidEncodingMoniker); } }
private async void OnNewAnalysis(AnalysisEntry entry, ITextBuffer buffer) { if (!_alwaysCreateSquiggle) { var service = _serviceProvider.GetPythonToolsService(); if (service == null || !service.GeneralOptions.UnresolvedImportWarning) { return; } } var missingImports = await entry.Analyzer.GetMissingImportsAsync(entry, buffer); if (missingImports != null) { var missing = missingImports.Data; if (missing.unresolved.Any()) { var translator = missingImports.GetTracker(missingImports.Data.version); if (translator != null) { var f = new TaskProviderItemFactory(translator); _taskProvider.ReplaceItems( entry, VsProjectAnalyzer.UnresolvedImportMoniker, missingImports.Data.unresolved.Select(t => f.FromUnresolvedImport( _serviceProvider, entry.Analyzer.InterpreterFactory as IPythonInterpreterFactoryWithDatabase, t.name, new SourceSpan( new SourceLocation(t.startIndex, t.startLine, t.startColumn), new SourceLocation(t.endIndex, t.endLine, t.endColumn) ) )).ToList() ); } } else { _taskProvider.Clear(entry, VsProjectAnalyzer.UnresolvedImportMoniker); } } }
protected override async Task OnNewAnalysis(PythonTextBufferInfo bi, AnalysisEntry entry) { if (!Enabled && !_alwaysCreateSquiggle || entry == null) { TaskProvider.Clear(bi.Filename, VsProjectAnalyzer.UnresolvedImportMoniker); return; } var missingImports = await entry.Analyzer.GetMissingImportsAsync(entry, bi.Buffer); if (missingImports == null) { return; } if (missingImports.Data.unresolved.Any()) { var translator = missingImports.GetTracker(missingImports.Data.version); if (translator != null) { var f = new TaskProviderItemFactory(translator); TaskProvider.ReplaceItems( bi.Filename, VsProjectAnalyzer.UnresolvedImportMoniker, missingImports.Data.unresolved.Select(t => f.FromUnresolvedImport( Services.Site, entry.Analyzer.InterpreterFactory as IPythonInterpreterFactoryWithDatabase, t.name, new SourceSpan( new SourceLocation(t.startLine, t.startColumn), new SourceLocation(t.endLine, t.endColumn) ) )).ToList() ); } } else { TaskProvider.Clear(bi.Filename, VsProjectAnalyzer.UnresolvedImportMoniker); } }