예제 #1
0
 public override IEnumerable<FileProvider> GetFiles(IProgressMonitor monitor, FilterOptions filterOptions)
 {
     foreach (Document document in IdeApp.Workbench.Documents) {
         monitor.Log.WriteLine (GettextCatalog.GetString ("Looking in '{0}'", document.FileName));
         if (!string.IsNullOrEmpty (document.FileName) && filterOptions.NameMatches (document.FileName))
             yield return new FileProvider (document.FileName);
     }
 }
예제 #2
0
파일: Scope.cs 프로젝트: acken/monodevelop
		public override IEnumerable<FileProvider> GetFiles (IProgressMonitor monitor, FilterOptions filterOptions)
		{
			if (IdeApp.Workspace.IsOpen) {
				monitor.Log.WriteLine (GettextCatalog.GetString ("Looking in project '{0}'", project.Name));
				foreach (ProjectFile file in project.Files) {
					if (filterOptions.NameMatches (file.Name))
						yield return new FileProvider (file.Name, project);
				}
			}
		}
예제 #3
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));
				foreach (ProjectFile file in project.Files.Where (f => filterOptions.NameMatches (f.Name) && File.Exists (f.Name))) {
					if (!IncludeBinaryFiles && !DesktopService.GetMimeTypeIsText (DesktopService.GetMimeTypeForUri (file.Name)))
						continue;
					yield return new FileProvider (file.Name, project);
				}
			}
		}
예제 #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);
             }
         }
     }
 }
예제 #5
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));
				return project.Files.Where (f => filterOptions.NameMatches (f.Name) && File.Exists (f.Name)).Select (f => new FileProvider (f.Name, project));
			}
			return Enumerable.Empty<FileProvider> ();
		}
예제 #6
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 (!filterOptions.NameMatches (fileName))
                        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);
                    }
                }

            }
        }
예제 #7
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 (!IncludeBinaryFiles && !DesktopService.GetFileIsText (file.Name))
						continue;
					if (alreadyVisited.Contains (file.FilePath.FullPath))
						continue;
					alreadyVisited.Add (file.FilePath.FullPath);
					yield return new FileProvider (file.Name, project);
				}
			}
		}
예제 #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 (!IncludeBinaryFiles && !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 (!IncludeBinaryFiles && !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;
		}
예제 #9
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 (!IdeServices.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)
                {
                    if ((file.Flags & ProjectItemFlags.Hidden) == ProjectItemFlags.Hidden)
                    {
                        continue;
                    }
                    if (!filterOptions.IncludeCodeBehind && file.Subtype == Subtype.Designer)
                    {
                        continue;
                    }
                    if (!filterOptions.NameMatches(file.Name))
                    {
                        continue;
                    }
                    if (!IdeServices.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);
        }
예제 #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 (!filterOptions.NameMatches(fileName))
                    {
                        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);
                    }
                }
            }
        }
예제 #11
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 (!IncludeBinaryFiles && !DesktopService.GetFileIsText(file.Name))
             {
                 continue;
             }
             if (alreadyVisited.Contains(file.FilePath.FullPath))
             {
                 continue;
             }
             alreadyVisited.Add(file.FilePath.FullPath);
             yield return(new FileProvider(file.Name, project));
         }
     }
 }