composebox_typeahead: Start emoji typeahead with single letter.

This changes the behaviour of the typeahead in the compose box to
start appearing with single letter lying in the range of a-z or '+'.

This is a nice solution, because all emoji names start with lower-case
letters, while most emoticons like :P use a capital letter or similar.

Fixes: #6808.
This commit is contained in:
Shubham Dhama
2017-10-17 20:13:30 +05:30
committed by Tim Abbott
parent 3e258d11e0
commit d6a34c7a0c
2 changed files with 11 additions and 2 deletions

View File

@@ -24,9 +24,13 @@ var emoji_see_no_evil = {
emoji_name: 'see_no_evil',
emoji_url: 'TBD',
};
var emoji_thumbs_up = {
emoji_name: '+1',
emoji_url: 'TBD',
};
var emoji_list = [emoji_tada, emoji_moneybag, emoji_stadium, emoji_japanese_post_office,
emoji_panda_face, emoji_see_no_evil];
emoji_panda_face, emoji_see_no_evil, emoji_thumbs_up];
var stream_list = ['Denmark', 'Sweden', 'The Netherlands'];
var sweden_stream = {
name: 'Sweden',
@@ -781,15 +785,20 @@ global.people.add(deactivated_user);
assert_typeahead_equals(":", false);
assert_typeahead_equals(": ", false);
assert_typeahead_equals(" :", false);
assert_typeahead_equals(":)", false);
assert_typeahead_equals(":4", false);
assert_typeahead_equals("test :-P", false);
assert_typeahead_equals("hi emoji :", false);
assert_typeahead_equals("hi emoj:i", false);
assert_typeahead_equals("hi emoji :D", false);
assert_typeahead_equals("hi emoji :t", emoji_list);
assert_typeahead_equals("hi emoji :ta", emoji_list);
assert_typeahead_equals("hi emoji :da", emoji_list);
assert_typeahead_equals("hi emoji :da_", emoji_list);
assert_typeahead_equals("hi emoji :da ", emoji_list);
assert_typeahead_equals("hi emoji\n:da", emoji_list);
assert_typeahead_equals("hi emoji\n :ra", emoji_list);
assert_typeahead_equals(":+", emoji_list);
assert_typeahead_equals(":la", emoji_list);
assert_typeahead_equals(" :lee", emoji_list);
assert_typeahead_equals("hi :see no", emoji_list);

View File

@@ -303,7 +303,7 @@ exports.compose_content_begins_typeahead = function (query) {
// as :P or :-p
// Also, if the user has only typed a colon and nothing after,
// no need to match yet.
if (/^:-?.?$/.test(current_token)) {
if (/^:-.?$/.test(current_token) || /^:[^a-z+]?$/.test(current_token)) {
return false;
}
this.completing = 'emoji';