diff --git a/smalidea/build.gradle b/smalidea/build.gradle
index 6b855d7b..8cba19d2 100644
--- a/smalidea/build.gradle
+++ b/smalidea/build.gradle
@@ -93,7 +93,7 @@ if (!('idea' in gradle.startParameter.taskNames)) {
apply plugin: 'org.jetbrains.intellij'
intellij {
- version 'IC-14.1.4'
+ version 'IC-15.0.6'
pluginName 'smalidea'
updateSinceUntilBuild false
diff --git a/smalidea/src/main/java/org/jf/smalidea/debugging/SmaliDebuggerSupport.java b/smalidea/src/main/java/org/jf/smalidea/debugging/SmaliDebuggerSupport.java
deleted file mode 100644
index f822fd1f..00000000
--- a/smalidea/src/main/java/org/jf/smalidea/debugging/SmaliDebuggerSupport.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2014, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.jf.smalidea.debugging;
-
-import com.intellij.debugger.actions.StepOverActionHandler;
-import com.intellij.debugger.impl.DebuggerSession;
-import com.intellij.debugger.ui.JavaDebuggerSupport;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-import com.intellij.openapi.project.Project;
-import com.intellij.xdebugger.impl.actions.DebuggerActionHandler;
-import com.sun.jdi.request.StepRequest;
-import org.jetbrains.annotations.NotNull;
-
-public class SmaliDebuggerSupport extends JavaDebuggerSupport {
- private static boolean useModifiedMethod;
-
- static {
- try {
- DebuggerSession.class.getMethod("stepOver", boolean.class, int.class);
- useModifiedMethod = true;
- } catch (NoSuchMethodException ex) {
- useModifiedMethod = false;
- }
- }
-
- private final StepOverActionHandler myStepOverActionHandler = new StepOverActionHandler() {
- @Override
- public void perform(@NotNull final Project project, AnActionEvent e) {
- final DebuggerSession session = getSession(project);
-
- if (session != null) {
- if (useModifiedMethod) {
- session.stepOver(false, StepRequest.STEP_MIN);
- } else {
- session.stepOver(false);
- }
- }
- }
-
- @Override public boolean isEnabled(@NotNull Project project, AnActionEvent event) {
- // TODO: check if we're currently in a smali file?
- return super.isEnabled(project, event);
- }
- };
-
- @NotNull
- @Override
- public DebuggerActionHandler getStepOverHandler() {
- return myStepOverActionHandler;
- }
-
-}
diff --git a/smalidea/src/main/java/org/jf/smalidea/debugging/SmaliSteppingCommandProvider.java b/smalidea/src/main/java/org/jf/smalidea/debugging/SmaliSteppingCommandProvider.java
new file mode 100644
index 00000000..4be1e7f0
--- /dev/null
+++ b/smalidea/src/main/java/org/jf/smalidea/debugging/SmaliSteppingCommandProvider.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.smalidea.debugging;
+
+import com.intellij.debugger.SourcePosition;
+import com.intellij.debugger.engine.ContextUtil;
+import com.intellij.debugger.engine.DebugProcessImpl.ResumeCommand;
+import com.intellij.debugger.engine.SuspendContextImpl;
+import com.intellij.debugger.impl.JvmSteppingCommandProvider;
+import com.sun.jdi.request.StepRequest;
+import org.jetbrains.annotations.NotNull;
+import org.jf.smalidea.SmaliLanguage;
+
+public class SmaliSteppingCommandProvider extends JvmSteppingCommandProvider {
+ @Override
+ public ResumeCommand getStepOverCommand(@NotNull final SuspendContextImpl suspendContext, boolean ignoreBreakpoints,
+ int stepSize) {
+ SourcePosition locationPosition = ContextUtil.getSourcePosition(suspendContext);
+ if (locationPosition != null && locationPosition.getFile().getLanguage() == SmaliLanguage.INSTANCE) {
+ return suspendContext.getDebugProcess().createStepOverCommand(suspendContext, ignoreBreakpoints,
+ StepRequest.STEP_MIN);
+ }
+ return null;
+ }
+}
diff --git a/smalidea/src/main/resources/META-INF/plugin.xml b/smalidea/src/main/resources/META-INF/plugin.xml
index 6e24054b..8ae92dad 100644
--- a/smalidea/src/main/resources/META-INF/plugin.xml
+++ b/smalidea/src/main/resources/META-INF/plugin.xml
@@ -12,7 +12,7 @@
]]>
-
+
@@ -23,8 +23,7 @@
-
+