private void BeforeSaveClangFormat(Document aDocument)
        {
            FormatSettingsModel formatSettings = settingsProvider.GetFormatSettingsModel();
            TidySettingsModel   tidySettings   = settingsProvider.GetTidySettingsModel();

            if (currentCommand == CommandIds.kTidyFixId && running && tidySettings.FormatAfterTidy && formatSettings.FormatOnSave)
            {
                mFormatAfterTidyFlag = true;
                return;
            }

            if (false == formatSettings.FormatOnSave)
            {
                return;
            }

            if (false == Vsix.IsDocumentDirty(aDocument) && false == mFormatAfterTidyFlag)
            {
                return;
            }

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

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

            FormatCommand.Instance.FormatOnSave(aDocument);
        }
        private void BeforeSaveClangTidy()
        {
            if (false == mSaveCommandWasGiven) // The save event was not triggered by Save File or SaveAll commands
            {
                return;
            }

            TidySettingsModel tidySettings = settingsProvider.GetTidySettingsModel();

            if (false == tidySettings.TidyOnSave) // The clang-tidy on save option is disable
            {
                return;
            }

            if (true == running) // Clang compile/tidy command is running
            {
                return;
            }

            OnBeforeClangCommand(CommandIds.kTidyFixId);
            TidyCommand.Instance.RunClangTidyAsync(CommandIds.kTidyFixId, CommandUILocation.ContextMenu).SafeFireAndForget();
            OnAfterClangCommand();

            mSaveCommandWasGiven = false;
        }
 public TidySettingsViewModel()
 {
     tidyModel     = SettingsProvider.TidySettingsModel;
     HeaderFilters = new List <string>()
     {
         tidyModel.HeaderFilter, ComboBoxConstants.kCorrespondingHeaderName
     };
     headerFilter = tidyModel.HeaderFilter;
 }
예제 #4
0
 private void SetSettingsModels(CompilerSettingsModel compilerModel, FormatSettingsModel formatModel,
                                TidySettingsModel tidyModel, GeneralSettingsModel generalModel, LlvmSettingsModel llvmModel)
 {
     SettingsProvider.CompilerSettingsModel = compilerModel;
     SettingsProvider.FormatSettingsModel   = formatModel;
     SettingsProvider.TidySettingsModel     = tidyModel;
     SettingsProvider.GeneralSettingsModel  = generalModel;
     SettingsProvider.LlvmSettingsModel     = llvmModel;
 }
        public TidyChecksViewModel(TidyChecksView view)
        {
            var settingsProvider = new SettingsProvider();

            tidyModel = settingsProvider.GetTidySettingsModel();

            tidyChecksView         = view;
            tidyChecksView.Closed += OnClosed;

            InitializeChecks();
        }
        private void MapClangTidyOptionsToSettings(ClangTidyOptions clangTidy)
        {
            TidySettingsModel tidySettingsModel = new TidySettingsModel();
              tidySettingsModel.HeaderFilter = clangTidy.HeaderFilter;
              tidySettingsModel.CustomChecks = clangTidy.TidyChecksCollection;
              tidySettingsModel.CustomExecutable = clangTidy.ClangTidyPath.Value;
              tidySettingsModel.FormatAfterTidy = clangTidy.FormatAfterTidy;
              tidySettingsModel.TidyOnSave = clangTidy.AutoTidyOnSave;

              settingsProvider.SetTidySettingsModel(tidySettingsModel);
        }
예제 #7
0
        private void MapClangTidyOptionsToSettings(ClangTidyOptions clangTidy)
        {
            var tidySettingsModel = new TidySettingsModel
            {
                HeaderFilter     = clangTidy.HeaderFilter,
                CustomChecks     = clangTidy.TidyChecksCollection,
                CustomExecutable = clangTidy.ClangTidyPath.Value,
                FormatAfterTidy  = clangTidy.FormatAfterTidy,
                TidyOnSave       = clangTidy.AutoTidyOnSave
            };

            SettingsProvider.TidySettingsModel = tidySettingsModel;
        }
예제 #8
0
        private void CreateChecksOutputLine(string paramaterName)
        {
            TidySettingsModel tidySettings = SettingsViewModelProvider.TidySettingsViewModel.TidyModel;

            ClangTidyUseChecksFrom clangTidyUseChecksFrom = tidySettings.UseChecksFrom;

            if (clangTidyUseChecksFrom == ClangTidyUseChecksFrom.CustomChecks)
            {
                CreateCustomChecksOutputLine(paramaterName, tidySettings.PredefinedChecks, true);
            }
            else
            {
                CreateOutputLine(paramaterName, "", true);
            }
        }
예제 #9
0
        private void MapTidyPredefinedChecksToTidyettings(ClangTidyPredefinedChecksOptions clangTidyPredefinedChecksOptions)
        {
            PropertyInfo[]    properties        = typeof(ClangTidyPredefinedChecksOptions).GetProperties();
            TidySettingsModel tidySettingsModel = settingsProvider.GetTidySettingsModel();

            foreach (PropertyInfo propertyInfo in properties)
            {
                bool isChecked = (bool)propertyInfo.GetValue(clangTidyPredefinedChecksOptions, null);

                if (isChecked)
                {
                    tidySettingsModel.PredefinedChecks += string.Concat(FormatTidyCheckName(propertyInfo.Name), ";");
                }
            }

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
        }
        public TidyChecksViewModel(TidyChecksView view)
        {
            tidyModel = SettingsProvider.TidySettingsModel;

            tidyChecksView         = view;
            tidyChecksView.Closed += OnClosed;

            // Click event is used because the Check value is changed many time from the code
            // In this way we don't need to make more checks to see from where the Check event was triggered
            tidyChecksView.EnableDisableButton.Click += (object sender, RoutedEventArgs e) =>
            {
                // Check event is triggered before Click event.
                // IsChecked property will already have the new value when the Click event will happend
                EnableDisableAllChecks(tidyChecksView.EnableDisableButton.IsChecked == true ? true : false);
            };

            InitializeChecks();
        }
예제 #11
0
        private void DeserializeSettings(string path)
        {
            using (StreamReader sw = new StreamReader(path))
            {
                string         json       = sw.ReadToEnd();
                JsonSerializer serializer = new JsonSerializer();

                try
                {
                    List <object>         models        = JsonConvert.DeserializeObject <List <object> >(json);
                    CompilerSettingsModel compilerModel = JsonConvert.DeserializeObject <CompilerSettingsModel>(models[0].ToString());
                    FormatSettingsModel   formatModel   = JsonConvert.DeserializeObject <FormatSettingsModel>(models[1].ToString());
                    TidySettingsModel     tidyModel     = JsonConvert.DeserializeObject <TidySettingsModel>(models[2].ToString());
                    GeneralSettingsModel  generalModel  = JsonConvert.DeserializeObject <GeneralSettingsModel>(models[3].ToString());

                    SetSettingsModels(compilerModel, formatModel, tidyModel, generalModel);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Cannot Load Clang Power Tools Settings", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
예제 #12
0
 public TidyConfigFile()
 {
     compilerSettingsModel = SettingsProvider.CompilerSettingsModel;
     tidySettingsModel     = SettingsProvider.TidySettingsModel;
     formatSettingsModel   = SettingsProvider.FormatSettingsModel;
 }
예제 #13
0
 public void SetTidySettingsModel(TidySettingsModel model)
 {
     tidySettingsModel = model;
 }
예제 #14
0
 private void SetSettingsModels(CompilerSettingsModel compilerModel, FormatSettingsModel formatModel, TidySettingsModel tidyModel, GeneralSettingsModel generalModel)
 {
     settingsProvider.SetCompilerSettingsModel(compilerModel);
     settingsProvider.SetFormatSettingsModel(formatModel);
     settingsProvider.SetTidySettingsModel(tidyModel);
     settingsProvider.SetGeneralSettingsModel(generalModel);
 }
예제 #15
0
 public TidyConfigFile()
 {
     compilerSettingsModel = settingsProvider.GetCompilerSettingsModel();
     tidySettingsModel     = settingsProvider.GetTidySettingsModel();
     formatSettingsModel   = settingsProvider.GetFormatSettingsModel();
 }