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); } }
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); } } }
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); } } }
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 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> (); }
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); } } } }
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); } } }
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; }
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); }
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); } } } }
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)); } } }