1
0
mirror of https://github.com/chylex/IntelliJ-AceJump.git synced 2025-04-09 17:15:43 +02:00

fixing a multi-char error

This commit is contained in:
John Lindquist 2013-03-18 15:51:06 -06:00
parent 137eca2a6b
commit 2a705d8204
2 changed files with 30 additions and 27 deletions
src/com/johnlindquist/acejump

View File

@ -196,27 +196,4 @@ public class AceFinder(val project: Project, val document: DocumentImpl, val edi
return ALLOWED_CHARACTERS
}
// todo: refactor (try a generator approach) or move out
public fun generateString(i: Int, total: Int): String {
val letters = getAllowedCharacters()!!
val len = letters.length
var groups = Math.ceil(total / len.toDouble())
// print("groups: " + groups.toString())
val i1 = len - groups.toInt()
// print("last letter: " + letters.charAt(i1).toString() + "\n")
var str = ""
// if(i % i1 == 0) print("================")
var groupI = 0
if(i > 0) groupI = Math.floor(i / i1.toDouble()).toInt()
if(groupI > 0){
str += letters.charAt(letters.length - groupI.toInt())
}
str += letters.charAt(i % i1).toString()
// print(i.toString() + ": " + str + "\n")
return str
}
}

View File

@ -58,15 +58,41 @@ public open class AceJumpAction(): DumbAwareAction() {
textAndOffsetHash.clear()
}
//todo: refactor
fun setupJumpLocations(results: MutableList<Int>) {
textAndOffsetHash.clear()
val textPointPairs: MutableList<Pair<String, Point>> = ArrayList<Pair<String, Point>>()
for (i in 0..results.size - 1) {
val total = results.size -1
val letters = aceFinder.getAllowedCharacters()!!
var len = letters.length
var groups = Math.ceil(total.toDouble() / len)
print("groups: " + groups.toString())
val lenMinusGroups = len - groups.toInt()
print("last letter: " + letters.charAt(lenMinusGroups).toString() + "\n")
for (i in 0..total) {
var str = ""
val iGroup = i - lenMinusGroups
val iModGroup = iGroup % len
if(iModGroup == 0) print("================\n")
if(groups > 1 && i >= lenMinusGroups){
val i1 = Math.floor(lenMinusGroups.toDouble() + ((i + groups.toInt()) / len)).toInt()
str += letters.charAt(i1)
str += letters.charAt(iModGroup).toString()
}else {
str += letters.charAt(i).toString()
}
print(i.toString() + ": " + str + " iModGroup:" + iModGroup.toString() + "\n")
val textOffset: Int = results.get(i)
val point: RelativePoint? = getPointFromVisualPosition(editor, editor.offsetToVisualPosition(textOffset))
val text: String = aceFinder.generateString(i, results.size - 1)
textPointPairs.add(Pair<String, Point>(text, point?.getOriginalPoint() as Point))
textAndOffsetHash.put(text, textOffset)
textPointPairs.add(Pair<String, Point>(str, point?.getOriginalPoint() as Point))
textAndOffsetHash.put(str, textOffset)
}
showJumpers(textPointPairs)
}