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:
parent
137eca2a6b
commit
2a705d8204
src/com/johnlindquist/acejump
@ -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
|
||||
}
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user