From bf294f8eeee227a69ec9d4de4e008450ab8a5c1c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 30 Apr 2010 20:55:42 +0400 Subject: [PATCH] "optimize imports" quickfix for unused imports (PY-268) --- .../actions/OptimizeImportsQuickFix.java | 37 +++++++++++++++++++ .../PyUnresolvedReferencesInspection.java | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 python/src/com/jetbrains/python/actions/OptimizeImportsQuickFix.java diff --git a/python/src/com/jetbrains/python/actions/OptimizeImportsQuickFix.java b/python/src/com/jetbrains/python/actions/OptimizeImportsQuickFix.java new file mode 100644 index 000000000000..8c3b0203c251 --- /dev/null +++ b/python/src/com/jetbrains/python/actions/OptimizeImportsQuickFix.java @@ -0,0 +1,37 @@ +package com.jetbrains.python.actions; + +import com.intellij.codeInspection.LocalQuickFix; +import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.lang.ImportOptimizer; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.jetbrains.python.codeInsight.PyImportOptimizer; +import org.jetbrains.annotations.NotNull; + +/** + * @author yole + */ +public class OptimizeImportsQuickFix implements LocalQuickFix { + @NotNull + public String getName() { + return "Optimize imports"; + } + + @NotNull + public String getFamilyName() { + return "Optimize imports"; + } + + public void applyFix(@NotNull final Project project, @NotNull ProblemDescriptor descriptor) { + final PsiFile file = descriptor.getPsiElement().getContainingFile(); + ImportOptimizer optimizer = new PyImportOptimizer(); + final Runnable runnable = optimizer.processFile(file); + ApplicationManager.getApplication().runWriteAction(new Runnable() { + public void run() { + CommandProcessor.getInstance().executeCommand(project, runnable, getFamilyName(), this); + } + }); + } +} diff --git a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java index 2589472a933e..ac9852387dab 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java @@ -450,7 +450,7 @@ public class PyUnresolvedReferencesInspection extends LocalInspectionTool { public void highlightUnusedImports() { final List unused = collectUnusedImportElements(); for (PsiElement element : unused) { - registerProblem(element, "Unused import statement", ProblemHighlightType.LIKE_UNUSED_SYMBOL, null); + registerProblem(element, "Unused import statement", ProblemHighlightType.LIKE_UNUSED_SYMBOL, null, new OptimizeImportsQuickFix()); } }