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)); } } }
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)); } } }
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); }
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)); }
public bool CanHandleFile(string fileName) { return(DesktopService.GetFileIsText(fileName)); }
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); } } } }
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); }
public virtual bool GetFileIsText(FilePath path) { return(DesktopService.GetFileIsText(path)); }
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); } } } }