Files
jadx/jadx-plugins/jadx-script/examples/scripts/gui/bookmark.jadx.kts
T
Yoav Sternberg f558203a9d feat(api): access node under caret/mouse and jump (PR #1903)
* Access node under caret/mouse and jump
* Apply lint
2023-06-09 15:50:57 +01:00

44 lines
906 B
Kotlin

import jadx.api.metadata.ICodeNodeRef
import jadx.core.dex.nodes.MethodNode
val jadx = getJadxInstance()
var savedBookmark: ICodeNodeRef? = null
jadx.gui.ifAvailable {
addPopupMenuAction(
"Set bookmark",
enabled = { true },
keyBinding = "B",
action = ::setBookmark,
)
addMenuAction(
"Jump to bookmark",
action = ::jumpToBookmark,
)
}
fun setBookmark(node: ICodeNodeRef) {
val enclosing = jadx.gui.enclosingNodeUnderCaret ?: run {
jadx.log.info { "No enclosing node" }
return
}
// You can bookmark a field, method or a class
val target = if (enclosing is MethodNode) enclosing else node
jadx.log.info { "Setting bookmark to: $target" }
savedBookmark = target
}
fun jumpToBookmark() {
if (savedBookmark == null) {
jadx.log.info { "No bookmark" }
} else {
val res = jadx.gui.open(savedBookmark!!)
if (!res) {
jadx.log.info { "Failed to jump to bookmark" }
}
}
}