mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-14311 IPython Notebook: Statement expected false positive for magic functions entered in just created cells
This commit is contained in:
+1
-6
@@ -72,12 +72,7 @@ public class IpnbCodeSourcePanel extends IpnbPanel<JComponent, IpnbCodeCell> imp
|
||||
final JPanel panel = new JPanel(new BorderLayout());
|
||||
panel.setBackground(UIUtil.isUnderDarcula() ? IpnbEditorUtil.getBackground() : Gray._247);
|
||||
|
||||
if (mySource.startsWith("%")) {
|
||||
myEditor = IpnbEditorUtil.createPlainCodeEditor(myProject, mySource);
|
||||
}
|
||||
else {
|
||||
myEditor = IpnbEditorUtil.createPythonCodeEditor(myProject, this);
|
||||
}
|
||||
myEditor = IpnbEditorUtil.createPythonCodeEditor(myProject, this);
|
||||
Disposer.register(myParent.getFileEditor(), new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
@@ -1,14 +1,28 @@
|
||||
package org.jetbrains.plugins.ipnb.psi;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.jetbrains.python.console.parsing.PyConsoleParser;
|
||||
import com.jetbrains.python.console.parsing.PythonConsoleData;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.PyParser;
|
||||
import com.jetbrains.python.parsing.StatementParsing;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class IpnbPyParser extends PyParser {
|
||||
private boolean myIPythonStartSymbol;
|
||||
|
||||
@Override
|
||||
protected ParsingContext createParsingContext(PsiBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) {
|
||||
return new IpnbPyParsingContext(builder, languageLevel, futureFlag);
|
||||
return new IpnbPyParsingContext(builder, languageLevel, futureFlag, myIPythonStartSymbol, new PythonConsoleData());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ASTNode parse(IElementType root, PsiBuilder builder) {
|
||||
myIPythonStartSymbol = PyConsoleParser.startsWithIPythonSpecialSymbol(builder);
|
||||
return super.parse(root, builder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package org.jetbrains.plugins.ipnb.psi;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.console.parsing.PyConsoleParsingContext;
|
||||
import com.jetbrains.python.console.parsing.PythonConsoleData;
|
||||
import com.jetbrains.python.parsing.ExpressionParsing;
|
||||
import com.jetbrains.python.parsing.FunctionParsing;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
@@ -10,16 +12,16 @@ import com.jetbrains.python.parsing.StatementParsing;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class IpnbPyParsingContext extends ParsingContext {
|
||||
public class IpnbPyParsingContext extends PyConsoleParsingContext {
|
||||
private final StatementParsing myStatementParser;
|
||||
private final ExpressionParsing myExpressionParser;
|
||||
private final FunctionParsing myFunctionParser;
|
||||
|
||||
public IpnbPyParsingContext(final PsiBuilder builder,
|
||||
LanguageLevel languageLevel,
|
||||
StatementParsing.FUTURE futureFlag) {
|
||||
super(builder, languageLevel, futureFlag);
|
||||
myStatementParser = new IpnbPyStatementParsing(this, futureFlag);
|
||||
StatementParsing.FUTURE futureFlag, boolean startSymbol, PythonConsoleData data) {
|
||||
super(builder, languageLevel, futureFlag, data, startSymbol);
|
||||
myStatementParser = new IpnbPyStatementParsing(this, futureFlag, startSymbol, data);
|
||||
myExpressionParser = new IpnbPyExpressionParsing(this);
|
||||
myFunctionParser = new IpnbPyFunctionParsing(this);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ public class IpnbPyParsingContext extends ParsingContext {
|
||||
return myFunctionParser;
|
||||
}
|
||||
|
||||
private static class IpnbPyExpressionParsing extends ExpressionParsing {
|
||||
private static class IpnbPyExpressionParsing extends ConsoleExpressionParsing {
|
||||
public IpnbPyExpressionParsing(ParsingContext context) {
|
||||
super(context);
|
||||
}
|
||||
@@ -64,10 +66,10 @@ public class IpnbPyParsingContext extends ParsingContext {
|
||||
}
|
||||
}
|
||||
|
||||
private static class IpnbPyStatementParsing extends StatementParsing {
|
||||
private static class IpnbPyStatementParsing extends ConsoleStatementParsing {
|
||||
|
||||
protected IpnbPyStatementParsing(ParsingContext context, @Nullable FUTURE futureFlag) {
|
||||
super(context, futureFlag);
|
||||
protected IpnbPyStatementParsing(ParsingContext context, @Nullable FUTURE futureFlag, boolean startSymbol, PythonConsoleData data) {
|
||||
super(context, futureFlag, startSymbol, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,6 +78,7 @@ public class IpnbPyParsingContext extends ParsingContext {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class IpnbPyFunctionParsing extends FunctionParsing {
|
||||
|
||||
public IpnbPyFunctionParsing(ParsingContext context) {
|
||||
|
||||
@@ -63,7 +63,7 @@ public class PyConsoleParser extends PyParser{
|
||||
return builder.getTreeBuilt();
|
||||
}
|
||||
|
||||
private static boolean startsWithIPythonSpecialSymbol(PsiBuilder builder) {
|
||||
public static boolean startsWithIPythonSpecialSymbol(PsiBuilder builder) {
|
||||
IElementType tokenType = builder.getTokenType();
|
||||
return builder.getTokenType() == PyConsoleTokenTypes.QUESTION_MARK || tokenType == PyTokenTypes.PERC || tokenType == PyTokenTypes.COMMA || tokenType == PyTokenTypes.SEMICOLON ||
|
||||
"/".equals(builder.getTokenText());
|
||||
|
||||
@@ -56,7 +56,7 @@ public class PyConsoleParsingContext extends ParsingContext {
|
||||
return expressionParser;
|
||||
}
|
||||
|
||||
private static class ConsoleStatementParsing extends StatementParsing {
|
||||
public static class ConsoleStatementParsing extends StatementParsing {
|
||||
|
||||
private boolean myStartsWithIPythonSymbol;
|
||||
private PythonConsoleData myPythonConsoleData;
|
||||
@@ -136,7 +136,7 @@ public class PyConsoleParsingContext extends ParsingContext {
|
||||
}
|
||||
}
|
||||
|
||||
private static class ConsoleExpressionParsing extends ExpressionParsing {
|
||||
public static class ConsoleExpressionParsing extends ExpressionParsing {
|
||||
public ConsoleExpressionParsing(ParsingContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user