Add autocompletion for custom emoji (#1089)

* Remove unnecessary //noinspection ConstantConditions

* Add autocompletion for custom emoji

* Update MentionTagTokenizer tests for emoji autocomplete support

* Move 1) emoji list retrieval notifying and 2) setting of emojiList field into setEmojiList() method of ComposeActivity

* Convert RelativeLayout in item_autocomplete_emoji.xml to LinearLayout

* Rename MentionTag* to Compose*

* Improve emoji autocomplete matching

* Make hashtag autocomplete results bold

* Use Context.getString()'s built-in formatting

* Add a divider between emoji autocomplete results that *start with* the token and those that *contain* it
This commit is contained in:
autumnontape 2019-03-04 10:28:08 -08:00 committed by Konrad Pozniak
commit 10fcee4798
14 changed files with 232 additions and 38 deletions

View file

@ -20,14 +20,14 @@ import android.text.Spanned
import android.text.TextUtils
import android.widget.MultiAutoCompleteTextView
class MentionTagTokenizer : MultiAutoCompleteTextView.Tokenizer {
class ComposeTokenizer : MultiAutoCompleteTextView.Tokenizer {
override fun findTokenStart(text: CharSequence, cursor: Int): Int {
if (cursor == 0) {
return cursor
}
var i = cursor
var character = text[i - 1]
while (i > 0 && character != '@' && character != '#') {
while (i > 0 && character != '@' && character != '#' && character != ':') {
// See SpanUtils.MENTION_REGEX
if (!Character.isLetterOrDigit(character) && character != '_') {
return cursor
@ -36,7 +36,7 @@ class MentionTagTokenizer : MultiAutoCompleteTextView.Tokenizer {
character = if (i == 0) ' ' else text[i - 1]
}
if (i < 1
|| (character != '@' && character != '#')
|| (character != '@' && character != '#' && character != ':')
|| i > 1 && !Character.isWhitespace(text[i - 2])) {
return cursor
}