From 6a79ca62eca26dbfacbfa04e516a52ece4120cd7 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 19 Feb 2013 18:19:13 +0400 Subject: [PATCH] reparse python files if analyze docstring settings changed rerun code analyze on apply fix a PY-8925 "Analyze Python code in docstrings" check box always returns to selected state --- .../PyIntegratedToolsConfigurable.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/python/src/com/jetbrains/python/configuration/PyIntegratedToolsConfigurable.java b/python/src/com/jetbrains/python/configuration/PyIntegratedToolsConfigurable.java index 3bf58506046b..f463a490983e 100644 --- a/python/src/com/jetbrains/python/configuration/PyIntegratedToolsConfigurable.java +++ b/python/src/com/jetbrains/python/configuration/PyIntegratedToolsConfigurable.java @@ -1,5 +1,6 @@ package com.jetbrains.python.configuration; +import com.google.common.collect.Lists; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.facet.impl.ui.FacetErrorPanel; import com.intellij.facet.ui.FacetConfigurationQuickFix; @@ -14,12 +15,17 @@ import com.intellij.openapi.options.NonDefaultProjectConfigurable; import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.roots.ContentIterator; +import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.CollectionComboBoxModel; import com.intellij.ui.IdeBorderFactory; +import com.intellij.util.FileContentUtil; import com.jetbrains.python.PyBundle; import com.jetbrains.python.PyNames; +import com.jetbrains.python.PythonFileType; import com.jetbrains.python.ReSTService; import com.jetbrains.python.documentation.DocStringFormat; import com.jetbrains.python.documentation.PyDocumentationSettings; @@ -179,11 +185,9 @@ public class PyIntegratedToolsConfigurable implements SearchableConfigurable, No return true; } if (!Comparing.equal(myDocstringFormatComboBox.getSelectedItem(), myDocumentationSettings.myDocStringFormat)) { - DaemonCodeAnalyzer.getInstance(myProject).restart(); return true; } if (analyzeDoctest.isSelected() != myDocumentationSettings.analyzeDoctest) { - DaemonCodeAnalyzer.getInstance(myProject).restart(); return true; } if (!ReSTService.getInstance(myProject).getWorkdir().equals(myWorkDir.getText())) { @@ -200,6 +204,22 @@ public class PyIntegratedToolsConfigurable implements SearchableConfigurable, No @Override public void apply() throws ConfigurationException { + if (!Comparing.equal(myDocstringFormatComboBox.getSelectedItem(), myDocumentationSettings.myDocStringFormat)) { + DaemonCodeAnalyzer.getInstance(myProject).restart(); + } + if (analyzeDoctest.isSelected() != myDocumentationSettings.analyzeDoctest) { + final List files = Lists.newArrayList(); + ProjectRootManager.getInstance(myProject).getFileIndex().iterateContent(new ContentIterator() { + @Override + public boolean processFile(VirtualFile fileOrDir) { + if (!fileOrDir.isDirectory() && PythonFileType.INSTANCE.getDefaultExtension().equals(fileOrDir.getExtension())) { + files.add(fileOrDir); + } + return true; + } + }); + FileContentUtil.reparseFiles(myProject, Lists.newArrayList(files), false); + } myModel.apply(); myDocumentationSettings.myDocStringFormat = (String) myDocstringFormatComboBox.getSelectedItem(); ReSTService.getInstance(myProject).setWorkdir(myWorkDir.getText());