From 9d322ef4846dc04d28c6965d8c72c58abdefaef3 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Tue, 10 Apr 2018 17:01:01 +0200
Subject: [PATCH] Fix enter and autocomplete bugs

---
 .../quasseldroid/ui/chat/input/ChatlineFragment.kt  |  1 +
 .../quasseldroid/ui/chat/input/EditorHelper.kt      | 13 +++++++------
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
index 4b0b8bdfd..98c1dbe69 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
@@ -155,6 +155,7 @@ class ChatlineFragment : ServiceBoundFragment() {
       chatline.setText("")
     }
 
+    editorHelper.setOnEnterListener(::send)
     send.setOnClickListener { send() }
 
     tabComplete.visibleIf(autoCompleteSettings.button)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt
index a16dd2f1e..2deefe127 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/EditorHelper.kt
@@ -48,13 +48,10 @@ class EditorHelper(
       val previous = autoCompleteHelper.autoCompletionState
       val next = if (previous != null && s != null) {
         val suffix = if (previous.range.start == 0) ": " else " "
-        val end = Math.min(
-          s.length, previous.range.start + previous.completion.name.length + suffix.length
-        )
-        val sequence = if (end < previous.range.start) ""
-        else s.substring(previous.range.start, end)
+        val sequence = if (s.length < previous.range.start) ""
+        else s.substring(previous.range.start)
         if (sequence == previous.completion.name + suffix) {
-          previous.originalWord to (previous.range.start until end)
+          previous.originalWord to (previous.range.start until s.length)
         } else {
           autoCompleteHelper.autoCompletionState = null
           s.lastWordIndices(editText.selectionStart, onlyBeforeCursor = true)?.let { indices ->
@@ -167,6 +164,10 @@ class EditorHelper(
     }.fold(0, Int::or)
   }
 
+  fun setOnEnterListener(listener: (() -> Unit)?) {
+    this.enterListener = listener
+  }
+
   fun setMultiLine(enabled: Boolean) = editText.setMultiLine(enabled)
 
   fun replaceText(text: CharSequence?) = editText.replace(text)
-- 
GitLab