private List <string> RemoveDuplicateFiles(List <string> documentsToIgnore)
        {
            FormatSettingsModel formatSettings          = SettingsViewModelProvider.FormatSettingsViewModel.FormatModel;
            List <string>       trimmedDocumentToIgnore = new List <string>();

            foreach (var item in documentsToIgnore)
            {
                if (formatSettings.FilesToIgnore.Contains(item) == false)
                {
                    trimmedDocumentToIgnore.Add(item);
                }
            }
            return(trimmedDocumentToIgnore);
        }
Exemple #2
0
        /// <summary>
        /// This function is the callback used to execute the command when the menu item is clicked.
        /// See the constructor to see how the menu item is associated with this function using
        /// OleMenuCommandService service and MenuCommand class.
        /// </summary>
        /// <param name="sender">Event sender.</param>
        /// <param name="e">Event args.</param>
        public void RunIgnoreFormatCommand()
        {
            _ = Task.Run(() =>
            {
                SettingsProvider settingsProvider = new SettingsProvider();
                ItemsCollector itemsCollector     = new ItemsCollector();
                SettingsHandler settingsHandler   = new SettingsHandler();

                FormatSettingsModel settings    = settingsProvider.GetFormatSettingsModel();
                List <string> documentsToIgnore = itemsCollector.GetFilesToIgnore();

                AddItemsToIgnore(documentsToIgnore, settings, "FilesToIgnore");
                settingsHandler.SaveSettings();
            });
        }
        public void FallbackStyle_ChangeValue_CompareViewToFile()
        {
            var settingsHandler     = new SettingsHandler();
            var settingsProvider    = new SettingsProvider();
            var formatSettingsModel = new FormatSettingsModel
            {
                FallbackStyle = ClangFormatFallbackStyle.Mozilla
            };

            settingsProvider.SetFormatSettingsModel(formatSettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(formatSettingsModel.FallbackStyle, settingsProvider.GetFormatSettingsModel().FallbackStyle);
        }
        public void AssumeFilename_ChangeValue_CompareViewToFile()
        {
            var settingsHandler     = new SettingsHandler();
            var settingsProvider    = new SettingsProvider();
            var formatSettingsModel = new FormatSettingsModel
            {
                AssumeFilename = "Test"
            };

            settingsProvider.SetFormatSettingsModel(formatSettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(formatSettingsModel.AssumeFilename, settingsProvider.GetFormatSettingsModel().AssumeFilename);
        }
        public void FilesToIgnore_ChangeValue_CompareViewToFile()
        {
            var settingsHandler     = new SettingsHandler();
            var settingsProvider    = new SettingsProvider();
            var formatSettingsModel = new FormatSettingsModel
            {
                FilesToIgnore = "Test.cpp"
            };

            settingsProvider.SetFormatSettingsModel(formatSettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(formatSettingsModel.FilesToIgnore, settingsProvider.GetFormatSettingsModel().FilesToIgnore);
        }
        public void FileExtensions_ChangeValue_CompareViewToFile()
        {
            var settingsHandler     = new SettingsHandler();
            var settingsProvider    = new SettingsProvider();
            var formatSettingsModel = new FormatSettingsModel
            {
                FileExtensions = ".cpp"
            };

            settingsProvider.SetFormatSettingsModel(formatSettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(formatSettingsModel.FileExtensions, settingsProvider.GetFormatSettingsModel().FileExtensions);
        }
        public void FormatOnSave_ChangeValue_CompareViewToFile()
        {
            var settingsHandler     = new SettingsHandler();
            var settingsProvider    = new SettingsProvider();
            var formatSettingsModel = new FormatSettingsModel
            {
                FormatOnSave = true
            };

            settingsProvider.SetFormatSettingsModel(formatSettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(formatSettingsModel.FormatOnSave, settingsProvider.GetFormatSettingsModel().FormatOnSave);
        }
        public void CustomExecutable_ChangeValue_CompareViewToFile()
        {
            var settingsHandler     = new SettingsHandler();
            var settingsProvider    = new SettingsProvider();
            var formatSettingsModel = new FormatSettingsModel
            {
                CustomExecutable = @"D:\Test.exe"
            };

            settingsProvider.SetFormatSettingsModel(formatSettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(formatSettingsModel.CustomExecutable, settingsProvider.GetFormatSettingsModel().CustomExecutable);
        }
        private System.Diagnostics.Process CreateProcess(string aText, int aOffset, int aLength, string aPath, string aFilePath)
        {
            SettingsProvider    settingsProvider = new SettingsProvider();
            FormatSettingsModel formatSettings   = settingsProvider.GetFormatSettingsModel();
            string vsixPath = Path.GetDirectoryName(
                typeof(RunClangPowerToolsPackage).Assembly.Location);

            System.Diagnostics.Process process = new System.Diagnostics.Process();
            process.StartInfo.UseShellExecute        = false;
            process.StartInfo.CreateNoWindow         = true;
            process.StartInfo.RedirectStandardInput  = true;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError  = true;
            process.StartInfo.FileName =
                true == (string.IsNullOrWhiteSpace(formatSettings.CustomExecutable) == false) ?
                formatSettings.CustomExecutable : Path.Combine(vsixPath, ScriptConstants.kClangFormat);

            process.StartInfo.Arguments = " -offset " + aOffset +
                                          " -length " + aLength +
                                          " -output-replacements-xml " +
                                          $" {ScriptConstants.kStyle} \"{formatSettings.Style}\"" +
                                          $" {ScriptConstants.kFallbackStyle} \"{formatSettings.FallbackStyle}\"";

            var assumeFilename = formatSettings.AssumeFilename;

            if (string.IsNullOrEmpty(assumeFilename))
            {
                assumeFilename = aFilePath;
            }
            if (!string.IsNullOrEmpty(assumeFilename))
            {
                process.StartInfo.Arguments += $" -assume-filename \"{assumeFilename}\"";
            }

            if (null != aPath)
            {
                process.StartInfo.WorkingDirectory = aPath;
            }

            return(process);
        }
        private bool ValidExecution(out IWpfTextView view)
        {
            SettingsProvider    settingsProvider = new SettingsProvider();
            FormatSettingsModel formatSettings   = settingsProvider.GetFormatSettingsModel();

            view = Vsix.GetDocumentView(mDocument);
            if (view == null)
            {
                return(false);
            }

            if (false == FileHasExtension(mDocument.FullName, formatSettings.FileExtensions))
            {
                return(false);
            }

            if (true == SkipFile(mDocument.FullName, formatSettings.FilesToIgnore))
            {
                return(false);
            }

            if (ScriptConstants.kCMakeConfigFile == mDocument.Name.ToLower())
            {
                return(false);
            }

            if (IsFileFormatSelected(formatSettings))
            {
                var filePath = Vsix.GetDocumentParent(view);
                if (DoesClangFormatFileExist(filePath) == false)
                {
                    OnFormatFile(new FormatCommandEventArgs()
                    {
                        CanFormat = false
                    });
                    return(false);
                }
            }
            return(true);
        }
        /// <summary>
        /// Create the generic script by gathering all the generic parameters from the environment and settings components
        /// </summary>
        public void Build()
        {
            // Append the General parameters and Tidy parameters from option pages
            mScript = $"{GetGeneralParameters()} {(CommandIds.kTidyId == mCommandId || CommandIds.kTidyFixId == mCommandId ? GetTidyParameters() : ScriptConstants.kParallel)}";

            FormatSettingsModel formatSettings = settingsProvider.GetFormatSettingsModel();
            TidySettingsModel   tidySettings   = settingsProvider.GetTidySettingsModel();

            // Append the clang-format style
            if (null != formatSettings && null != tidySettings && CommandIds.kTidyFixId == mCommandId && tidySettings.FormatAfterTidy)
            {
                mScript += $" {ScriptConstants.kClangFormatStyle} {formatSettings.Style}";
            }

            // Append the Visual Studio Version and Edition
            mScript += $" {ScriptConstants.kVsVersion} {mVsVersion} {ScriptConstants.kVsEdition} {mVsEdition}";

            // Append the solution path
            if (VsServiceProvider.TryGetService(typeof(DTE), out object dte))
            {
                mScript += $" {ScriptConstants.kDirectory} ''{(dte as DTE2).Solution.FullName}''";
            }
        }
 private bool IsFileFormatSelected(FormatSettingsModel formatSettings)
 {
     return(formatSettings.Style == ClangFormatStyle.file);
 }
Exemple #13
0
 public void SetFormatSettingsModel(FormatSettingsModel model)
 {
     formatSettingsModel = model;
 }