mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	typeahead: Replace code block language hint text with more clear options
This commit - Replace the blank option with an italicized option that's the current default language, if there is one selected with "default" label. - Make the "text" option more informative by adding (no highlighting) to the label. - Remove the hint for "text". - Prioritize as left to right, before start typing: blank/default language, text, quote, spoiler, math, everything else... fixes: #33682
This commit is contained in:
		@@ -2306,7 +2306,10 @@ test("content_highlighter_html", ({override_rewire}) => {
 | 
			
		||||
    ct.get_or_set_completing_for_tests("syntax");
 | 
			
		||||
    th_render_typeahead_item_called = false;
 | 
			
		||||
    override_rewire(typeahead_helper, "render_typeahead_item", (item) => {
 | 
			
		||||
        assert.deepEqual(item, {primary: "py"});
 | 
			
		||||
        assert.deepEqual(item, {
 | 
			
		||||
            is_default_language: false,
 | 
			
		||||
            primary: "py",
 | 
			
		||||
        });
 | 
			
		||||
        th_render_typeahead_item_called = true;
 | 
			
		||||
    });
 | 
			
		||||
    ct.content_highlighter_html({type: "syntax", language: "py"});
 | 
			
		||||
 
 | 
			
		||||
@@ -78,6 +78,10 @@ run_test("get_pygments_typeahead_list_for_settings", () => {
 | 
			
		||||
    let iterator = candidates.entries();
 | 
			
		||||
    assert.equal(iterator.next().value[1], $t({defaultMessage: "Custom language: custom_lang"}));
 | 
			
		||||
    assert.equal(iterator.next().value[1], $t({defaultMessage: "Custom language: invent_a_lang"}));
 | 
			
		||||
    assert.equal(iterator.next().value[1], "Text only (text, text)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "quote (quote, quote)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "spoiler (spoiler, spoiler)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "math (math, math)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "JavaScript (javascript, js, javascript, js)");
 | 
			
		||||
    assert.equal(
 | 
			
		||||
        iterator.next().value[1],
 | 
			
		||||
@@ -96,6 +100,10 @@ run_test("get_pygments_typeahead_list_for_settings", () => {
 | 
			
		||||
    );
 | 
			
		||||
    assert.equal(iterator.next().value[1], $t({defaultMessage: "Custom language: custom_lang"}));
 | 
			
		||||
    assert.equal(iterator.next().value[1], $t({defaultMessage: "Custom language: invent_a_lang"}));
 | 
			
		||||
    assert.equal(iterator.next().value[1], "Text only (text, text)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "quote (quote, quote)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "spoiler (spoiler, spoiler)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "math (math, math)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "JavaScript (javascript, js, javascript, js)");
 | 
			
		||||
    assert.equal(
 | 
			
		||||
        iterator.next().value[1],
 | 
			
		||||
@@ -107,9 +115,7 @@ run_test("get_pygments_typeahead_list_for_settings", () => {
 | 
			
		||||
    iterator = candidates.entries();
 | 
			
		||||
    assert.equal(iterator.next().value[1], $t({defaultMessage: "Custom language: invent_a_lang"}));
 | 
			
		||||
    assert.equal(iterator.next().value[1], $t({defaultMessage: "Custom language: custom_lang"}));
 | 
			
		||||
    assert.equal(iterator.next().value[1], "JavaScript (javascript, js, javascript, js)");
 | 
			
		||||
    assert.equal(
 | 
			
		||||
        iterator.next().value[1],
 | 
			
		||||
        "Python (python, bazel, py, py3, pyi, python3, sage, starlark, python, bazel, py, py3, pyi, python3, sage, starlark)",
 | 
			
		||||
    );
 | 
			
		||||
    assert.equal(iterator.next().value[1], "Text only (text, text)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "quote (quote, quote)");
 | 
			
		||||
    assert.equal(iterator.next().value[1], "spoiler (spoiler, spoiler)");
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -394,12 +394,15 @@ test("sort_streams", ({override, override_rewire}) => {
 | 
			
		||||
 | 
			
		||||
function language_items(languages) {
 | 
			
		||||
    return languages.map((language) => ({
 | 
			
		||||
        type: "syntax",
 | 
			
		||||
        language,
 | 
			
		||||
        type: "syntax",
 | 
			
		||||
    }));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
test("sort_languages", ({override_rewire}) => {
 | 
			
		||||
test("sort_languages", ({override, override_rewire}) => {
 | 
			
		||||
    override(realm, "realm_default_code_block_language", "dart");
 | 
			
		||||
    const default_language = realm.realm_default_code_block_language;
 | 
			
		||||
 | 
			
		||||
    override_rewire(pygments_data, "langs", {
 | 
			
		||||
        python: {priority: 26},
 | 
			
		||||
        javascript: {priority: 27},
 | 
			
		||||
@@ -407,20 +410,52 @@ test("sort_languages", ({override_rewire}) => {
 | 
			
		||||
        pascal: {priority: 15},
 | 
			
		||||
        perl: {priority: 3},
 | 
			
		||||
        css: {priority: 21},
 | 
			
		||||
        spoiler: {priority: 29},
 | 
			
		||||
        text: {priority: 31},
 | 
			
		||||
        quote: {priority: 30},
 | 
			
		||||
        math: {priority: 28},
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    let test_langs = language_items(["pascal", "perl", "php", "python", "javascript"]);
 | 
			
		||||
    let test_langs = language_items(["pascal", "perl", "php", "python", "spoiler", "javascript"]);
 | 
			
		||||
    test_langs = th.sort_languages(test_langs, "p");
 | 
			
		||||
 | 
			
		||||
    // Sort languages by matching first letter, and then by popularity
 | 
			
		||||
    assert.deepEqual(test_langs, language_items(["python", "php", "pascal", "perl", "javascript"]));
 | 
			
		||||
    assert.deepEqual(
 | 
			
		||||
        test_langs,
 | 
			
		||||
        language_items(["python", "php", "pascal", "perl", "spoiler", "javascript"]),
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // Test if popularity between two languages are the same
 | 
			
		||||
    pygments_data.langs.php = {priority: 26};
 | 
			
		||||
    test_langs = language_items(["pascal", "perl", "php", "python", "javascript"]);
 | 
			
		||||
    test_langs = language_items(["pascal", "perl", "php", "python", "spoiler", "javascript"]);
 | 
			
		||||
    test_langs = th.sort_languages(test_langs, "p");
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(test_langs, language_items(["php", "python", "pascal", "perl", "javascript"]));
 | 
			
		||||
    assert.deepEqual(
 | 
			
		||||
        test_langs,
 | 
			
		||||
        language_items(["php", "python", "pascal", "perl", "spoiler", "javascript"]),
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    test_langs = language_items([
 | 
			
		||||
        default_language,
 | 
			
		||||
        "text",
 | 
			
		||||
        "quote",
 | 
			
		||||
        "math",
 | 
			
		||||
        "python",
 | 
			
		||||
        "javascript",
 | 
			
		||||
    ]);
 | 
			
		||||
    const test_langs_for_default = th.sort_languages(test_langs, "d");
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(
 | 
			
		||||
        test_langs_for_default,
 | 
			
		||||
        language_items([default_language, "text", "quote", "math", "javascript", "python"]),
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    test_langs = th.sort_languages(test_langs, "t");
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(
 | 
			
		||||
        test_langs,
 | 
			
		||||
        language_items(["text", "quote", "math", "javascript", "python", default_language]),
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test("sort_languages on actual data", () => {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user