Beispiel #1
0
 public override IEnumerable <FileProvider> GetFiles(ProgressMonitor monitor, FilterOptions filterOptions)
 {
     if (IdeApp.Workspace.IsOpen)
     {
         monitor.Log.WriteLine(GettextCatalog.GetString("Looking in project '{0}'", project.Name));
         var alreadyVisited = new HashSet <string> ();
         var conf           = project.DefaultConfiguration?.Selector;
         foreach (ProjectFile file in project.GetSourceFilesAsync(conf).Result.Where(f => filterOptions.NameMatches(f.Name) && File.Exists(f.Name)))
         {
             if ((file.Flags & ProjectItemFlags.Hidden) == ProjectItemFlags.Hidden)
             {
                 continue;
             }
             if (!DesktopService.GetFileIsText(file.Name))
             {
                 continue;
             }
             if (alreadyVisited.Contains(file.FilePath.FullPath))
             {
                 continue;
             }
             alreadyVisited.Add(file.FilePath.FullPath);
             yield return(new FileProvider(file.Name, project));
         }
     }
 }
Beispiel #2
0
 public override IEnumerable <FileProvider> GetFiles(IProgressMonitor monitor, FilterOptions filterOptions)
 {
     if (IdeApp.Workspace.IsOpen)
     {
         monitor.Log.WriteLine(GettextCatalog.GetString("Looking in project '{0}'", project.Name));
         var alreadyVisited = new HashSet <string> ();
         foreach (ProjectFile file in project.Files.Where(f => filterOptions.NameMatches(f.Name) && File.Exists(f.Name)))
         {
             if ((file.Flags & ProjectItemFlags.Hidden) == ProjectItemFlags.Hidden)
             {
                 continue;
             }
             if (!IncludeBinaryFiles && !DesktopService.GetFileIsText(file.Name))
             {
                 continue;
             }
             if (alreadyVisited.Contains(file.Name))
             {
                 continue;
             }
             alreadyVisited.Add(file.Name);
             yield return(new FileProvider(file.Name, project));
         }
     }
 }
Beispiel #3
0
        public bool CanHandle(FilePath fileName, string mimeType, Project ownerProject)
        {
            if (fileName != null)
            {
                return(DesktopService.GetFileIsText(fileName, mimeType));
            }

            if (!string.IsNullOrEmpty(mimeType))
            {
                return(DesktopService.GetMimeTypeIsText(mimeType));
            }

            return(false);
        }
Beispiel #4
0
 public override IEnumerable <FileProvider> GetFiles(IProgressMonitor monitor, FilterOptions filterOptions)
 {
     if (IdeApp.Workspace.IsOpen)
     {
         var alreadyVisited = new HashSet <string> ();
         foreach (var solutionFolder in IdeApp.Workspace.GetAllSolutionItems().OfType <SolutionFolder>())
         {
             monitor.Log.WriteLine(GettextCatalog.GetString("Looking in solution folder '{0}'", solutionFolder.Name));
             foreach (var file in solutionFolder.Files.Where(f => filterOptions.NameMatches(f.FileName) && File.Exists(f.FullPath)))
             {
                 if (!IncludeBinaryFiles && !DesktopService.GetFileIsText(file.FullPath))
                 {
                     continue;
                 }
                 if (alreadyVisited.Contains(file.FullPath))
                 {
                     continue;
                 }
                 alreadyVisited.Add(file.FileName);
                 yield return(new FileProvider(file.FullPath));
             }
         }
         foreach (Project project in IdeApp.Workspace.GetAllProjects())
         {
             monitor.Log.WriteLine(GettextCatalog.GetString("Looking in project '{0}'", project.Name));
             foreach (ProjectFile file in project.Files.Where(f => filterOptions.NameMatches(f.Name) && File.Exists(f.Name)))
             {
                 if (!IncludeBinaryFiles && !DesktopService.GetFileIsText(file.FilePath))
                 {
                     continue;
                 }
                 if (alreadyVisited.Contains(file.Name))
                 {
                     continue;
                 }
                 alreadyVisited.Add(file.Name);
                 yield return(new FileProvider(file.Name, project));
             }
         }
     }
 }
 public bool CanHandle(VersionControlItem item, DocumentView primaryView)
 {
     return((primaryView == null || primaryView.GetContent <ITextFile> () != null) &&
            DesktopService.GetFileIsText(item.Path));
 }
Beispiel #6
0
 public bool CanHandleFile(string fileName)
 {
     return(DesktopService.GetFileIsText(fileName));
 }
Beispiel #7
0
        IEnumerable <string> GetFileNames(FilterOptions filterOptions)
        {
            var directoryStack = new Stack <string> ();

            directoryStack.Push(path);

            while (directoryStack.Count > 0)
            {
                var curPath = directoryStack.Pop();

                try {
                    var readPermission = new FileIOPermission(FileIOPermissionAccess.Read, curPath);
                    readPermission.Demand();
                } catch (Exception e) {
                    LoggingService.LogError("Can't access path " + curPath, e);
                    yield break;
                }

                foreach (string fileName in Directory.EnumerateFiles(curPath, "*"))
                {
                    if (Platform.IsWindows)
                    {
                        var attr = File.GetAttributes(fileName);
                        if (attr.HasFlag(FileAttributes.Hidden))
                        {
                            continue;
                        }
                    }
                    if (Path.GetFileName(fileName).StartsWith(".", StringComparison.Ordinal))
                    {
                        continue;
                    }
                    if (!filterOptions.NameMatches(fileName))
                    {
                        continue;
                    }
                    if (!DesktopService.GetFileIsText(fileName))
                    {
                        continue;
                    }
                    yield return(fileName);
                }

                if (recurse)
                {
                    foreach (string directoryName in Directory.EnumerateDirectories(curPath))
                    {
                        if (Platform.IsWindows)
                        {
                            var attr = File.GetAttributes(directoryName);
                            if (attr.HasFlag(FileAttributes.Hidden))
                            {
                                continue;
                            }
                        }
                        if (Path.GetFileName(directoryName).StartsWith(".", StringComparison.Ordinal))
                        {
                            continue;
                        }
                        directoryStack.Push(directoryName);
                    }
                }
            }
        }
Beispiel #8
0
        public override IEnumerable <FileProvider> GetFiles(ProgressMonitor monitor, FilterOptions filterOptions)
        {
            if (!IdeApp.Workspace.IsOpen)
            {
                return(null);
            }

            var alreadyVisited = new HashSet <string> ();
            var results        = new List <FileProvider> ();

            var options = new ParallelOptions();

            options.MaxDegreeOfParallelism = 4;

            Parallel.ForEach(IdeApp.Workspace.GetAllSolutionItems().OfType <SolutionFolder> (),
                             options,
                             () => new List <FileProvider> (),
                             (folder, loop, providers) => {
                foreach (var file in folder.Files.Where(f => filterOptions.NameMatches(f.FileName) && File.Exists(f.FullPath)))
                {
                    if (!DesktopService.GetFileIsText(file.FullPath))
                    {
                        continue;
                    }
                    lock (alreadyVisited) {
                        if (alreadyVisited.Contains(file.FullPath))
                        {
                            continue;
                        }
                        alreadyVisited.Add(file.FullPath);
                    }
                    providers.Add(new FileProvider(file.FullPath));
                }
                return(providers);
            },
                             (providers) => {
                lock (results) {
                    results.AddRange(providers);
                }
            });

            Parallel.ForEach(IdeApp.Workspace.GetAllProjects(),
                             options,
                             () => new List <FileProvider> (),
                             (project, loop, providers) => {
                var conf = project.DefaultConfiguration?.Selector;

                foreach (ProjectFile file in project.GetSourceFilesAsync(conf).Result.Where(f => filterOptions.NameMatches(f.Name) && File.Exists(f.Name)))
                {
                    if ((file.Flags & ProjectItemFlags.Hidden) == ProjectItemFlags.Hidden)
                    {
                        continue;
                    }
                    if (!DesktopService.GetFileIsText(file.FilePath))
                    {
                        continue;
                    }

                    lock (alreadyVisited) {
                        if (alreadyVisited.Contains(file.FilePath.FullPath))
                        {
                            continue;
                        }
                        alreadyVisited.Add(file.FilePath.FullPath);
                    }

                    providers.Add(new FileProvider(file.Name, project));
                }
                return(providers);
            },
                             (providers) => {
                lock (results) {
                    results.AddRange(providers);
                }
            });

            return(results);
        }
Beispiel #9
0
 public virtual bool GetFileIsText(FilePath path)
 {
     return(DesktopService.GetFileIsText(path));
 }
Beispiel #10
0
        IEnumerable <string> GetFileNames(IProgressMonitor monitor, FilterOptions filterOptions)
        {
            if (monitor != null)
            {
                monitor.Log.WriteLine(GettextCatalog.GetString("Looking in '{0}'", path));
            }
            var directoryStack = new Stack <string> ();

            directoryStack.Push(path);

            while (directoryStack.Count > 0)
            {
                var curPath = directoryStack.Pop();

                try {
                    var readPermission = new FileIOPermission(FileIOPermissionAccess.Read, curPath);
                    readPermission.Demand();
                } catch (Exception e) {
                    LoggingService.LogError("Can't access path " + curPath, e);
                    yield break;
                }

                foreach (string fileName in Directory.EnumerateFiles(curPath, "*"))
                {
                    if (!IncludeHiddenFiles)
                    {
                        if (Platform.IsWindows)
                        {
                            var attr = File.GetAttributes(fileName);
                            if (attr.HasFlag(FileAttributes.Hidden))
                            {
                                continue;
                            }
                        }
                        if (Path.GetFileName(fileName).StartsWith(".", StringComparison.Ordinal))
                        {
                            continue;
                        }
                    }

                    if (!IncludeBinaryFiles && !DesktopService.GetFileIsText(fileName))
                    {
                        continue;
                    }
                    yield return(fileName);
                }

                if (recurse)
                {
                    foreach (string directoryName in Directory.EnumerateDirectories(curPath))
                    {
                        if (!IncludeHiddenFiles)
                        {
                            if (Platform.IsWindows)
                            {
                                var attr = File.GetAttributes(directoryName);
                                if (attr.HasFlag(FileAttributes.Hidden))
                                {
                                    continue;
                                }
                            }
                            if (Path.GetFileName(directoryName).StartsWith(".", StringComparison.Ordinal))
                            {
                                continue;
                            }
                        }
                        directoryStack.Push(directoryName);
                    }
                }
            }
        }