From 55454371b7677a4f8af8a621259db39dff18d3a3 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 30 Mar 2011 15:21:22 +0400 Subject: [PATCH] xdebugger api: added ability to format text selected in editor for 'Evaluate' dialog --- .../evaluation/XDebuggerEvaluator.java | 8 ++++++++ .../XDebuggerEvaluateActionHandler.java | 20 +++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/evaluation/XDebuggerEvaluator.java b/platform/xdebugger-api/src/com/intellij/xdebugger/evaluation/XDebuggerEvaluator.java index 7cf1cc02dd46..2278aa06af48 100644 --- a/platform/xdebugger-api/src/com/intellij/xdebugger/evaluation/XDebuggerEvaluator.java +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/evaluation/XDebuggerEvaluator.java @@ -112,6 +112,14 @@ public abstract class XDebuggerEvaluator { return sideEffectsAllowed ? null : getExpressionRangeAtOffset(project, document, offset); } + /** + * Override this method to format selected text before it is shown in 'Evaluate' dialog + */ + @NotNull + public String formatTextForEvaluation(@NotNull String text) { + return text; + } + /** * @return delay before showing value tooltip (in ms) */ diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerEvaluateActionHandler.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerEvaluateActionHandler.java index de2b71d6195d..c40d1c3044ee 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerEvaluateActionHandler.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerEvaluateActionHandler.java @@ -46,24 +46,28 @@ public class XDebuggerEvaluateActionHandler extends XDebuggerSuspendedActionHand @Nullable Project project = PlatformDataKeys.PROJECT.getData(dataContext); @Nullable Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); - String expression = editor != null ? editor.getSelectionModel().getSelectedText() : null; + String selectedText = editor != null ? editor.getSelectionModel().getSelectedText() : null; + if (selectedText != null) { + selectedText = evaluator.formatTextForEvaluation(selectedText); + } + String text = selectedText; - if (expression == null && editor != null) { + if (text == null && editor != null) { Document document = editor.getDocument(); TextRange range = evaluator.getExpressionRangeAtOffset(project, document, editor.getCaretModel().getOffset(), true); - expression = range == null ? null : document.getText(range); + text = range == null ? null : document.getText(range); } - if (expression == null) { + if (text == null) { XValue value = XDebuggerTreeActionBase.getSelectedValue(dataContext); if (value != null) { - expression = value.getEvaluationExpression(); + text = value.getEvaluationExpression(); } } - if (expression == null) { - expression = ""; + if (text == null) { + text = ""; } - final XDebuggerEvaluationDialog dialog = new XDebuggerEvaluationDialog(session, editorsProvider, evaluator, expression, + final XDebuggerEvaluationDialog dialog = new XDebuggerEvaluationDialog(session, editorsProvider, evaluator, text, stackFrame.getSourcePosition()); dialog.show(); }