Skip to content
Snippets Groups Projects
Commit 87a9fa74 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Corrects further autocomplete issues

parent fa249db4
Branches
Tags
No related merge requests found
...@@ -11,6 +11,7 @@ import android.text.style.UnderlineSpan ...@@ -11,6 +11,7 @@ import android.text.style.UnderlineSpan
import android.view.MenuItem import android.view.MenuItem
import android.widget.EditText import android.widget.EditText
import de.kuschku.quasseldroid_ng.R import de.kuschku.quasseldroid_ng.R
import de.kuschku.quasseldroid_ng.util.helper.lastWordIndices
import de.kuschku.quasseldroid_ng.util.helper.selection import de.kuschku.quasseldroid_ng.util.helper.selection
import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatSerializer import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatSerializer
import de.kuschku.quasseldroid_ng.util.irc.format.spans.* import de.kuschku.quasseldroid_ng.util.irc.format.spans.*
...@@ -206,17 +207,19 @@ class InputEditor(private val editText: EditText) { ...@@ -206,17 +207,19 @@ class InputEditor(private val editText: EditText) {
} }
fun autoComplete(text: CharSequence) { fun autoComplete(text: CharSequence) {
val beginningOfWord = editText.text.lastIndexOf(' ', editText.selectionStart) val range = editText.text.lastWordIndices(editText.selectionStart, true)
val endOfWord = editText.text.indexOf(' ', editText.selectionEnd) val replacement = if (range?.start == 0) {
val start = beginningOfWord + 1 "$text: "
val end = if (endOfWord != -1) {
endOfWord
} else { } else {
editText.text.length "$text "
} }
val replacement = "$text: " if (range != null) {
editText.text.replace(start, end, replacement) editText.text.replace(range.start, range.endInclusive + 1, replacement)
editText.setSelection(start + replacement.length) editText.setSelection(range.start + replacement.length)
} else {
editText.text.append(replacement)
editText.setSelection(editText.text.length)
}
} }
} }
\ No newline at end of file
...@@ -2,14 +2,30 @@ package de.kuschku.quasseldroid_ng.util.helper ...@@ -2,14 +2,30 @@ package de.kuschku.quasseldroid_ng.util.helper
fun CharSequence.lastWord(cursor: Int = this.length, fun CharSequence.lastWord(cursor: Int = this.length,
onlyBeforeCursor: Boolean = false): CharSequence { onlyBeforeCursor: Boolean = false): CharSequence {
val beginningOfWord = lastIndexOf(' ', cursor) return lastWordIndices(cursor, onlyBeforeCursor)?.let { subSequence(it) } ?: ""
val endOfWord = indexOf(' ', cursor) }
val start = beginningOfWord + 1
val end = if (endOfWord != -1) { fun CharSequence.lastWordIndices(cursor: Int = this.length,
endOfWord onlyBeforeCursor: Boolean = false): IntRange? {
val cursorPosition = if (cursor != -1) {
cursor
} else { } else {
length length
} }
return subSequence(start, if (onlyBeforeCursor) cursor else end) val beginningOfWord = lastIndexOf(' ', cursorPosition - 1)
val endOfWord = indexOf(' ', cursorPosition)
val start = beginningOfWord + 1
val end = when {
onlyBeforeCursor -> cursorPosition
endOfWord == -1 -> cursorPosition
else -> endOfWord
}
return if (end - start > 0 && start >= 0 && end <= length) {
start..end
} else {
null
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment