コード例 #1
0
 private void CaptureProjectDocumentsAsLatest(ProjectSnapshot projectSnapshot)
 {
     foreach (var documentPath in projectSnapshot.DocumentFilePaths)
     {
         if (DocumentLookup.ContainsKey(documentPath))
         {
             var document = projectSnapshot.GetDocument(documentPath);
             MarkAsLatestVersion(document);
         }
     }
 }
コード例 #2
0
        public OmniSharpDocumentSnapshot GetDocument(string filePath)
        {
            var documentSnapshot = InternalProjectSnapshot.GetDocument(filePath);

            if (documentSnapshot == null)
            {
                return(null);
            }

            var internalDocumentSnapshot = new OmniSharpDocumentSnapshot(documentSnapshot);

            return(internalDocumentSnapshot);
        }
コード例 #3
0
        internal DocumentCollectionViewModel(ProjectSnapshotManager projectManager, ProjectSnapshot project, Action <Exception> errorHandler)
        {
            _projectManager = projectManager;
            _project        = project;
            _errorHandler   = errorHandler;

            Documents = new ObservableCollection <DocumentItemViewModel>();

            foreach (var filePath in project.DocumentFilePaths)
            {
                Documents.Add(new DocumentItemViewModel(projectManager, project.GetDocument(filePath), _errorHandler));
            }
        }
コード例 #4
0
        internal void OnChange(ProjectChangeEventArgs e)
        {
            switch (e.Kind)
            {
            case ProjectChangeKind.DocumentAdded:
            {
                _project = _projectManager.GetLoadedProject(e.ProjectFilePath);
                Documents.Add(new DocumentItemViewModel(_projectManager, _project.GetDocument(e.DocumentFilePath), _errorHandler));
                break;
            }

            case ProjectChangeKind.DocumentRemoved:
            {
                _project = _projectManager.GetLoadedProject(e.ProjectFilePath);

                for (var i = Documents.Count - 1; i >= 0; i--)
                {
                    if (Documents[i].FilePath == e.DocumentFilePath)
                    {
                        Documents.RemoveAt(i);
                        break;
                    }
                }

                break;
            }

            case ProjectChangeKind.DocumentChanged:
            {
                _project = _projectManager.GetLoadedProject(e.ProjectFilePath);
                for (var i = Documents.Count - 1; i >= 0; i--)
                {
                    if (Documents[i].FilePath == e.DocumentFilePath)
                    {
                        Documents[i] = new DocumentItemViewModel(_projectManager, _project.GetDocument(e.DocumentFilePath), _errorHandler);
                        break;
                    }
                }

                break;
            }
            }
        }
コード例 #5
0
        public ProjectRazorJson(string serializedFilePath, ProjectSnapshot project)
        {
            SerializedFilePath    = serializedFilePath;
            FilePath              = project.FilePath;
            Configuration         = project.Configuration;
            RootNamespace         = project.RootNamespace;
            ProjectWorkspaceState = project.ProjectWorkspaceState;

            var documents = new List <DocumentSnapshotHandle>();

            foreach (var documentFilePath in project.DocumentFilePaths)
            {
                var document       = project.GetDocument(documentFilePath);
                var documentHandle = new DocumentSnapshotHandle(document.FilePath, document.TargetPath, document.FileKind);
                documents.Add(documentHandle);
            }

            Documents = documents;
        }
コード例 #6
0
        // Internal for testing
        internal void TryMigrateDocumentsFromRemovedProject(ProjectSnapshot project)
        {
            _foregroundDispatcher.AssertForegroundThread();

            var miscellaneousProject = _projectResolver.GetMiscellaneousProject();

            foreach (var documentFilePath in project.DocumentFilePaths)
            {
                var documentSnapshot = (DefaultDocumentSnapshot)project.GetDocument(documentFilePath);

                if (!_projectResolver.TryResolvePotentialProject(documentFilePath, out var toProject))
                {
                    // This is the common case. It'd be rare for a project to be nested but we need to protect against it anyhow.
                    toProject = miscellaneousProject;
                }

                var textLoader       = new DocumentSnapshotTextLoader(documentSnapshot);
                var defaultToProject = (DefaultProjectSnapshot)toProject;
                _logger.LogInformation($"Migrating '{documentFilePath}' from the '{project.FilePath}' project to '{toProject.FilePath}' project.");
                _projectSnapshotManagerAccessor.Instance.DocumentAdded(defaultToProject.HostProject, documentSnapshot.State.HostDocument, textLoader);
            }
        }
コード例 #7
0
 static bool IsDocumentInProject(ProjectSnapshot projectSnapshot, string documentFilePath) =>
 projectSnapshot.GetDocument(documentFilePath) != null;