fixed PY-2984 Surround with try/except reformats entire file

This commit is contained in:
Ekaterina Tuzova
2013-11-27 17:38:46 +04:00
parent e2953b9a6a
commit 3052d82ef6
5 changed files with 16 additions and 8 deletions
@@ -22,7 +22,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
import com.jetbrains.python.PyBundle;
@@ -53,9 +52,10 @@ public class PyWithTryExceptSurrounder extends PyStatementSurrounder {
final PsiFile psiFile = parent.getContainingFile();
final Document document = psiFile.getViewProvider().getDocument();
final RangeMarker rangeMarker = document.createRangeMarker(tryStatement.getTextRange());
final TextRange range = tryStatement.getTextRange();
assert document != null;
final RangeMarker rangeMarker = document.createRangeMarker(range);
CodeStyleManager.getInstance(project).reformat(psiFile);
final PsiElement element = psiFile.findElementAt(rangeMarker.getStartOffset());
tryStatement = PsiTreeUtil.getParentOfType(element, PyTryExceptStatement.class);
if (tryStatement != null) {
@@ -70,7 +70,9 @@ public class PyWithTryExceptSurrounder extends PyStatementSurrounder {
protected TextRange getResultRange(PyTryExceptStatement tryStatement) {
final PyExceptPart part = tryStatement.getExceptParts()[0];
return part.getStatementList().getTextRange();
final PyStatementList list = part.getStatementList();
assert list != null;
return list.getTextRange();
}
public String getTemplateDescription() {
@@ -17,6 +17,8 @@ package com.jetbrains.python.refactoring.surround.surrounders.statements;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.openapi.util.TextRange;
import com.jetbrains.python.psi.PyFinallyPart;
import com.jetbrains.python.psi.PyStatementList;
import com.jetbrains.python.psi.PyTryExceptStatement;
/**
@@ -37,6 +39,10 @@ public class PyWithTryFinallySurrounder extends PyWithTryExceptSurrounder {
@Override
protected TextRange getResultRange(PyTryExceptStatement tryStatement) {
return tryStatement.getFinallyPart().getStatementList().getTextRange();
final PyFinallyPart finallyPart = tryStatement.getFinallyPart();
assert finallyPart != null;
final PyStatementList statementList = finallyPart.getStatementList();
assert statementList != null;
return statementList.getTextRange();
}
}
@@ -1,2 +1,2 @@
def foo():
<selection>print "hello"</selection>
pr<caret>int "hello"
@@ -2,4 +2,4 @@ def foo():
try:
print "hello"
except:
<selection>pass</selection>
<selection>pass</selection>
@@ -35,7 +35,7 @@ public class PySurroundWithTest extends PyTestCase {
doTest(new PyWithWhileSurrounder());
}
public void _testSurroundWithTryExcept() throws Exception {
public void testSurroundWithTryExcept() throws Exception {
doTest(new PyWithTryExceptSurrounder());
}