示例#1
0
 private void AnalysisUpdated(IAnalysisResult analysisResult, RescanReason reason, CancellationToken cancellationToken)
 {
     if (reason == RescanReason.ContentChanged)
     {
         ThreadHelper.JoinableTaskFactory.RunAsync(() => UpdateTagSpansAsync(analysisResult.Snapshot, analysisResult.Scopes, cancellationToken));
     }
 }
示例#2
0
 private void UpdateFunctionList(IAnalysisResult analysisResult, RescanReason reason, CancellationToken cancellationToken)
 {
     if (reason == RescanReason.ContentChanged)
     {
         UpdateFunctionList(analysisResult, cancellationToken);
     }
 }
 public void Rescan(RescanReason rescanReason, CancellationToken cancellationToken)
 {
     if (_tokenizer.CurrentResult == null)
     {
         return;
     }
     ForceRescan(_tokenizer.CurrentResult, rescanReason, cancellationToken);
 }
示例#4
0
        private void AnalysisUpdated(IAnalysisResult analysisResult, RescanReason reason, CancellationToken ct)
        {
            _analysisResult = analysisResult;

            if (reason != RescanReason.ContentChanged)
            {
                ClassificationChanged?.Invoke(this, new ClassificationChangedEventArgs(new SnapshotSpan(analysisResult.Snapshot, 0, analysisResult.Snapshot.Length)));
            }
        }
        private void Rescan(ITokenizerResult tokenizerResult, RescanReason rescanReason, CancellationToken cancellationToken)
        {
            if (_resultsRequests.ContainsKey(tokenizerResult.Snapshot))
            {
                return;
            }

            _resultsRequests.Add(tokenizerResult.Snapshot, RunAnalysisAsync(tokenizerResult, rescanReason, cancellationToken));
        }
示例#6
0
        private void AnalysisUpdated(IAnalysisResult analysisResult, RescanReason reason, CancellationToken ct)
        {
            if (reason != RescanReason.ContentChanged)
            {
                return;
            }

            _currentResult = analysisResult;
            UpdateIndentGuides();
        }
        private async Task <IAnalysisResult> RunParserAsync(ITokenizerResult tokenizerResult, RescanReason reason, CancellationToken cancellationToken)
        {
            // TODO: for the future  "GoTo include" feature
            var includes = new List <IDocument>();

            try
            {
                var parserResult = await _parser.RunAsync(_document, tokenizerResult.Snapshot, tokenizerResult.Tokens, cancellationToken);

                var analysisResult = new AnalysisResult(_document, parserResult, includes, tokenizerResult.Snapshot);

                CurrentResult = analysisResult;
                AnalysisUpdated?.Invoke(analysisResult, reason, cancellationToken);
                return(analysisResult);
            }
            catch (AggregateException /* tokenizer changed but plinq haven't checked CancellationToken yet */)
            {
                throw new OperationCanceledException();
            }
        }
 private Task <IAnalysisResult> RunAnalysisAsync(ITokenizerResult tokenizerResult, RescanReason reason, CancellationToken cancellationToken) =>
 Task.Run(() => RunParserAsync(tokenizerResult, reason, cancellationToken), cancellationToken);
 private void ForceRescan(ITokenizerResult tokenizerResult, RescanReason rescanReason, CancellationToken cancellationToken)
 {
     _resultsRequests.Remove(tokenizerResult.Snapshot);
     _resultsRequests.Add(tokenizerResult.Snapshot, RunAnalysisAsync(tokenizerResult, rescanReason, cancellationToken));
 }
示例#10
0
 private void UpdateErrorMarker(IAnalysisResult analysisResult, RescanReason rescanReason, CancellationToken cancellationToken) =>
 Task.Run(() => UpdateSpanAdornments(analysisResult, cancellationToken), cancellationToken);