Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/20/15 12:16:25 (10 years ago)
Author:
jkarder
Message:

#2077:

  • added background parser to provide code completion for the scripted code
  • minor code changes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CodeEditor/HeuristicLab.CodeEditor/3.4/LanguageFeatures/CodeCompletion/CodeCompletionStrategy.cs

    r11700 r11800  
    2121
    2222using System.Linq;
     23using System.Threading;
     24using System.Threading.Tasks;
    2325using ICSharpCode.AvalonEdit.CodeCompletion;
    2426
     
    2628  internal abstract class CodeCompletionStrategy : ICodeCompletionStrategy {
    2729    protected readonly CodeEditor codeEditor;
     30    protected readonly Task backgroundParser;
    2831
    2932    protected CodeCompletionStrategy(CodeEditor codeEditor) {
    3033      this.codeEditor = codeEditor;
     34      backgroundParser = new Task(DoBackgroundParsing);
    3135    }
    3236
     
    3640    }
    3741
     42    public virtual void RunBackgroundParser() {
     43      backgroundParser.Start();
     44    }
     45
    3846    protected abstract CodeCompletionResult GetCodeCompletionResult(bool controlSpace);
     47    protected abstract void DoParseStep();
    3948
    4049    protected virtual void ApplyCodeCompletionData(CodeCompletionResult codeCompletionResult) {
     
    5766
    5867        var data = cw.CompletionList.CompletionData;
    59         foreach (var completion in codeCompletionResult.CompletionData.OrderBy(x => x.Text))
     68        var newData = codeCompletionResult.CompletionData.OrderBy(x => x.Text).ToArray();
     69        foreach (var completion in newData)
    6070          data.Add(completion);
    6171
     
    7787      }
    7888    }
     89
     90    protected virtual void DoBackgroundParsing() {
     91      while (!codeEditor.IsDisposed) {
     92        DoParseStep();
     93        Thread.Sleep(1000);
     94      }
     95    }
    7996  }
    8097}
Note: See TracChangeset for help on using the changeset viewer.