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); } }
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); } }
private void OnNewAnalysis(object sender, EventArgs e) { if (!_alwaysCreateSquiggle && !_serviceProvider.GetPythonToolsService().GeneralOptions.UnresolvedImportWarning ) { return; } var entry = sender as IPythonProjectEntry; if (entry == null || string.IsNullOrEmpty(entry.ModuleName) || string.IsNullOrEmpty(entry.FilePath) ) { return; } var analysis = entry.Analysis; var analyzer = analysis != null ? analysis.ProjectState : null; if (analyzer == null) { return; } PythonAst ast; IAnalysisCookie cookie; entry.GetTreeAndCookie(out ast, out cookie); var snapshotCookie = cookie as SnapshotCookie; var snapshot = snapshotCookie != null ? snapshotCookie.Snapshot : null; if (ast == null || snapshot == null) { return; } var walker = new ImportStatementWalker(entry, analyzer); ast.Walk(walker); if (walker.Imports.Any()) { var f = new TaskProviderItemFactory(snapshot); _taskProvider.ReplaceItems( entry, VsProjectAnalyzer.UnresolvedImportMoniker, walker.Imports.Select(t => f.FromUnresolvedImport( _serviceProvider, analyzer.InterpreterFactory as IPythonInterpreterFactoryWithDatabase, t.Item1, t.Item2.GetSpan(ast) )).ToList() ); } else { _taskProvider.Clear(entry, VsProjectAnalyzer.UnresolvedImportMoniker); } }