diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPresentationManager.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPresentationManager.java index 86e78e38d950..a5e6821dde45 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPresentationManager.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPresentationManager.java @@ -61,7 +61,7 @@ public class ParameterHintsPresentationManager implements Disposable { public String getHintText(@NotNull Inlay inlay) { EditorCustomElementRenderer renderer = inlay.getRenderer(); - return renderer instanceof MyRenderer ? ((MyRenderer)renderer).myText : null; + return renderer instanceof MyRenderer ? ((MyRenderer)renderer).getText() : null; } public void addHint(@NotNull Editor editor, int offset, @NotNull String hintText, boolean useAnimation) { @@ -141,7 +141,7 @@ public class ParameterHintsPresentationManager implements Disposable { } private static class MyRenderer implements EditorCustomElementRenderer { - private String myText; + private String myText; // text with colon as a suffix private int startWidth; private int steps; private int step; @@ -151,6 +151,10 @@ public class ParameterHintsPresentationManager implements Disposable { if (!animated) step = steps + 1; } + private String getText() { + return myText == null ? null : myText.substring(0, myText.length() - 1); + } + public void update(Editor editor, String newText) { updateState(editor, newText); } @@ -158,7 +162,7 @@ public class ParameterHintsPresentationManager implements Disposable { private void updateState(Editor editor, String text) { FontMetrics metrics = getFontMetrics(editor).metrics; startWidth = doCalcWidth(myText, metrics); - myText = text; + myText = text == null ? null : (text + ":"); int endWidth = doCalcWidth(myText, metrics); step = 1; steps = Math.max(1, Math.abs(endWidth - startWidth) / metrics.charWidth('a') / ANIMATION_CHARS_PER_STEP); diff --git a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java index 817628afdf5f..d516906618ec 100644 --- a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java +++ b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java @@ -580,6 +580,7 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, public void setEnabled(boolean enabled) { if (isEnabled() != enabled) { super.setEnabled(enabled); + setFocusTraversalPolicyProvider(enabled); setViewerEnabled(enabled); EditorEx editor = myEditor; if (editor != null) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java index ff335e427306..8836daac9745 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java @@ -175,24 +175,33 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { - clearHighlighter(); - Object value = ((JList)e.getSource()).getSelectedValue(); - if (value instanceof XLineBreakpointType.XLineBreakpointVariant) { - TextRange range = ((XLineBreakpointType.XLineBreakpointVariant)value).getHighlightRange(); - TextRange lineRange = DocumentUtil.getLineTextRange(editor.getDocument(), line); - if (range != null) { - range = range.intersection(lineRange); - } - else { - range = lineRange; - } - if (range != null && !range.isEmpty()) { - EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme(); - TextAttributes attributes = scheme.getAttributes(DebuggerColors.BREAKPOINT_ATTRIBUTES); - myHighlighter = editor.getMarkupModel().addRangeHighlighter( - range.getStartOffset(), range.getEndOffset(), DebuggerColors.BREAKPOINT_HIGHLIGHTER_LAYER, attributes, - HighlighterTargetArea.EXACT_RANGE); - } + updateHighlighter(((JList)e.getSource()).getSelectedValue()); + } + } + + public void initialSet(Object value) { + if (myHighlighter == null) { + updateHighlighter(value); + } + } + + void updateHighlighter(Object value) { + clearHighlighter(); + if (value instanceof XLineBreakpointType.XLineBreakpointVariant) { + TextRange range = ((XLineBreakpointType.XLineBreakpointVariant)value).getHighlightRange(); + TextRange lineRange = DocumentUtil.getLineTextRange(editor.getDocument(), line); + if (range != null) { + range = range.intersection(lineRange); + } + else { + range = lineRange; + } + if (range != null && !range.isEmpty()) { + EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme(); + TextAttributes attributes = scheme.getAttributes(DebuggerColors.BREAKPOINT_ATTRIBUTES); + myHighlighter = editor.getMarkupModel().addRangeHighlighter( + range.getStartOffset(), range.getEndOffset(), DebuggerColors.BREAKPOINT_HIGHLIGHTER_LAYER, attributes, + HighlighterTargetArea.EXACT_RANGE); } } } @@ -251,7 +260,13 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { public int getDefaultOptionIndex() { return defaultIndex; } - }); + }) { + @Override + protected void afterShow() { + super.afterShow(); + selectionListener.initialSet(getList().getSelectedValue()); + } + }; DebuggerUIUtil.registerExtraHandleShortcuts(popup, IdeActions.ACTION_TOGGLE_LINE_BREAKPOINT); popup.setAdText(DebuggerUIUtil.getSelectionShortcutsAdText(IdeActions.ACTION_TOGGLE_LINE_BREAKPOINT)); diff --git a/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py b/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py index fccb8b417fb4..bd9b37e96ab5 100644 --- a/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py +++ b/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py @@ -10,6 +10,14 @@ from _pydevd_bundle.pydevd_constants import IS_JYTHON from _pydevd_bundle.pydevd_utils import to_string +USE_IPYTHON = False + + +def set_result_ipython_value(ipython): + global USE_IPYTHON + USE_IPYTHON = ipython + + # ======================================================================================================================= # Null # ======================================================================================================================= @@ -76,6 +84,10 @@ class BaseStdIn: def write(self, *args, **kwargs): pass # not available StdIn (but it can be expected to be in the stream interface) + def isatty(self): + # return True for IPython console only + return USE_IPYTHON + def flush(self, *args, **kwargs): pass # not available StdIn (but it can be expected to be in the stream interface) diff --git a/python/helpers/pydev/pydevconsole.py b/python/helpers/pydev/pydevconsole.py index 0285fcc86f91..aa0f44107e42 100644 --- a/python/helpers/pydev/pydevconsole.py +++ b/python/helpers/pydev/pydevconsole.py @@ -39,7 +39,7 @@ except NameError: # version < 2.3 -- didn't have the True/False builtins setattr(__builtin__, 'True', 1) #Python 3.0 does not accept __builtin__.True = 1 in its syntax setattr(__builtin__, 'False', 0) -from _pydev_bundle.pydev_console_utils import BaseInterpreterInterface, BaseStdIn +from _pydev_bundle.pydev_console_utils import BaseInterpreterInterface, BaseStdIn, set_result_ipython_value from _pydev_bundle.pydev_console_utils import CodeFragment IS_PYTHON_3K = False @@ -246,6 +246,8 @@ except: IPYTHON = False pass +set_result_ipython_value(IPYTHON) + #======================================================================================================================= # _DoExit #=======================================================================================================================