Exemplo n.º 1
0
        public Task OnCommandUpdatedAsync(IReplCommandInput command, CancellationToken cancellationToken)
        {
            if (isResetting)
            {
                return(Task.CompletedTask);
            }
            Debug.Assert(execState != null);
            if (execState == null)
            {
                throw new InvalidOperationException();
            }

            string       code         = command.Input;
            const string assemblyName = "myasm";
            var          previousScriptCompilation = execState.ScriptState.Script.GetCompilation();

            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.CompletedTask);
            }
            var options = previousScriptCompilation.Options;

            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.CompletedTask);
            }
            var syntaxTree = CreateSyntaxTree(code, cancellationToken);

            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.CompletedTask);
            }
            var sc = CreateScriptCompilation(assemblyName, syntaxTree, null, options, previousScriptCompilation, execState.ScriptState.Script.ReturnType, execState.ScriptState.Script.GlobalsType);

            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.CompletedTask);
            }
            var sem = sc.GetSemanticModel(syntaxTree);

            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.CompletedTask);
            }

            using (var workspace = new AdhocWorkspace(RoslynMefHostServices.DefaultServices)) {
                var classifier = new RoslynClassifier(sem.SyntaxTree.GetRoot(), sem, workspace, roslynClassificationTypes, defaultClassificationType, cancellationToken);
                foreach (var info in classifier.GetClassifications(new TextSpan(0, command.Input.Length)))
                {
                    command.AddClassification(info.Span.Start, info.Span.Length, info.Type);
                }
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
 public Task OnCommandUpdatedAsync(IReplCommandInput command, CancellationToken cancellationToken) => Task.CompletedTask;
Exemplo n.º 3
0
			public Task OnCommandUpdatedAsync(IReplCommandInput command, CancellationToken cancellationToken) => Task.CompletedTask;