static public void GeneratorFromSolution() { IEnumerable <string> files = Common.Instance.SolutionWatcher.Files.Select(file => file.Path); EnvDTE.StatusBar sbar = Common.Instance.DTE2.StatusBar; Action <int, int> progressAction = (current, total) => { if ((current % 5) == 0) { sbar.Progress(true, "QuickNavigation Scan solution " + current + "/" + total, current, total); } }; sbar.Progress(true, "QuickNavigation Scan solution ...", 0, 0); GeneratorFromFiles(files, progressAction).ToArray(); sbar.Progress(false); }
void RefreshSymbolDatabase() { if (null == mFiles || !mFiles.Any()) { return; } ReadSymbolDatabase(); List <string> lToGenerate = new List <string>(); foreach (FileData fileData in mFiles.Values) { if (fileData.LastSymbolsGeneration == DateTime.MinValue || fileData.LastSymbolsGeneration < System.IO.File.GetLastWriteTime(fileData.Path) ) { lToGenerate.Add(fileData.Path); } } EnvDTE.StatusBar sbar = Common.Instance.DTE2.StatusBar; Action <int, int> progressAction = (current, total) => { if ((current % 5) == 0) { sbar.Progress(true, "QuickNavigation Scan solution " + current + "/" + total, current, total); } }; IEnumerable <SymbolData> symbols = CTagsGenerator.GeneratorFromFiles(lToGenerate, progressAction); sbar.Progress(false, "QuickNavigation Analysing solution ...", 0, 0); //Associate symbols to DileData symbols .AsParallel() .GroupBy(symbol => symbol.AssociatedFile) .ForAll(pair => pair.Key.SetSymbols(pair)); sbar.Progress(false); WriteSymbolDatabase(); }