Beispiel #1
0
        public RoslynWorkspace(HostServices hostServices, string workspaceKind = WorkspaceKind.Host, RoslynHost roslynHost = null)
            : base(hostServices, workspaceKind)
        {
            DiagnosticProvider.Enable(this, DiagnosticProvider.Options.Semantic);

            RoslynHost = roslynHost;
        }
Beispiel #2
0
        protected internal RoslynWorkspace(HostServices host, RoslynHost roslynHost)
            : base(host, WorkspaceKind.Host)
        {
            RoslynHost = roslynHost;

            DiagnosticProvider.Enable(this, DiagnosticProvider.Options.Semantic);
        }
Beispiel #3
0
        public DocumentId AddDocument(SourceTextContainer sourceTextContainer, string workingDirectory,
                                      Action <DiagnosticsUpdatedArgs> onDiagnosticsUpdated, Action <SourceText> onTextUpdated)
        {
            if (sourceTextContainer == null)
            {
                throw new ArgumentNullException(nameof(sourceTextContainer));
            }

            var workspace = new RoslynWorkspace(_host, _nuGetConfiguration, this);

            if (onTextUpdated != null)
            {
                workspace.ApplyingTextChange += (d, s) => onTextUpdated(s);
            }

            DiagnosticProvider.Enable(workspace, DiagnosticProvider.Options.Semantic);

            var currentSolution = workspace.CurrentSolution;
            var project         = CreateSubmissionProject(currentSolution,
                                                          CreateCompilationOptions(workspace, workingDirectory));
            var currentDocument = SetSubmissionDocument(workspace, sourceTextContainer, project);

            _workspaces.TryAdd(currentDocument.Id, workspace);

            if (onDiagnosticsUpdated != null)
            {
                _diagnosticsUpdatedNotifiers.TryAdd(currentDocument.Id, onDiagnosticsUpdated);
            }

            return(currentDocument.Id);
        }
Beispiel #4
0
        //

        public WorkspaceImpl(HostServices hostServices, WorkspaceType workspaceType)          //bool isCSharpScript )
            : base(hostServices, WorkspaceKind.Host)
        {
            this.workspaceType = workspaceType;
            //this.isCSharpScript = isCSharpScript;

            DiagnosticProvider.Enable(this, DiagnosticProvider.Options.Semantic);
        }
 public void StartListening(Workspace workspace, object serviceOpt)
 {
     if (_globalOptions.GetOption(SolutionCrawlerRegistrationService.EnableSolutionCrawler))
     {
         // misc workspace will enable syntax errors and semantic errors for script files for
         // all participating projects in the workspace
         DiagnosticProvider.Enable(workspace, DiagnosticProvider.Options.Syntax | DiagnosticProvider.Options.ScriptSemantic);
     }
 }
 public void StartListening(Workspace workspace, object serviceOpt)
 {
     // misc workspace will enable syntax errors and semantic errors for script files for
     // all participating projects in the workspace
     DiagnosticProvider.Enable(
         workspace,
         DiagnosticProvider.Options.Syntax | DiagnosticProvider.Options.ScriptSemantic
         );
 }
        public static void EnableDiagnostics(this Workspace workspace, DiagnosticOptions options)
        {
            var diagnosticProviderOptions = (DiagnosticProvider.Options) 0;

            if ((options & DiagnosticOptions.Syntax) != 0)
            {
                diagnosticProviderOptions |= DiagnosticProvider.Options.Syntax;
            }
            if ((options & DiagnosticOptions.Semantic) != 0)
            {
                diagnosticProviderOptions |= DiagnosticProvider.Options.Semantic;
            }

            DiagnosticProvider.Enable(workspace, diagnosticProviderOptions);
        }
        internal RoslynWorkspace(HostServices host, NuGetConfiguration nuGetConfiguration, CompositionHost compositionContext, string dotnetPath, string sdkPath)
            : base(host, WorkspaceKind.Host)
        {
            this.dotnetPath     = dotnetPath;
            this.sdkPath        = sdkPath;
            _nuGetConfiguration = nuGetConfiguration;

            _openDocumentTextLoaders     = new Dictionary <DocumentId, AvalonEditTextContainer>();
            _diagnosticsUpdatedNotifiers = new ConcurrentDictionary <DocumentId, Action <DiagnosticsUpdatedArgs> >();

            _compositionContext = compositionContext;

            _buildNodes = new BlockingCollection <MSBuildHost>();

            DiagnosticProvider.Enable(this, DiagnosticProvider.Options.Semantic | DiagnosticProvider.Options.Syntax);

            //this.EnableDiagnostics(DiagnosticOptions.Semantic | DiagnosticOptions.Syntax);

            GetService <IDiagnosticService>().DiagnosticsUpdated += OnDiagnosticsUpdated;
        }
Beispiel #9
0
        public void SubscribeToDiagnosticsUpdateNotification(DocumentId documentId, Action <DiagnosticsUpdatedArgs> onDiagnosticsUpdated)
        {
            if (null == documentId)
            {
                throw new ArgumentNullException(nameof(documentId));
            }
            if (null == onDiagnosticsUpdated)
            {
                throw new ArgumentNullException(nameof(onDiagnosticsUpdated));
            }

            if (!_diagnosticsUpdatedNotifiers.TryAdd(documentId, onDiagnosticsUpdated))
            {
                if (_diagnosticsUpdatedNotifiers.TryGetValue(documentId, out var handler))
                {
                    handler -= onDiagnosticsUpdated; // in case it is already registed
                    handler += onDiagnosticsUpdated;
                    throw new NotImplementedException("The previous code needs verification");
                }
            }

            // enable diagnostics now, if not already enabled
            DiagnosticProvider.Enable(this, DiagnosticProvider.Options.Semantic);
        }
 private void StartSolutionCrawler()
 => DiagnosticProvider.Enable(this, DiagnosticProvider.Options.Syntax);
 internal void StartSolutionCrawler()
 {
     DiagnosticProvider.Enable(this, DiagnosticProvider.Options.Syntax);
 }