@Override public void inputRequested() { final LanguageConsoleImpl console = myConsoleView.getConsole(); final Editor currentEditor = console.getConsoleEditor(); if (!PyConsoleUtil.INPUT_PROMPT.equals(console.getPrompt()) && !PyConsoleUtil.HELP_PROMPT.equals(console.getPrompt())) { console.setPrompt(PyConsoleUtil.INPUT_PROMPT); PyConsoleUtil.scrollDown(currentEditor); } setCurrentIndentSize(1); }
public void doProcessLine(final String line) { final LanguageConsoleImpl console = myConsoleView.getConsole(); final Editor currentEditor = console.getConsoleEditor(); if (myInputBuffer == null) { myInputBuffer = new StringBuilder(); } if (!StringUtil.isEmptyOrSpaces(line)) { myInputBuffer.append(line); if (!line.endsWith("\n")) { myInputBuffer.append("\n"); } } if (StringUtil.isEmptyOrSpaces(line) && StringUtil.isEmptyOrSpaces(myInputBuffer.toString())) { myInputBuffer.append(""); } // multiline strings handling if (myInMultilineStringState != null) { if (PyConsoleUtil.isDoubleQuoteMultilineStarts(line) || PyConsoleUtil.isSingleQuoteMultilineStarts(line)) { myInMultilineStringState = null; // restore language console.setLanguage(PythonLanguage.getInstance()); console.setPrompt(PyConsoleUtil.ORDINARY_PROMPT); } else { if (line.equals("\n")) { myInputBuffer.append("\n"); } return; } } else { if (PyConsoleUtil.isDoubleQuoteMultilineStarts(line)) { myInMultilineStringState = PyConsoleUtil.DOUBLE_QUOTE_MULTILINE; } else if (PyConsoleUtil.isSingleQuoteMultilineStarts(line)) { myInMultilineStringState = PyConsoleUtil.SINGLE_QUOTE_MULTILINE; } if (myInMultilineStringState != null) { // change language console.setLanguage(PlainTextLanguage.INSTANCE); console.setPrompt(PyConsoleUtil.INDENT_PROMPT); return; } } // Process line continuation if (line.endsWith("\\")) { console.setPrompt(PyConsoleUtil.INDENT_PROMPT); return; } if (!StringUtil.isEmptyOrSpaces(line)) { int indent = IndentHelperImpl.getIndent(getProject(), PythonFileType.INSTANCE, line, false); boolean flag = false; if (PyConsoleIndentUtil.shouldIndent(line)) { indent += getPythonIndent(); flag = true; } if ((myCurrentIndentSize > 0 && indent > 0) || flag) { setCurrentIndentSize(indent); indentEditor(currentEditor, indent); more(console, currentEditor); myConsoleCommunication.notifyCommandExecuted(true); return; } } sendLineToConsole( new ConsoleCommunication.ConsoleCodeFragment(myInputBuffer.toString(), true), console, currentEditor); }